diff --git a/Makefile b/Makefile
index 25beccb..e8406f8 100644
--- a/Makefile
+++ b/Makefile
@@ -49,8 +49,8 @@ TARGET_PROTO_DIR = internal/proto/api/v1
TARGET_GEN_PB_DIR = internal/gen/api/v1
TARGET_GEN_CONNECT_DIR = internal/gen/api/v1/apiv1connect
-PROTO_FILES = common.proto instance.proto k8s.proto recommendation.proto cluster.proto profiling.proto
-GEN_PB_FILES = common.pb.go instance.pb.go k8s.pb.go recommendation.pb.go cluster.pb.go cluster_grpc.pb.go profiling.pb.go profiling_grpc.pb.go
+PROTO_FILES = common.proto instance.proto k8s.proto recommendation.proto cluster.proto profiling.proto hpa_connector.proto
+GEN_PB_FILES = common.pb.go instance.pb.go k8s.pb.go recommendation.pb.go cluster.pb.go cluster_grpc.pb.go profiling.pb.go profiling_grpc.pb.go hpa_connector.pb.go
GEN_CONNECT_FILES = k8s.connect.go recommendation.connect.go cluster.connect.go profiling.connect.go
diff --git a/docs/resources/node_policy.md b/docs/resources/node_policy.md
index a9fd91f..4bf6433 100644
--- a/docs/resources/node_policy.md
+++ b/docs/resources/node_policy.md
@@ -292,6 +292,7 @@ resource "devzero_node_policy" "azure_example" {
- `azure` (Attributes) Azure-specific configuration for nodes provisioned with this policy. (see [below for nested schema](#nestedatt--azure))
- `capacity_type_tip` (String) Tooltip for capacity types
- `capacity_types` (Attributes) Capacity types selector (e.g., spot, on-demand, reserved) (see [below for nested schema](#nestedatt--capacity_types))
+- `cloud_provider_id` (Number) Cloud provider ID this policy is intended for: `1` = AWS, `2` = Azure, `3` = GCP, `4` = OCI. Informational/UI filter — compilation always uses the target cluster's provider.
- `description` (String) Free-form description of the policy to help others understand its intent and scope.
- `disruption` (Attributes) Configuration for node disruption policies including consolidation and expiration settings. (see [below for nested schema](#nestedatt--disruption))
- `disruptions_tip` (String) Tooltip for disruptions
@@ -305,6 +306,7 @@ resource "devzero_node_policy" "azure_example" {
- `instance_generations_tip` (String) Tooltip for instance generations
- `instance_hypervisors` (Attributes) Instance hypervisors selector (see [below for nested schema](#nestedatt--instance_hypervisors))
- `instance_hypervisors_tip` (String) Tooltip for instance hypervisors
+- `instance_local_nvme` (Attributes) Ephemeral NVMe storage per node in GiB (AWS only; karpenter.k8s.aws/instance-local-nvme) (see [below for nested schema](#nestedatt--instance_local_nvme))
- `instance_sizes` (Attributes) Instance sizes selector (e.g., Standard_D4s for Azure, large for AWS) (see [below for nested schema](#nestedatt--instance_sizes))
- `instance_sizes_tip` (String) Tooltip for instance sizes
- `instance_types` (Attributes) Instance types selector — explicit full type names (e.g., m5.xlarge for AWS, Standard_D4s_v2 for Azure) (see [below for nested schema](#nestedatt--instance_types))
@@ -317,9 +319,11 @@ resource "devzero_node_policy" "azure_example" {
- `operating_systems` (Attributes) Operating systems selector (e.g., linux, windows) (see [below for nested schema](#nestedatt--operating_systems))
- `operating_systems_tip` (String) Tooltip for operating systems
- `raw` (Attributes List) Raw Karpenter NodePool and NodeClass YAML specifications for advanced use cases. (see [below for nested schema](#nestedatt--raw))
+- `startup_taints` (Attributes List) List of Kubernetes taints applied to nodes only while they start up (Karpenter `startupTaints`). Removed once the node is ready. (see [below for nested schema](#nestedatt--startup_taints))
- `taints` (Attributes List) List of Kubernetes taints to apply to nodes provisioned with this policy. (see [below for nested schema](#nestedatt--taints))
- `taints_tip` (String) Tooltip for taints
- `weight` (Number) Priority weight for this node policy. Higher weights are preferred when multiple policies match. Default: 10 (medium priority).
+- `zonal_shift` (Attributes) Behavior during an AWS ARC zonal shift. AWS only — silently ignored for other clouds. (see [below for nested schema](#nestedatt--zonal_shift))
- `zones` (Attributes) Availability zones selector (see [below for nested schema](#nestedatt--zones))
- `zones_tip` (String) Tooltip for zones
@@ -358,9 +362,12 @@ Optional:
- `ami_selector_terms` (Attributes List) AMI selector terms (see [below for nested schema](#nestedatt--aws--ami_selector_terms))
- `associate_public_ip_address` (Boolean) Associate public IP address with instances
- `block_device_mappings` (Attributes List) Block device mappings (see [below for nested schema](#nestedatt--aws--block_device_mappings))
+- `capacity_reservation_selector_terms` (Attributes List) Selects EC2 Capacity Reservations that nodes launched by this policy may use. Terms are ORed; criteria within a term are ANDed. (see [below for nested schema](#nestedatt--aws--capacity_reservation_selector_terms))
+- `context` (String) Context passed through to EC2 Fleet launches (`spec.context` on the EC2NodeClass). Reserved for use by AWS.
- `detailed_monitoring` (Boolean) Enable detailed CloudWatch monitoring
- `instance_profile` (String) IAM instance profile
- `instance_store_policy` (String) Policy for instance store volumes. Valid value: `RAID0`.
+- `kubelet` (Attributes) Kubelet configuration overrides applied to nodes launched by this policy (maps to the EC2NodeClass `spec.kubelet` block). (see [below for nested schema](#nestedatt--aws--kubelet))
- `metadata_options` (Attributes) Configuration for EC2 instance metadata service. Defaults provide secure IMDS v2 configuration. (see [below for nested schema](#nestedatt--aws--metadata_options))
- `role` (String) IAM role name
- `security_group_selector_terms` (Attributes List) Security group selector terms (see [below for nested schema](#nestedatt--aws--security_group_selector_terms))
@@ -404,6 +411,35 @@ Optional:
+
+### Nested Schema for `aws.capacity_reservation_selector_terms`
+
+Optional:
+
+- `id` (String) Capacity reservation ID
+- `owner_id` (String) AWS account ID that owns the capacity reservation
+- `tags` (Map of String) Tags to match on the capacity reservation
+
+
+
+### Nested Schema for `aws.kubelet`
+
+Optional:
+
+- `cluster_dns` (List of String) Cluster DNS server IPs
+- `cpu_cfs_quota` (Boolean) Enable CPU CFS quota enforcement for containers that specify CPU limits
+- `eviction_hard` (Map of String) Hard eviction thresholds (e.g. memory.available = 100Mi)
+- `eviction_max_pod_grace_period` (Number) Maximum pod termination grace period (seconds) used on soft eviction
+- `eviction_soft` (Map of String) Soft eviction thresholds
+- `eviction_soft_grace_period` (Map of String) Grace periods for soft eviction thresholds
+- `image_gc_high_threshold_percent` (Number) Disk usage percentage above which image garbage collection runs
+- `image_gc_low_threshold_percent` (Number) Disk usage percentage below which image garbage collection stops
+- `kube_reserved` (Map of String) Resources reserved for Kubernetes system daemons
+- `max_pods` (Number) Maximum number of pods per node
+- `pods_per_core` (Number) Maximum pods per CPU core
+- `system_reserved` (Map of String) Resources reserved for system daemons (e.g. cpu, memory, ephemeral-storage)
+
+
### Nested Schema for `aws.metadata_options`
@@ -442,11 +478,30 @@ Optional:
- `fips_mode` (String) FIPS 140-2 mode. Valid values: `FIPS`, `Disabled`.
- `image_family` (String) Azure image family. Valid values: `Ubuntu`, `Ubuntu2204`, `Ubuntu2404`, `AzureLinux`.
+- `image_version` (String) Pinned node image version. Requires the DevZero node operator >= 1.8.4.
+- `kubelet` (Attributes) Kubelet configuration overrides applied to nodes launched by this policy (maps to the AKSNodeClass `spec.kubelet` block). (see [below for nested schema](#nestedatt--azure--kubelet))
- `max_pods` (Number) Maximum number of pods per node
- `os_disk_size_gb` (Number) OS disk size in GB
- `tags` (Map of String) Azure tags to apply to resources
- `vnet_subnet_id` (String) VNet subnet ID
+
+### Nested Schema for `azure.kubelet`
+
+Optional:
+
+- `allowed_unsafe_sysctls` (List of String) Unsafe sysctls or sysctl patterns allowed on the node
+- `container_log_max_files` (Number) Maximum number of container log files retained per container
+- `container_log_max_size` (String) Maximum size of a container log file before rotation (e.g. 50Mi)
+- `cpu_cfs_quota` (Boolean) Enable CPU CFS quota enforcement for containers that specify CPU limits
+- `cpu_cfs_quota_period` (String) CPU CFS quota period (e.g. 100ms)
+- `cpu_manager_policy` (String) CPU manager policy. Valid values: `none`, `static`.
+- `image_gc_high_threshold_percent` (Number) Disk usage percentage above which image garbage collection runs
+- `image_gc_low_threshold_percent` (Number) Disk usage percentage below which image garbage collection stops
+- `pod_pids_limit` (Number) Maximum number of PIDs per pod
+- `topology_manager_policy` (String) Topology manager policy. Valid values: `none`, `best-effort`, `restricted`, `single-numa-node`.
+
+
### Nested Schema for `capacity_types`
@@ -604,6 +659,28 @@ Optional:
+
+### Nested Schema for `instance_local_nvme`
+
+Optional:
+
+- `match_expressions` (Attributes List) List of label selector requirements (see [below for nested schema](#nestedatt--instance_local_nvme--match_expressions))
+- `match_labels` (Map of String) Map of label key-value pairs to match
+
+
+### Nested Schema for `instance_local_nvme.match_expressions`
+
+Required:
+
+- `key` (String) Label key
+- `operator` (String) Operator for matching. Valid values: `In`, `NotIn`, `Exists`, `DoesNotExist`, `Gt`, `Lt`. `Gt`/`Lt` apply to numeric selectors such as `instance_generations` and `instance_cpus`.
+
+Optional:
+
+- `values` (List of String) List of values for In/NotIn operators
+
+
+
### Nested Schema for `instance_sizes`
@@ -688,6 +765,16 @@ Optional:
- `nodepool_yaml` (String) Raw NodePool YAML
+
+### Nested Schema for `startup_taints`
+
+Required:
+
+- `effect` (String) Taint effect. Valid values: `NoSchedule`, `PreferNoSchedule`, `NoExecute`.
+- `key` (String) Taint key
+- `value` (String) Taint value
+
+
### Nested Schema for `taints`
@@ -698,6 +785,16 @@ Required:
- `value` (String) Taint value
+
+### Nested Schema for `zonal_shift`
+
+Optional:
+
+- `allow_zone_fallback` (Boolean) Expand a single-zone policy to other zones when its zone is impacted
+- `evict_impacted_nodes` (Boolean) Also terminate existing nodes in the impacted zone (respects PDBs)
+- `respect_zonal_shift` (Boolean) Master opt-in. When false the other fields are ignored
+
+
### Nested Schema for `zones`
diff --git a/docs/resources/node_policy_target.md b/docs/resources/node_policy_target.md
index 6e991d6..7af02e7 100644
--- a/docs/resources/node_policy_target.md
+++ b/docs/resources/node_policy_target.md
@@ -44,29 +44,20 @@ resource "devzero_node_policy_target" "comprehensive" {
]
}
-# Example with multiple clusters
-resource "devzero_cluster" "us_east" {
- name = "production-us-east-1"
+# The API allows at most ONE cluster per target — to cover several clusters,
+# create one target per cluster (for_each keeps it concise).
+resource "devzero_cluster" "production_regions" {
+ for_each = toset(["us-east-1", "us-west-2", "eu-west-1"])
+ name = "production-${each.key}"
}
-resource "devzero_cluster" "us_west" {
- name = "production-us-west-2"
-}
-
-resource "devzero_cluster" "eu_west" {
- name = "production-eu-west-1"
-}
-
-resource "devzero_node_policy_target" "multi_cluster" {
- name = "all-production-clusters"
- description = "Apply cost optimization policy to all production clusters"
+resource "devzero_node_policy_target" "per_cluster" {
+ for_each = devzero_cluster.production_regions
+ name = "standard-nodes-${each.key}"
+ description = "Apply cost optimization policy to ${each.key}"
policy_id = devzero_node_policy.standard_nodes.id
enabled = true
- cluster_ids = [
- devzero_cluster.us_east.id,
- devzero_cluster.us_west.id,
- devzero_cluster.eu_west.id,
- ]
+ cluster_ids = [each.value.id]
}
# Example of disabled target (for temporary disabling without destroying)
@@ -84,7 +75,7 @@ resource "devzero_node_policy_target" "disabled" {
### Required
-- `cluster_ids` (List of String) List of cluster IDs to apply the node policy to. Must reference existing cluster IDs.
+- `cluster_ids` (List of String) Cluster ID to apply the node policy to. The API accepts at most one cluster per target; create one target per cluster.
- `name` (String) Human-friendly name for the target. Used for display in the DevZero UI.
- `policy_id` (String) Node policy to attach this target to. Must reference an existing `devzero_node_policy` resource ID.
diff --git a/docs/resources/workload_policy.md b/docs/resources/workload_policy.md
index fb8ad0a..adf6b70 100644
--- a/docs/resources/workload_policy.md
+++ b/docs/resources/workload_policy.md
@@ -71,24 +71,44 @@ resource "devzero_workload_policy" "cost_saving" {
### Optional
- `action_triggers` (List of String) Action triggers for when to apply the workload policy. Only one of `on_schedule` or `on_detection` is allowed.The `on_schedule` trigger is used to apply the workload policy on a schedule configured with the `cron_schedule` attribute.The `on_detection` trigger is used to apply the workload policy when a detection trigger event occurs, configured with the `detection_triggers` attribute.
+- `allow_in_place_memory_limit_decrease` (Boolean) Allow in-place memory limit decreases. Only honored when `enable_in_place_vertical_scaling` is true — the server silently forces this to false otherwise, so the provider rejects that combination at plan time. Default: false.
- `cooldown_minutes` (Number) Minutes to wait between applying recommendations
+- `cpu_ceiling_percent` (Number) Ceiling for CPU requests as a percent of the initial request (1-1000)
+- `cpu_floor_percent` (Number) Floor for CPU requests as a percent of the initial request (1-100)
+- `cpu_limit_ceiling_percent` (Number) Ceiling for CPU limits as a percent of the initial limit (1-1000)
+- `cpu_limit_floor_percent` (Number) Floor for CPU limits as a percent of the initial limit (1-100)
- `cpu_vertical_scaling` (Attributes) CPU vertical scaling options (see [below for nested schema](#nestedatt--cpu_vertical_scaling))
- `cron_schedule` (String) Cron expression for scheduled application. Uses standard 5-field cron format in the cluster timezone.
- `defragmentation_schedule` (String) Cron expression for background defragmentation that can move workloads to reduce fragmentation.
- `description` (String) Free-form description of the policy to help others understand its intent and scope.
- `detection_triggers` (List of String) Detection triggers for when to apply the workload policy. Valid values: `pod_creation`, `pod_update`, `pod_evict`.The `pod_creation` trigger is used to apply the workload policy when a pod is created.The `pod_update` trigger is used to apply the workload policy when a pod is updated.The `pod_evict` trigger is used to apply the workload policy when a pod is evicted.
- `drift_delta_percent` (Number) Percentage drift from baseline that triggers VPA refresh
+- `enable_in_place_vertical_scaling` (Boolean) When true, vertical recommendations are applied in place (without recreating pods) where the cluster supports it. Default: false.
- `enable_pmax_protection` (Boolean) When true, the recommender raises requests to cover observed peak usage when the peak-to-recommendation ratio exceeds `pmax_ratio_threshold`. Default: false.
- `gpu_vertical_scaling` (Attributes) GPU vertical scaling options (see [below for nested schema](#nestedatt--gpu_vertical_scaling))
- `gpu_vram_vertical_scaling` (Attributes) GPU VRAM vertical scaling options (see [below for nested schema](#nestedatt--gpu_vram_vertical_scaling))
- `horizontal_scaling` (Attributes) Horizontal scaling options (see [below for nested schema](#nestedatt--horizontal_scaling))
- `hysteresis_vs_target` (Number) Hysteresis threshold vs target for HPA coordination
+- `jvm_cpu_startup_floor_millicores` (Number) CPU floor during JVM startup, in millicores. Unset inherits the system default (75m); explicit `0` disables the floor.
+- `jvm_heap_headroom_multiplier` (Number) Headroom multiplier applied to the JVM heap recommendation
+- `jvm_heap_optimization_enabled` (Boolean) Enable JVM heap sizing recommendations
+- `jvm_heap_target_percentile` (Number) Target percentile for JVM heap sizing (0.0-1.0)
+- `jvm_max_heap_bytes` (Number) Upper bound for the JVM heap recommendation in bytes
+- `jvm_min_heap_bytes` (Number) Lower bound for the JVM heap recommendation in bytes
+- `jvm_non_heap_overhead_bytes` (Number) Fixed non-heap overhead in bytes
+- `jvm_non_heap_overhead_percent` (Number) Non-heap overhead as a fraction of heap
+- `jvm_prefer_container_support` (Boolean) Prefer container-aware JVM flags (UseContainerSupport) over explicit -Xmx
- `live_migration_enabled` (Boolean) Allow live migration when applying recommendations
- `loopback_period_seconds` (Number) Loopback period seconds of the workload policy. The loopback period is the period of time to look back for resource usage data.
+- `memory_ceiling_percent` (Number) Ceiling for memory requests as a percent of the initial request (1-1000)
+- `memory_floor_percent` (Number) Floor for memory requests as a percent of the initial request (1-100)
+- `memory_limit_ceiling_percent` (Number) Ceiling for memory limits as a percent of the initial limit (1-1000)
+- `memory_limit_floor_percent` (Number) Floor for memory limits as a percent of the initial limit (1-100)
- `memory_vertical_scaling` (Attributes) Memory vertical scaling options (see [below for nested schema](#nestedatt--memory_vertical_scaling))
- `min_change_percent` (Number) Global minimum change threshold for applying recommendations
- `min_data_points` (Number) Global minimum data points required for recommendations
- `min_vpa_window_data_points` (Number) Minimum data points in VPA analysis window
+- `pdb_enabled` (Boolean) Respect PodDisruptionBudgets when applying recommendations
- `pmax_ratio_threshold` (Number) Peak-to-recommendation ratio above which pmax protection activates. Example: 3.0 — triggers when peak is 3× the recommendation. Default: 3.0.
- `scheduler_plugins` (List of String) Kubernetes scheduler plugins to activate
- `stability_cv_max` (Number) Maximum coefficient of variation to consider stable
@@ -106,6 +126,7 @@ Optional:
- `adjust_req_even_if_not_set` (Boolean) When true, the recommender will suggest resource requests even if the workload currently has none set. Default: false.
- `enabled` (Boolean) Enable or disable vertical scaling for this resource. When disabled, vertical recommendations will not be applied.
- `limit_multiplier` (Number) How much higher limits should be vs requests (e.g., 2.0 = 2x the request).
+- `limit_use_rss` (Boolean) Memory only: when true, the limit is derived from an RSS-based recommendation instead of the working-set one (the limit multiplier still applies). Ignored for CPU/GPU.
- `limits_adjustment_enabled` (Boolean) Allow recommender to adjust container limits as well as requests. When disabled, only requests are modified.
- `limits_removal_enabled` (Boolean) When true, the recommender will remove resource limits from workloads (CPU axis only — memory limits removal is not supported). Default: false.
- `max_request` (Number) Upper bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
@@ -114,6 +135,7 @@ Optional:
- `min_data_points` (Number) Minimum data points required for VPA decisions
- `min_request` (Number) Lower bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
- `overhead_multiplier` (Number) Additional headroom added to recommendations, expressed as a fraction (e.g., 0.05 for 5%).
+- `request_use_rss` (Boolean) Memory only: when true, size the memory request recommendation from RSS (resident set size) instead of the default working set. Ignored for CPU/GPU.
- `target_percentile` (Number) Target percentile for resource sizing (e.g., 0.75 = P75).
@@ -125,6 +147,7 @@ Optional:
- `adjust_req_even_if_not_set` (Boolean) When true, the recommender will suggest resource requests even if the workload currently has none set. Default: false.
- `enabled` (Boolean) Enable or disable vertical scaling for this resource. When disabled, vertical recommendations will not be applied.
- `limit_multiplier` (Number) How much higher limits should be vs requests (e.g., 2.0 = 2x the request).
+- `limit_use_rss` (Boolean) Memory only: when true, the limit is derived from an RSS-based recommendation instead of the working-set one (the limit multiplier still applies). Ignored for CPU/GPU.
- `limits_adjustment_enabled` (Boolean) Allow recommender to adjust container limits as well as requests. When disabled, only requests are modified.
- `limits_removal_enabled` (Boolean) When true, the recommender will remove resource limits from workloads (CPU axis only — memory limits removal is not supported). Default: false.
- `max_request` (Number) Upper bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
@@ -133,6 +156,7 @@ Optional:
- `min_data_points` (Number) Minimum data points required for VPA decisions
- `min_request` (Number) Lower bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
- `overhead_multiplier` (Number) Additional headroom added to recommendations, expressed as a fraction (e.g., 0.05 for 5%).
+- `request_use_rss` (Boolean) Memory only: when true, size the memory request recommendation from RSS (resident set size) instead of the default working set. Ignored for CPU/GPU.
- `target_percentile` (Number) Target percentile for resource sizing (e.g., 0.75 = P75).
@@ -144,6 +168,7 @@ Optional:
- `adjust_req_even_if_not_set` (Boolean) When true, the recommender will suggest resource requests even if the workload currently has none set. Default: false.
- `enabled` (Boolean) Enable or disable vertical scaling for this resource. When disabled, vertical recommendations will not be applied.
- `limit_multiplier` (Number) How much higher limits should be vs requests (e.g., 2.0 = 2x the request).
+- `limit_use_rss` (Boolean) Memory only: when true, the limit is derived from an RSS-based recommendation instead of the working-set one (the limit multiplier still applies). Ignored for CPU/GPU.
- `limits_adjustment_enabled` (Boolean) Allow recommender to adjust container limits as well as requests. When disabled, only requests are modified.
- `limits_removal_enabled` (Boolean) When true, the recommender will remove resource limits from workloads (CPU axis only — memory limits removal is not supported). Default: false.
- `max_request` (Number) Upper bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
@@ -152,6 +177,7 @@ Optional:
- `min_data_points` (Number) Minimum data points required for VPA decisions
- `min_request` (Number) Lower bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
- `overhead_multiplier` (Number) Additional headroom added to recommendations, expressed as a fraction (e.g., 0.05 for 5%).
+- `request_use_rss` (Boolean) Memory only: when true, size the memory request recommendation from RSS (resident set size) instead of the default working set. Ignored for CPU/GPU.
- `target_percentile` (Number) Target percentile for resource sizing (e.g., 0.75 = P75).
@@ -160,12 +186,16 @@ Optional:
Optional:
+- `composite_formula` (String) Composite formula for multi-metric HPA scaling. Variables: `cpu`, `memory`, `networkingress`, `networkegress` (each the metric's current/target ratio). Example: `cpu * 0.6 + memory * 0.4`.
- `enabled` (Boolean) Enable or disable horizontal scaling
- `max_replica_change_percent` (Number) Maximum percent replica change in one step
- `max_replicas` (Number) Upper bound on replicas
- `min_data_points` (Number) Minimum data points required for HPA decisions
- `min_replicas` (Number) Lower bound on replicas
+- `network_target_throughput_bytes_per_sec` (Number) Target network throughput per replica in bytes/sec. `0` (or unset) auto-detects from P95 + 15% headroom based on the selected metric direction.
- `primary_metric` (String) Primary metric to use for HPA decisions
+- `scale_down_cooldown_seconds` (Number) Scale-down cooldown in seconds. Overrides the default Kubernetes stabilization window (300s).
+- `target_memory_utilization` (Number) Target memory utilization for HPA scaling (0.0-1.0). Defaults to 0.80 server-side when unset.
- `target_utilization` (Number) Target utilization for primary metric (0.0-1.0)
@@ -177,6 +207,7 @@ Optional:
- `adjust_req_even_if_not_set` (Boolean) When true, the recommender will suggest resource requests even if the workload currently has none set. Default: false.
- `enabled` (Boolean) Enable or disable vertical scaling for this resource. When disabled, vertical recommendations will not be applied.
- `limit_multiplier` (Number) How much higher limits should be vs requests (e.g., 2.0 = 2x the request).
+- `limit_use_rss` (Boolean) Memory only: when true, the limit is derived from an RSS-based recommendation instead of the working-set one (the limit multiplier still applies). Ignored for CPU/GPU.
- `limits_adjustment_enabled` (Boolean) Allow recommender to adjust container limits as well as requests. When disabled, only requests are modified.
- `limits_removal_enabled` (Boolean) When true, the recommender will remove resource limits from workloads (CPU axis only — memory limits removal is not supported). Default: false.
- `max_request` (Number) Upper bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
@@ -185,6 +216,7 @@ Optional:
- `min_data_points` (Number) Minimum data points required for VPA decisions
- `min_request` (Number) Lower bound for container resource requests (e.g., CPU millicores or memory bytes) considered by the recommender.
- `overhead_multiplier` (Number) Additional headroom added to recommendations, expressed as a fraction (e.g., 0.05 for 5%).
+- `request_use_rss` (Boolean) Memory only: when true, size the memory request recommendation from RSS (resident set size) instead of the default working set. Ignored for CPU/GPU.
- `target_percentile` (Number) Target percentile for resource sizing (e.g., 0.75 = P75).
## Import
diff --git a/docs/resources/workload_policy_target.md b/docs/resources/workload_policy_target.md
index 5b34bc8..164e180 100644
--- a/docs/resources/workload_policy_target.md
+++ b/docs/resources/workload_policy_target.md
@@ -76,21 +76,43 @@ resource "devzero_workload_policy_target" "full" {
### Optional
+- `annotation_selector` (Attributes) Select workloads by annotations. Uses the same semantics as label selectors, evaluated against workload annotations. (see [below for nested schema](#nestedatt--annotation_selector))
- `description` (String) Free-form description of the target to help others understand its purpose.
- `enabled` (Boolean) Enable or disable this target. When disabled, the associated policy will not apply to the selected workloads.
- `kind_filter` (List of String) Restrict matching to specific Kubernetes kinds. Allowed values: `Pod`, `Job`, `Deployment`, `StatefulSet`, `DaemonSet`, `ReplicaSet`, `CronJob`, `ReplicationController`, `Rollout`.
+- `kind_filter_not_in` (List of String) Kubernetes kinds to exclude from matching. Same allowed values as `kind_filter`.
- `name_pattern` (Attributes) Regex to match workload names. Useful to target rollouts or name conventions (e.g., `^api-.*`). (see [below for nested schema](#nestedatt--name_pattern))
- `namespace_pattern` (Attributes) Regex to match namespace names. Useful when namespaces follow a naming convention (e.g., `^prod-`). (see [below for nested schema](#nestedatt--namespace_pattern))
- `namespace_selector` (Attributes) Select namespaces by labels. Uses the same semantics as Kubernetes label selectors. (see [below for nested schema](#nestedatt--namespace_selector))
-- `node_group_names` (List of String) Restrict matching to specific node groups by name
+- `node_group_names` (List of String, Deprecated) Restrict matching to specific node groups by name. Deprecated upstream — unused by any active target and removed from the UI.
- `priority` (Number) Evaluation priority among multiple targets. Higher values take precedence when multiple targets overlap.
- `workload_names` (List of String) Explicit list of workload names to include
+- `workload_names_not_in` (List of String) Explicit list of workload names to exclude from matching.
- `workload_selector` (Attributes) Select workloads by labels. Applies to Kubernetes objects like Deployments, StatefulSets, DaemonSets, etc. (see [below for nested schema](#nestedatt--workload_selector))
### Read-Only
- `id` (String) Unique identifier of the workload policy target. Managed by the provider.
+
+### Nested Schema for `annotation_selector`
+
+Optional:
+
+- `match_expressions` (Attributes List) Advanced label selector requirements. Each expression supports operators `In`, `NotIn`, `Exists`, `DoesNotExist`. Use `values` only with `In`/`NotIn`. (see [below for nested schema](#nestedatt--annotation_selector--match_expressions))
+- `match_labels` (Map of String) Exact label key/value pairs that the target must match. Keys and values must be strings. Example: `{ "app": "api", "env": "prod" }`.
+
+
+### Nested Schema for `annotation_selector.match_expressions`
+
+Optional:
+
+- `key` (String) Label key to evaluate. Example: `app` or `kubernetes.io/name`.
+- `operator` (String) Label selection operator. One of `In`, `NotIn`, `Exists`, `DoesNotExist`.
+- `values` (List of String) Values to compare against the key. Required with `In`/`NotIn`; must be omitted with `Exists`/`DoesNotExist`.
+
+
+
### Nested Schema for `name_pattern`
diff --git a/docs/resources/workload_rule.md b/docs/resources/workload_rule.md
index 368241b..02cf2ad 100644
--- a/docs/resources/workload_rule.md
+++ b/docs/resources/workload_rule.md
@@ -51,14 +51,16 @@ resource "devzero_workload_rule" "manual" {
}
hpa_rule = {
- enabled = true
- min_replicas = 1
- max_replicas = 10
- target_utilization = 0.70
- primary_metric = "cpu"
+ enabled = true
+ min_replicas = 1
+ max_replicas = 10
- # External/Prometheus metric trigger
+ # Metric triggers: built-in CPU/Memory or external (e.g. Prometheus)
metrics = [
+ {
+ type = "CPU"
+ target_utilization = "0.70"
+ },
{
type = "prometheus"
target_value = "100"
@@ -137,10 +139,12 @@ resource "devzero_workload_rule" "per_container" {
- `cron_schedule` (String) Cron expression for scheduled application (5-field UTC)
- `defragmentation_schedule` (String) Cron expression for node defragmentation
- `detection_triggers` (List of String) Events that trigger a recommendation. Valid values: 'pod_creation', 'pod_update'
+- `disabled` (Boolean) Whether the rule is disabled. A disabled rule exists but is not evaluated. Changing this after creation uses the ToggleWorkloadRuleDisabled API (the upsert API rejects `disabled` on update).
- `emergency_response` (Attributes) Emergency response configuration for OOM and CPU throttle events (see [below for nested schema](#nestedatt--emergency_response))
- `gpu_rule` (Attributes) GPU vertical scaling rule configuration (see [below for nested schema](#nestedatt--gpu_rule))
- `hpa_rule` (Attributes) Horizontal (replica) scaling rule configuration (see [below for nested schema](#nestedatt--hpa_rule))
- `live_migration_enabled` (Boolean) Allow live pod migration when applying recommendations
+- `lookback_period_seconds` (Number) Per-rule override of the metrics lookback window in seconds. Unset inherits the team default (7 days). Minimum 3600 (1h), maximum 2592000 (30d); higher tiers may be capped server-side.
- `memory_rule` (Attributes) Memory vertical scaling rule configuration (see [below for nested schema](#nestedatt--memory_rule))
- `scheduler_plugins` (List of String) Kubernetes scheduler plugins to activate
- `use_in_place_vertical_scaling` (Boolean) Use in-place pod vertical scaling instead of pod restarts
@@ -169,10 +173,12 @@ Optional:
- `enabled` (Boolean) Enable this resource axis rule
- `limit_multiplier` (Number) Multiplier applied to the request to derive the resource limit
+- `limit_use_rss` (Boolean) Memory only: derive the limit from an RSS-based recommendation
- `limits_adjustment_enabled` (Boolean) Whether to also adjust resource limits alongside requests
- `limits_removal_enabled` (Boolean) Actively remove limits from workloads
- `max_request` (Number) Maximum resource request
- `min_request` (Number) Minimum resource request
+- `request_use_rss` (Boolean) Memory only: size the request from RSS instead of working set
- `target_percentile` (Number) Percentile of usage data used as the recommendation target (0-1)
@@ -183,10 +189,12 @@ Optional:
- `enabled` (Boolean) Enable this resource axis rule
- `limit_multiplier` (Number) Multiplier applied to the request to derive the resource limit
+- `limit_use_rss` (Boolean) Memory only: derive the limit from an RSS-based recommendation
- `limits_adjustment_enabled` (Boolean) Whether to also adjust resource limits alongside requests
- `limits_removal_enabled` (Boolean) Actively remove limits from workloads
- `max_request` (Number) Maximum resource request
- `min_request` (Number) Minimum resource request
+- `request_use_rss` (Boolean) Memory only: size the request from RSS instead of working set
- `target_percentile` (Number) Percentile of usage data used as the recommendation target (0-1)
@@ -197,10 +205,12 @@ Optional:
- `enabled` (Boolean) Enable this resource axis rule
- `limit_multiplier` (Number) Multiplier applied to the request to derive the resource limit
+- `limit_use_rss` (Boolean) Memory only: derive the limit from an RSS-based recommendation
- `limits_adjustment_enabled` (Boolean) Whether to also adjust resource limits alongside requests
- `limits_removal_enabled` (Boolean) Actively remove limits from workloads
- `max_request` (Number) Maximum resource request
- `min_request` (Number) Minimum resource request
+- `request_use_rss` (Boolean) Memory only: size the request from RSS instead of working set
- `target_percentile` (Number) Percentile of usage data used as the recommendation target (0-1)
@@ -210,14 +220,22 @@ Optional:
Optional:
+- `ceiling_percent` (Number) Ceiling for the request as a percent of initial_request (1-1000)
- `enabled` (Boolean) Enable this resource axis rule
+- `floor_percent` (Number) Floor for the request as a percent of initial_request (1-100)
+- `initial_limit` (Number) Baseline limit the limit floor/ceiling percents are computed against
+- `initial_request` (Number) Baseline request the floor/ceiling percents are computed against
+- `limit_ceiling_percent` (Number) Ceiling for the limit as a percent of initial_limit (1-1000)
+- `limit_floor_percent` (Number) Floor for the limit as a percent of initial_limit (1-100)
- `limit_multiplier` (Number) Multiplier applied to the request to derive the resource limit
+- `limit_use_rss` (Boolean) Memory only: derive the limit from an RSS-based recommendation
- `limits_adjustment_enabled` (Boolean) Whether to also adjust resource limits alongside requests
- `limits_removal_enabled` (Boolean) Actively remove limits from workloads
- `max_request` (Number) Maximum resource request (millicores for CPU, bytes for memory/GPU)
- `max_scale_down_percent` (Number) Maximum percentage decrease allowed in a single cycle
- `max_scale_up_percent` (Number) Maximum percentage increase allowed in a single cycle
- `min_request` (Number) Minimum resource request (millicores for CPU, bytes for memory/GPU)
+- `request_use_rss` (Boolean) Memory only: size the request from RSS instead of working set
- `target_percentile` (Number) Percentile of usage data used as the recommendation target (0-1)
@@ -238,14 +256,22 @@ Optional:
Optional:
+- `ceiling_percent` (Number) Ceiling for the request as a percent of initial_request (1-1000)
- `enabled` (Boolean) Enable this resource axis rule
+- `floor_percent` (Number) Floor for the request as a percent of initial_request (1-100)
+- `initial_limit` (Number) Baseline limit the limit floor/ceiling percents are computed against
+- `initial_request` (Number) Baseline request the floor/ceiling percents are computed against
+- `limit_ceiling_percent` (Number) Ceiling for the limit as a percent of initial_limit (1-1000)
+- `limit_floor_percent` (Number) Floor for the limit as a percent of initial_limit (1-100)
- `limit_multiplier` (Number) Multiplier applied to the request to derive the resource limit
+- `limit_use_rss` (Boolean) Memory only: derive the limit from an RSS-based recommendation
- `limits_adjustment_enabled` (Boolean) Whether to also adjust resource limits alongside requests
- `limits_removal_enabled` (Boolean) Actively remove limits from workloads
- `max_request` (Number) Maximum resource request (millicores for CPU, bytes for memory/GPU)
- `max_scale_down_percent` (Number) Maximum percentage decrease allowed in a single cycle
- `max_scale_up_percent` (Number) Maximum percentage increase allowed in a single cycle
- `min_request` (Number) Minimum resource request (millicores for CPU, bytes for memory/GPU)
+- `request_use_rss` (Boolean) Memory only: size the request from RSS instead of working set
- `target_percentile` (Number) Percentile of usage data used as the recommendation target (0-1)
@@ -260,11 +286,8 @@ Optional:
- `fallback` (Attributes) Replica fallback configuration when metrics are unavailable (see [below for nested schema](#nestedatt--hpa_rule--fallback))
- `max_replica_change_percent` (Number) Maximum percentage change in replica count per cycle
- `max_replicas` (Number) Maximum number of replicas
-- `metrics` (Attributes List) Additional metric triggers (e.g. Prometheus). CPU/Memory/Network triggers are auto-generated from primary_metric. (see [below for nested schema](#nestedatt--hpa_rule--metrics))
+- `metrics` (Attributes List) HPA metric triggers (CPU, Memory, Network*, or external such as prometheus/kafka). Replaces the removed target_utilization/primary_metric fields. (see [below for nested schema](#nestedatt--hpa_rule--metrics))
- `min_replicas` (Number) Minimum number of replicas
-- `primary_metric` (String) Primary metric for HPA. One of: 'cpu', 'memory', 'gpu', 'network_ingress', 'network_egress'
-- `target_memory_utilization` (Number) Target memory utilization ratio (0-1), tuned independently of CPU
-- `target_utilization` (Number) Target CPU utilization ratio (0-1)
### Nested Schema for `hpa_rule.behavior`
@@ -337,6 +360,7 @@ Required:
Optional:
+- `connector_id` (String) HPA connector ID to source this metric's connection settings from
- `metadata` (Map of String) Free-form key-value metadata for external scalers (e.g. serverAddress, query for Prometheus).
- `query` (String) PromQL query string. Packed into metadata by the service layer.
- `server_address` (String) Prometheus server URL. Packed into metadata by the service layer.
@@ -351,12 +375,20 @@ Optional:
Optional:
+- `ceiling_percent` (Number) Ceiling for the request as a percent of initial_request (1-1000)
- `enabled` (Boolean) Enable this resource axis rule
+- `floor_percent` (Number) Floor for the request as a percent of initial_request (1-100)
+- `initial_limit` (Number) Baseline limit the limit floor/ceiling percents are computed against
+- `initial_request` (Number) Baseline request the floor/ceiling percents are computed against
+- `limit_ceiling_percent` (Number) Ceiling for the limit as a percent of initial_limit (1-1000)
+- `limit_floor_percent` (Number) Floor for the limit as a percent of initial_limit (1-100)
- `limit_multiplier` (Number) Multiplier applied to the request to derive the resource limit
+- `limit_use_rss` (Boolean) Memory only: derive the limit from an RSS-based recommendation
- `limits_adjustment_enabled` (Boolean) Whether to also adjust resource limits alongside requests
- `limits_removal_enabled` (Boolean) Actively remove limits from workloads
- `max_request` (Number) Maximum resource request (millicores for CPU, bytes for memory/GPU)
- `max_scale_down_percent` (Number) Maximum percentage decrease allowed in a single cycle
- `max_scale_up_percent` (Number) Maximum percentage increase allowed in a single cycle
- `min_request` (Number) Minimum resource request (millicores for CPU, bytes for memory/GPU)
+- `request_use_rss` (Boolean) Memory only: size the request from RSS instead of working set
- `target_percentile` (Number) Percentile of usage data used as the recommendation target (0-1)
diff --git a/examples/resources/devzero_node_policy_target/resource.tf b/examples/resources/devzero_node_policy_target/resource.tf
index df09938..88baf5c 100644
--- a/examples/resources/devzero_node_policy_target/resource.tf
+++ b/examples/resources/devzero_node_policy_target/resource.tf
@@ -29,29 +29,20 @@ resource "devzero_node_policy_target" "comprehensive" {
]
}
-# Example with multiple clusters
-resource "devzero_cluster" "us_east" {
- name = "production-us-east-1"
+# The API allows at most ONE cluster per target — to cover several clusters,
+# create one target per cluster (for_each keeps it concise).
+resource "devzero_cluster" "production_regions" {
+ for_each = toset(["us-east-1", "us-west-2", "eu-west-1"])
+ name = "production-${each.key}"
}
-resource "devzero_cluster" "us_west" {
- name = "production-us-west-2"
-}
-
-resource "devzero_cluster" "eu_west" {
- name = "production-eu-west-1"
-}
-
-resource "devzero_node_policy_target" "multi_cluster" {
- name = "all-production-clusters"
- description = "Apply cost optimization policy to all production clusters"
+resource "devzero_node_policy_target" "per_cluster" {
+ for_each = devzero_cluster.production_regions
+ name = "standard-nodes-${each.key}"
+ description = "Apply cost optimization policy to ${each.key}"
policy_id = devzero_node_policy.standard_nodes.id
enabled = true
- cluster_ids = [
- devzero_cluster.us_east.id,
- devzero_cluster.us_west.id,
- devzero_cluster.eu_west.id,
- ]
+ cluster_ids = [each.value.id]
}
# Example of disabled target (for temporary disabling without destroying)
diff --git a/examples/resources/devzero_workload_rule/resource.tf b/examples/resources/devzero_workload_rule/resource.tf
index d5fe1b6..62041de 100644
--- a/examples/resources/devzero_workload_rule/resource.tf
+++ b/examples/resources/devzero_workload_rule/resource.tf
@@ -36,14 +36,16 @@ resource "devzero_workload_rule" "manual" {
}
hpa_rule = {
- enabled = true
- min_replicas = 1
- max_replicas = 10
- target_utilization = 0.70
- primary_metric = "cpu"
+ enabled = true
+ min_replicas = 1
+ max_replicas = 10
- # External/Prometheus metric trigger
+ # Metric triggers: built-in CPU/Memory or external (e.g. Prometheus)
metrics = [
+ {
+ type = "CPU"
+ target_utilization = "0.70"
+ },
{
type = "prometheus"
target_value = "100"
diff --git a/internal/gen/api/v1/apiv1connect/k8s.connect.go b/internal/gen/api/v1/apiv1connect/k8s.connect.go
index bd0a870..508ba4e 100644
--- a/internal/gen/api/v1/apiv1connect/k8s.connect.go
+++ b/internal/gen/api/v1/apiv1connect/k8s.connect.go
@@ -85,6 +85,12 @@ const (
K8SServiceGetNodeProcedure = "/api.v1.K8SService/GetNode"
// K8SServiceGetWorkloadsProcedure is the fully-qualified name of the K8SService's GetWorkloads RPC.
K8SServiceGetWorkloadsProcedure = "/api.v1.K8SService/GetWorkloads"
+ // K8SServiceListWorkloadsPaginatedProcedure is the fully-qualified name of the K8SService's
+ // ListWorkloadsPaginated RPC.
+ K8SServiceListWorkloadsPaginatedProcedure = "/api.v1.K8SService/ListWorkloadsPaginated"
+ // K8SServiceGetWorkloadsSummaryProcedure is the fully-qualified name of the K8SService's
+ // GetWorkloadsSummary RPC.
+ K8SServiceGetWorkloadsSummaryProcedure = "/api.v1.K8SService/GetWorkloadsSummary"
// K8SServiceGetWorkloadProcedure is the fully-qualified name of the K8SService's GetWorkload RPC.
K8SServiceGetWorkloadProcedure = "/api.v1.K8SService/GetWorkload"
// K8SServiceGetWorkloadContainerPercentilesProcedure is the fully-qualified name of the
@@ -96,6 +102,18 @@ const (
// K8SServiceGetLatestContainerRequestLimitsProcedure is the fully-qualified name of the
// K8SService's GetLatestContainerRequestLimits RPC.
K8SServiceGetLatestContainerRequestLimitsProcedure = "/api.v1.K8SService/GetLatestContainerRequestLimits"
+ // K8SServiceGetNodeGPUMigInstancesProcedure is the fully-qualified name of the K8SService's
+ // GetNodeGPUMigInstances RPC.
+ K8SServiceGetNodeGPUMigInstancesProcedure = "/api.v1.K8SService/GetNodeGPUMigInstances"
+ // K8SServiceGetNodeGPUMigInstanceTimeseriesProcedure is the fully-qualified name of the
+ // K8SService's GetNodeGPUMigInstanceTimeseries RPC.
+ K8SServiceGetNodeGPUMigInstanceTimeseriesProcedure = "/api.v1.K8SService/GetNodeGPUMigInstanceTimeseries"
+ // K8SServiceGetContainerIndividualGPUMetricsProcedure is the fully-qualified name of the
+ // K8SService's GetContainerIndividualGPUMetrics RPC.
+ K8SServiceGetContainerIndividualGPUMetricsProcedure = "/api.v1.K8SService/GetContainerIndividualGPUMetrics"
+ // K8SServiceGetWorkloadLanguagesProcedure is the fully-qualified name of the K8SService's
+ // GetWorkloadLanguages RPC.
+ K8SServiceGetWorkloadLanguagesProcedure = "/api.v1.K8SService/GetWorkloadLanguages"
// K8SServiceGetForecastWorkloadsProcedure is the fully-qualified name of the K8SService's
// GetForecastWorkloads RPC.
K8SServiceGetForecastWorkloadsProcedure = "/api.v1.K8SService/GetForecastWorkloads"
@@ -104,6 +122,9 @@ const (
K8SServiceGetForecastWorkloadProcedure = "/api.v1.K8SService/GetForecastWorkload"
// K8SServiceGetResourcesProcedure is the fully-qualified name of the K8SService's GetResources RPC.
K8SServiceGetResourcesProcedure = "/api.v1.K8SService/GetResources"
+ // K8SServiceGetResourceFilterOptionsProcedure is the fully-qualified name of the K8SService's
+ // GetResourceFilterOptions RPC.
+ K8SServiceGetResourceFilterOptionsProcedure = "/api.v1.K8SService/GetResourceFilterOptions"
// K8SServiceGetPodsProcedure is the fully-qualified name of the K8SService's GetPods RPC.
K8SServiceGetPodsProcedure = "/api.v1.K8SService/GetPods"
// K8SServiceGetLatestOperatorVersionProcedure is the fully-qualified name of the K8SService's
@@ -153,6 +174,9 @@ const (
K8SServiceRemoveClusterTagsProcedure = "/api.v1.K8SService/RemoveClusterTags"
// K8SServiceListTagsProcedure is the fully-qualified name of the K8SService's ListTags RPC.
K8SServiceListTagsProcedure = "/api.v1.K8SService/ListTags"
+ // K8SServiceGetMigPartedConfigProcedure is the fully-qualified name of the K8SService's
+ // GetMigPartedConfig RPC.
+ K8SServiceGetMigPartedConfigProcedure = "/api.v1.K8SService/GetMigPartedConfig"
// ClusterMutationServiceCreateClusterProcedure is the fully-qualified name of the
// ClusterMutationService's CreateCluster RPC.
ClusterMutationServiceCreateClusterProcedure = "/api.v1.ClusterMutationService/CreateCluster"
@@ -216,6 +240,13 @@ type K8SServiceClient interface {
GetNode(context.Context, *connect.Request[v1.GetNodeRequest]) (*connect.Response[v1.GetNodeResponse], error)
// GetWorkloads retrieves all workloads for a specific cluster.
GetWorkloads(context.Context, *connect.Request[v1.GetWorkloadsRequest]) (*connect.Response[v1.GetWorkloadsResponse], error)
+ // ListWorkloadsPaginated retrieves a single keyset-paginated page of top-level
+ // workloads for a cluster. Additive alternative to GetWorkloads for large clusters.
+ ListWorkloadsPaginated(context.Context, *connect.Request[v1.ListWorkloadsPaginatedRequest]) (*connect.Response[v1.ListWorkloadsPaginatedResponse], error)
+ // GetWorkloadsSummary computes cluster-wide aggregate breakdowns (cost/cpu/
+ // memory/gpu top-N + other) over the full filtered workload set in one pass.
+ // Companion to ListWorkloadsPaginated for summary cards, top-N lists, treemaps.
+ GetWorkloadsSummary(context.Context, *connect.Request[v1.GetWorkloadsSummaryRequest]) (*connect.Response[v1.GetWorkloadsSummaryResponse], error)
// GetWorkload retrieves detailed information for a specific workload.
GetWorkload(context.Context, *connect.Request[v1.GetWorkloadRequest]) (*connect.Response[v1.GetWorkloadResponse], error)
// GetWorkloadContainerPercentiles retrieves per-container percentile metrics for a workload.
@@ -227,6 +258,18 @@ type K8SServiceClient interface {
GetWorkloadContainerTimeSeries(context.Context, *connect.Request[v1.GetWorkloadContainerTimeSeriesRequest]) (*connect.Response[v1.GetWorkloadContainerTimeSeriesResponse], error)
// GetLatestContainerRequestLimits retrieves the most recent request/limit values per container for a workload.
GetLatestContainerRequestLimits(context.Context, *connect.Request[v1.GetLatestContainerRequestLimitsRequest]) (*connect.Response[v1.GetLatestContainerRequestLimitsResponse], error)
+ // GetNodeGPUMigInstances retrieves the most recent MIG-instance telemetry for a node.
+ // Returns an empty instances list for nodes with no MIG-partitioned GPUs.
+ GetNodeGPUMigInstances(context.Context, *connect.Request[v1.GetNodeGPUMigInstancesRequest]) (*connect.Response[v1.GetNodeGPUMigInstancesResponse], error)
+ // GetNodeGPUMigInstanceTimeseries retrieves per-MIG-instance utilization as
+ // a time series for a node over a time range. Returns an empty instances
+ // list for nodes with no MIG-partitioned GPUs.
+ GetNodeGPUMigInstanceTimeseries(context.Context, *connect.Request[v1.GetNodeGPUMigInstanceTimeseriesRequest]) (*connect.Response[v1.GetNodeGPUMigInstanceTimeseriesResponse], error)
+ // GetContainerIndividualGPUMetrics retrieves the most recent per-GPU breakdown for every
+ // container in a workload that has GPU data.
+ GetContainerIndividualGPUMetrics(context.Context, *connect.Request[v1.GetContainerIndividualGPUMetricsRequest]) (*connect.Response[v1.GetContainerIndividualGPUMetricsResponse], error)
+ // GetWorkloadLanguages retrieves the distinct detected languages/versions across a cluster's workloads.
+ GetWorkloadLanguages(context.Context, *connect.Request[v1.GetWorkloadLanguagesRequest]) (*connect.Response[v1.GetWorkloadLanguagesResponse], error)
// GetForecastWorkloads retrieves all workloads for a specific cluster.
//
// Deprecated: do not use.
@@ -237,6 +280,8 @@ type K8SServiceClient interface {
GetForecastWorkload(context.Context, *connect.Request[v1.GetForecastWorkloadRequest]) (*connect.Response[v1.GetForecastWorkloadResponse], error)
// GetResources retrivers specific resource and their details from db, simulating informer.
GetResources(context.Context, *connect.Request[v1.GetResourcesRequest]) (*connect.Response[v1.GetResourcesResponse], error)
+ // GetResourceFilterOptions returns the distinct filterable field values for a resource kind.
+ GetResourceFilterOptions(context.Context, *connect.Request[v1.GetResourceFilterOptionsRequest]) (*connect.Response[v1.GetResourceFilterOptionsResponse], error)
// GetPods retrieves Pod resources and their details from db.
GetPods(context.Context, *connect.Request[v1.GetPodsRequest]) (*connect.Response[v1.GetPodsResponse], error)
GetLatestOperatorVersion(context.Context, *connect.Request[v1.GetLatestOperatorVersionRequest]) (*connect.Response[v1.GetLatestOperatorVersionResponse], error)
@@ -264,6 +309,10 @@ type K8SServiceClient interface {
RemoveClusterTags(context.Context, *connect.Request[v1.RemoveClusterTagsRequest]) (*connect.Response[v1.RemoveClusterTagsResponse], error)
// ListTags lists all tags for a team.
ListTags(context.Context, *connect.Request[v1.ListTagsRequest]) (*connect.Response[v1.ListTagsResponse], error)
+ // GetMigPartedConfig retrieves the NVIDIA mig-parted ConfigMap collected
+ // from a cluster: the declared MIG partitioning profiles. Per-node applied
+ // state rides NodeDetails (mig_config_desired/mig_config_state).
+ GetMigPartedConfig(context.Context, *connect.Request[v1.GetMigPartedConfigRequest]) (*connect.Response[v1.GetMigPartedConfigResponse], error)
}
// NewK8SServiceClient constructs a client for the api.v1.K8SService service. By default, it uses
@@ -366,6 +415,16 @@ func NewK8SServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...
baseURL+K8SServiceGetWorkloadsProcedure,
opts...,
),
+ listWorkloadsPaginated: connect.NewClient[v1.ListWorkloadsPaginatedRequest, v1.ListWorkloadsPaginatedResponse](
+ httpClient,
+ baseURL+K8SServiceListWorkloadsPaginatedProcedure,
+ opts...,
+ ),
+ getWorkloadsSummary: connect.NewClient[v1.GetWorkloadsSummaryRequest, v1.GetWorkloadsSummaryResponse](
+ httpClient,
+ baseURL+K8SServiceGetWorkloadsSummaryProcedure,
+ opts...,
+ ),
getWorkload: connect.NewClient[v1.GetWorkloadRequest, v1.GetWorkloadResponse](
httpClient,
baseURL+K8SServiceGetWorkloadProcedure,
@@ -386,6 +445,26 @@ func NewK8SServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...
baseURL+K8SServiceGetLatestContainerRequestLimitsProcedure,
opts...,
),
+ getNodeGPUMigInstances: connect.NewClient[v1.GetNodeGPUMigInstancesRequest, v1.GetNodeGPUMigInstancesResponse](
+ httpClient,
+ baseURL+K8SServiceGetNodeGPUMigInstancesProcedure,
+ opts...,
+ ),
+ getNodeGPUMigInstanceTimeseries: connect.NewClient[v1.GetNodeGPUMigInstanceTimeseriesRequest, v1.GetNodeGPUMigInstanceTimeseriesResponse](
+ httpClient,
+ baseURL+K8SServiceGetNodeGPUMigInstanceTimeseriesProcedure,
+ opts...,
+ ),
+ getContainerIndividualGPUMetrics: connect.NewClient[v1.GetContainerIndividualGPUMetricsRequest, v1.GetContainerIndividualGPUMetricsResponse](
+ httpClient,
+ baseURL+K8SServiceGetContainerIndividualGPUMetricsProcedure,
+ opts...,
+ ),
+ getWorkloadLanguages: connect.NewClient[v1.GetWorkloadLanguagesRequest, v1.GetWorkloadLanguagesResponse](
+ httpClient,
+ baseURL+K8SServiceGetWorkloadLanguagesProcedure,
+ opts...,
+ ),
getForecastWorkloads: connect.NewClient[v1.GetForecastWorkloadsRequest, v1.GetForecastWorkloadsResponse](
httpClient,
baseURL+K8SServiceGetForecastWorkloadsProcedure,
@@ -401,6 +480,11 @@ func NewK8SServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...
baseURL+K8SServiceGetResourcesProcedure,
opts...,
),
+ getResourceFilterOptions: connect.NewClient[v1.GetResourceFilterOptionsRequest, v1.GetResourceFilterOptionsResponse](
+ httpClient,
+ baseURL+K8SServiceGetResourceFilterOptionsProcedure,
+ opts...,
+ ),
getPods: connect.NewClient[v1.GetPodsRequest, v1.GetPodsResponse](
httpClient,
baseURL+K8SServiceGetPodsProcedure,
@@ -486,53 +570,66 @@ func NewK8SServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...
baseURL+K8SServiceListTagsProcedure,
opts...,
),
+ getMigPartedConfig: connect.NewClient[v1.GetMigPartedConfigRequest, v1.GetMigPartedConfigResponse](
+ httpClient,
+ baseURL+K8SServiceGetMigPartedConfigProcedure,
+ opts...,
+ ),
}
}
// k8SServiceClient implements K8SServiceClient.
type k8SServiceClient struct {
- getWorkloadsStats *connect.Client[v1.GetWorkloadsStatsRequest, v1.GetWorkloadsStatsResponse]
- getClusters *connect.Client[v1.GetClustersRequest, v1.GetClustersResponse]
- listClusters *connect.Client[v1.ListClustersRequest, v1.ListClustersResponse]
- getCluster *connect.Client[v1.GetClusterRequest, v1.GetClusterResponse]
- getClusterMetadata *connect.Client[v1.GetClusterMetadataRequest, v1.GetClusterMetadataResponse]
- getAllNamespaces *connect.Client[v1.GetAllNamespacesRequest, v1.GetAllNamespacesResponse]
- searchNamespacesByCluster *connect.Client[v1.SearchNamespacesByClusterRequest, v1.SearchNamespacesByClusterResponse]
- listNamespacesByCluster *connect.Client[v1.ListNamespacesByClusterRequest, v1.ListNamespacesByClusterResponse]
- getAllWorkloadNames *connect.Client[v1.GetAllWorkloadNamesRequest, v1.GetAllWorkloadNamesResponse]
- getAllWorkloadLabels *connect.Client[v1.GetAllWorkloadLabelsRequest, v1.GetAllWorkloadLabelsResponse]
- getAllNodeGroupNames *connect.Client[v1.GetAllNodeGroupNamesRequest, v1.GetAllNodeGroupNamesResponse]
- metadataForWorkloads *connect.Client[v1.MetadataForWorkloadsRequest, v1.MetadataForWorkloadsResponse]
- getNodeGroups *connect.Client[v1.GetNodeGroupsRequest, v1.GetNodeGroupsResponse]
- getAllNodeGroups *connect.Client[v1.GetAllNodeGroupsRequest, v1.GetAllNodeGroupsResponse]
- getNodeGroupsUtilization *connect.Client[v1.GetNodeGroupsUtilizationRequest, v1.GetNodeGroupsUtilizationResponse]
- getNodeGroup *connect.Client[v1.GetNodeGroupRequest, v1.GetNodeGroupResponse]
- getNode *connect.Client[v1.GetNodeRequest, v1.GetNodeResponse]
- getWorkloads *connect.Client[v1.GetWorkloadsRequest, v1.GetWorkloadsResponse]
- getWorkload *connect.Client[v1.GetWorkloadRequest, v1.GetWorkloadResponse]
- getWorkloadContainerPercentiles *connect.Client[v1.GetWorkloadContainerPercentilesRequest, v1.GetWorkloadContainerPercentilesResponse]
- getWorkloadContainerTimeSeries *connect.Client[v1.GetWorkloadContainerTimeSeriesRequest, v1.GetWorkloadContainerTimeSeriesResponse]
- getLatestContainerRequestLimits *connect.Client[v1.GetLatestContainerRequestLimitsRequest, v1.GetLatestContainerRequestLimitsResponse]
- getForecastWorkloads *connect.Client[v1.GetForecastWorkloadsRequest, v1.GetForecastWorkloadsResponse]
- getForecastWorkload *connect.Client[v1.GetForecastWorkloadRequest, v1.GetForecastWorkloadResponse]
- getResources *connect.Client[v1.GetResourcesRequest, v1.GetResourcesResponse]
- getPods *connect.Client[v1.GetPodsRequest, v1.GetPodsResponse]
- getLatestOperatorVersion *connect.Client[v1.GetLatestOperatorVersionRequest, v1.GetLatestOperatorVersionResponse]
- galaxyGetWorkloadPerspective *connect.Client[v1.GalaxyGetWorkloadPerspectiveRequest, v1.GalaxyGetWorkloadPerspectiveResponse]
- listAuditLogs *connect.Client[v1.ListAuditLogsRequest, v1.ListAuditLogsResponse]
- listAuditLogOriginators *connect.Client[v1.ListAuditLogOriginatorsRequest, v1.ListAuditLogOriginatorsResponse]
- sendWorkloadEmail *connect.Client[v1.SendWorkloadEmailRequest, v1.SendWorkloadEmailResponse]
- sendWeeklySummaryEmail *connect.Client[v1.SendWeeklySummaryEmailRequest, v1.SendWeeklySummaryEmailResponse]
- getClustersNodeInfo *connect.Client[v1.GetClustersNodeInfoRequest, v1.GetClustersNodeInfoResponse]
- searchK8SResources *connect.Client[v1.SearchK8SResourcesRequest, v1.SearchK8SResourcesResponse]
- searchK8SWorkloads *connect.Client[v1.SearchK8SWorkloadsRequest, v1.SearchK8SWorkloadsResponse]
- getClusterType *connect.Client[v1.GetClusterTypeRequest, v1.GetClusterTypeResponse]
- getRelationsForKind *connect.Client[v1.GetRelatedResourcesRequest, v1.GetRelatedResourcesResponse]
- lookupNodeInstance *connect.Client[v1.LookupNodeInstanceRequest, v1.LookupNodeInstanceResponse]
- getWorkloadPodHistory *connect.Client[v1.GetWorkloadPodHistoryRequest, v1.GetWorkloadPodHistoryResponse]
- addClusterTags *connect.Client[v1.AddClusterTagsRequest, v1.AddClusterTagsResponse]
- removeClusterTags *connect.Client[v1.RemoveClusterTagsRequest, v1.RemoveClusterTagsResponse]
- listTags *connect.Client[v1.ListTagsRequest, v1.ListTagsResponse]
+ getWorkloadsStats *connect.Client[v1.GetWorkloadsStatsRequest, v1.GetWorkloadsStatsResponse]
+ getClusters *connect.Client[v1.GetClustersRequest, v1.GetClustersResponse]
+ listClusters *connect.Client[v1.ListClustersRequest, v1.ListClustersResponse]
+ getCluster *connect.Client[v1.GetClusterRequest, v1.GetClusterResponse]
+ getClusterMetadata *connect.Client[v1.GetClusterMetadataRequest, v1.GetClusterMetadataResponse]
+ getAllNamespaces *connect.Client[v1.GetAllNamespacesRequest, v1.GetAllNamespacesResponse]
+ searchNamespacesByCluster *connect.Client[v1.SearchNamespacesByClusterRequest, v1.SearchNamespacesByClusterResponse]
+ listNamespacesByCluster *connect.Client[v1.ListNamespacesByClusterRequest, v1.ListNamespacesByClusterResponse]
+ getAllWorkloadNames *connect.Client[v1.GetAllWorkloadNamesRequest, v1.GetAllWorkloadNamesResponse]
+ getAllWorkloadLabels *connect.Client[v1.GetAllWorkloadLabelsRequest, v1.GetAllWorkloadLabelsResponse]
+ getAllNodeGroupNames *connect.Client[v1.GetAllNodeGroupNamesRequest, v1.GetAllNodeGroupNamesResponse]
+ metadataForWorkloads *connect.Client[v1.MetadataForWorkloadsRequest, v1.MetadataForWorkloadsResponse]
+ getNodeGroups *connect.Client[v1.GetNodeGroupsRequest, v1.GetNodeGroupsResponse]
+ getAllNodeGroups *connect.Client[v1.GetAllNodeGroupsRequest, v1.GetAllNodeGroupsResponse]
+ getNodeGroupsUtilization *connect.Client[v1.GetNodeGroupsUtilizationRequest, v1.GetNodeGroupsUtilizationResponse]
+ getNodeGroup *connect.Client[v1.GetNodeGroupRequest, v1.GetNodeGroupResponse]
+ getNode *connect.Client[v1.GetNodeRequest, v1.GetNodeResponse]
+ getWorkloads *connect.Client[v1.GetWorkloadsRequest, v1.GetWorkloadsResponse]
+ listWorkloadsPaginated *connect.Client[v1.ListWorkloadsPaginatedRequest, v1.ListWorkloadsPaginatedResponse]
+ getWorkloadsSummary *connect.Client[v1.GetWorkloadsSummaryRequest, v1.GetWorkloadsSummaryResponse]
+ getWorkload *connect.Client[v1.GetWorkloadRequest, v1.GetWorkloadResponse]
+ getWorkloadContainerPercentiles *connect.Client[v1.GetWorkloadContainerPercentilesRequest, v1.GetWorkloadContainerPercentilesResponse]
+ getWorkloadContainerTimeSeries *connect.Client[v1.GetWorkloadContainerTimeSeriesRequest, v1.GetWorkloadContainerTimeSeriesResponse]
+ getLatestContainerRequestLimits *connect.Client[v1.GetLatestContainerRequestLimitsRequest, v1.GetLatestContainerRequestLimitsResponse]
+ getNodeGPUMigInstances *connect.Client[v1.GetNodeGPUMigInstancesRequest, v1.GetNodeGPUMigInstancesResponse]
+ getNodeGPUMigInstanceTimeseries *connect.Client[v1.GetNodeGPUMigInstanceTimeseriesRequest, v1.GetNodeGPUMigInstanceTimeseriesResponse]
+ getContainerIndividualGPUMetrics *connect.Client[v1.GetContainerIndividualGPUMetricsRequest, v1.GetContainerIndividualGPUMetricsResponse]
+ getWorkloadLanguages *connect.Client[v1.GetWorkloadLanguagesRequest, v1.GetWorkloadLanguagesResponse]
+ getForecastWorkloads *connect.Client[v1.GetForecastWorkloadsRequest, v1.GetForecastWorkloadsResponse]
+ getForecastWorkload *connect.Client[v1.GetForecastWorkloadRequest, v1.GetForecastWorkloadResponse]
+ getResources *connect.Client[v1.GetResourcesRequest, v1.GetResourcesResponse]
+ getResourceFilterOptions *connect.Client[v1.GetResourceFilterOptionsRequest, v1.GetResourceFilterOptionsResponse]
+ getPods *connect.Client[v1.GetPodsRequest, v1.GetPodsResponse]
+ getLatestOperatorVersion *connect.Client[v1.GetLatestOperatorVersionRequest, v1.GetLatestOperatorVersionResponse]
+ galaxyGetWorkloadPerspective *connect.Client[v1.GalaxyGetWorkloadPerspectiveRequest, v1.GalaxyGetWorkloadPerspectiveResponse]
+ listAuditLogs *connect.Client[v1.ListAuditLogsRequest, v1.ListAuditLogsResponse]
+ listAuditLogOriginators *connect.Client[v1.ListAuditLogOriginatorsRequest, v1.ListAuditLogOriginatorsResponse]
+ sendWorkloadEmail *connect.Client[v1.SendWorkloadEmailRequest, v1.SendWorkloadEmailResponse]
+ sendWeeklySummaryEmail *connect.Client[v1.SendWeeklySummaryEmailRequest, v1.SendWeeklySummaryEmailResponse]
+ getClustersNodeInfo *connect.Client[v1.GetClustersNodeInfoRequest, v1.GetClustersNodeInfoResponse]
+ searchK8SResources *connect.Client[v1.SearchK8SResourcesRequest, v1.SearchK8SResourcesResponse]
+ searchK8SWorkloads *connect.Client[v1.SearchK8SWorkloadsRequest, v1.SearchK8SWorkloadsResponse]
+ getClusterType *connect.Client[v1.GetClusterTypeRequest, v1.GetClusterTypeResponse]
+ getRelationsForKind *connect.Client[v1.GetRelatedResourcesRequest, v1.GetRelatedResourcesResponse]
+ lookupNodeInstance *connect.Client[v1.LookupNodeInstanceRequest, v1.LookupNodeInstanceResponse]
+ getWorkloadPodHistory *connect.Client[v1.GetWorkloadPodHistoryRequest, v1.GetWorkloadPodHistoryResponse]
+ addClusterTags *connect.Client[v1.AddClusterTagsRequest, v1.AddClusterTagsResponse]
+ removeClusterTags *connect.Client[v1.RemoveClusterTagsRequest, v1.RemoveClusterTagsResponse]
+ listTags *connect.Client[v1.ListTagsRequest, v1.ListTagsResponse]
+ getMigPartedConfig *connect.Client[v1.GetMigPartedConfigRequest, v1.GetMigPartedConfigResponse]
}
// GetWorkloadsStats calls api.v1.K8SService.GetWorkloadsStats.
@@ -627,6 +724,16 @@ func (c *k8SServiceClient) GetWorkloads(ctx context.Context, req *connect.Reques
return c.getWorkloads.CallUnary(ctx, req)
}
+// ListWorkloadsPaginated calls api.v1.K8SService.ListWorkloadsPaginated.
+func (c *k8SServiceClient) ListWorkloadsPaginated(ctx context.Context, req *connect.Request[v1.ListWorkloadsPaginatedRequest]) (*connect.Response[v1.ListWorkloadsPaginatedResponse], error) {
+ return c.listWorkloadsPaginated.CallUnary(ctx, req)
+}
+
+// GetWorkloadsSummary calls api.v1.K8SService.GetWorkloadsSummary.
+func (c *k8SServiceClient) GetWorkloadsSummary(ctx context.Context, req *connect.Request[v1.GetWorkloadsSummaryRequest]) (*connect.Response[v1.GetWorkloadsSummaryResponse], error) {
+ return c.getWorkloadsSummary.CallUnary(ctx, req)
+}
+
// GetWorkload calls api.v1.K8SService.GetWorkload.
func (c *k8SServiceClient) GetWorkload(ctx context.Context, req *connect.Request[v1.GetWorkloadRequest]) (*connect.Response[v1.GetWorkloadResponse], error) {
return c.getWorkload.CallUnary(ctx, req)
@@ -647,6 +754,26 @@ func (c *k8SServiceClient) GetLatestContainerRequestLimits(ctx context.Context,
return c.getLatestContainerRequestLimits.CallUnary(ctx, req)
}
+// GetNodeGPUMigInstances calls api.v1.K8SService.GetNodeGPUMigInstances.
+func (c *k8SServiceClient) GetNodeGPUMigInstances(ctx context.Context, req *connect.Request[v1.GetNodeGPUMigInstancesRequest]) (*connect.Response[v1.GetNodeGPUMigInstancesResponse], error) {
+ return c.getNodeGPUMigInstances.CallUnary(ctx, req)
+}
+
+// GetNodeGPUMigInstanceTimeseries calls api.v1.K8SService.GetNodeGPUMigInstanceTimeseries.
+func (c *k8SServiceClient) GetNodeGPUMigInstanceTimeseries(ctx context.Context, req *connect.Request[v1.GetNodeGPUMigInstanceTimeseriesRequest]) (*connect.Response[v1.GetNodeGPUMigInstanceTimeseriesResponse], error) {
+ return c.getNodeGPUMigInstanceTimeseries.CallUnary(ctx, req)
+}
+
+// GetContainerIndividualGPUMetrics calls api.v1.K8SService.GetContainerIndividualGPUMetrics.
+func (c *k8SServiceClient) GetContainerIndividualGPUMetrics(ctx context.Context, req *connect.Request[v1.GetContainerIndividualGPUMetricsRequest]) (*connect.Response[v1.GetContainerIndividualGPUMetricsResponse], error) {
+ return c.getContainerIndividualGPUMetrics.CallUnary(ctx, req)
+}
+
+// GetWorkloadLanguages calls api.v1.K8SService.GetWorkloadLanguages.
+func (c *k8SServiceClient) GetWorkloadLanguages(ctx context.Context, req *connect.Request[v1.GetWorkloadLanguagesRequest]) (*connect.Response[v1.GetWorkloadLanguagesResponse], error) {
+ return c.getWorkloadLanguages.CallUnary(ctx, req)
+}
+
// GetForecastWorkloads calls api.v1.K8SService.GetForecastWorkloads.
//
// Deprecated: do not use.
@@ -666,6 +793,11 @@ func (c *k8SServiceClient) GetResources(ctx context.Context, req *connect.Reques
return c.getResources.CallUnary(ctx, req)
}
+// GetResourceFilterOptions calls api.v1.K8SService.GetResourceFilterOptions.
+func (c *k8SServiceClient) GetResourceFilterOptions(ctx context.Context, req *connect.Request[v1.GetResourceFilterOptionsRequest]) (*connect.Response[v1.GetResourceFilterOptionsResponse], error) {
+ return c.getResourceFilterOptions.CallUnary(ctx, req)
+}
+
// GetPods calls api.v1.K8SService.GetPods.
func (c *k8SServiceClient) GetPods(ctx context.Context, req *connect.Request[v1.GetPodsRequest]) (*connect.Response[v1.GetPodsResponse], error) {
return c.getPods.CallUnary(ctx, req)
@@ -751,6 +883,11 @@ func (c *k8SServiceClient) ListTags(ctx context.Context, req *connect.Request[v1
return c.listTags.CallUnary(ctx, req)
}
+// GetMigPartedConfig calls api.v1.K8SService.GetMigPartedConfig.
+func (c *k8SServiceClient) GetMigPartedConfig(ctx context.Context, req *connect.Request[v1.GetMigPartedConfigRequest]) (*connect.Response[v1.GetMigPartedConfigResponse], error) {
+ return c.getMigPartedConfig.CallUnary(ctx, req)
+}
+
// K8SServiceHandler is an implementation of the api.v1.K8SService service.
type K8SServiceHandler interface {
// GetWorkloadsStats retrieves stats for workloads in a specific cluster.
@@ -791,6 +928,13 @@ type K8SServiceHandler interface {
GetNode(context.Context, *connect.Request[v1.GetNodeRequest]) (*connect.Response[v1.GetNodeResponse], error)
// GetWorkloads retrieves all workloads for a specific cluster.
GetWorkloads(context.Context, *connect.Request[v1.GetWorkloadsRequest]) (*connect.Response[v1.GetWorkloadsResponse], error)
+ // ListWorkloadsPaginated retrieves a single keyset-paginated page of top-level
+ // workloads for a cluster. Additive alternative to GetWorkloads for large clusters.
+ ListWorkloadsPaginated(context.Context, *connect.Request[v1.ListWorkloadsPaginatedRequest]) (*connect.Response[v1.ListWorkloadsPaginatedResponse], error)
+ // GetWorkloadsSummary computes cluster-wide aggregate breakdowns (cost/cpu/
+ // memory/gpu top-N + other) over the full filtered workload set in one pass.
+ // Companion to ListWorkloadsPaginated for summary cards, top-N lists, treemaps.
+ GetWorkloadsSummary(context.Context, *connect.Request[v1.GetWorkloadsSummaryRequest]) (*connect.Response[v1.GetWorkloadsSummaryResponse], error)
// GetWorkload retrieves detailed information for a specific workload.
GetWorkload(context.Context, *connect.Request[v1.GetWorkloadRequest]) (*connect.Response[v1.GetWorkloadResponse], error)
// GetWorkloadContainerPercentiles retrieves per-container percentile metrics for a workload.
@@ -802,6 +946,18 @@ type K8SServiceHandler interface {
GetWorkloadContainerTimeSeries(context.Context, *connect.Request[v1.GetWorkloadContainerTimeSeriesRequest]) (*connect.Response[v1.GetWorkloadContainerTimeSeriesResponse], error)
// GetLatestContainerRequestLimits retrieves the most recent request/limit values per container for a workload.
GetLatestContainerRequestLimits(context.Context, *connect.Request[v1.GetLatestContainerRequestLimitsRequest]) (*connect.Response[v1.GetLatestContainerRequestLimitsResponse], error)
+ // GetNodeGPUMigInstances retrieves the most recent MIG-instance telemetry for a node.
+ // Returns an empty instances list for nodes with no MIG-partitioned GPUs.
+ GetNodeGPUMigInstances(context.Context, *connect.Request[v1.GetNodeGPUMigInstancesRequest]) (*connect.Response[v1.GetNodeGPUMigInstancesResponse], error)
+ // GetNodeGPUMigInstanceTimeseries retrieves per-MIG-instance utilization as
+ // a time series for a node over a time range. Returns an empty instances
+ // list for nodes with no MIG-partitioned GPUs.
+ GetNodeGPUMigInstanceTimeseries(context.Context, *connect.Request[v1.GetNodeGPUMigInstanceTimeseriesRequest]) (*connect.Response[v1.GetNodeGPUMigInstanceTimeseriesResponse], error)
+ // GetContainerIndividualGPUMetrics retrieves the most recent per-GPU breakdown for every
+ // container in a workload that has GPU data.
+ GetContainerIndividualGPUMetrics(context.Context, *connect.Request[v1.GetContainerIndividualGPUMetricsRequest]) (*connect.Response[v1.GetContainerIndividualGPUMetricsResponse], error)
+ // GetWorkloadLanguages retrieves the distinct detected languages/versions across a cluster's workloads.
+ GetWorkloadLanguages(context.Context, *connect.Request[v1.GetWorkloadLanguagesRequest]) (*connect.Response[v1.GetWorkloadLanguagesResponse], error)
// GetForecastWorkloads retrieves all workloads for a specific cluster.
//
// Deprecated: do not use.
@@ -812,6 +968,8 @@ type K8SServiceHandler interface {
GetForecastWorkload(context.Context, *connect.Request[v1.GetForecastWorkloadRequest]) (*connect.Response[v1.GetForecastWorkloadResponse], error)
// GetResources retrivers specific resource and their details from db, simulating informer.
GetResources(context.Context, *connect.Request[v1.GetResourcesRequest]) (*connect.Response[v1.GetResourcesResponse], error)
+ // GetResourceFilterOptions returns the distinct filterable field values for a resource kind.
+ GetResourceFilterOptions(context.Context, *connect.Request[v1.GetResourceFilterOptionsRequest]) (*connect.Response[v1.GetResourceFilterOptionsResponse], error)
// GetPods retrieves Pod resources and their details from db.
GetPods(context.Context, *connect.Request[v1.GetPodsRequest]) (*connect.Response[v1.GetPodsResponse], error)
GetLatestOperatorVersion(context.Context, *connect.Request[v1.GetLatestOperatorVersionRequest]) (*connect.Response[v1.GetLatestOperatorVersionResponse], error)
@@ -839,6 +997,10 @@ type K8SServiceHandler interface {
RemoveClusterTags(context.Context, *connect.Request[v1.RemoveClusterTagsRequest]) (*connect.Response[v1.RemoveClusterTagsResponse], error)
// ListTags lists all tags for a team.
ListTags(context.Context, *connect.Request[v1.ListTagsRequest]) (*connect.Response[v1.ListTagsResponse], error)
+ // GetMigPartedConfig retrieves the NVIDIA mig-parted ConfigMap collected
+ // from a cluster: the declared MIG partitioning profiles. Per-node applied
+ // state rides NodeDetails (mig_config_desired/mig_config_state).
+ GetMigPartedConfig(context.Context, *connect.Request[v1.GetMigPartedConfigRequest]) (*connect.Response[v1.GetMigPartedConfigResponse], error)
}
// NewK8SServiceHandler builds an HTTP handler from the service implementation. It returns the path
@@ -937,6 +1099,16 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
svc.GetWorkloads,
opts...,
)
+ k8SServiceListWorkloadsPaginatedHandler := connect.NewUnaryHandler(
+ K8SServiceListWorkloadsPaginatedProcedure,
+ svc.ListWorkloadsPaginated,
+ opts...,
+ )
+ k8SServiceGetWorkloadsSummaryHandler := connect.NewUnaryHandler(
+ K8SServiceGetWorkloadsSummaryProcedure,
+ svc.GetWorkloadsSummary,
+ opts...,
+ )
k8SServiceGetWorkloadHandler := connect.NewUnaryHandler(
K8SServiceGetWorkloadProcedure,
svc.GetWorkload,
@@ -957,6 +1129,26 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
svc.GetLatestContainerRequestLimits,
opts...,
)
+ k8SServiceGetNodeGPUMigInstancesHandler := connect.NewUnaryHandler(
+ K8SServiceGetNodeGPUMigInstancesProcedure,
+ svc.GetNodeGPUMigInstances,
+ opts...,
+ )
+ k8SServiceGetNodeGPUMigInstanceTimeseriesHandler := connect.NewUnaryHandler(
+ K8SServiceGetNodeGPUMigInstanceTimeseriesProcedure,
+ svc.GetNodeGPUMigInstanceTimeseries,
+ opts...,
+ )
+ k8SServiceGetContainerIndividualGPUMetricsHandler := connect.NewUnaryHandler(
+ K8SServiceGetContainerIndividualGPUMetricsProcedure,
+ svc.GetContainerIndividualGPUMetrics,
+ opts...,
+ )
+ k8SServiceGetWorkloadLanguagesHandler := connect.NewUnaryHandler(
+ K8SServiceGetWorkloadLanguagesProcedure,
+ svc.GetWorkloadLanguages,
+ opts...,
+ )
k8SServiceGetForecastWorkloadsHandler := connect.NewUnaryHandler(
K8SServiceGetForecastWorkloadsProcedure,
svc.GetForecastWorkloads,
@@ -972,6 +1164,11 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
svc.GetResources,
opts...,
)
+ k8SServiceGetResourceFilterOptionsHandler := connect.NewUnaryHandler(
+ K8SServiceGetResourceFilterOptionsProcedure,
+ svc.GetResourceFilterOptions,
+ opts...,
+ )
k8SServiceGetPodsHandler := connect.NewUnaryHandler(
K8SServiceGetPodsProcedure,
svc.GetPods,
@@ -1057,6 +1254,11 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
svc.ListTags,
opts...,
)
+ k8SServiceGetMigPartedConfigHandler := connect.NewUnaryHandler(
+ K8SServiceGetMigPartedConfigProcedure,
+ svc.GetMigPartedConfig,
+ opts...,
+ )
return "/api.v1.K8SService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case K8SServiceGetWorkloadsStatsProcedure:
@@ -1095,6 +1297,10 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
k8SServiceGetNodeHandler.ServeHTTP(w, r)
case K8SServiceGetWorkloadsProcedure:
k8SServiceGetWorkloadsHandler.ServeHTTP(w, r)
+ case K8SServiceListWorkloadsPaginatedProcedure:
+ k8SServiceListWorkloadsPaginatedHandler.ServeHTTP(w, r)
+ case K8SServiceGetWorkloadsSummaryProcedure:
+ k8SServiceGetWorkloadsSummaryHandler.ServeHTTP(w, r)
case K8SServiceGetWorkloadProcedure:
k8SServiceGetWorkloadHandler.ServeHTTP(w, r)
case K8SServiceGetWorkloadContainerPercentilesProcedure:
@@ -1103,12 +1309,22 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
k8SServiceGetWorkloadContainerTimeSeriesHandler.ServeHTTP(w, r)
case K8SServiceGetLatestContainerRequestLimitsProcedure:
k8SServiceGetLatestContainerRequestLimitsHandler.ServeHTTP(w, r)
+ case K8SServiceGetNodeGPUMigInstancesProcedure:
+ k8SServiceGetNodeGPUMigInstancesHandler.ServeHTTP(w, r)
+ case K8SServiceGetNodeGPUMigInstanceTimeseriesProcedure:
+ k8SServiceGetNodeGPUMigInstanceTimeseriesHandler.ServeHTTP(w, r)
+ case K8SServiceGetContainerIndividualGPUMetricsProcedure:
+ k8SServiceGetContainerIndividualGPUMetricsHandler.ServeHTTP(w, r)
+ case K8SServiceGetWorkloadLanguagesProcedure:
+ k8SServiceGetWorkloadLanguagesHandler.ServeHTTP(w, r)
case K8SServiceGetForecastWorkloadsProcedure:
k8SServiceGetForecastWorkloadsHandler.ServeHTTP(w, r)
case K8SServiceGetForecastWorkloadProcedure:
k8SServiceGetForecastWorkloadHandler.ServeHTTP(w, r)
case K8SServiceGetResourcesProcedure:
k8SServiceGetResourcesHandler.ServeHTTP(w, r)
+ case K8SServiceGetResourceFilterOptionsProcedure:
+ k8SServiceGetResourceFilterOptionsHandler.ServeHTTP(w, r)
case K8SServiceGetPodsProcedure:
k8SServiceGetPodsHandler.ServeHTTP(w, r)
case K8SServiceGetLatestOperatorVersionProcedure:
@@ -1143,6 +1359,8 @@ func NewK8SServiceHandler(svc K8SServiceHandler, opts ...connect.HandlerOption)
k8SServiceRemoveClusterTagsHandler.ServeHTTP(w, r)
case K8SServiceListTagsProcedure:
k8SServiceListTagsHandler.ServeHTTP(w, r)
+ case K8SServiceGetMigPartedConfigProcedure:
+ k8SServiceGetMigPartedConfigHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
@@ -1224,6 +1442,14 @@ func (UnimplementedK8SServiceHandler) GetWorkloads(context.Context, *connect.Req
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetWorkloads is not implemented"))
}
+func (UnimplementedK8SServiceHandler) ListWorkloadsPaginated(context.Context, *connect.Request[v1.ListWorkloadsPaginatedRequest]) (*connect.Response[v1.ListWorkloadsPaginatedResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.ListWorkloadsPaginated is not implemented"))
+}
+
+func (UnimplementedK8SServiceHandler) GetWorkloadsSummary(context.Context, *connect.Request[v1.GetWorkloadsSummaryRequest]) (*connect.Response[v1.GetWorkloadsSummaryResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetWorkloadsSummary is not implemented"))
+}
+
func (UnimplementedK8SServiceHandler) GetWorkload(context.Context, *connect.Request[v1.GetWorkloadRequest]) (*connect.Response[v1.GetWorkloadResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetWorkload is not implemented"))
}
@@ -1240,6 +1466,22 @@ func (UnimplementedK8SServiceHandler) GetLatestContainerRequestLimits(context.Co
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetLatestContainerRequestLimits is not implemented"))
}
+func (UnimplementedK8SServiceHandler) GetNodeGPUMigInstances(context.Context, *connect.Request[v1.GetNodeGPUMigInstancesRequest]) (*connect.Response[v1.GetNodeGPUMigInstancesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetNodeGPUMigInstances is not implemented"))
+}
+
+func (UnimplementedK8SServiceHandler) GetNodeGPUMigInstanceTimeseries(context.Context, *connect.Request[v1.GetNodeGPUMigInstanceTimeseriesRequest]) (*connect.Response[v1.GetNodeGPUMigInstanceTimeseriesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetNodeGPUMigInstanceTimeseries is not implemented"))
+}
+
+func (UnimplementedK8SServiceHandler) GetContainerIndividualGPUMetrics(context.Context, *connect.Request[v1.GetContainerIndividualGPUMetricsRequest]) (*connect.Response[v1.GetContainerIndividualGPUMetricsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetContainerIndividualGPUMetrics is not implemented"))
+}
+
+func (UnimplementedK8SServiceHandler) GetWorkloadLanguages(context.Context, *connect.Request[v1.GetWorkloadLanguagesRequest]) (*connect.Response[v1.GetWorkloadLanguagesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetWorkloadLanguages is not implemented"))
+}
+
func (UnimplementedK8SServiceHandler) GetForecastWorkloads(context.Context, *connect.Request[v1.GetForecastWorkloadsRequest]) (*connect.Response[v1.GetForecastWorkloadsResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetForecastWorkloads is not implemented"))
}
@@ -1252,6 +1494,10 @@ func (UnimplementedK8SServiceHandler) GetResources(context.Context, *connect.Req
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetResources is not implemented"))
}
+func (UnimplementedK8SServiceHandler) GetResourceFilterOptions(context.Context, *connect.Request[v1.GetResourceFilterOptionsRequest]) (*connect.Response[v1.GetResourceFilterOptionsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetResourceFilterOptions is not implemented"))
+}
+
func (UnimplementedK8SServiceHandler) GetPods(context.Context, *connect.Request[v1.GetPodsRequest]) (*connect.Response[v1.GetPodsResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetPods is not implemented"))
}
@@ -1320,6 +1566,10 @@ func (UnimplementedK8SServiceHandler) ListTags(context.Context, *connect.Request
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.ListTags is not implemented"))
}
+func (UnimplementedK8SServiceHandler) GetMigPartedConfig(context.Context, *connect.Request[v1.GetMigPartedConfigRequest]) (*connect.Response[v1.GetMigPartedConfigResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8SService.GetMigPartedConfig is not implemented"))
+}
+
// ClusterMutationServiceClient is a client for the api.v1.ClusterMutationService service.
type ClusterMutationServiceClient interface {
// CreateCluster creates a new cluster.
diff --git a/internal/gen/api/v1/apiv1connect/profiling.connect.go b/internal/gen/api/v1/apiv1connect/profiling.connect.go
index 6ed91ad..bd5ad67 100644
--- a/internal/gen/api/v1/apiv1connect/profiling.connect.go
+++ b/internal/gen/api/v1/apiv1connect/profiling.connect.go
@@ -36,11 +36,19 @@ const (
// ProfilingServiceGetWorkloadProfilesProcedure is the fully-qualified name of the
// ProfilingService's GetWorkloadProfiles RPC.
ProfilingServiceGetWorkloadProfilesProcedure = "/api.v1.ProfilingService/GetWorkloadProfiles"
+ // ProfilingServiceGetWorkloadProfileAvailabilityProcedure is the fully-qualified name of the
+ // ProfilingService's GetWorkloadProfileAvailability RPC.
+ ProfilingServiceGetWorkloadProfileAvailabilityProcedure = "/api.v1.ProfilingService/GetWorkloadProfileAvailability"
)
// ProfilingServiceClient is a client for the api.v1.ProfilingService service.
type ProfilingServiceClient interface {
GetWorkloadProfiles(context.Context, *connect.Request[v1.GetWorkloadProfilesRequest]) (*connect.Response[v1.GetWorkloadProfilesResponse], error)
+ // GetWorkloadProfileAvailability is a lightweight check the frontend uses to
+ // decide whether the 1D/7D DB-snapshot tabs should be enabled (and default
+ // to) versus falling back to a live compute. It never reads snapshot payloads
+ // — only per-window row counts and the most recent computed_at.
+ GetWorkloadProfileAvailability(context.Context, *connect.Request[v1.GetWorkloadProfileAvailabilityRequest]) (*connect.Response[v1.GetWorkloadProfileAvailabilityResponse], error)
}
// NewProfilingServiceClient constructs a client for the api.v1.ProfilingService service. By
@@ -58,12 +66,18 @@ func NewProfilingServiceClient(httpClient connect.HTTPClient, baseURL string, op
baseURL+ProfilingServiceGetWorkloadProfilesProcedure,
opts...,
),
+ getWorkloadProfileAvailability: connect.NewClient[v1.GetWorkloadProfileAvailabilityRequest, v1.GetWorkloadProfileAvailabilityResponse](
+ httpClient,
+ baseURL+ProfilingServiceGetWorkloadProfileAvailabilityProcedure,
+ opts...,
+ ),
}
}
// profilingServiceClient implements ProfilingServiceClient.
type profilingServiceClient struct {
- getWorkloadProfiles *connect.Client[v1.GetWorkloadProfilesRequest, v1.GetWorkloadProfilesResponse]
+ getWorkloadProfiles *connect.Client[v1.GetWorkloadProfilesRequest, v1.GetWorkloadProfilesResponse]
+ getWorkloadProfileAvailability *connect.Client[v1.GetWorkloadProfileAvailabilityRequest, v1.GetWorkloadProfileAvailabilityResponse]
}
// GetWorkloadProfiles calls api.v1.ProfilingService.GetWorkloadProfiles.
@@ -71,9 +85,19 @@ func (c *profilingServiceClient) GetWorkloadProfiles(ctx context.Context, req *c
return c.getWorkloadProfiles.CallUnary(ctx, req)
}
+// GetWorkloadProfileAvailability calls api.v1.ProfilingService.GetWorkloadProfileAvailability.
+func (c *profilingServiceClient) GetWorkloadProfileAvailability(ctx context.Context, req *connect.Request[v1.GetWorkloadProfileAvailabilityRequest]) (*connect.Response[v1.GetWorkloadProfileAvailabilityResponse], error) {
+ return c.getWorkloadProfileAvailability.CallUnary(ctx, req)
+}
+
// ProfilingServiceHandler is an implementation of the api.v1.ProfilingService service.
type ProfilingServiceHandler interface {
GetWorkloadProfiles(context.Context, *connect.Request[v1.GetWorkloadProfilesRequest]) (*connect.Response[v1.GetWorkloadProfilesResponse], error)
+ // GetWorkloadProfileAvailability is a lightweight check the frontend uses to
+ // decide whether the 1D/7D DB-snapshot tabs should be enabled (and default
+ // to) versus falling back to a live compute. It never reads snapshot payloads
+ // — only per-window row counts and the most recent computed_at.
+ GetWorkloadProfileAvailability(context.Context, *connect.Request[v1.GetWorkloadProfileAvailabilityRequest]) (*connect.Response[v1.GetWorkloadProfileAvailabilityResponse], error)
}
// NewProfilingServiceHandler builds an HTTP handler from the service implementation. It returns the
@@ -87,10 +111,17 @@ func NewProfilingServiceHandler(svc ProfilingServiceHandler, opts ...connect.Han
svc.GetWorkloadProfiles,
opts...,
)
+ profilingServiceGetWorkloadProfileAvailabilityHandler := connect.NewUnaryHandler(
+ ProfilingServiceGetWorkloadProfileAvailabilityProcedure,
+ svc.GetWorkloadProfileAvailability,
+ opts...,
+ )
return "/api.v1.ProfilingService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case ProfilingServiceGetWorkloadProfilesProcedure:
profilingServiceGetWorkloadProfilesHandler.ServeHTTP(w, r)
+ case ProfilingServiceGetWorkloadProfileAvailabilityProcedure:
+ profilingServiceGetWorkloadProfileAvailabilityHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
@@ -103,3 +134,7 @@ type UnimplementedProfilingServiceHandler struct{}
func (UnimplementedProfilingServiceHandler) GetWorkloadProfiles(context.Context, *connect.Request[v1.GetWorkloadProfilesRequest]) (*connect.Response[v1.GetWorkloadProfilesResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProfilingService.GetWorkloadProfiles is not implemented"))
}
+
+func (UnimplementedProfilingServiceHandler) GetWorkloadProfileAvailability(context.Context, *connect.Request[v1.GetWorkloadProfileAvailabilityRequest]) (*connect.Response[v1.GetWorkloadProfileAvailabilityResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProfilingService.GetWorkloadProfileAvailability is not implemented"))
+}
diff --git a/internal/gen/api/v1/apiv1connect/recommendation.connect.go b/internal/gen/api/v1/apiv1connect/recommendation.connect.go
index 8c85cd8..7484237 100644
--- a/internal/gen/api/v1/apiv1connect/recommendation.connect.go
+++ b/internal/gen/api/v1/apiv1connect/recommendation.connect.go
@@ -203,6 +203,12 @@ const (
// K8SRecommendationServiceSuggestedKarpenterConfigProcedure is the fully-qualified name of the
// K8sRecommendationService's SuggestedKarpenterConfig RPC.
K8SRecommendationServiceSuggestedKarpenterConfigProcedure = "/api.v1.K8sRecommendationService/SuggestedKarpenterConfig"
+ // K8SRecommendationServiceSuggestNodePolicyImprovementsProcedure is the fully-qualified name of the
+ // K8sRecommendationService's SuggestNodePolicyImprovements RPC.
+ K8SRecommendationServiceSuggestNodePolicyImprovementsProcedure = "/api.v1.K8sRecommendationService/SuggestNodePolicyImprovements"
+ // K8SRecommendationServiceListClusterNodePolicySuggestionsProcedure is the fully-qualified name of
+ // the K8sRecommendationService's ListClusterNodePolicySuggestions RPC.
+ K8SRecommendationServiceListClusterNodePolicySuggestionsProcedure = "/api.v1.K8sRecommendationService/ListClusterNodePolicySuggestions"
// K8SRecommendationServiceGenerateNodePoliciesFromKarpenterProcedure is the fully-qualified name of
// the K8sRecommendationService's GenerateNodePoliciesFromKarpenter RPC.
K8SRecommendationServiceGenerateNodePoliciesFromKarpenterProcedure = "/api.v1.K8sRecommendationService/GenerateNodePoliciesFromKarpenter"
@@ -221,15 +227,42 @@ const (
// K8SRecommendationServiceGetCheckpointApplyStatusProcedure is the fully-qualified name of the
// K8sRecommendationService's GetCheckpointApplyStatus RPC.
K8SRecommendationServiceGetCheckpointApplyStatusProcedure = "/api.v1.K8sRecommendationService/GetCheckpointApplyStatus"
+ // K8SRecommendationServiceGetClusterCheckpointLabelCoverageProcedure is the fully-qualified name of
+ // the K8sRecommendationService's GetClusterCheckpointLabelCoverage RPC.
+ K8SRecommendationServiceGetClusterCheckpointLabelCoverageProcedure = "/api.v1.K8sRecommendationService/GetClusterCheckpointLabelCoverage"
+ // K8SRecommendationServiceListNodeGroupCheckpointLabelStateProcedure is the fully-qualified name of
+ // the K8sRecommendationService's ListNodeGroupCheckpointLabelState RPC.
+ K8SRecommendationServiceListNodeGroupCheckpointLabelStateProcedure = "/api.v1.K8sRecommendationService/ListNodeGroupCheckpointLabelState"
// K8SRecommendationServiceGetNodeAnnotationReadinessProcedure is the fully-qualified name of the
// K8sRecommendationService's GetNodeAnnotationReadiness RPC.
K8SRecommendationServiceGetNodeAnnotationReadinessProcedure = "/api.v1.K8sRecommendationService/GetNodeAnnotationReadiness"
+ // K8SRecommendationServiceDetectClusterAutoscalerProcedure is the fully-qualified name of the
+ // K8sRecommendationService's DetectClusterAutoscaler RPC.
+ K8SRecommendationServiceDetectClusterAutoscalerProcedure = "/api.v1.K8sRecommendationService/DetectClusterAutoscaler"
// K8SRecommendationServiceGetMigrationStateProcedure is the fully-qualified name of the
// K8sRecommendationService's GetMigrationState RPC.
K8SRecommendationServiceGetMigrationStateProcedure = "/api.v1.K8sRecommendationService/GetMigrationState"
// K8SRecommendationServiceUpdateMigrationStateProcedure is the fully-qualified name of the
// K8sRecommendationService's UpdateMigrationState RPC.
K8SRecommendationServiceUpdateMigrationStateProcedure = "/api.v1.K8sRecommendationService/UpdateMigrationState"
+ // K8SRecommendationServiceGetKarpenterMigrationStateProcedure is the fully-qualified name of the
+ // K8sRecommendationService's GetKarpenterMigrationState RPC.
+ K8SRecommendationServiceGetKarpenterMigrationStateProcedure = "/api.v1.K8sRecommendationService/GetKarpenterMigrationState"
+ // K8SRecommendationServiceUpdateKarpenterMigrationStateProcedure is the fully-qualified name of the
+ // K8sRecommendationService's UpdateKarpenterMigrationState RPC.
+ K8SRecommendationServiceUpdateKarpenterMigrationStateProcedure = "/api.v1.K8sRecommendationService/UpdateKarpenterMigrationState"
+ // K8SRecommendationServiceDetectKarpenterOwnershipConflictsProcedure is the fully-qualified name of
+ // the K8sRecommendationService's DetectKarpenterOwnershipConflicts RPC.
+ K8SRecommendationServiceDetectKarpenterOwnershipConflictsProcedure = "/api.v1.K8sRecommendationService/DetectKarpenterOwnershipConflicts"
+ // K8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictProcedure is the fully-qualified
+ // name of the K8sRecommendationService's AcknowledgeKarpenterOwnershipConflict RPC.
+ K8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictProcedure = "/api.v1.K8sRecommendationService/AcknowledgeKarpenterOwnershipConflict"
+ // K8SRecommendationServiceGetKarpenterSourceResourcesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's GetKarpenterSourceResources RPC.
+ K8SRecommendationServiceGetKarpenterSourceResourcesProcedure = "/api.v1.K8sRecommendationService/GetKarpenterSourceResources"
+ // K8SRecommendationServiceGetKarpenterAdoptionStatusProcedure is the fully-qualified name of the
+ // K8sRecommendationService's GetKarpenterAdoptionStatus RPC.
+ K8SRecommendationServiceGetKarpenterAdoptionStatusProcedure = "/api.v1.K8sRecommendationService/GetKarpenterAdoptionStatus"
// K8SRecommendationServiceReportNodePoolValidationProcedure is the fully-qualified name of the
// K8sRecommendationService's ReportNodePoolValidation RPC.
K8SRecommendationServiceReportNodePoolValidationProcedure = "/api.v1.K8sRecommendationService/ReportNodePoolValidation"
@@ -257,6 +290,9 @@ const (
// K8SRecommendationServiceGetInstanceCategoriesProcedure is the fully-qualified name of the
// K8sRecommendationService's GetInstanceCategories RPC.
K8SRecommendationServiceGetInstanceCategoriesProcedure = "/api.v1.K8sRecommendationService/GetInstanceCategories"
+ // K8SRecommendationServiceGetInstanceShapesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's GetInstanceShapes RPC.
+ K8SRecommendationServiceGetInstanceShapesProcedure = "/api.v1.K8sRecommendationService/GetInstanceShapes"
// K8SRecommendationServiceGetInstanceCPUsProcedure is the fully-qualified name of the
// K8sRecommendationService's GetInstanceCPUs RPC.
K8SRecommendationServiceGetInstanceCPUsProcedure = "/api.v1.K8sRecommendationService/GetInstanceCPUs"
@@ -275,6 +311,9 @@ const (
// K8SRecommendationServiceGetPDBRecommendationForWorkloadProcedure is the fully-qualified name of
// the K8sRecommendationService's GetPDBRecommendationForWorkload RPC.
K8SRecommendationServiceGetPDBRecommendationForWorkloadProcedure = "/api.v1.K8sRecommendationService/GetPDBRecommendationForWorkload"
+ // K8SRecommendationServiceListWorkloadStructuralHealthProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ListWorkloadStructuralHealth RPC.
+ K8SRecommendationServiceListWorkloadStructuralHealthProcedure = "/api.v1.K8sRecommendationService/ListWorkloadStructuralHealth"
// K8SRecommendationServiceCreateStorageRecommendationPolicyProcedure is the fully-qualified name of
// the K8sRecommendationService's CreateStorageRecommendationPolicy RPC.
K8SRecommendationServiceCreateStorageRecommendationPolicyProcedure = "/api.v1.K8sRecommendationService/CreateStorageRecommendationPolicy"
@@ -338,15 +377,48 @@ const (
// K8SRecommendationServiceGetWorkloadOptimizationPolicyProcedure is the fully-qualified name of the
// K8sRecommendationService's GetWorkloadOptimizationPolicy RPC.
K8SRecommendationServiceGetWorkloadOptimizationPolicyProcedure = "/api.v1.K8sRecommendationService/GetWorkloadOptimizationPolicy"
+ // K8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadProcedure is the fully-qualified
+ // name of the K8sRecommendationService's GetWorkloadOptimizationPolicyByWorkload RPC.
+ K8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadProcedure = "/api.v1.K8sRecommendationService/GetWorkloadOptimizationPolicyByWorkload"
// K8SRecommendationServiceUpdateWorkloadOptimizationPolicyProcedure is the fully-qualified name of
// the K8sRecommendationService's UpdateWorkloadOptimizationPolicy RPC.
K8SRecommendationServiceUpdateWorkloadOptimizationPolicyProcedure = "/api.v1.K8sRecommendationService/UpdateWorkloadOptimizationPolicy"
+ // K8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledProcedure is the fully-qualified
+ // name of the K8sRecommendationService's ToggleWorkloadOptimizationPolicyDisabled RPC.
+ K8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledProcedure = "/api.v1.K8sRecommendationService/ToggleWorkloadOptimizationPolicyDisabled"
// K8SRecommendationServiceDeleteWorkloadOptimizationPolicyProcedure is the fully-qualified name of
// the K8sRecommendationService's DeleteWorkloadOptimizationPolicy RPC.
K8SRecommendationServiceDeleteWorkloadOptimizationPolicyProcedure = "/api.v1.K8sRecommendationService/DeleteWorkloadOptimizationPolicy"
+ // K8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesProcedure is the fully-qualified
+ // name of the K8sRecommendationService's PreviewWorkloadOptimizationPolicyMatches RPC.
+ K8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesProcedure = "/api.v1.K8sRecommendationService/PreviewWorkloadOptimizationPolicyMatches"
+ // K8SRecommendationServiceCreateSchedulerPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's CreateSchedulerPolicy RPC.
+ K8SRecommendationServiceCreateSchedulerPolicyProcedure = "/api.v1.K8sRecommendationService/CreateSchedulerPolicy"
+ // K8SRecommendationServiceListSchedulerPoliciesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ListSchedulerPolicies RPC.
+ K8SRecommendationServiceListSchedulerPoliciesProcedure = "/api.v1.K8sRecommendationService/ListSchedulerPolicies"
+ // K8SRecommendationServiceUpdateSchedulerPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's UpdateSchedulerPolicy RPC.
+ K8SRecommendationServiceUpdateSchedulerPolicyProcedure = "/api.v1.K8sRecommendationService/UpdateSchedulerPolicy"
+ // K8SRecommendationServiceToggleSchedulerPolicyDisabledProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ToggleSchedulerPolicyDisabled RPC.
+ K8SRecommendationServiceToggleSchedulerPolicyDisabledProcedure = "/api.v1.K8sRecommendationService/ToggleSchedulerPolicyDisabled"
+ // K8SRecommendationServiceDeleteSchedulerPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's DeleteSchedulerPolicy RPC.
+ K8SRecommendationServiceDeleteSchedulerPolicyProcedure = "/api.v1.K8sRecommendationService/DeleteSchedulerPolicy"
+ // K8SRecommendationServicePreviewSchedulerPolicyTargetsProcedure is the fully-qualified name of the
+ // K8sRecommendationService's PreviewSchedulerPolicyTargets RPC.
+ K8SRecommendationServicePreviewSchedulerPolicyTargetsProcedure = "/api.v1.K8sRecommendationService/PreviewSchedulerPolicyTargets"
+ // K8SRecommendationServiceListSchedulerPolicyEnrollmentsProcedure is the fully-qualified name of
+ // the K8sRecommendationService's ListSchedulerPolicyEnrollments RPC.
+ K8SRecommendationServiceListSchedulerPolicyEnrollmentsProcedure = "/api.v1.K8sRecommendationService/ListSchedulerPolicyEnrollments"
// K8SRecommendationServiceUpsertManualWorkloadRuleProcedure is the fully-qualified name of the
// K8sRecommendationService's UpsertManualWorkloadRule RPC.
K8SRecommendationServiceUpsertManualWorkloadRuleProcedure = "/api.v1.K8sRecommendationService/UpsertManualWorkloadRule"
+ // K8SRecommendationServiceToggleWorkloadRuleDisabledProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ToggleWorkloadRuleDisabled RPC.
+ K8SRecommendationServiceToggleWorkloadRuleDisabledProcedure = "/api.v1.K8sRecommendationService/ToggleWorkloadRuleDisabled"
// K8SRecommendationServicePreviewWorkloadRuleProcedure is the fully-qualified name of the
// K8sRecommendationService's PreviewWorkloadRule RPC.
K8SRecommendationServicePreviewWorkloadRuleProcedure = "/api.v1.K8sRecommendationService/PreviewWorkloadRule"
@@ -368,15 +440,117 @@ const (
// K8SRecommendationServiceDeleteWorkloadRuleProcedure is the fully-qualified name of the
// K8sRecommendationService's DeleteWorkloadRule RPC.
K8SRecommendationServiceDeleteWorkloadRuleProcedure = "/api.v1.K8sRecommendationService/DeleteWorkloadRule"
+ // K8SRecommendationServiceDeleteAllWorkloadRulesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's DeleteAllWorkloadRules RPC.
+ K8SRecommendationServiceDeleteAllWorkloadRulesProcedure = "/api.v1.K8sRecommendationService/DeleteAllWorkloadRules"
+ // K8SRecommendationServiceBulkDeleteWorkloadRulesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's BulkDeleteWorkloadRules RPC.
+ K8SRecommendationServiceBulkDeleteWorkloadRulesProcedure = "/api.v1.K8sRecommendationService/BulkDeleteWorkloadRules"
+ // K8SRecommendationServiceBulkToggleWorkloadRulesDisabledProcedure is the fully-qualified name of
+ // the K8sRecommendationService's BulkToggleWorkloadRulesDisabled RPC.
+ K8SRecommendationServiceBulkToggleWorkloadRulesDisabledProcedure = "/api.v1.K8sRecommendationService/BulkToggleWorkloadRulesDisabled"
// K8SRecommendationServiceGetWorkloadContainerNamesProcedure is the fully-qualified name of the
// K8sRecommendationService's GetWorkloadContainerNames RPC.
K8SRecommendationServiceGetWorkloadContainerNamesProcedure = "/api.v1.K8sRecommendationService/GetWorkloadContainerNames"
// K8SRecommendationServiceBatchAutoOptimizeWorkloadsProcedure is the fully-qualified name of the
// K8sRecommendationService's BatchAutoOptimizeWorkloads RPC.
K8SRecommendationServiceBatchAutoOptimizeWorkloadsProcedure = "/api.v1.K8sRecommendationService/BatchAutoOptimizeWorkloads"
+ // K8SRecommendationServiceBatchUpsertManualWorkloadRulesProcedure is the fully-qualified name of
+ // the K8sRecommendationService's BatchUpsertManualWorkloadRules RPC.
+ K8SRecommendationServiceBatchUpsertManualWorkloadRulesProcedure = "/api.v1.K8sRecommendationService/BatchUpsertManualWorkloadRules"
+ // K8SRecommendationServiceBatchPreviewWorkloadRulesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's BatchPreviewWorkloadRules RPC.
+ K8SRecommendationServiceBatchPreviewWorkloadRulesProcedure = "/api.v1.K8sRecommendationService/BatchPreviewWorkloadRules"
+ // K8SRecommendationServiceApplyOneTimeOptimizationProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ApplyOneTimeOptimization RPC.
+ K8SRecommendationServiceApplyOneTimeOptimizationProcedure = "/api.v1.K8sRecommendationService/ApplyOneTimeOptimization"
+ // K8SRecommendationServiceDeleteRuleAndApplyRecommendationProcedure is the fully-qualified name of
+ // the K8sRecommendationService's DeleteRuleAndApplyRecommendation RPC.
+ K8SRecommendationServiceDeleteRuleAndApplyRecommendationProcedure = "/api.v1.K8sRecommendationService/DeleteRuleAndApplyRecommendation"
// K8SRecommendationServiceGetNodeRecommendationStatusProcedure is the fully-qualified name of the
// K8sRecommendationService's GetNodeRecommendationStatus RPC.
K8SRecommendationServiceGetNodeRecommendationStatusProcedure = "/api.v1.K8sRecommendationService/GetNodeRecommendationStatus"
+ // K8SRecommendationServiceCreateSnapshotPoliciesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's CreateSnapshotPolicies RPC.
+ K8SRecommendationServiceCreateSnapshotPoliciesProcedure = "/api.v1.K8sRecommendationService/CreateSnapshotPolicies"
+ // K8SRecommendationServiceListSnapshotPoliciesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ListSnapshotPolicies RPC.
+ K8SRecommendationServiceListSnapshotPoliciesProcedure = "/api.v1.K8sRecommendationService/ListSnapshotPolicies"
+ // K8SRecommendationServiceUpdateSnapshotPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's UpdateSnapshotPolicy RPC.
+ K8SRecommendationServiceUpdateSnapshotPolicyProcedure = "/api.v1.K8sRecommendationService/UpdateSnapshotPolicy"
+ // K8SRecommendationServiceDeleteSnapshotPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's DeleteSnapshotPolicy RPC.
+ K8SRecommendationServiceDeleteSnapshotPolicyProcedure = "/api.v1.K8sRecommendationService/DeleteSnapshotPolicy"
+ // K8SRecommendationServiceCreateSnapshotPolicyTargetsProcedure is the fully-qualified name of the
+ // K8sRecommendationService's CreateSnapshotPolicyTargets RPC.
+ K8SRecommendationServiceCreateSnapshotPolicyTargetsProcedure = "/api.v1.K8sRecommendationService/CreateSnapshotPolicyTargets"
+ // K8SRecommendationServiceListSnapshotPolicyTargetsProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ListSnapshotPolicyTargets RPC.
+ K8SRecommendationServiceListSnapshotPolicyTargetsProcedure = "/api.v1.K8sRecommendationService/ListSnapshotPolicyTargets"
+ // K8SRecommendationServiceUpdateSnapshotPolicyTargetProcedure is the fully-qualified name of the
+ // K8sRecommendationService's UpdateSnapshotPolicyTarget RPC.
+ K8SRecommendationServiceUpdateSnapshotPolicyTargetProcedure = "/api.v1.K8sRecommendationService/UpdateSnapshotPolicyTarget"
+ // K8SRecommendationServiceDeleteSnapshotPolicyTargetProcedure is the fully-qualified name of the
+ // K8sRecommendationService's DeleteSnapshotPolicyTarget RPC.
+ K8SRecommendationServiceDeleteSnapshotPolicyTargetProcedure = "/api.v1.K8sRecommendationService/DeleteSnapshotPolicyTarget"
+ // K8SRecommendationServiceCreateForensicSnapshotPoliciesProcedure is the fully-qualified name of
+ // the K8sRecommendationService's CreateForensicSnapshotPolicies RPC.
+ K8SRecommendationServiceCreateForensicSnapshotPoliciesProcedure = "/api.v1.K8sRecommendationService/CreateForensicSnapshotPolicies"
+ // K8SRecommendationServiceListForensicSnapshotPoliciesProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ListForensicSnapshotPolicies RPC.
+ K8SRecommendationServiceListForensicSnapshotPoliciesProcedure = "/api.v1.K8sRecommendationService/ListForensicSnapshotPolicies"
+ // K8SRecommendationServiceUpdateForensicSnapshotPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's UpdateForensicSnapshotPolicy RPC.
+ K8SRecommendationServiceUpdateForensicSnapshotPolicyProcedure = "/api.v1.K8sRecommendationService/UpdateForensicSnapshotPolicy"
+ // K8SRecommendationServiceDeleteForensicSnapshotPolicyProcedure is the fully-qualified name of the
+ // K8sRecommendationService's DeleteForensicSnapshotPolicy RPC.
+ K8SRecommendationServiceDeleteForensicSnapshotPolicyProcedure = "/api.v1.K8sRecommendationService/DeleteForensicSnapshotPolicy"
+ // K8SRecommendationServiceCreateForensicSnapshotPolicyTargetsProcedure is the fully-qualified name
+ // of the K8sRecommendationService's CreateForensicSnapshotPolicyTargets RPC.
+ K8SRecommendationServiceCreateForensicSnapshotPolicyTargetsProcedure = "/api.v1.K8sRecommendationService/CreateForensicSnapshotPolicyTargets"
+ // K8SRecommendationServiceListForensicSnapshotPolicyTargetsProcedure is the fully-qualified name of
+ // the K8sRecommendationService's ListForensicSnapshotPolicyTargets RPC.
+ K8SRecommendationServiceListForensicSnapshotPolicyTargetsProcedure = "/api.v1.K8sRecommendationService/ListForensicSnapshotPolicyTargets"
+ // K8SRecommendationServiceUpdateForensicSnapshotPolicyTargetProcedure is the fully-qualified name
+ // of the K8sRecommendationService's UpdateForensicSnapshotPolicyTarget RPC.
+ K8SRecommendationServiceUpdateForensicSnapshotPolicyTargetProcedure = "/api.v1.K8sRecommendationService/UpdateForensicSnapshotPolicyTarget"
+ // K8SRecommendationServiceDeleteForensicSnapshotPolicyTargetProcedure is the fully-qualified name
+ // of the K8sRecommendationService's DeleteForensicSnapshotPolicyTarget RPC.
+ K8SRecommendationServiceDeleteForensicSnapshotPolicyTargetProcedure = "/api.v1.K8sRecommendationService/DeleteForensicSnapshotPolicyTarget"
+ // K8SRecommendationServiceTriggerForensicSnapshotRunProcedure is the fully-qualified name of the
+ // K8sRecommendationService's TriggerForensicSnapshotRun RPC.
+ K8SRecommendationServiceTriggerForensicSnapshotRunProcedure = "/api.v1.K8sRecommendationService/TriggerForensicSnapshotRun"
+ // K8SRecommendationServiceListReferencedAuthenticationsProcedure is the fully-qualified name of the
+ // K8sRecommendationService's ListReferencedAuthentications RPC.
+ K8SRecommendationServiceListReferencedAuthenticationsProcedure = "/api.v1.K8sRecommendationService/ListReferencedAuthentications"
+ // K8SRecommendationServicePreviewSnapshotPolicyTargetMatchesProcedure is the fully-qualified name
+ // of the K8sRecommendationService's PreviewSnapshotPolicyTargetMatches RPC.
+ K8SRecommendationServicePreviewSnapshotPolicyTargetMatchesProcedure = "/api.v1.K8sRecommendationService/PreviewSnapshotPolicyTargetMatches"
+ // K8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesProcedure is the
+ // fully-qualified name of the K8sRecommendationService's PreviewForensicSnapshotPolicyTargetMatches
+ // RPC.
+ K8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesProcedure = "/api.v1.K8sRecommendationService/PreviewForensicSnapshotPolicyTargetMatches"
+ // K8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeProcedure is the fully-qualified name
+ // of the K8sRecommendationService's GetSnapshotPolicyTargetRenderedScope RPC.
+ K8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeProcedure = "/api.v1.K8sRecommendationService/GetSnapshotPolicyTargetRenderedScope"
+ // K8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeProcedure is the
+ // fully-qualified name of the K8sRecommendationService's
+ // GetForensicSnapshotPolicyTargetRenderedScope RPC.
+ K8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeProcedure = "/api.v1.K8sRecommendationService/GetForensicSnapshotPolicyTargetRenderedScope"
+ // K8SRecommendationServiceGetSnapshotRecommendationStatusProcedure is the fully-qualified name of
+ // the K8sRecommendationService's GetSnapshotRecommendationStatus RPC.
+ K8SRecommendationServiceGetSnapshotRecommendationStatusProcedure = "/api.v1.K8sRecommendationService/GetSnapshotRecommendationStatus"
+ // K8SRecommendationServiceGetForensicSnapshotRecommendationStatusProcedure is the fully-qualified
+ // name of the K8sRecommendationService's GetForensicSnapshotRecommendationStatus RPC.
+ K8SRecommendationServiceGetForensicSnapshotRecommendationStatusProcedure = "/api.v1.K8sRecommendationService/GetForensicSnapshotRecommendationStatus"
+ // K8SRecommendationServicePreviewSnapshotRecommendationConfigProcedure is the fully-qualified name
+ // of the K8sRecommendationService's PreviewSnapshotRecommendationConfig RPC.
+ K8SRecommendationServicePreviewSnapshotRecommendationConfigProcedure = "/api.v1.K8sRecommendationService/PreviewSnapshotRecommendationConfig"
+ // K8SRecommendationServicePreviewForensicSnapshotRecommendationConfigProcedure is the
+ // fully-qualified name of the K8sRecommendationService's
+ // PreviewForensicSnapshotRecommendationConfig RPC.
+ K8SRecommendationServicePreviewForensicSnapshotRecommendationConfigProcedure = "/api.v1.K8sRecommendationService/PreviewForensicSnapshotRecommendationConfig"
)
// K8SRecommendationServiceClient is a client for the api.v1.K8sRecommendationService service.
@@ -479,6 +653,26 @@ type K8SRecommendationServiceClient interface {
DeleteNodePolicy(context.Context, *connect.Request[v1.DeleteNodePolicyRequest]) (*connect.Response[v1.DeleteNodePolicyResponse], error)
SuggestedNodePolicy(context.Context, *connect.Request[v1.SuggestedNodePolicyRequest]) (*connect.Response[v1.SuggestedNodePolicyResponse], error)
SuggestedKarpenterConfig(context.Context, *connect.Request[v1.SuggestedKarpenterConfigRequest]) (*connect.Response[v1.SuggestedKarpenterConfigResponse], error)
+ // SuggestNodePolicyImprovements returns evidence-cited improvement suggestions for a
+ // node policy's NodePool/NodeClass fields, computed per (policy, cluster) pair over a
+ // profile window. Serves the latest precomputed row when fresh; recomputes
+ // synchronously when the row is missing or stale (policy edited since, or the rule
+ // engine version changed). Inline drafts (`policy` set) always compute live.
+ SuggestNodePolicyImprovements(context.Context, *connect.Request[v1.SuggestNodePolicyImprovementsRequest]) (*connect.Response[v1.SuggestNodePolicyImprovementsResponse], error)
+ // ListClusterNodePolicySuggestions returns the latest suggestions for every node
+ // policy on a cluster — dakr-authored and cluster-managed mirrors alike — one entry
+ // per policy, so a cluster-wide triage view does not need one
+ // SuggestNodePolicyImprovements call per policy. Always serves precomputed rows from
+ // the same node_policy_suggestions table SuggestNodePolicyImprovements reads,
+ // populated on a cadence by a per-cluster batch job; never computes live, so a large
+ // cluster's worth of policies can never block this call on a synchronous evidence
+ // load. A policy with no row yet, or a row stale enough to recompute, is reported via
+ // `stale` (per policy and in aggregate) rather than blocking the response, and a
+ // background refresh of the whole cluster is enqueued when any row needs one. Carries
+ // no `original`/`suggested` NodePolicy payload per policy — accepting a suggestion
+ // still goes through SuggestNodePolicyImprovements for that one policy, which is
+ // where the compiled accept-all/per-field composition already lives.
+ ListClusterNodePolicySuggestions(context.Context, *connect.Request[v1.ListClusterNodePolicySuggestionsRequest]) (*connect.Response[v1.ListClusterNodePolicySuggestionsResponse], error)
// GenerateNodePoliciesFromKarpenter generates NodePolicy objects from existing Karpenter resources
// (NodePools and EC2NodeClasses) for a given cluster.
GenerateNodePoliciesFromKarpenter(context.Context, *connect.Request[v1.GenerateNodePoliciesFromKarpenterRequest]) (*connect.Response[v1.GenerateNodePoliciesFromKarpenterResponse], error)
@@ -505,12 +699,38 @@ type K8SRecommendationServiceClient interface {
// policy. The FE polls this while a batch is in flight so the toggle CTA can
// render "9/10 labelled, 1 failed".
GetCheckpointApplyStatus(context.Context, *connect.Request[v1.GetCheckpointApplyStatusRequest]) (*connect.Response[v1.GetCheckpointApplyStatusResponse], error)
+ // GetClusterCheckpointLabelCoverage returns per-node-group counts for the
+ // dakr.devzero.io/checkpoint-node label across every policy-managed node
+ // group in a cluster: how many live nodes carry the label, how many have a
+ // pending SSA apply, how many failed. The FE renders an "X/Y labeled"
+ // subtext under the checkpoint chip in NodeGroupsTable. Source-of-truth
+ // for live label state; the per-batch GetCheckpointApplyStatus only sees
+ // nodes that were in a batch.
+ GetClusterCheckpointLabelCoverage(context.Context, *connect.Request[v1.GetClusterCheckpointLabelCoverageRequest]) (*connect.Response[v1.GetClusterCheckpointLabelCoverageResponse], error)
+ // ListNodeGroupCheckpointLabelState returns per-node label state for one
+ // node group: has-label, last apply attempt state, last error. Used by the
+ // NodeGroupPanelContent Nodes tab to render a per-node Checkpoint label
+ // column. Scoped to one node group so the per-panel-open payload stays
+ // bounded.
+ ListNodeGroupCheckpointLabelState(context.Context, *connect.Request[v1.ListNodeGroupCheckpointLabelStateRequest]) (*connect.Response[v1.ListNodeGroupCheckpointLabelStateResponse], error)
// GetNodeAnnotationReadiness checks how many nodes in a cluster have been
// annotated with AWS metadata by the Karpenter fork's node metadata controller.
GetNodeAnnotationReadiness(context.Context, *connect.Request[v1.GetNodeAnnotationReadinessRequest]) (*connect.Response[v1.GetNodeAnnotationReadinessResponse], error)
+ // DetectClusterAutoscaler classifies which autoscaler family manages the
+ // cluster from live signals (Karpenter CRDs, cluster-autoscaler Deployment,
+ // cast.ai provisioner Deployment / cast-labeled nodes). Used by the
+ // migration wizard entry to parameterize the journey by source autoscaler.
+ DetectClusterAutoscaler(context.Context, *connect.Request[v1.DetectClusterAutoscalerRequest]) (*connect.Response[v1.DetectClusterAutoscalerResponse], error)
// Migration wizard state management
GetMigrationState(context.Context, *connect.Request[v1.GetMigrationStateRequest]) (*connect.Response[v1.GetMigrationStateResponse], error)
UpdateMigrationState(context.Context, *connect.Request[v1.UpdateMigrationStateRequest]) (*connect.Response[v1.UpdateMigrationStateResponse], error)
+ // Karpenter migration wizard
+ GetKarpenterMigrationState(context.Context, *connect.Request[v1.GetKarpenterMigrationStateRequest]) (*connect.Response[v1.GetKarpenterMigrationStateResponse], error)
+ UpdateKarpenterMigrationState(context.Context, *connect.Request[v1.UpdateKarpenterMigrationStateRequest]) (*connect.Response[v1.UpdateKarpenterMigrationStateResponse], error)
+ DetectKarpenterOwnershipConflicts(context.Context, *connect.Request[v1.DetectKarpenterOwnershipConflictsRequest]) (*connect.Response[v1.DetectKarpenterOwnershipConflictsResponse], error)
+ AcknowledgeKarpenterOwnershipConflict(context.Context, *connect.Request[v1.AcknowledgeKarpenterOwnershipConflictRequest]) (*connect.Response[v1.AcknowledgeKarpenterOwnershipConflictResponse], error)
+ GetKarpenterSourceResources(context.Context, *connect.Request[v1.GetKarpenterSourceResourcesRequest]) (*connect.Response[v1.GetKarpenterSourceResourcesResponse], error)
+ GetKarpenterAdoptionStatus(context.Context, *connect.Request[v1.GetKarpenterAdoptionStatusRequest]) (*connect.Response[v1.GetKarpenterAdoptionStatusResponse], error)
// NodePool validation phone-home
ReportNodePoolValidation(context.Context, *connect.Request[v1.ReportNodePoolValidationRequest]) (*connect.Response[v1.ReportNodePoolValidationResponse], error)
GetNodePoolValidations(context.Context, *connect.Request[v1.GetNodePoolValidationsRequest]) (*connect.Response[v1.GetNodePoolValidationsResponse], error)
@@ -521,6 +741,7 @@ type K8SRecommendationServiceClient interface {
GetInstanceFamilies(context.Context, *connect.Request[v1.GetInstanceFamiliesRequest]) (*connect.Response[v1.GetInstanceFamiliesResponse], error)
GetInstanceSizes(context.Context, *connect.Request[v1.GetInstanceSizesRequest]) (*connect.Response[v1.GetInstanceSizesResponse], error)
GetInstanceCategories(context.Context, *connect.Request[v1.GetInstanceCategoriesRequest]) (*connect.Response[v1.GetInstanceCategoriesResponse], error)
+ GetInstanceShapes(context.Context, *connect.Request[v1.GetInstanceShapesRequest]) (*connect.Response[v1.GetInstanceShapesResponse], error)
GetInstanceCPUs(context.Context, *connect.Request[v1.GetInstanceCPUsRequest]) (*connect.Response[v1.GetInstanceCPUsResponse], error)
GetInstanceTypeNames(context.Context, *connect.Request[v1.GetInstanceTypeNamesRequest]) (*connect.Response[v1.GetInstanceTypeNamesResponse], error)
// PodDisruptionBudget RPCs
@@ -529,6 +750,11 @@ type K8SRecommendationServiceClient interface {
CreatePodDisruptionBudget(context.Context, *connect.Request[v1.CreatePodDisruptionBudgetRequest]) (*connect.Response[v1.CreatePodDisruptionBudgetResponse], error)
// GetPDBRecommendationForWorkload retrieves the existing PDB recommendation for a workload (if any)
GetPDBRecommendationForWorkload(context.Context, *connect.Request[v1.GetPDBRecommendationForWorkloadRequest]) (*connect.Response[v1.GetPDBRecommendationForWorkloadResponse], error)
+ // ListWorkloadStructuralHealth returns every workload with at least one open
+ // structural-health finding -- disruption-fragility (single-replica / no-PDB /
+ // ineffective-PDB) and any net-new structural check (e.g. topology-
+ // concentration) -- composed into one per-workload report each.
+ ListWorkloadStructuralHealth(context.Context, *connect.Request[v1.ListWorkloadStructuralHealthRequest]) (*connect.Response[v1.ListWorkloadStructuralHealthResponse], error)
// Storage Recommendation Policies
CreateStorageRecommendationPolicy(context.Context, *connect.Request[v1.CreateStorageRecommendationPolicyRequest]) (*connect.Response[v1.CreateStorageRecommendationPolicyResponse], error)
GetStorageRecommendationPolicy(context.Context, *connect.Request[v1.GetStorageRecommendationPolicyRequest]) (*connect.Response[v1.GetStorageRecommendationPolicyResponse], error)
@@ -557,10 +783,30 @@ type K8SRecommendationServiceClient interface {
CreateWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.CreateWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.CreateWorkloadOptimizationPolicyResponse], error)
ListWorkloadOptimizationPolicies(context.Context, *connect.Request[v1.ListWorkloadOptimizationPoliciesRequest]) (*connect.Response[v1.ListWorkloadOptimizationPoliciesResponse], error)
GetWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.GetWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.GetWorkloadOptimizationPolicyResponse], error)
+ GetWorkloadOptimizationPolicyByWorkload(context.Context, *connect.Request[v1.GetWorkloadOptimizationPolicyByWorkloadRequest]) (*connect.Response[v1.GetWorkloadOptimizationPolicyByWorkloadResponse], error)
UpdateWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.UpdateWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.UpdateWorkloadOptimizationPolicyResponse], error)
+ // The sole way to change an existing policy's disabled state. See message doc.
+ ToggleWorkloadOptimizationPolicyDisabled(context.Context, *connect.Request[v1.ToggleWorkloadOptimizationPolicyDisabledRequest]) (*connect.Response[v1.ToggleWorkloadOptimizationPolicyDisabledResponse], error)
DeleteWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.DeleteWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.DeleteWorkloadOptimizationPolicyResponse], error)
+ // Dry-run: which workloads would this policy's targeting selectors match,
+ // right now, without saving anything. Works against unsaved/edited
+ // targeting fields (policy_id optional — set in edit mode to distinguish
+ // "already owned by this policy" from "owned by someone else").
+ PreviewWorkloadOptimizationPolicyMatches(context.Context, *connect.Request[v1.PreviewWorkloadOptimizationPolicyMatchesRequest]) (*connect.Response[v1.PreviewWorkloadOptimizationPolicyMatchesResponse], error)
+ // Scheduler Policies: CRUD + targeting preview
+ CreateSchedulerPolicy(context.Context, *connect.Request[v1.CreateSchedulerPolicyRequest]) (*connect.Response[v1.CreateSchedulerPolicyResponse], error)
+ ListSchedulerPolicies(context.Context, *connect.Request[v1.ListSchedulerPoliciesRequest]) (*connect.Response[v1.ListSchedulerPoliciesResponse], error)
+ UpdateSchedulerPolicy(context.Context, *connect.Request[v1.UpdateSchedulerPolicyRequest]) (*connect.Response[v1.UpdateSchedulerPolicyResponse], error)
+ ToggleSchedulerPolicyDisabled(context.Context, *connect.Request[v1.ToggleSchedulerPolicyDisabledRequest]) (*connect.Response[v1.ToggleSchedulerPolicyDisabledResponse], error)
+ DeleteSchedulerPolicy(context.Context, *connect.Request[v1.DeleteSchedulerPolicyRequest]) (*connect.Response[v1.DeleteSchedulerPolicyResponse], error)
+ PreviewSchedulerPolicyTargets(context.Context, *connect.Request[v1.PreviewSchedulerPolicyTargetsRequest]) (*connect.Response[v1.PreviewSchedulerPolicyTargetsResponse], error)
+ // Read RPC for the enrolled-workloads drill-down (spec 4.5): every
+ // enrollment episode for a policy, regardless of lifecycle state.
+ ListSchedulerPolicyEnrollments(context.Context, *connect.Request[v1.ListSchedulerPolicyEnrollmentsRequest]) (*connect.Response[v1.ListSchedulerPolicyEnrollmentsResponse], error)
// MPA V3: Workload Rules (CRUD)
UpsertManualWorkloadRule(context.Context, *connect.Request[v1.UpsertManualWorkloadRuleRequest]) (*connect.Response[v1.UpsertManualWorkloadRuleResponse], error)
+ // The sole way to change an EXISTING rule's disabled state. See message doc.
+ ToggleWorkloadRuleDisabled(context.Context, *connect.Request[v1.ToggleWorkloadRuleDisabledRequest]) (*connect.Response[v1.ToggleWorkloadRuleDisabledResponse], error)
PreviewWorkloadRule(context.Context, *connect.Request[v1.PreviewWorkloadRuleRequest]) (*connect.Response[v1.PreviewWorkloadRuleResponse], error)
GetWorkloadRulesByPolicy(context.Context, *connect.Request[v1.GetWorkloadRulesByPolicyRequest]) (*connect.Response[v1.GetWorkloadRulesByPolicyResponse], error)
ListWorkloadRules(context.Context, *connect.Request[v1.ListWorkloadRulesRequest]) (*connect.Response[v1.ListWorkloadRulesResponse], error)
@@ -568,10 +814,58 @@ type K8SRecommendationServiceClient interface {
GetWorkloadRuleByWorkload(context.Context, *connect.Request[v1.GetWorkloadRuleByWorkloadRequest]) (*connect.Response[v1.GetWorkloadRuleByWorkloadResponse], error)
GetWorkloadByWorkloadRule(context.Context, *connect.Request[v1.GetWorkloadByWorkloadRuleRequest]) (*connect.Response[v1.GetWorkloadByWorkloadRuleResponse], error)
DeleteWorkloadRule(context.Context, *connect.Request[v1.DeleteWorkloadRuleRequest]) (*connect.Response[v1.DeleteWorkloadRuleResponse], error)
+ DeleteAllWorkloadRules(context.Context, *connect.Request[v1.DeleteAllWorkloadRulesRequest]) (*connect.Response[v1.DeleteAllWorkloadRulesResponse], error)
+ BulkDeleteWorkloadRules(context.Context, *connect.Request[v1.BulkDeleteWorkloadRulesRequest]) (*connect.Response[v1.BulkDeleteWorkloadRulesResponse], error)
+ BulkToggleWorkloadRulesDisabled(context.Context, *connect.Request[v1.BulkToggleWorkloadRulesDisabledRequest]) (*connect.Response[v1.BulkToggleWorkloadRulesDisabledResponse], error)
GetWorkloadContainerNames(context.Context, *connect.Request[v1.GetWorkloadContainerNamesRequest]) (*connect.Response[v1.GetWorkloadContainerNamesResponse], error)
BatchAutoOptimizeWorkloads(context.Context, *connect.Request[v1.BatchAutoOptimizeWorkloadsRequest]) (*connect.Response[v1.BatchAutoOptimizeWorkloadsResponse], error)
+ BatchUpsertManualWorkloadRules(context.Context, *connect.Request[v1.BatchUpsertManualWorkloadRulesRequest]) (*connect.Response[v1.BatchUpsertManualWorkloadRulesResponse], error)
+ BatchPreviewWorkloadRules(context.Context, *connect.Request[v1.BatchPreviewWorkloadRulesRequest]) (*connect.Response[v1.BatchPreviewWorkloadRulesResponse], error)
+ ApplyOneTimeOptimization(context.Context, *connect.Request[v1.ApplyOneTimeOptimizationRequest]) (*connect.Response[v1.ApplyOneTimeOptimizationResponse], error)
+ // DeleteRuleAndApplyRecommendation is the v2 panic button: atomically deletes a WorkloadRule
+ // (triggering CRD removal from the cluster) and creates a one-time WorkloadRecommendation
+ // from user-adjusted values. After this call the workload receives no further auto-recommendations
+ // until a new rule is created.
+ DeleteRuleAndApplyRecommendation(context.Context, *connect.Request[v1.DeleteRuleAndApplyRecommendationRequest]) (*connect.Response[v1.DeleteRuleAndApplyRecommendationResponse], error)
// Get current node pool config status and recent apply history for a cluster
GetNodeRecommendationStatus(context.Context, *connect.Request[v1.GetNodeRecommendationStatusRequest]) (*connect.Response[v1.GetNodeRecommendationStatusResponse], error)
+ // ---- Snapshot policies (resilience) — spec §5 ----
+ CreateSnapshotPolicies(context.Context, *connect.Request[v1.CreateSnapshotPoliciesRequest]) (*connect.Response[v1.CreateSnapshotPoliciesResponse], error)
+ ListSnapshotPolicies(context.Context, *connect.Request[v1.ListSnapshotPoliciesRequest]) (*connect.Response[v1.ListSnapshotPoliciesResponse], error)
+ UpdateSnapshotPolicy(context.Context, *connect.Request[v1.UpdateSnapshotPolicyRequest]) (*connect.Response[v1.UpdateSnapshotPolicyResponse], error)
+ DeleteSnapshotPolicy(context.Context, *connect.Request[v1.DeleteSnapshotPolicyRequest]) (*connect.Response[v1.DeleteSnapshotPolicyResponse], error)
+ CreateSnapshotPolicyTargets(context.Context, *connect.Request[v1.CreateSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateSnapshotPolicyTargetsResponse], error)
+ ListSnapshotPolicyTargets(context.Context, *connect.Request[v1.ListSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListSnapshotPolicyTargetsResponse], error)
+ UpdateSnapshotPolicyTarget(context.Context, *connect.Request[v1.UpdateSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateSnapshotPolicyTargetResponse], error)
+ DeleteSnapshotPolicyTarget(context.Context, *connect.Request[v1.DeleteSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteSnapshotPolicyTargetResponse], error)
+ // ---- Forensic snapshot policies (runtime security) — spec §5 ----
+ CreateForensicSnapshotPolicies(context.Context, *connect.Request[v1.CreateForensicSnapshotPoliciesRequest]) (*connect.Response[v1.CreateForensicSnapshotPoliciesResponse], error)
+ ListForensicSnapshotPolicies(context.Context, *connect.Request[v1.ListForensicSnapshotPoliciesRequest]) (*connect.Response[v1.ListForensicSnapshotPoliciesResponse], error)
+ UpdateForensicSnapshotPolicy(context.Context, *connect.Request[v1.UpdateForensicSnapshotPolicyRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyResponse], error)
+ DeleteForensicSnapshotPolicy(context.Context, *connect.Request[v1.DeleteForensicSnapshotPolicyRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyResponse], error)
+ CreateForensicSnapshotPolicyTargets(context.Context, *connect.Request[v1.CreateForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateForensicSnapshotPolicyTargetsResponse], error)
+ ListForensicSnapshotPolicyTargets(context.Context, *connect.Request[v1.ListForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListForensicSnapshotPolicyTargetsResponse], error)
+ UpdateForensicSnapshotPolicyTarget(context.Context, *connect.Request[v1.UpdateForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyTargetResponse], error)
+ DeleteForensicSnapshotPolicyTarget(context.Context, *connect.Request[v1.DeleteForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyTargetResponse], error)
+ // Arms a forensic capture run: the ONLY way run_generation moves.
+ TriggerForensicSnapshotRun(context.Context, *connect.Request[v1.TriggerForensicSnapshotRunRequest]) (*connect.Response[v1.TriggerForensicSnapshotRunResponse], error)
+ // ListReferencedAuthentications returns the distinct KEDA authenticationRef objects
+ // referenced by active WorkloadRules in a cluster. Each entry carries the
+ // name, kind (TriggerAuthentication or ClusterTriggerAuthentication),
+ // the count of rules that reference it, and the namespaces those rules live in.
+ // No credential or secret data is returned.
+ ListReferencedAuthentications(context.Context, *connect.Request[v1.ListReferencedAuthenticationsRequest]) (*connect.Response[v1.ListReferencedAuthenticationsResponse], error)
+ // ---- Targeting preview + read model + delivery status ----
+ PreviewSnapshotPolicyTargetMatches(context.Context, *connect.Request[v1.PreviewSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewSnapshotPolicyTargetMatchesResponse], error)
+ PreviewForensicSnapshotPolicyTargetMatches(context.Context, *connect.Request[v1.PreviewForensicSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewForensicSnapshotPolicyTargetMatchesResponse], error)
+ GetSnapshotPolicyTargetRenderedScope(context.Context, *connect.Request[v1.GetSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetSnapshotPolicyTargetRenderedScopeResponse], error)
+ GetForensicSnapshotPolicyTargetRenderedScope(context.Context, *connect.Request[v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse], error)
+ GetSnapshotRecommendationStatus(context.Context, *connect.Request[v1.GetSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetSnapshotRecommendationStatusResponse], error)
+ GetForensicSnapshotRecommendationStatus(context.Context, *connect.Request[v1.GetForensicSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetForensicSnapshotRecommendationStatusResponse], error)
+ // Compiled-YAML previews are implemented by the phase-3 compiler; until
+ // then the handlers return CodeUnimplemented.
+ PreviewSnapshotRecommendationConfig(context.Context, *connect.Request[v1.PreviewSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewSnapshotRecommendationConfigResponse], error)
+ PreviewForensicSnapshotRecommendationConfig(context.Context, *connect.Request[v1.PreviewForensicSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewForensicSnapshotRecommendationConfigResponse], error)
}
// NewK8SRecommendationServiceClient constructs a client for the api.v1.K8sRecommendationService
@@ -864,6 +1158,16 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceSuggestedKarpenterConfigProcedure,
opts...,
),
+ suggestNodePolicyImprovements: connect.NewClient[v1.SuggestNodePolicyImprovementsRequest, v1.SuggestNodePolicyImprovementsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceSuggestNodePolicyImprovementsProcedure,
+ opts...,
+ ),
+ listClusterNodePolicySuggestions: connect.NewClient[v1.ListClusterNodePolicySuggestionsRequest, v1.ListClusterNodePolicySuggestionsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListClusterNodePolicySuggestionsProcedure,
+ opts...,
+ ),
generateNodePoliciesFromKarpenter: connect.NewClient[v1.GenerateNodePoliciesFromKarpenterRequest, v1.GenerateNodePoliciesFromKarpenterResponse](
httpClient,
baseURL+K8SRecommendationServiceGenerateNodePoliciesFromKarpenterProcedure,
@@ -894,11 +1198,26 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceGetCheckpointApplyStatusProcedure,
opts...,
),
+ getClusterCheckpointLabelCoverage: connect.NewClient[v1.GetClusterCheckpointLabelCoverageRequest, v1.GetClusterCheckpointLabelCoverageResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetClusterCheckpointLabelCoverageProcedure,
+ opts...,
+ ),
+ listNodeGroupCheckpointLabelState: connect.NewClient[v1.ListNodeGroupCheckpointLabelStateRequest, v1.ListNodeGroupCheckpointLabelStateResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListNodeGroupCheckpointLabelStateProcedure,
+ opts...,
+ ),
getNodeAnnotationReadiness: connect.NewClient[v1.GetNodeAnnotationReadinessRequest, v1.GetNodeAnnotationReadinessResponse](
httpClient,
baseURL+K8SRecommendationServiceGetNodeAnnotationReadinessProcedure,
opts...,
),
+ detectClusterAutoscaler: connect.NewClient[v1.DetectClusterAutoscalerRequest, v1.DetectClusterAutoscalerResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDetectClusterAutoscalerProcedure,
+ opts...,
+ ),
getMigrationState: connect.NewClient[v1.GetMigrationStateRequest, v1.GetMigrationStateResponse](
httpClient,
baseURL+K8SRecommendationServiceGetMigrationStateProcedure,
@@ -909,6 +1228,36 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceUpdateMigrationStateProcedure,
opts...,
),
+ getKarpenterMigrationState: connect.NewClient[v1.GetKarpenterMigrationStateRequest, v1.GetKarpenterMigrationStateResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetKarpenterMigrationStateProcedure,
+ opts...,
+ ),
+ updateKarpenterMigrationState: connect.NewClient[v1.UpdateKarpenterMigrationStateRequest, v1.UpdateKarpenterMigrationStateResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceUpdateKarpenterMigrationStateProcedure,
+ opts...,
+ ),
+ detectKarpenterOwnershipConflicts: connect.NewClient[v1.DetectKarpenterOwnershipConflictsRequest, v1.DetectKarpenterOwnershipConflictsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDetectKarpenterOwnershipConflictsProcedure,
+ opts...,
+ ),
+ acknowledgeKarpenterOwnershipConflict: connect.NewClient[v1.AcknowledgeKarpenterOwnershipConflictRequest, v1.AcknowledgeKarpenterOwnershipConflictResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictProcedure,
+ opts...,
+ ),
+ getKarpenterSourceResources: connect.NewClient[v1.GetKarpenterSourceResourcesRequest, v1.GetKarpenterSourceResourcesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetKarpenterSourceResourcesProcedure,
+ opts...,
+ ),
+ getKarpenterAdoptionStatus: connect.NewClient[v1.GetKarpenterAdoptionStatusRequest, v1.GetKarpenterAdoptionStatusResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetKarpenterAdoptionStatusProcedure,
+ opts...,
+ ),
reportNodePoolValidation: connect.NewClient[v1.ReportNodePoolValidationRequest, v1.ReportNodePoolValidationResponse](
httpClient,
baseURL+K8SRecommendationServiceReportNodePoolValidationProcedure,
@@ -954,6 +1303,11 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceGetInstanceCategoriesProcedure,
opts...,
),
+ getInstanceShapes: connect.NewClient[v1.GetInstanceShapesRequest, v1.GetInstanceShapesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetInstanceShapesProcedure,
+ opts...,
+ ),
getInstanceCPUs: connect.NewClient[v1.GetInstanceCPUsRequest, v1.GetInstanceCPUsResponse](
httpClient,
baseURL+K8SRecommendationServiceGetInstanceCPUsProcedure,
@@ -984,6 +1338,11 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceGetPDBRecommendationForWorkloadProcedure,
opts...,
),
+ listWorkloadStructuralHealth: connect.NewClient[v1.ListWorkloadStructuralHealthRequest, v1.ListWorkloadStructuralHealthResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListWorkloadStructuralHealthProcedure,
+ opts...,
+ ),
createStorageRecommendationPolicy: connect.NewClient[v1.CreateStorageRecommendationPolicyRequest, v1.CreateStorageRecommendationPolicyResponse](
httpClient,
baseURL+K8SRecommendationServiceCreateStorageRecommendationPolicyProcedure,
@@ -1089,21 +1448,76 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceGetWorkloadOptimizationPolicyProcedure,
opts...,
),
+ getWorkloadOptimizationPolicyByWorkload: connect.NewClient[v1.GetWorkloadOptimizationPolicyByWorkloadRequest, v1.GetWorkloadOptimizationPolicyByWorkloadResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadProcedure,
+ opts...,
+ ),
updateWorkloadOptimizationPolicy: connect.NewClient[v1.UpdateWorkloadOptimizationPolicyRequest, v1.UpdateWorkloadOptimizationPolicyResponse](
httpClient,
baseURL+K8SRecommendationServiceUpdateWorkloadOptimizationPolicyProcedure,
opts...,
),
+ toggleWorkloadOptimizationPolicyDisabled: connect.NewClient[v1.ToggleWorkloadOptimizationPolicyDisabledRequest, v1.ToggleWorkloadOptimizationPolicyDisabledResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledProcedure,
+ opts...,
+ ),
deleteWorkloadOptimizationPolicy: connect.NewClient[v1.DeleteWorkloadOptimizationPolicyRequest, v1.DeleteWorkloadOptimizationPolicyResponse](
httpClient,
baseURL+K8SRecommendationServiceDeleteWorkloadOptimizationPolicyProcedure,
opts...,
),
+ previewWorkloadOptimizationPolicyMatches: connect.NewClient[v1.PreviewWorkloadOptimizationPolicyMatchesRequest, v1.PreviewWorkloadOptimizationPolicyMatchesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesProcedure,
+ opts...,
+ ),
+ createSchedulerPolicy: connect.NewClient[v1.CreateSchedulerPolicyRequest, v1.CreateSchedulerPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceCreateSchedulerPolicyProcedure,
+ opts...,
+ ),
+ listSchedulerPolicies: connect.NewClient[v1.ListSchedulerPoliciesRequest, v1.ListSchedulerPoliciesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListSchedulerPoliciesProcedure,
+ opts...,
+ ),
+ updateSchedulerPolicy: connect.NewClient[v1.UpdateSchedulerPolicyRequest, v1.UpdateSchedulerPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceUpdateSchedulerPolicyProcedure,
+ opts...,
+ ),
+ toggleSchedulerPolicyDisabled: connect.NewClient[v1.ToggleSchedulerPolicyDisabledRequest, v1.ToggleSchedulerPolicyDisabledResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceToggleSchedulerPolicyDisabledProcedure,
+ opts...,
+ ),
+ deleteSchedulerPolicy: connect.NewClient[v1.DeleteSchedulerPolicyRequest, v1.DeleteSchedulerPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteSchedulerPolicyProcedure,
+ opts...,
+ ),
+ previewSchedulerPolicyTargets: connect.NewClient[v1.PreviewSchedulerPolicyTargetsRequest, v1.PreviewSchedulerPolicyTargetsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServicePreviewSchedulerPolicyTargetsProcedure,
+ opts...,
+ ),
+ listSchedulerPolicyEnrollments: connect.NewClient[v1.ListSchedulerPolicyEnrollmentsRequest, v1.ListSchedulerPolicyEnrollmentsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListSchedulerPolicyEnrollmentsProcedure,
+ opts...,
+ ),
upsertManualWorkloadRule: connect.NewClient[v1.UpsertManualWorkloadRuleRequest, v1.UpsertManualWorkloadRuleResponse](
httpClient,
baseURL+K8SRecommendationServiceUpsertManualWorkloadRuleProcedure,
opts...,
),
+ toggleWorkloadRuleDisabled: connect.NewClient[v1.ToggleWorkloadRuleDisabledRequest, v1.ToggleWorkloadRuleDisabledResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceToggleWorkloadRuleDisabledProcedure,
+ opts...,
+ ),
previewWorkloadRule: connect.NewClient[v1.PreviewWorkloadRuleRequest, v1.PreviewWorkloadRuleResponse](
httpClient,
baseURL+K8SRecommendationServicePreviewWorkloadRuleProcedure,
@@ -1139,6 +1553,21 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceDeleteWorkloadRuleProcedure,
opts...,
),
+ deleteAllWorkloadRules: connect.NewClient[v1.DeleteAllWorkloadRulesRequest, v1.DeleteAllWorkloadRulesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteAllWorkloadRulesProcedure,
+ opts...,
+ ),
+ bulkDeleteWorkloadRules: connect.NewClient[v1.BulkDeleteWorkloadRulesRequest, v1.BulkDeleteWorkloadRulesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceBulkDeleteWorkloadRulesProcedure,
+ opts...,
+ ),
+ bulkToggleWorkloadRulesDisabled: connect.NewClient[v1.BulkToggleWorkloadRulesDisabledRequest, v1.BulkToggleWorkloadRulesDisabledResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceBulkToggleWorkloadRulesDisabledProcedure,
+ opts...,
+ ),
getWorkloadContainerNames: connect.NewClient[v1.GetWorkloadContainerNamesRequest, v1.GetWorkloadContainerNamesResponse](
httpClient,
baseURL+K8SRecommendationServiceGetWorkloadContainerNamesProcedure,
@@ -1149,11 +1578,161 @@ func NewK8SRecommendationServiceClient(httpClient connect.HTTPClient, baseURL st
baseURL+K8SRecommendationServiceBatchAutoOptimizeWorkloadsProcedure,
opts...,
),
+ batchUpsertManualWorkloadRules: connect.NewClient[v1.BatchUpsertManualWorkloadRulesRequest, v1.BatchUpsertManualWorkloadRulesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceBatchUpsertManualWorkloadRulesProcedure,
+ opts...,
+ ),
+ batchPreviewWorkloadRules: connect.NewClient[v1.BatchPreviewWorkloadRulesRequest, v1.BatchPreviewWorkloadRulesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceBatchPreviewWorkloadRulesProcedure,
+ opts...,
+ ),
+ applyOneTimeOptimization: connect.NewClient[v1.ApplyOneTimeOptimizationRequest, v1.ApplyOneTimeOptimizationResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceApplyOneTimeOptimizationProcedure,
+ opts...,
+ ),
+ deleteRuleAndApplyRecommendation: connect.NewClient[v1.DeleteRuleAndApplyRecommendationRequest, v1.DeleteRuleAndApplyRecommendationResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteRuleAndApplyRecommendationProcedure,
+ opts...,
+ ),
getNodeRecommendationStatus: connect.NewClient[v1.GetNodeRecommendationStatusRequest, v1.GetNodeRecommendationStatusResponse](
httpClient,
baseURL+K8SRecommendationServiceGetNodeRecommendationStatusProcedure,
opts...,
),
+ createSnapshotPolicies: connect.NewClient[v1.CreateSnapshotPoliciesRequest, v1.CreateSnapshotPoliciesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceCreateSnapshotPoliciesProcedure,
+ opts...,
+ ),
+ listSnapshotPolicies: connect.NewClient[v1.ListSnapshotPoliciesRequest, v1.ListSnapshotPoliciesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListSnapshotPoliciesProcedure,
+ opts...,
+ ),
+ updateSnapshotPolicy: connect.NewClient[v1.UpdateSnapshotPolicyRequest, v1.UpdateSnapshotPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceUpdateSnapshotPolicyProcedure,
+ opts...,
+ ),
+ deleteSnapshotPolicy: connect.NewClient[v1.DeleteSnapshotPolicyRequest, v1.DeleteSnapshotPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteSnapshotPolicyProcedure,
+ opts...,
+ ),
+ createSnapshotPolicyTargets: connect.NewClient[v1.CreateSnapshotPolicyTargetsRequest, v1.CreateSnapshotPolicyTargetsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceCreateSnapshotPolicyTargetsProcedure,
+ opts...,
+ ),
+ listSnapshotPolicyTargets: connect.NewClient[v1.ListSnapshotPolicyTargetsRequest, v1.ListSnapshotPolicyTargetsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListSnapshotPolicyTargetsProcedure,
+ opts...,
+ ),
+ updateSnapshotPolicyTarget: connect.NewClient[v1.UpdateSnapshotPolicyTargetRequest, v1.UpdateSnapshotPolicyTargetResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceUpdateSnapshotPolicyTargetProcedure,
+ opts...,
+ ),
+ deleteSnapshotPolicyTarget: connect.NewClient[v1.DeleteSnapshotPolicyTargetRequest, v1.DeleteSnapshotPolicyTargetResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteSnapshotPolicyTargetProcedure,
+ opts...,
+ ),
+ createForensicSnapshotPolicies: connect.NewClient[v1.CreateForensicSnapshotPoliciesRequest, v1.CreateForensicSnapshotPoliciesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceCreateForensicSnapshotPoliciesProcedure,
+ opts...,
+ ),
+ listForensicSnapshotPolicies: connect.NewClient[v1.ListForensicSnapshotPoliciesRequest, v1.ListForensicSnapshotPoliciesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListForensicSnapshotPoliciesProcedure,
+ opts...,
+ ),
+ updateForensicSnapshotPolicy: connect.NewClient[v1.UpdateForensicSnapshotPolicyRequest, v1.UpdateForensicSnapshotPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceUpdateForensicSnapshotPolicyProcedure,
+ opts...,
+ ),
+ deleteForensicSnapshotPolicy: connect.NewClient[v1.DeleteForensicSnapshotPolicyRequest, v1.DeleteForensicSnapshotPolicyResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteForensicSnapshotPolicyProcedure,
+ opts...,
+ ),
+ createForensicSnapshotPolicyTargets: connect.NewClient[v1.CreateForensicSnapshotPolicyTargetsRequest, v1.CreateForensicSnapshotPolicyTargetsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceCreateForensicSnapshotPolicyTargetsProcedure,
+ opts...,
+ ),
+ listForensicSnapshotPolicyTargets: connect.NewClient[v1.ListForensicSnapshotPolicyTargetsRequest, v1.ListForensicSnapshotPolicyTargetsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListForensicSnapshotPolicyTargetsProcedure,
+ opts...,
+ ),
+ updateForensicSnapshotPolicyTarget: connect.NewClient[v1.UpdateForensicSnapshotPolicyTargetRequest, v1.UpdateForensicSnapshotPolicyTargetResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceUpdateForensicSnapshotPolicyTargetProcedure,
+ opts...,
+ ),
+ deleteForensicSnapshotPolicyTarget: connect.NewClient[v1.DeleteForensicSnapshotPolicyTargetRequest, v1.DeleteForensicSnapshotPolicyTargetResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceDeleteForensicSnapshotPolicyTargetProcedure,
+ opts...,
+ ),
+ triggerForensicSnapshotRun: connect.NewClient[v1.TriggerForensicSnapshotRunRequest, v1.TriggerForensicSnapshotRunResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceTriggerForensicSnapshotRunProcedure,
+ opts...,
+ ),
+ listReferencedAuthentications: connect.NewClient[v1.ListReferencedAuthenticationsRequest, v1.ListReferencedAuthenticationsResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceListReferencedAuthenticationsProcedure,
+ opts...,
+ ),
+ previewSnapshotPolicyTargetMatches: connect.NewClient[v1.PreviewSnapshotPolicyTargetMatchesRequest, v1.PreviewSnapshotPolicyTargetMatchesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServicePreviewSnapshotPolicyTargetMatchesProcedure,
+ opts...,
+ ),
+ previewForensicSnapshotPolicyTargetMatches: connect.NewClient[v1.PreviewForensicSnapshotPolicyTargetMatchesRequest, v1.PreviewForensicSnapshotPolicyTargetMatchesResponse](
+ httpClient,
+ baseURL+K8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesProcedure,
+ opts...,
+ ),
+ getSnapshotPolicyTargetRenderedScope: connect.NewClient[v1.GetSnapshotPolicyTargetRenderedScopeRequest, v1.GetSnapshotPolicyTargetRenderedScopeResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeProcedure,
+ opts...,
+ ),
+ getForensicSnapshotPolicyTargetRenderedScope: connect.NewClient[v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest, v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeProcedure,
+ opts...,
+ ),
+ getSnapshotRecommendationStatus: connect.NewClient[v1.GetSnapshotRecommendationStatusRequest, v1.GetSnapshotRecommendationStatusResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetSnapshotRecommendationStatusProcedure,
+ opts...,
+ ),
+ getForensicSnapshotRecommendationStatus: connect.NewClient[v1.GetForensicSnapshotRecommendationStatusRequest, v1.GetForensicSnapshotRecommendationStatusResponse](
+ httpClient,
+ baseURL+K8SRecommendationServiceGetForensicSnapshotRecommendationStatusProcedure,
+ opts...,
+ ),
+ previewSnapshotRecommendationConfig: connect.NewClient[v1.PreviewSnapshotRecommendationConfigRequest, v1.PreviewSnapshotRecommendationConfigResponse](
+ httpClient,
+ baseURL+K8SRecommendationServicePreviewSnapshotRecommendationConfigProcedure,
+ opts...,
+ ),
+ previewForensicSnapshotRecommendationConfig: connect.NewClient[v1.PreviewForensicSnapshotRecommendationConfigRequest, v1.PreviewForensicSnapshotRecommendationConfigResponse](
+ httpClient,
+ baseURL+K8SRecommendationServicePreviewForensicSnapshotRecommendationConfigProcedure,
+ opts...,
+ ),
}
}
@@ -1215,15 +1794,26 @@ type k8SRecommendationServiceClient struct {
deleteNodePolicy *connect.Client[v1.DeleteNodePolicyRequest, v1.DeleteNodePolicyResponse]
suggestedNodePolicy *connect.Client[v1.SuggestedNodePolicyRequest, v1.SuggestedNodePolicyResponse]
suggestedKarpenterConfig *connect.Client[v1.SuggestedKarpenterConfigRequest, v1.SuggestedKarpenterConfigResponse]
+ suggestNodePolicyImprovements *connect.Client[v1.SuggestNodePolicyImprovementsRequest, v1.SuggestNodePolicyImprovementsResponse]
+ listClusterNodePolicySuggestions *connect.Client[v1.ListClusterNodePolicySuggestionsRequest, v1.ListClusterNodePolicySuggestionsResponse]
generateNodePoliciesFromKarpenter *connect.Client[v1.GenerateNodePoliciesFromKarpenterRequest, v1.GenerateNodePoliciesFromKarpenterResponse]
generateNodePoliciesFromNodeGroups *connect.Client[v1.GenerateNodePoliciesFromNodeGroupsRequest, v1.GenerateNodePoliciesFromNodeGroupsResponse]
getNodeGroupsCheckpointStatus *connect.Client[v1.GetNodeGroupsCheckpointStatusRequest, v1.GetNodeGroupsCheckpointStatusResponse]
setNodePolicyCheckpointLabel *connect.Client[v1.SetNodePolicyCheckpointLabelRequest, v1.SetNodePolicyCheckpointLabelResponse]
enableCheckpointForPolicy *connect.Client[v1.EnableCheckpointForPolicyRequest, v1.EnableCheckpointForPolicyResponse]
getCheckpointApplyStatus *connect.Client[v1.GetCheckpointApplyStatusRequest, v1.GetCheckpointApplyStatusResponse]
+ getClusterCheckpointLabelCoverage *connect.Client[v1.GetClusterCheckpointLabelCoverageRequest, v1.GetClusterCheckpointLabelCoverageResponse]
+ listNodeGroupCheckpointLabelState *connect.Client[v1.ListNodeGroupCheckpointLabelStateRequest, v1.ListNodeGroupCheckpointLabelStateResponse]
getNodeAnnotationReadiness *connect.Client[v1.GetNodeAnnotationReadinessRequest, v1.GetNodeAnnotationReadinessResponse]
+ detectClusterAutoscaler *connect.Client[v1.DetectClusterAutoscalerRequest, v1.DetectClusterAutoscalerResponse]
getMigrationState *connect.Client[v1.GetMigrationStateRequest, v1.GetMigrationStateResponse]
updateMigrationState *connect.Client[v1.UpdateMigrationStateRequest, v1.UpdateMigrationStateResponse]
+ getKarpenterMigrationState *connect.Client[v1.GetKarpenterMigrationStateRequest, v1.GetKarpenterMigrationStateResponse]
+ updateKarpenterMigrationState *connect.Client[v1.UpdateKarpenterMigrationStateRequest, v1.UpdateKarpenterMigrationStateResponse]
+ detectKarpenterOwnershipConflicts *connect.Client[v1.DetectKarpenterOwnershipConflictsRequest, v1.DetectKarpenterOwnershipConflictsResponse]
+ acknowledgeKarpenterOwnershipConflict *connect.Client[v1.AcknowledgeKarpenterOwnershipConflictRequest, v1.AcknowledgeKarpenterOwnershipConflictResponse]
+ getKarpenterSourceResources *connect.Client[v1.GetKarpenterSourceResourcesRequest, v1.GetKarpenterSourceResourcesResponse]
+ getKarpenterAdoptionStatus *connect.Client[v1.GetKarpenterAdoptionStatusRequest, v1.GetKarpenterAdoptionStatusResponse]
reportNodePoolValidation *connect.Client[v1.ReportNodePoolValidationRequest, v1.ReportNodePoolValidationResponse]
getNodePoolValidations *connect.Client[v1.GetNodePoolValidationsRequest, v1.GetNodePoolValidationsResponse]
createNodePolicyTargets *connect.Client[v1.CreateNodePolicyTargetsRequest, v1.CreateNodePolicyTargetsResponse]
@@ -1233,12 +1823,14 @@ type k8SRecommendationServiceClient struct {
getInstanceFamilies *connect.Client[v1.GetInstanceFamiliesRequest, v1.GetInstanceFamiliesResponse]
getInstanceSizes *connect.Client[v1.GetInstanceSizesRequest, v1.GetInstanceSizesResponse]
getInstanceCategories *connect.Client[v1.GetInstanceCategoriesRequest, v1.GetInstanceCategoriesResponse]
+ getInstanceShapes *connect.Client[v1.GetInstanceShapesRequest, v1.GetInstanceShapesResponse]
getInstanceCPUs *connect.Client[v1.GetInstanceCPUsRequest, v1.GetInstanceCPUsResponse]
getInstanceTypeNames *connect.Client[v1.GetInstanceTypeNamesRequest, v1.GetInstanceTypeNamesResponse]
generatePodDisruptionBudget *connect.Client[v1.GeneratePodDisruptionBudgetRequest, v1.GeneratePodDisruptionBudgetResponse]
generateAndCreatePodDisruptionBudget *connect.Client[v1.GenerateAndCreatePodDisruptionBudgetRequest, v1.GenerateAndCreatePodDisruptionBudgetResponse]
createPodDisruptionBudget *connect.Client[v1.CreatePodDisruptionBudgetRequest, v1.CreatePodDisruptionBudgetResponse]
getPDBRecommendationForWorkload *connect.Client[v1.GetPDBRecommendationForWorkloadRequest, v1.GetPDBRecommendationForWorkloadResponse]
+ listWorkloadStructuralHealth *connect.Client[v1.ListWorkloadStructuralHealthRequest, v1.ListWorkloadStructuralHealthResponse]
createStorageRecommendationPolicy *connect.Client[v1.CreateStorageRecommendationPolicyRequest, v1.CreateStorageRecommendationPolicyResponse]
getStorageRecommendationPolicy *connect.Client[v1.GetStorageRecommendationPolicyRequest, v1.GetStorageRecommendationPolicyResponse]
listStorageRecommendationPolicies *connect.Client[v1.ListStorageRecommendationPoliciesRequest, v1.ListStorageRecommendationPoliciesResponse]
@@ -1260,9 +1852,20 @@ type k8SRecommendationServiceClient struct {
createWorkloadOptimizationPolicy *connect.Client[v1.CreateWorkloadOptimizationPolicyRequest, v1.CreateWorkloadOptimizationPolicyResponse]
listWorkloadOptimizationPolicies *connect.Client[v1.ListWorkloadOptimizationPoliciesRequest, v1.ListWorkloadOptimizationPoliciesResponse]
getWorkloadOptimizationPolicy *connect.Client[v1.GetWorkloadOptimizationPolicyRequest, v1.GetWorkloadOptimizationPolicyResponse]
+ getWorkloadOptimizationPolicyByWorkload *connect.Client[v1.GetWorkloadOptimizationPolicyByWorkloadRequest, v1.GetWorkloadOptimizationPolicyByWorkloadResponse]
updateWorkloadOptimizationPolicy *connect.Client[v1.UpdateWorkloadOptimizationPolicyRequest, v1.UpdateWorkloadOptimizationPolicyResponse]
+ toggleWorkloadOptimizationPolicyDisabled *connect.Client[v1.ToggleWorkloadOptimizationPolicyDisabledRequest, v1.ToggleWorkloadOptimizationPolicyDisabledResponse]
deleteWorkloadOptimizationPolicy *connect.Client[v1.DeleteWorkloadOptimizationPolicyRequest, v1.DeleteWorkloadOptimizationPolicyResponse]
+ previewWorkloadOptimizationPolicyMatches *connect.Client[v1.PreviewWorkloadOptimizationPolicyMatchesRequest, v1.PreviewWorkloadOptimizationPolicyMatchesResponse]
+ createSchedulerPolicy *connect.Client[v1.CreateSchedulerPolicyRequest, v1.CreateSchedulerPolicyResponse]
+ listSchedulerPolicies *connect.Client[v1.ListSchedulerPoliciesRequest, v1.ListSchedulerPoliciesResponse]
+ updateSchedulerPolicy *connect.Client[v1.UpdateSchedulerPolicyRequest, v1.UpdateSchedulerPolicyResponse]
+ toggleSchedulerPolicyDisabled *connect.Client[v1.ToggleSchedulerPolicyDisabledRequest, v1.ToggleSchedulerPolicyDisabledResponse]
+ deleteSchedulerPolicy *connect.Client[v1.DeleteSchedulerPolicyRequest, v1.DeleteSchedulerPolicyResponse]
+ previewSchedulerPolicyTargets *connect.Client[v1.PreviewSchedulerPolicyTargetsRequest, v1.PreviewSchedulerPolicyTargetsResponse]
+ listSchedulerPolicyEnrollments *connect.Client[v1.ListSchedulerPolicyEnrollmentsRequest, v1.ListSchedulerPolicyEnrollmentsResponse]
upsertManualWorkloadRule *connect.Client[v1.UpsertManualWorkloadRuleRequest, v1.UpsertManualWorkloadRuleResponse]
+ toggleWorkloadRuleDisabled *connect.Client[v1.ToggleWorkloadRuleDisabledRequest, v1.ToggleWorkloadRuleDisabledResponse]
previewWorkloadRule *connect.Client[v1.PreviewWorkloadRuleRequest, v1.PreviewWorkloadRuleResponse]
getWorkloadRulesByPolicy *connect.Client[v1.GetWorkloadRulesByPolicyRequest, v1.GetWorkloadRulesByPolicyResponse]
listWorkloadRules *connect.Client[v1.ListWorkloadRulesRequest, v1.ListWorkloadRulesResponse]
@@ -1270,9 +1873,42 @@ type k8SRecommendationServiceClient struct {
getWorkloadRuleByWorkload *connect.Client[v1.GetWorkloadRuleByWorkloadRequest, v1.GetWorkloadRuleByWorkloadResponse]
getWorkloadByWorkloadRule *connect.Client[v1.GetWorkloadByWorkloadRuleRequest, v1.GetWorkloadByWorkloadRuleResponse]
deleteWorkloadRule *connect.Client[v1.DeleteWorkloadRuleRequest, v1.DeleteWorkloadRuleResponse]
+ deleteAllWorkloadRules *connect.Client[v1.DeleteAllWorkloadRulesRequest, v1.DeleteAllWorkloadRulesResponse]
+ bulkDeleteWorkloadRules *connect.Client[v1.BulkDeleteWorkloadRulesRequest, v1.BulkDeleteWorkloadRulesResponse]
+ bulkToggleWorkloadRulesDisabled *connect.Client[v1.BulkToggleWorkloadRulesDisabledRequest, v1.BulkToggleWorkloadRulesDisabledResponse]
getWorkloadContainerNames *connect.Client[v1.GetWorkloadContainerNamesRequest, v1.GetWorkloadContainerNamesResponse]
batchAutoOptimizeWorkloads *connect.Client[v1.BatchAutoOptimizeWorkloadsRequest, v1.BatchAutoOptimizeWorkloadsResponse]
+ batchUpsertManualWorkloadRules *connect.Client[v1.BatchUpsertManualWorkloadRulesRequest, v1.BatchUpsertManualWorkloadRulesResponse]
+ batchPreviewWorkloadRules *connect.Client[v1.BatchPreviewWorkloadRulesRequest, v1.BatchPreviewWorkloadRulesResponse]
+ applyOneTimeOptimization *connect.Client[v1.ApplyOneTimeOptimizationRequest, v1.ApplyOneTimeOptimizationResponse]
+ deleteRuleAndApplyRecommendation *connect.Client[v1.DeleteRuleAndApplyRecommendationRequest, v1.DeleteRuleAndApplyRecommendationResponse]
getNodeRecommendationStatus *connect.Client[v1.GetNodeRecommendationStatusRequest, v1.GetNodeRecommendationStatusResponse]
+ createSnapshotPolicies *connect.Client[v1.CreateSnapshotPoliciesRequest, v1.CreateSnapshotPoliciesResponse]
+ listSnapshotPolicies *connect.Client[v1.ListSnapshotPoliciesRequest, v1.ListSnapshotPoliciesResponse]
+ updateSnapshotPolicy *connect.Client[v1.UpdateSnapshotPolicyRequest, v1.UpdateSnapshotPolicyResponse]
+ deleteSnapshotPolicy *connect.Client[v1.DeleteSnapshotPolicyRequest, v1.DeleteSnapshotPolicyResponse]
+ createSnapshotPolicyTargets *connect.Client[v1.CreateSnapshotPolicyTargetsRequest, v1.CreateSnapshotPolicyTargetsResponse]
+ listSnapshotPolicyTargets *connect.Client[v1.ListSnapshotPolicyTargetsRequest, v1.ListSnapshotPolicyTargetsResponse]
+ updateSnapshotPolicyTarget *connect.Client[v1.UpdateSnapshotPolicyTargetRequest, v1.UpdateSnapshotPolicyTargetResponse]
+ deleteSnapshotPolicyTarget *connect.Client[v1.DeleteSnapshotPolicyTargetRequest, v1.DeleteSnapshotPolicyTargetResponse]
+ createForensicSnapshotPolicies *connect.Client[v1.CreateForensicSnapshotPoliciesRequest, v1.CreateForensicSnapshotPoliciesResponse]
+ listForensicSnapshotPolicies *connect.Client[v1.ListForensicSnapshotPoliciesRequest, v1.ListForensicSnapshotPoliciesResponse]
+ updateForensicSnapshotPolicy *connect.Client[v1.UpdateForensicSnapshotPolicyRequest, v1.UpdateForensicSnapshotPolicyResponse]
+ deleteForensicSnapshotPolicy *connect.Client[v1.DeleteForensicSnapshotPolicyRequest, v1.DeleteForensicSnapshotPolicyResponse]
+ createForensicSnapshotPolicyTargets *connect.Client[v1.CreateForensicSnapshotPolicyTargetsRequest, v1.CreateForensicSnapshotPolicyTargetsResponse]
+ listForensicSnapshotPolicyTargets *connect.Client[v1.ListForensicSnapshotPolicyTargetsRequest, v1.ListForensicSnapshotPolicyTargetsResponse]
+ updateForensicSnapshotPolicyTarget *connect.Client[v1.UpdateForensicSnapshotPolicyTargetRequest, v1.UpdateForensicSnapshotPolicyTargetResponse]
+ deleteForensicSnapshotPolicyTarget *connect.Client[v1.DeleteForensicSnapshotPolicyTargetRequest, v1.DeleteForensicSnapshotPolicyTargetResponse]
+ triggerForensicSnapshotRun *connect.Client[v1.TriggerForensicSnapshotRunRequest, v1.TriggerForensicSnapshotRunResponse]
+ listReferencedAuthentications *connect.Client[v1.ListReferencedAuthenticationsRequest, v1.ListReferencedAuthenticationsResponse]
+ previewSnapshotPolicyTargetMatches *connect.Client[v1.PreviewSnapshotPolicyTargetMatchesRequest, v1.PreviewSnapshotPolicyTargetMatchesResponse]
+ previewForensicSnapshotPolicyTargetMatches *connect.Client[v1.PreviewForensicSnapshotPolicyTargetMatchesRequest, v1.PreviewForensicSnapshotPolicyTargetMatchesResponse]
+ getSnapshotPolicyTargetRenderedScope *connect.Client[v1.GetSnapshotPolicyTargetRenderedScopeRequest, v1.GetSnapshotPolicyTargetRenderedScopeResponse]
+ getForensicSnapshotPolicyTargetRenderedScope *connect.Client[v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest, v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse]
+ getSnapshotRecommendationStatus *connect.Client[v1.GetSnapshotRecommendationStatusRequest, v1.GetSnapshotRecommendationStatusResponse]
+ getForensicSnapshotRecommendationStatus *connect.Client[v1.GetForensicSnapshotRecommendationStatusRequest, v1.GetForensicSnapshotRecommendationStatusResponse]
+ previewSnapshotRecommendationConfig *connect.Client[v1.PreviewSnapshotRecommendationConfigRequest, v1.PreviewSnapshotRecommendationConfigResponse]
+ previewForensicSnapshotRecommendationConfig *connect.Client[v1.PreviewForensicSnapshotRecommendationConfigRequest, v1.PreviewForensicSnapshotRecommendationConfigResponse]
}
// GetNodeGroupStats calls api.v1.K8sRecommendationService.GetNodeGroupStats.
@@ -1618,6 +2254,18 @@ func (c *k8SRecommendationServiceClient) SuggestedKarpenterConfig(ctx context.Co
return c.suggestedKarpenterConfig.CallUnary(ctx, req)
}
+// SuggestNodePolicyImprovements calls
+// api.v1.K8sRecommendationService.SuggestNodePolicyImprovements.
+func (c *k8SRecommendationServiceClient) SuggestNodePolicyImprovements(ctx context.Context, req *connect.Request[v1.SuggestNodePolicyImprovementsRequest]) (*connect.Response[v1.SuggestNodePolicyImprovementsResponse], error) {
+ return c.suggestNodePolicyImprovements.CallUnary(ctx, req)
+}
+
+// ListClusterNodePolicySuggestions calls
+// api.v1.K8sRecommendationService.ListClusterNodePolicySuggestions.
+func (c *k8SRecommendationServiceClient) ListClusterNodePolicySuggestions(ctx context.Context, req *connect.Request[v1.ListClusterNodePolicySuggestionsRequest]) (*connect.Response[v1.ListClusterNodePolicySuggestionsResponse], error) {
+ return c.listClusterNodePolicySuggestions.CallUnary(ctx, req)
+}
+
// GenerateNodePoliciesFromKarpenter calls
// api.v1.K8sRecommendationService.GenerateNodePoliciesFromKarpenter.
func (c *k8SRecommendationServiceClient) GenerateNodePoliciesFromKarpenter(ctx context.Context, req *connect.Request[v1.GenerateNodePoliciesFromKarpenterRequest]) (*connect.Response[v1.GenerateNodePoliciesFromKarpenterResponse], error) {
@@ -1651,11 +2299,28 @@ func (c *k8SRecommendationServiceClient) GetCheckpointApplyStatus(ctx context.Co
return c.getCheckpointApplyStatus.CallUnary(ctx, req)
}
+// GetClusterCheckpointLabelCoverage calls
+// api.v1.K8sRecommendationService.GetClusterCheckpointLabelCoverage.
+func (c *k8SRecommendationServiceClient) GetClusterCheckpointLabelCoverage(ctx context.Context, req *connect.Request[v1.GetClusterCheckpointLabelCoverageRequest]) (*connect.Response[v1.GetClusterCheckpointLabelCoverageResponse], error) {
+ return c.getClusterCheckpointLabelCoverage.CallUnary(ctx, req)
+}
+
+// ListNodeGroupCheckpointLabelState calls
+// api.v1.K8sRecommendationService.ListNodeGroupCheckpointLabelState.
+func (c *k8SRecommendationServiceClient) ListNodeGroupCheckpointLabelState(ctx context.Context, req *connect.Request[v1.ListNodeGroupCheckpointLabelStateRequest]) (*connect.Response[v1.ListNodeGroupCheckpointLabelStateResponse], error) {
+ return c.listNodeGroupCheckpointLabelState.CallUnary(ctx, req)
+}
+
// GetNodeAnnotationReadiness calls api.v1.K8sRecommendationService.GetNodeAnnotationReadiness.
func (c *k8SRecommendationServiceClient) GetNodeAnnotationReadiness(ctx context.Context, req *connect.Request[v1.GetNodeAnnotationReadinessRequest]) (*connect.Response[v1.GetNodeAnnotationReadinessResponse], error) {
return c.getNodeAnnotationReadiness.CallUnary(ctx, req)
}
+// DetectClusterAutoscaler calls api.v1.K8sRecommendationService.DetectClusterAutoscaler.
+func (c *k8SRecommendationServiceClient) DetectClusterAutoscaler(ctx context.Context, req *connect.Request[v1.DetectClusterAutoscalerRequest]) (*connect.Response[v1.DetectClusterAutoscalerResponse], error) {
+ return c.detectClusterAutoscaler.CallUnary(ctx, req)
+}
+
// GetMigrationState calls api.v1.K8sRecommendationService.GetMigrationState.
func (c *k8SRecommendationServiceClient) GetMigrationState(ctx context.Context, req *connect.Request[v1.GetMigrationStateRequest]) (*connect.Response[v1.GetMigrationStateResponse], error) {
return c.getMigrationState.CallUnary(ctx, req)
@@ -1666,6 +2331,39 @@ func (c *k8SRecommendationServiceClient) UpdateMigrationState(ctx context.Contex
return c.updateMigrationState.CallUnary(ctx, req)
}
+// GetKarpenterMigrationState calls api.v1.K8sRecommendationService.GetKarpenterMigrationState.
+func (c *k8SRecommendationServiceClient) GetKarpenterMigrationState(ctx context.Context, req *connect.Request[v1.GetKarpenterMigrationStateRequest]) (*connect.Response[v1.GetKarpenterMigrationStateResponse], error) {
+ return c.getKarpenterMigrationState.CallUnary(ctx, req)
+}
+
+// UpdateKarpenterMigrationState calls
+// api.v1.K8sRecommendationService.UpdateKarpenterMigrationState.
+func (c *k8SRecommendationServiceClient) UpdateKarpenterMigrationState(ctx context.Context, req *connect.Request[v1.UpdateKarpenterMigrationStateRequest]) (*connect.Response[v1.UpdateKarpenterMigrationStateResponse], error) {
+ return c.updateKarpenterMigrationState.CallUnary(ctx, req)
+}
+
+// DetectKarpenterOwnershipConflicts calls
+// api.v1.K8sRecommendationService.DetectKarpenterOwnershipConflicts.
+func (c *k8SRecommendationServiceClient) DetectKarpenterOwnershipConflicts(ctx context.Context, req *connect.Request[v1.DetectKarpenterOwnershipConflictsRequest]) (*connect.Response[v1.DetectKarpenterOwnershipConflictsResponse], error) {
+ return c.detectKarpenterOwnershipConflicts.CallUnary(ctx, req)
+}
+
+// AcknowledgeKarpenterOwnershipConflict calls
+// api.v1.K8sRecommendationService.AcknowledgeKarpenterOwnershipConflict.
+func (c *k8SRecommendationServiceClient) AcknowledgeKarpenterOwnershipConflict(ctx context.Context, req *connect.Request[v1.AcknowledgeKarpenterOwnershipConflictRequest]) (*connect.Response[v1.AcknowledgeKarpenterOwnershipConflictResponse], error) {
+ return c.acknowledgeKarpenterOwnershipConflict.CallUnary(ctx, req)
+}
+
+// GetKarpenterSourceResources calls api.v1.K8sRecommendationService.GetKarpenterSourceResources.
+func (c *k8SRecommendationServiceClient) GetKarpenterSourceResources(ctx context.Context, req *connect.Request[v1.GetKarpenterSourceResourcesRequest]) (*connect.Response[v1.GetKarpenterSourceResourcesResponse], error) {
+ return c.getKarpenterSourceResources.CallUnary(ctx, req)
+}
+
+// GetKarpenterAdoptionStatus calls api.v1.K8sRecommendationService.GetKarpenterAdoptionStatus.
+func (c *k8SRecommendationServiceClient) GetKarpenterAdoptionStatus(ctx context.Context, req *connect.Request[v1.GetKarpenterAdoptionStatusRequest]) (*connect.Response[v1.GetKarpenterAdoptionStatusResponse], error) {
+ return c.getKarpenterAdoptionStatus.CallUnary(ctx, req)
+}
+
// ReportNodePoolValidation calls api.v1.K8sRecommendationService.ReportNodePoolValidation.
func (c *k8SRecommendationServiceClient) ReportNodePoolValidation(ctx context.Context, req *connect.Request[v1.ReportNodePoolValidationRequest]) (*connect.Response[v1.ReportNodePoolValidationResponse], error) {
return c.reportNodePoolValidation.CallUnary(ctx, req)
@@ -1712,6 +2410,11 @@ func (c *k8SRecommendationServiceClient) GetInstanceCategories(ctx context.Conte
return c.getInstanceCategories.CallUnary(ctx, req)
}
+// GetInstanceShapes calls api.v1.K8sRecommendationService.GetInstanceShapes.
+func (c *k8SRecommendationServiceClient) GetInstanceShapes(ctx context.Context, req *connect.Request[v1.GetInstanceShapesRequest]) (*connect.Response[v1.GetInstanceShapesResponse], error) {
+ return c.getInstanceShapes.CallUnary(ctx, req)
+}
+
// GetInstanceCPUs calls api.v1.K8sRecommendationService.GetInstanceCPUs.
func (c *k8SRecommendationServiceClient) GetInstanceCPUs(ctx context.Context, req *connect.Request[v1.GetInstanceCPUsRequest]) (*connect.Response[v1.GetInstanceCPUsResponse], error) {
return c.getInstanceCPUs.CallUnary(ctx, req)
@@ -1744,6 +2447,11 @@ func (c *k8SRecommendationServiceClient) GetPDBRecommendationForWorkload(ctx con
return c.getPDBRecommendationForWorkload.CallUnary(ctx, req)
}
+// ListWorkloadStructuralHealth calls api.v1.K8sRecommendationService.ListWorkloadStructuralHealth.
+func (c *k8SRecommendationServiceClient) ListWorkloadStructuralHealth(ctx context.Context, req *connect.Request[v1.ListWorkloadStructuralHealthRequest]) (*connect.Response[v1.ListWorkloadStructuralHealthResponse], error) {
+ return c.listWorkloadStructuralHealth.CallUnary(ctx, req)
+}
+
// CreateStorageRecommendationPolicy calls
// api.v1.K8sRecommendationService.CreateStorageRecommendationPolicy.
func (c *k8SRecommendationServiceClient) CreateStorageRecommendationPolicy(ctx context.Context, req *connect.Request[v1.CreateStorageRecommendationPolicyRequest]) (*connect.Response[v1.CreateStorageRecommendationPolicyResponse], error) {
@@ -1862,23 +2570,84 @@ func (c *k8SRecommendationServiceClient) GetWorkloadOptimizationPolicy(ctx conte
return c.getWorkloadOptimizationPolicy.CallUnary(ctx, req)
}
+// GetWorkloadOptimizationPolicyByWorkload calls
+// api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicyByWorkload.
+func (c *k8SRecommendationServiceClient) GetWorkloadOptimizationPolicyByWorkload(ctx context.Context, req *connect.Request[v1.GetWorkloadOptimizationPolicyByWorkloadRequest]) (*connect.Response[v1.GetWorkloadOptimizationPolicyByWorkloadResponse], error) {
+ return c.getWorkloadOptimizationPolicyByWorkload.CallUnary(ctx, req)
+}
+
// UpdateWorkloadOptimizationPolicy calls
// api.v1.K8sRecommendationService.UpdateWorkloadOptimizationPolicy.
func (c *k8SRecommendationServiceClient) UpdateWorkloadOptimizationPolicy(ctx context.Context, req *connect.Request[v1.UpdateWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.UpdateWorkloadOptimizationPolicyResponse], error) {
return c.updateWorkloadOptimizationPolicy.CallUnary(ctx, req)
}
+// ToggleWorkloadOptimizationPolicyDisabled calls
+// api.v1.K8sRecommendationService.ToggleWorkloadOptimizationPolicyDisabled.
+func (c *k8SRecommendationServiceClient) ToggleWorkloadOptimizationPolicyDisabled(ctx context.Context, req *connect.Request[v1.ToggleWorkloadOptimizationPolicyDisabledRequest]) (*connect.Response[v1.ToggleWorkloadOptimizationPolicyDisabledResponse], error) {
+ return c.toggleWorkloadOptimizationPolicyDisabled.CallUnary(ctx, req)
+}
+
// DeleteWorkloadOptimizationPolicy calls
// api.v1.K8sRecommendationService.DeleteWorkloadOptimizationPolicy.
func (c *k8SRecommendationServiceClient) DeleteWorkloadOptimizationPolicy(ctx context.Context, req *connect.Request[v1.DeleteWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.DeleteWorkloadOptimizationPolicyResponse], error) {
return c.deleteWorkloadOptimizationPolicy.CallUnary(ctx, req)
}
+// PreviewWorkloadOptimizationPolicyMatches calls
+// api.v1.K8sRecommendationService.PreviewWorkloadOptimizationPolicyMatches.
+func (c *k8SRecommendationServiceClient) PreviewWorkloadOptimizationPolicyMatches(ctx context.Context, req *connect.Request[v1.PreviewWorkloadOptimizationPolicyMatchesRequest]) (*connect.Response[v1.PreviewWorkloadOptimizationPolicyMatchesResponse], error) {
+ return c.previewWorkloadOptimizationPolicyMatches.CallUnary(ctx, req)
+}
+
+// CreateSchedulerPolicy calls api.v1.K8sRecommendationService.CreateSchedulerPolicy.
+func (c *k8SRecommendationServiceClient) CreateSchedulerPolicy(ctx context.Context, req *connect.Request[v1.CreateSchedulerPolicyRequest]) (*connect.Response[v1.CreateSchedulerPolicyResponse], error) {
+ return c.createSchedulerPolicy.CallUnary(ctx, req)
+}
+
+// ListSchedulerPolicies calls api.v1.K8sRecommendationService.ListSchedulerPolicies.
+func (c *k8SRecommendationServiceClient) ListSchedulerPolicies(ctx context.Context, req *connect.Request[v1.ListSchedulerPoliciesRequest]) (*connect.Response[v1.ListSchedulerPoliciesResponse], error) {
+ return c.listSchedulerPolicies.CallUnary(ctx, req)
+}
+
+// UpdateSchedulerPolicy calls api.v1.K8sRecommendationService.UpdateSchedulerPolicy.
+func (c *k8SRecommendationServiceClient) UpdateSchedulerPolicy(ctx context.Context, req *connect.Request[v1.UpdateSchedulerPolicyRequest]) (*connect.Response[v1.UpdateSchedulerPolicyResponse], error) {
+ return c.updateSchedulerPolicy.CallUnary(ctx, req)
+}
+
+// ToggleSchedulerPolicyDisabled calls
+// api.v1.K8sRecommendationService.ToggleSchedulerPolicyDisabled.
+func (c *k8SRecommendationServiceClient) ToggleSchedulerPolicyDisabled(ctx context.Context, req *connect.Request[v1.ToggleSchedulerPolicyDisabledRequest]) (*connect.Response[v1.ToggleSchedulerPolicyDisabledResponse], error) {
+ return c.toggleSchedulerPolicyDisabled.CallUnary(ctx, req)
+}
+
+// DeleteSchedulerPolicy calls api.v1.K8sRecommendationService.DeleteSchedulerPolicy.
+func (c *k8SRecommendationServiceClient) DeleteSchedulerPolicy(ctx context.Context, req *connect.Request[v1.DeleteSchedulerPolicyRequest]) (*connect.Response[v1.DeleteSchedulerPolicyResponse], error) {
+ return c.deleteSchedulerPolicy.CallUnary(ctx, req)
+}
+
+// PreviewSchedulerPolicyTargets calls
+// api.v1.K8sRecommendationService.PreviewSchedulerPolicyTargets.
+func (c *k8SRecommendationServiceClient) PreviewSchedulerPolicyTargets(ctx context.Context, req *connect.Request[v1.PreviewSchedulerPolicyTargetsRequest]) (*connect.Response[v1.PreviewSchedulerPolicyTargetsResponse], error) {
+ return c.previewSchedulerPolicyTargets.CallUnary(ctx, req)
+}
+
+// ListSchedulerPolicyEnrollments calls
+// api.v1.K8sRecommendationService.ListSchedulerPolicyEnrollments.
+func (c *k8SRecommendationServiceClient) ListSchedulerPolicyEnrollments(ctx context.Context, req *connect.Request[v1.ListSchedulerPolicyEnrollmentsRequest]) (*connect.Response[v1.ListSchedulerPolicyEnrollmentsResponse], error) {
+ return c.listSchedulerPolicyEnrollments.CallUnary(ctx, req)
+}
+
// UpsertManualWorkloadRule calls api.v1.K8sRecommendationService.UpsertManualWorkloadRule.
func (c *k8SRecommendationServiceClient) UpsertManualWorkloadRule(ctx context.Context, req *connect.Request[v1.UpsertManualWorkloadRuleRequest]) (*connect.Response[v1.UpsertManualWorkloadRuleResponse], error) {
return c.upsertManualWorkloadRule.CallUnary(ctx, req)
}
+// ToggleWorkloadRuleDisabled calls api.v1.K8sRecommendationService.ToggleWorkloadRuleDisabled.
+func (c *k8SRecommendationServiceClient) ToggleWorkloadRuleDisabled(ctx context.Context, req *connect.Request[v1.ToggleWorkloadRuleDisabledRequest]) (*connect.Response[v1.ToggleWorkloadRuleDisabledResponse], error) {
+ return c.toggleWorkloadRuleDisabled.CallUnary(ctx, req)
+}
+
// PreviewWorkloadRule calls api.v1.K8sRecommendationService.PreviewWorkloadRule.
func (c *k8SRecommendationServiceClient) PreviewWorkloadRule(ctx context.Context, req *connect.Request[v1.PreviewWorkloadRuleRequest]) (*connect.Response[v1.PreviewWorkloadRuleResponse], error) {
return c.previewWorkloadRule.CallUnary(ctx, req)
@@ -1914,6 +2683,22 @@ func (c *k8SRecommendationServiceClient) DeleteWorkloadRule(ctx context.Context,
return c.deleteWorkloadRule.CallUnary(ctx, req)
}
+// DeleteAllWorkloadRules calls api.v1.K8sRecommendationService.DeleteAllWorkloadRules.
+func (c *k8SRecommendationServiceClient) DeleteAllWorkloadRules(ctx context.Context, req *connect.Request[v1.DeleteAllWorkloadRulesRequest]) (*connect.Response[v1.DeleteAllWorkloadRulesResponse], error) {
+ return c.deleteAllWorkloadRules.CallUnary(ctx, req)
+}
+
+// BulkDeleteWorkloadRules calls api.v1.K8sRecommendationService.BulkDeleteWorkloadRules.
+func (c *k8SRecommendationServiceClient) BulkDeleteWorkloadRules(ctx context.Context, req *connect.Request[v1.BulkDeleteWorkloadRulesRequest]) (*connect.Response[v1.BulkDeleteWorkloadRulesResponse], error) {
+ return c.bulkDeleteWorkloadRules.CallUnary(ctx, req)
+}
+
+// BulkToggleWorkloadRulesDisabled calls
+// api.v1.K8sRecommendationService.BulkToggleWorkloadRulesDisabled.
+func (c *k8SRecommendationServiceClient) BulkToggleWorkloadRulesDisabled(ctx context.Context, req *connect.Request[v1.BulkToggleWorkloadRulesDisabledRequest]) (*connect.Response[v1.BulkToggleWorkloadRulesDisabledResponse], error) {
+ return c.bulkToggleWorkloadRulesDisabled.CallUnary(ctx, req)
+}
+
// GetWorkloadContainerNames calls api.v1.K8sRecommendationService.GetWorkloadContainerNames.
func (c *k8SRecommendationServiceClient) GetWorkloadContainerNames(ctx context.Context, req *connect.Request[v1.GetWorkloadContainerNamesRequest]) (*connect.Response[v1.GetWorkloadContainerNamesResponse], error) {
return c.getWorkloadContainerNames.CallUnary(ctx, req)
@@ -1924,32 +2709,198 @@ func (c *k8SRecommendationServiceClient) BatchAutoOptimizeWorkloads(ctx context.
return c.batchAutoOptimizeWorkloads.CallUnary(ctx, req)
}
+// BatchUpsertManualWorkloadRules calls
+// api.v1.K8sRecommendationService.BatchUpsertManualWorkloadRules.
+func (c *k8SRecommendationServiceClient) BatchUpsertManualWorkloadRules(ctx context.Context, req *connect.Request[v1.BatchUpsertManualWorkloadRulesRequest]) (*connect.Response[v1.BatchUpsertManualWorkloadRulesResponse], error) {
+ return c.batchUpsertManualWorkloadRules.CallUnary(ctx, req)
+}
+
+// BatchPreviewWorkloadRules calls api.v1.K8sRecommendationService.BatchPreviewWorkloadRules.
+func (c *k8SRecommendationServiceClient) BatchPreviewWorkloadRules(ctx context.Context, req *connect.Request[v1.BatchPreviewWorkloadRulesRequest]) (*connect.Response[v1.BatchPreviewWorkloadRulesResponse], error) {
+ return c.batchPreviewWorkloadRules.CallUnary(ctx, req)
+}
+
+// ApplyOneTimeOptimization calls api.v1.K8sRecommendationService.ApplyOneTimeOptimization.
+func (c *k8SRecommendationServiceClient) ApplyOneTimeOptimization(ctx context.Context, req *connect.Request[v1.ApplyOneTimeOptimizationRequest]) (*connect.Response[v1.ApplyOneTimeOptimizationResponse], error) {
+ return c.applyOneTimeOptimization.CallUnary(ctx, req)
+}
+
+// DeleteRuleAndApplyRecommendation calls
+// api.v1.K8sRecommendationService.DeleteRuleAndApplyRecommendation.
+func (c *k8SRecommendationServiceClient) DeleteRuleAndApplyRecommendation(ctx context.Context, req *connect.Request[v1.DeleteRuleAndApplyRecommendationRequest]) (*connect.Response[v1.DeleteRuleAndApplyRecommendationResponse], error) {
+ return c.deleteRuleAndApplyRecommendation.CallUnary(ctx, req)
+}
+
// GetNodeRecommendationStatus calls api.v1.K8sRecommendationService.GetNodeRecommendationStatus.
func (c *k8SRecommendationServiceClient) GetNodeRecommendationStatus(ctx context.Context, req *connect.Request[v1.GetNodeRecommendationStatusRequest]) (*connect.Response[v1.GetNodeRecommendationStatusResponse], error) {
return c.getNodeRecommendationStatus.CallUnary(ctx, req)
}
-// K8SRecommendationServiceHandler is an implementation of the api.v1.K8sRecommendationService
-// service.
-type K8SRecommendationServiceHandler interface {
- // Node Group Stats
- GetNodeGroupStats(context.Context, *connect.Request[v1.GetNodeGroupStatsRequest]) (*connect.Response[v1.GetNodeGroupStatsResponse], error)
- // Deprecated: do not use.
- GetLatestNodeGroupRecommendation(context.Context, *connect.Request[v1.GetLatestNodeGroupRecommendationRequest]) (*connect.Response[v1.GetLatestNodeGroupRecommendationResponse], error)
- // Workload Stats
- GetLatestWorkloadRecommendation(context.Context, *connect.Request[v1.GetLatestWorkloadRecommendationRequest]) (*connect.Response[v1.GetLatestWorkloadRecommendationResponse], error)
- GetPreviewWorkloadRecommendation(context.Context, *connect.Request[v1.GetPreviewWorkloadRecommendationRequest]) (*connect.Response[v1.GetPreviewWorkloadRecommendationResponse], error)
- GetPreviewWorkloadRecommendations(context.Context, *connect.Request[v1.GetPreviewWorkloadRecommendationsRequest]) (*connect.Response[v1.GetPreviewWorkloadRecommendationsResponse], error)
- GetRecommendationsForWorkload(context.Context, *connect.Request[v1.GetRecommendationsForWorkloadRequest]) (*connect.Response[v1.GetRecommendationsForWorkloadResponse], error)
- GetRecommendations(context.Context, *connect.Request[v1.GetRecommendationsRequest]) (*connect.Response[v1.GetRecommendationsResponse], error)
- // NodeGroup Recommendation Policies (Deprecated)
- //
- // Deprecated: do not use.
- CreateNodeGroupRecommendationPolicy(context.Context, *connect.Request[v1.CreateNodeGroupRecommendationPolicyRequest]) (*connect.Response[v1.CreateNodeGroupRecommendationPolicyResponse], error)
- // Deprecated: do not use.
- GetNodeGroupRecommendationPolicy(context.Context, *connect.Request[v1.GetNodeGroupRecommendationPolicyRequest]) (*connect.Response[v1.GetNodeGroupRecommendationPolicyResponse], error)
- // Deprecated: do not use.
- ListNodeGroupRecommendationPolicies(context.Context, *connect.Request[v1.ListNodeGroupRecommendationPoliciesRequest]) (*connect.Response[v1.ListNodeGroupRecommendationPoliciesResponse], error)
+// CreateSnapshotPolicies calls api.v1.K8sRecommendationService.CreateSnapshotPolicies.
+func (c *k8SRecommendationServiceClient) CreateSnapshotPolicies(ctx context.Context, req *connect.Request[v1.CreateSnapshotPoliciesRequest]) (*connect.Response[v1.CreateSnapshotPoliciesResponse], error) {
+ return c.createSnapshotPolicies.CallUnary(ctx, req)
+}
+
+// ListSnapshotPolicies calls api.v1.K8sRecommendationService.ListSnapshotPolicies.
+func (c *k8SRecommendationServiceClient) ListSnapshotPolicies(ctx context.Context, req *connect.Request[v1.ListSnapshotPoliciesRequest]) (*connect.Response[v1.ListSnapshotPoliciesResponse], error) {
+ return c.listSnapshotPolicies.CallUnary(ctx, req)
+}
+
+// UpdateSnapshotPolicy calls api.v1.K8sRecommendationService.UpdateSnapshotPolicy.
+func (c *k8SRecommendationServiceClient) UpdateSnapshotPolicy(ctx context.Context, req *connect.Request[v1.UpdateSnapshotPolicyRequest]) (*connect.Response[v1.UpdateSnapshotPolicyResponse], error) {
+ return c.updateSnapshotPolicy.CallUnary(ctx, req)
+}
+
+// DeleteSnapshotPolicy calls api.v1.K8sRecommendationService.DeleteSnapshotPolicy.
+func (c *k8SRecommendationServiceClient) DeleteSnapshotPolicy(ctx context.Context, req *connect.Request[v1.DeleteSnapshotPolicyRequest]) (*connect.Response[v1.DeleteSnapshotPolicyResponse], error) {
+ return c.deleteSnapshotPolicy.CallUnary(ctx, req)
+}
+
+// CreateSnapshotPolicyTargets calls api.v1.K8sRecommendationService.CreateSnapshotPolicyTargets.
+func (c *k8SRecommendationServiceClient) CreateSnapshotPolicyTargets(ctx context.Context, req *connect.Request[v1.CreateSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateSnapshotPolicyTargetsResponse], error) {
+ return c.createSnapshotPolicyTargets.CallUnary(ctx, req)
+}
+
+// ListSnapshotPolicyTargets calls api.v1.K8sRecommendationService.ListSnapshotPolicyTargets.
+func (c *k8SRecommendationServiceClient) ListSnapshotPolicyTargets(ctx context.Context, req *connect.Request[v1.ListSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListSnapshotPolicyTargetsResponse], error) {
+ return c.listSnapshotPolicyTargets.CallUnary(ctx, req)
+}
+
+// UpdateSnapshotPolicyTarget calls api.v1.K8sRecommendationService.UpdateSnapshotPolicyTarget.
+func (c *k8SRecommendationServiceClient) UpdateSnapshotPolicyTarget(ctx context.Context, req *connect.Request[v1.UpdateSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateSnapshotPolicyTargetResponse], error) {
+ return c.updateSnapshotPolicyTarget.CallUnary(ctx, req)
+}
+
+// DeleteSnapshotPolicyTarget calls api.v1.K8sRecommendationService.DeleteSnapshotPolicyTarget.
+func (c *k8SRecommendationServiceClient) DeleteSnapshotPolicyTarget(ctx context.Context, req *connect.Request[v1.DeleteSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteSnapshotPolicyTargetResponse], error) {
+ return c.deleteSnapshotPolicyTarget.CallUnary(ctx, req)
+}
+
+// CreateForensicSnapshotPolicies calls
+// api.v1.K8sRecommendationService.CreateForensicSnapshotPolicies.
+func (c *k8SRecommendationServiceClient) CreateForensicSnapshotPolicies(ctx context.Context, req *connect.Request[v1.CreateForensicSnapshotPoliciesRequest]) (*connect.Response[v1.CreateForensicSnapshotPoliciesResponse], error) {
+ return c.createForensicSnapshotPolicies.CallUnary(ctx, req)
+}
+
+// ListForensicSnapshotPolicies calls api.v1.K8sRecommendationService.ListForensicSnapshotPolicies.
+func (c *k8SRecommendationServiceClient) ListForensicSnapshotPolicies(ctx context.Context, req *connect.Request[v1.ListForensicSnapshotPoliciesRequest]) (*connect.Response[v1.ListForensicSnapshotPoliciesResponse], error) {
+ return c.listForensicSnapshotPolicies.CallUnary(ctx, req)
+}
+
+// UpdateForensicSnapshotPolicy calls api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicy.
+func (c *k8SRecommendationServiceClient) UpdateForensicSnapshotPolicy(ctx context.Context, req *connect.Request[v1.UpdateForensicSnapshotPolicyRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyResponse], error) {
+ return c.updateForensicSnapshotPolicy.CallUnary(ctx, req)
+}
+
+// DeleteForensicSnapshotPolicy calls api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicy.
+func (c *k8SRecommendationServiceClient) DeleteForensicSnapshotPolicy(ctx context.Context, req *connect.Request[v1.DeleteForensicSnapshotPolicyRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyResponse], error) {
+ return c.deleteForensicSnapshotPolicy.CallUnary(ctx, req)
+}
+
+// CreateForensicSnapshotPolicyTargets calls
+// api.v1.K8sRecommendationService.CreateForensicSnapshotPolicyTargets.
+func (c *k8SRecommendationServiceClient) CreateForensicSnapshotPolicyTargets(ctx context.Context, req *connect.Request[v1.CreateForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateForensicSnapshotPolicyTargetsResponse], error) {
+ return c.createForensicSnapshotPolicyTargets.CallUnary(ctx, req)
+}
+
+// ListForensicSnapshotPolicyTargets calls
+// api.v1.K8sRecommendationService.ListForensicSnapshotPolicyTargets.
+func (c *k8SRecommendationServiceClient) ListForensicSnapshotPolicyTargets(ctx context.Context, req *connect.Request[v1.ListForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListForensicSnapshotPolicyTargetsResponse], error) {
+ return c.listForensicSnapshotPolicyTargets.CallUnary(ctx, req)
+}
+
+// UpdateForensicSnapshotPolicyTarget calls
+// api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicyTarget.
+func (c *k8SRecommendationServiceClient) UpdateForensicSnapshotPolicyTarget(ctx context.Context, req *connect.Request[v1.UpdateForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyTargetResponse], error) {
+ return c.updateForensicSnapshotPolicyTarget.CallUnary(ctx, req)
+}
+
+// DeleteForensicSnapshotPolicyTarget calls
+// api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicyTarget.
+func (c *k8SRecommendationServiceClient) DeleteForensicSnapshotPolicyTarget(ctx context.Context, req *connect.Request[v1.DeleteForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyTargetResponse], error) {
+ return c.deleteForensicSnapshotPolicyTarget.CallUnary(ctx, req)
+}
+
+// TriggerForensicSnapshotRun calls api.v1.K8sRecommendationService.TriggerForensicSnapshotRun.
+func (c *k8SRecommendationServiceClient) TriggerForensicSnapshotRun(ctx context.Context, req *connect.Request[v1.TriggerForensicSnapshotRunRequest]) (*connect.Response[v1.TriggerForensicSnapshotRunResponse], error) {
+ return c.triggerForensicSnapshotRun.CallUnary(ctx, req)
+}
+
+// ListReferencedAuthentications calls
+// api.v1.K8sRecommendationService.ListReferencedAuthentications.
+func (c *k8SRecommendationServiceClient) ListReferencedAuthentications(ctx context.Context, req *connect.Request[v1.ListReferencedAuthenticationsRequest]) (*connect.Response[v1.ListReferencedAuthenticationsResponse], error) {
+ return c.listReferencedAuthentications.CallUnary(ctx, req)
+}
+
+// PreviewSnapshotPolicyTargetMatches calls
+// api.v1.K8sRecommendationService.PreviewSnapshotPolicyTargetMatches.
+func (c *k8SRecommendationServiceClient) PreviewSnapshotPolicyTargetMatches(ctx context.Context, req *connect.Request[v1.PreviewSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewSnapshotPolicyTargetMatchesResponse], error) {
+ return c.previewSnapshotPolicyTargetMatches.CallUnary(ctx, req)
+}
+
+// PreviewForensicSnapshotPolicyTargetMatches calls
+// api.v1.K8sRecommendationService.PreviewForensicSnapshotPolicyTargetMatches.
+func (c *k8SRecommendationServiceClient) PreviewForensicSnapshotPolicyTargetMatches(ctx context.Context, req *connect.Request[v1.PreviewForensicSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewForensicSnapshotPolicyTargetMatchesResponse], error) {
+ return c.previewForensicSnapshotPolicyTargetMatches.CallUnary(ctx, req)
+}
+
+// GetSnapshotPolicyTargetRenderedScope calls
+// api.v1.K8sRecommendationService.GetSnapshotPolicyTargetRenderedScope.
+func (c *k8SRecommendationServiceClient) GetSnapshotPolicyTargetRenderedScope(ctx context.Context, req *connect.Request[v1.GetSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetSnapshotPolicyTargetRenderedScopeResponse], error) {
+ return c.getSnapshotPolicyTargetRenderedScope.CallUnary(ctx, req)
+}
+
+// GetForensicSnapshotPolicyTargetRenderedScope calls
+// api.v1.K8sRecommendationService.GetForensicSnapshotPolicyTargetRenderedScope.
+func (c *k8SRecommendationServiceClient) GetForensicSnapshotPolicyTargetRenderedScope(ctx context.Context, req *connect.Request[v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse], error) {
+ return c.getForensicSnapshotPolicyTargetRenderedScope.CallUnary(ctx, req)
+}
+
+// GetSnapshotRecommendationStatus calls
+// api.v1.K8sRecommendationService.GetSnapshotRecommendationStatus.
+func (c *k8SRecommendationServiceClient) GetSnapshotRecommendationStatus(ctx context.Context, req *connect.Request[v1.GetSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetSnapshotRecommendationStatusResponse], error) {
+ return c.getSnapshotRecommendationStatus.CallUnary(ctx, req)
+}
+
+// GetForensicSnapshotRecommendationStatus calls
+// api.v1.K8sRecommendationService.GetForensicSnapshotRecommendationStatus.
+func (c *k8SRecommendationServiceClient) GetForensicSnapshotRecommendationStatus(ctx context.Context, req *connect.Request[v1.GetForensicSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetForensicSnapshotRecommendationStatusResponse], error) {
+ return c.getForensicSnapshotRecommendationStatus.CallUnary(ctx, req)
+}
+
+// PreviewSnapshotRecommendationConfig calls
+// api.v1.K8sRecommendationService.PreviewSnapshotRecommendationConfig.
+func (c *k8SRecommendationServiceClient) PreviewSnapshotRecommendationConfig(ctx context.Context, req *connect.Request[v1.PreviewSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewSnapshotRecommendationConfigResponse], error) {
+ return c.previewSnapshotRecommendationConfig.CallUnary(ctx, req)
+}
+
+// PreviewForensicSnapshotRecommendationConfig calls
+// api.v1.K8sRecommendationService.PreviewForensicSnapshotRecommendationConfig.
+func (c *k8SRecommendationServiceClient) PreviewForensicSnapshotRecommendationConfig(ctx context.Context, req *connect.Request[v1.PreviewForensicSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewForensicSnapshotRecommendationConfigResponse], error) {
+ return c.previewForensicSnapshotRecommendationConfig.CallUnary(ctx, req)
+}
+
+// K8SRecommendationServiceHandler is an implementation of the api.v1.K8sRecommendationService
+// service.
+type K8SRecommendationServiceHandler interface {
+ // Node Group Stats
+ GetNodeGroupStats(context.Context, *connect.Request[v1.GetNodeGroupStatsRequest]) (*connect.Response[v1.GetNodeGroupStatsResponse], error)
+ // Deprecated: do not use.
+ GetLatestNodeGroupRecommendation(context.Context, *connect.Request[v1.GetLatestNodeGroupRecommendationRequest]) (*connect.Response[v1.GetLatestNodeGroupRecommendationResponse], error)
+ // Workload Stats
+ GetLatestWorkloadRecommendation(context.Context, *connect.Request[v1.GetLatestWorkloadRecommendationRequest]) (*connect.Response[v1.GetLatestWorkloadRecommendationResponse], error)
+ GetPreviewWorkloadRecommendation(context.Context, *connect.Request[v1.GetPreviewWorkloadRecommendationRequest]) (*connect.Response[v1.GetPreviewWorkloadRecommendationResponse], error)
+ GetPreviewWorkloadRecommendations(context.Context, *connect.Request[v1.GetPreviewWorkloadRecommendationsRequest]) (*connect.Response[v1.GetPreviewWorkloadRecommendationsResponse], error)
+ GetRecommendationsForWorkload(context.Context, *connect.Request[v1.GetRecommendationsForWorkloadRequest]) (*connect.Response[v1.GetRecommendationsForWorkloadResponse], error)
+ GetRecommendations(context.Context, *connect.Request[v1.GetRecommendationsRequest]) (*connect.Response[v1.GetRecommendationsResponse], error)
+ // NodeGroup Recommendation Policies (Deprecated)
+ //
+ // Deprecated: do not use.
+ CreateNodeGroupRecommendationPolicy(context.Context, *connect.Request[v1.CreateNodeGroupRecommendationPolicyRequest]) (*connect.Response[v1.CreateNodeGroupRecommendationPolicyResponse], error)
+ // Deprecated: do not use.
+ GetNodeGroupRecommendationPolicy(context.Context, *connect.Request[v1.GetNodeGroupRecommendationPolicyRequest]) (*connect.Response[v1.GetNodeGroupRecommendationPolicyResponse], error)
+ // Deprecated: do not use.
+ ListNodeGroupRecommendationPolicies(context.Context, *connect.Request[v1.ListNodeGroupRecommendationPoliciesRequest]) (*connect.Response[v1.ListNodeGroupRecommendationPoliciesResponse], error)
// Deprecated: do not use.
UpdateNodeGroupRecommendationPolicy(context.Context, *connect.Request[v1.UpdateNodeGroupRecommendationPolicyRequest]) (*connect.Response[v1.UpdateNodeGroupRecommendationPolicyResponse], error)
// Deprecated: do not use.
@@ -2030,6 +2981,26 @@ type K8SRecommendationServiceHandler interface {
DeleteNodePolicy(context.Context, *connect.Request[v1.DeleteNodePolicyRequest]) (*connect.Response[v1.DeleteNodePolicyResponse], error)
SuggestedNodePolicy(context.Context, *connect.Request[v1.SuggestedNodePolicyRequest]) (*connect.Response[v1.SuggestedNodePolicyResponse], error)
SuggestedKarpenterConfig(context.Context, *connect.Request[v1.SuggestedKarpenterConfigRequest]) (*connect.Response[v1.SuggestedKarpenterConfigResponse], error)
+ // SuggestNodePolicyImprovements returns evidence-cited improvement suggestions for a
+ // node policy's NodePool/NodeClass fields, computed per (policy, cluster) pair over a
+ // profile window. Serves the latest precomputed row when fresh; recomputes
+ // synchronously when the row is missing or stale (policy edited since, or the rule
+ // engine version changed). Inline drafts (`policy` set) always compute live.
+ SuggestNodePolicyImprovements(context.Context, *connect.Request[v1.SuggestNodePolicyImprovementsRequest]) (*connect.Response[v1.SuggestNodePolicyImprovementsResponse], error)
+ // ListClusterNodePolicySuggestions returns the latest suggestions for every node
+ // policy on a cluster — dakr-authored and cluster-managed mirrors alike — one entry
+ // per policy, so a cluster-wide triage view does not need one
+ // SuggestNodePolicyImprovements call per policy. Always serves precomputed rows from
+ // the same node_policy_suggestions table SuggestNodePolicyImprovements reads,
+ // populated on a cadence by a per-cluster batch job; never computes live, so a large
+ // cluster's worth of policies can never block this call on a synchronous evidence
+ // load. A policy with no row yet, or a row stale enough to recompute, is reported via
+ // `stale` (per policy and in aggregate) rather than blocking the response, and a
+ // background refresh of the whole cluster is enqueued when any row needs one. Carries
+ // no `original`/`suggested` NodePolicy payload per policy — accepting a suggestion
+ // still goes through SuggestNodePolicyImprovements for that one policy, which is
+ // where the compiled accept-all/per-field composition already lives.
+ ListClusterNodePolicySuggestions(context.Context, *connect.Request[v1.ListClusterNodePolicySuggestionsRequest]) (*connect.Response[v1.ListClusterNodePolicySuggestionsResponse], error)
// GenerateNodePoliciesFromKarpenter generates NodePolicy objects from existing Karpenter resources
// (NodePools and EC2NodeClasses) for a given cluster.
GenerateNodePoliciesFromKarpenter(context.Context, *connect.Request[v1.GenerateNodePoliciesFromKarpenterRequest]) (*connect.Response[v1.GenerateNodePoliciesFromKarpenterResponse], error)
@@ -2056,12 +3027,38 @@ type K8SRecommendationServiceHandler interface {
// policy. The FE polls this while a batch is in flight so the toggle CTA can
// render "9/10 labelled, 1 failed".
GetCheckpointApplyStatus(context.Context, *connect.Request[v1.GetCheckpointApplyStatusRequest]) (*connect.Response[v1.GetCheckpointApplyStatusResponse], error)
+ // GetClusterCheckpointLabelCoverage returns per-node-group counts for the
+ // dakr.devzero.io/checkpoint-node label across every policy-managed node
+ // group in a cluster: how many live nodes carry the label, how many have a
+ // pending SSA apply, how many failed. The FE renders an "X/Y labeled"
+ // subtext under the checkpoint chip in NodeGroupsTable. Source-of-truth
+ // for live label state; the per-batch GetCheckpointApplyStatus only sees
+ // nodes that were in a batch.
+ GetClusterCheckpointLabelCoverage(context.Context, *connect.Request[v1.GetClusterCheckpointLabelCoverageRequest]) (*connect.Response[v1.GetClusterCheckpointLabelCoverageResponse], error)
+ // ListNodeGroupCheckpointLabelState returns per-node label state for one
+ // node group: has-label, last apply attempt state, last error. Used by the
+ // NodeGroupPanelContent Nodes tab to render a per-node Checkpoint label
+ // column. Scoped to one node group so the per-panel-open payload stays
+ // bounded.
+ ListNodeGroupCheckpointLabelState(context.Context, *connect.Request[v1.ListNodeGroupCheckpointLabelStateRequest]) (*connect.Response[v1.ListNodeGroupCheckpointLabelStateResponse], error)
// GetNodeAnnotationReadiness checks how many nodes in a cluster have been
// annotated with AWS metadata by the Karpenter fork's node metadata controller.
GetNodeAnnotationReadiness(context.Context, *connect.Request[v1.GetNodeAnnotationReadinessRequest]) (*connect.Response[v1.GetNodeAnnotationReadinessResponse], error)
+ // DetectClusterAutoscaler classifies which autoscaler family manages the
+ // cluster from live signals (Karpenter CRDs, cluster-autoscaler Deployment,
+ // cast.ai provisioner Deployment / cast-labeled nodes). Used by the
+ // migration wizard entry to parameterize the journey by source autoscaler.
+ DetectClusterAutoscaler(context.Context, *connect.Request[v1.DetectClusterAutoscalerRequest]) (*connect.Response[v1.DetectClusterAutoscalerResponse], error)
// Migration wizard state management
GetMigrationState(context.Context, *connect.Request[v1.GetMigrationStateRequest]) (*connect.Response[v1.GetMigrationStateResponse], error)
UpdateMigrationState(context.Context, *connect.Request[v1.UpdateMigrationStateRequest]) (*connect.Response[v1.UpdateMigrationStateResponse], error)
+ // Karpenter migration wizard
+ GetKarpenterMigrationState(context.Context, *connect.Request[v1.GetKarpenterMigrationStateRequest]) (*connect.Response[v1.GetKarpenterMigrationStateResponse], error)
+ UpdateKarpenterMigrationState(context.Context, *connect.Request[v1.UpdateKarpenterMigrationStateRequest]) (*connect.Response[v1.UpdateKarpenterMigrationStateResponse], error)
+ DetectKarpenterOwnershipConflicts(context.Context, *connect.Request[v1.DetectKarpenterOwnershipConflictsRequest]) (*connect.Response[v1.DetectKarpenterOwnershipConflictsResponse], error)
+ AcknowledgeKarpenterOwnershipConflict(context.Context, *connect.Request[v1.AcknowledgeKarpenterOwnershipConflictRequest]) (*connect.Response[v1.AcknowledgeKarpenterOwnershipConflictResponse], error)
+ GetKarpenterSourceResources(context.Context, *connect.Request[v1.GetKarpenterSourceResourcesRequest]) (*connect.Response[v1.GetKarpenterSourceResourcesResponse], error)
+ GetKarpenterAdoptionStatus(context.Context, *connect.Request[v1.GetKarpenterAdoptionStatusRequest]) (*connect.Response[v1.GetKarpenterAdoptionStatusResponse], error)
// NodePool validation phone-home
ReportNodePoolValidation(context.Context, *connect.Request[v1.ReportNodePoolValidationRequest]) (*connect.Response[v1.ReportNodePoolValidationResponse], error)
GetNodePoolValidations(context.Context, *connect.Request[v1.GetNodePoolValidationsRequest]) (*connect.Response[v1.GetNodePoolValidationsResponse], error)
@@ -2072,6 +3069,7 @@ type K8SRecommendationServiceHandler interface {
GetInstanceFamilies(context.Context, *connect.Request[v1.GetInstanceFamiliesRequest]) (*connect.Response[v1.GetInstanceFamiliesResponse], error)
GetInstanceSizes(context.Context, *connect.Request[v1.GetInstanceSizesRequest]) (*connect.Response[v1.GetInstanceSizesResponse], error)
GetInstanceCategories(context.Context, *connect.Request[v1.GetInstanceCategoriesRequest]) (*connect.Response[v1.GetInstanceCategoriesResponse], error)
+ GetInstanceShapes(context.Context, *connect.Request[v1.GetInstanceShapesRequest]) (*connect.Response[v1.GetInstanceShapesResponse], error)
GetInstanceCPUs(context.Context, *connect.Request[v1.GetInstanceCPUsRequest]) (*connect.Response[v1.GetInstanceCPUsResponse], error)
GetInstanceTypeNames(context.Context, *connect.Request[v1.GetInstanceTypeNamesRequest]) (*connect.Response[v1.GetInstanceTypeNamesResponse], error)
// PodDisruptionBudget RPCs
@@ -2080,6 +3078,11 @@ type K8SRecommendationServiceHandler interface {
CreatePodDisruptionBudget(context.Context, *connect.Request[v1.CreatePodDisruptionBudgetRequest]) (*connect.Response[v1.CreatePodDisruptionBudgetResponse], error)
// GetPDBRecommendationForWorkload retrieves the existing PDB recommendation for a workload (if any)
GetPDBRecommendationForWorkload(context.Context, *connect.Request[v1.GetPDBRecommendationForWorkloadRequest]) (*connect.Response[v1.GetPDBRecommendationForWorkloadResponse], error)
+ // ListWorkloadStructuralHealth returns every workload with at least one open
+ // structural-health finding -- disruption-fragility (single-replica / no-PDB /
+ // ineffective-PDB) and any net-new structural check (e.g. topology-
+ // concentration) -- composed into one per-workload report each.
+ ListWorkloadStructuralHealth(context.Context, *connect.Request[v1.ListWorkloadStructuralHealthRequest]) (*connect.Response[v1.ListWorkloadStructuralHealthResponse], error)
// Storage Recommendation Policies
CreateStorageRecommendationPolicy(context.Context, *connect.Request[v1.CreateStorageRecommendationPolicyRequest]) (*connect.Response[v1.CreateStorageRecommendationPolicyResponse], error)
GetStorageRecommendationPolicy(context.Context, *connect.Request[v1.GetStorageRecommendationPolicyRequest]) (*connect.Response[v1.GetStorageRecommendationPolicyResponse], error)
@@ -2108,10 +3111,30 @@ type K8SRecommendationServiceHandler interface {
CreateWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.CreateWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.CreateWorkloadOptimizationPolicyResponse], error)
ListWorkloadOptimizationPolicies(context.Context, *connect.Request[v1.ListWorkloadOptimizationPoliciesRequest]) (*connect.Response[v1.ListWorkloadOptimizationPoliciesResponse], error)
GetWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.GetWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.GetWorkloadOptimizationPolicyResponse], error)
+ GetWorkloadOptimizationPolicyByWorkload(context.Context, *connect.Request[v1.GetWorkloadOptimizationPolicyByWorkloadRequest]) (*connect.Response[v1.GetWorkloadOptimizationPolicyByWorkloadResponse], error)
UpdateWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.UpdateWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.UpdateWorkloadOptimizationPolicyResponse], error)
+ // The sole way to change an existing policy's disabled state. See message doc.
+ ToggleWorkloadOptimizationPolicyDisabled(context.Context, *connect.Request[v1.ToggleWorkloadOptimizationPolicyDisabledRequest]) (*connect.Response[v1.ToggleWorkloadOptimizationPolicyDisabledResponse], error)
DeleteWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.DeleteWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.DeleteWorkloadOptimizationPolicyResponse], error)
+ // Dry-run: which workloads would this policy's targeting selectors match,
+ // right now, without saving anything. Works against unsaved/edited
+ // targeting fields (policy_id optional — set in edit mode to distinguish
+ // "already owned by this policy" from "owned by someone else").
+ PreviewWorkloadOptimizationPolicyMatches(context.Context, *connect.Request[v1.PreviewWorkloadOptimizationPolicyMatchesRequest]) (*connect.Response[v1.PreviewWorkloadOptimizationPolicyMatchesResponse], error)
+ // Scheduler Policies: CRUD + targeting preview
+ CreateSchedulerPolicy(context.Context, *connect.Request[v1.CreateSchedulerPolicyRequest]) (*connect.Response[v1.CreateSchedulerPolicyResponse], error)
+ ListSchedulerPolicies(context.Context, *connect.Request[v1.ListSchedulerPoliciesRequest]) (*connect.Response[v1.ListSchedulerPoliciesResponse], error)
+ UpdateSchedulerPolicy(context.Context, *connect.Request[v1.UpdateSchedulerPolicyRequest]) (*connect.Response[v1.UpdateSchedulerPolicyResponse], error)
+ ToggleSchedulerPolicyDisabled(context.Context, *connect.Request[v1.ToggleSchedulerPolicyDisabledRequest]) (*connect.Response[v1.ToggleSchedulerPolicyDisabledResponse], error)
+ DeleteSchedulerPolicy(context.Context, *connect.Request[v1.DeleteSchedulerPolicyRequest]) (*connect.Response[v1.DeleteSchedulerPolicyResponse], error)
+ PreviewSchedulerPolicyTargets(context.Context, *connect.Request[v1.PreviewSchedulerPolicyTargetsRequest]) (*connect.Response[v1.PreviewSchedulerPolicyTargetsResponse], error)
+ // Read RPC for the enrolled-workloads drill-down (spec 4.5): every
+ // enrollment episode for a policy, regardless of lifecycle state.
+ ListSchedulerPolicyEnrollments(context.Context, *connect.Request[v1.ListSchedulerPolicyEnrollmentsRequest]) (*connect.Response[v1.ListSchedulerPolicyEnrollmentsResponse], error)
// MPA V3: Workload Rules (CRUD)
UpsertManualWorkloadRule(context.Context, *connect.Request[v1.UpsertManualWorkloadRuleRequest]) (*connect.Response[v1.UpsertManualWorkloadRuleResponse], error)
+ // The sole way to change an EXISTING rule's disabled state. See message doc.
+ ToggleWorkloadRuleDisabled(context.Context, *connect.Request[v1.ToggleWorkloadRuleDisabledRequest]) (*connect.Response[v1.ToggleWorkloadRuleDisabledResponse], error)
PreviewWorkloadRule(context.Context, *connect.Request[v1.PreviewWorkloadRuleRequest]) (*connect.Response[v1.PreviewWorkloadRuleResponse], error)
GetWorkloadRulesByPolicy(context.Context, *connect.Request[v1.GetWorkloadRulesByPolicyRequest]) (*connect.Response[v1.GetWorkloadRulesByPolicyResponse], error)
ListWorkloadRules(context.Context, *connect.Request[v1.ListWorkloadRulesRequest]) (*connect.Response[v1.ListWorkloadRulesResponse], error)
@@ -2119,10 +3142,58 @@ type K8SRecommendationServiceHandler interface {
GetWorkloadRuleByWorkload(context.Context, *connect.Request[v1.GetWorkloadRuleByWorkloadRequest]) (*connect.Response[v1.GetWorkloadRuleByWorkloadResponse], error)
GetWorkloadByWorkloadRule(context.Context, *connect.Request[v1.GetWorkloadByWorkloadRuleRequest]) (*connect.Response[v1.GetWorkloadByWorkloadRuleResponse], error)
DeleteWorkloadRule(context.Context, *connect.Request[v1.DeleteWorkloadRuleRequest]) (*connect.Response[v1.DeleteWorkloadRuleResponse], error)
+ DeleteAllWorkloadRules(context.Context, *connect.Request[v1.DeleteAllWorkloadRulesRequest]) (*connect.Response[v1.DeleteAllWorkloadRulesResponse], error)
+ BulkDeleteWorkloadRules(context.Context, *connect.Request[v1.BulkDeleteWorkloadRulesRequest]) (*connect.Response[v1.BulkDeleteWorkloadRulesResponse], error)
+ BulkToggleWorkloadRulesDisabled(context.Context, *connect.Request[v1.BulkToggleWorkloadRulesDisabledRequest]) (*connect.Response[v1.BulkToggleWorkloadRulesDisabledResponse], error)
GetWorkloadContainerNames(context.Context, *connect.Request[v1.GetWorkloadContainerNamesRequest]) (*connect.Response[v1.GetWorkloadContainerNamesResponse], error)
BatchAutoOptimizeWorkloads(context.Context, *connect.Request[v1.BatchAutoOptimizeWorkloadsRequest]) (*connect.Response[v1.BatchAutoOptimizeWorkloadsResponse], error)
+ BatchUpsertManualWorkloadRules(context.Context, *connect.Request[v1.BatchUpsertManualWorkloadRulesRequest]) (*connect.Response[v1.BatchUpsertManualWorkloadRulesResponse], error)
+ BatchPreviewWorkloadRules(context.Context, *connect.Request[v1.BatchPreviewWorkloadRulesRequest]) (*connect.Response[v1.BatchPreviewWorkloadRulesResponse], error)
+ ApplyOneTimeOptimization(context.Context, *connect.Request[v1.ApplyOneTimeOptimizationRequest]) (*connect.Response[v1.ApplyOneTimeOptimizationResponse], error)
+ // DeleteRuleAndApplyRecommendation is the v2 panic button: atomically deletes a WorkloadRule
+ // (triggering CRD removal from the cluster) and creates a one-time WorkloadRecommendation
+ // from user-adjusted values. After this call the workload receives no further auto-recommendations
+ // until a new rule is created.
+ DeleteRuleAndApplyRecommendation(context.Context, *connect.Request[v1.DeleteRuleAndApplyRecommendationRequest]) (*connect.Response[v1.DeleteRuleAndApplyRecommendationResponse], error)
// Get current node pool config status and recent apply history for a cluster
GetNodeRecommendationStatus(context.Context, *connect.Request[v1.GetNodeRecommendationStatusRequest]) (*connect.Response[v1.GetNodeRecommendationStatusResponse], error)
+ // ---- Snapshot policies (resilience) — spec §5 ----
+ CreateSnapshotPolicies(context.Context, *connect.Request[v1.CreateSnapshotPoliciesRequest]) (*connect.Response[v1.CreateSnapshotPoliciesResponse], error)
+ ListSnapshotPolicies(context.Context, *connect.Request[v1.ListSnapshotPoliciesRequest]) (*connect.Response[v1.ListSnapshotPoliciesResponse], error)
+ UpdateSnapshotPolicy(context.Context, *connect.Request[v1.UpdateSnapshotPolicyRequest]) (*connect.Response[v1.UpdateSnapshotPolicyResponse], error)
+ DeleteSnapshotPolicy(context.Context, *connect.Request[v1.DeleteSnapshotPolicyRequest]) (*connect.Response[v1.DeleteSnapshotPolicyResponse], error)
+ CreateSnapshotPolicyTargets(context.Context, *connect.Request[v1.CreateSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateSnapshotPolicyTargetsResponse], error)
+ ListSnapshotPolicyTargets(context.Context, *connect.Request[v1.ListSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListSnapshotPolicyTargetsResponse], error)
+ UpdateSnapshotPolicyTarget(context.Context, *connect.Request[v1.UpdateSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateSnapshotPolicyTargetResponse], error)
+ DeleteSnapshotPolicyTarget(context.Context, *connect.Request[v1.DeleteSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteSnapshotPolicyTargetResponse], error)
+ // ---- Forensic snapshot policies (runtime security) — spec §5 ----
+ CreateForensicSnapshotPolicies(context.Context, *connect.Request[v1.CreateForensicSnapshotPoliciesRequest]) (*connect.Response[v1.CreateForensicSnapshotPoliciesResponse], error)
+ ListForensicSnapshotPolicies(context.Context, *connect.Request[v1.ListForensicSnapshotPoliciesRequest]) (*connect.Response[v1.ListForensicSnapshotPoliciesResponse], error)
+ UpdateForensicSnapshotPolicy(context.Context, *connect.Request[v1.UpdateForensicSnapshotPolicyRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyResponse], error)
+ DeleteForensicSnapshotPolicy(context.Context, *connect.Request[v1.DeleteForensicSnapshotPolicyRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyResponse], error)
+ CreateForensicSnapshotPolicyTargets(context.Context, *connect.Request[v1.CreateForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateForensicSnapshotPolicyTargetsResponse], error)
+ ListForensicSnapshotPolicyTargets(context.Context, *connect.Request[v1.ListForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListForensicSnapshotPolicyTargetsResponse], error)
+ UpdateForensicSnapshotPolicyTarget(context.Context, *connect.Request[v1.UpdateForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyTargetResponse], error)
+ DeleteForensicSnapshotPolicyTarget(context.Context, *connect.Request[v1.DeleteForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyTargetResponse], error)
+ // Arms a forensic capture run: the ONLY way run_generation moves.
+ TriggerForensicSnapshotRun(context.Context, *connect.Request[v1.TriggerForensicSnapshotRunRequest]) (*connect.Response[v1.TriggerForensicSnapshotRunResponse], error)
+ // ListReferencedAuthentications returns the distinct KEDA authenticationRef objects
+ // referenced by active WorkloadRules in a cluster. Each entry carries the
+ // name, kind (TriggerAuthentication or ClusterTriggerAuthentication),
+ // the count of rules that reference it, and the namespaces those rules live in.
+ // No credential or secret data is returned.
+ ListReferencedAuthentications(context.Context, *connect.Request[v1.ListReferencedAuthenticationsRequest]) (*connect.Response[v1.ListReferencedAuthenticationsResponse], error)
+ // ---- Targeting preview + read model + delivery status ----
+ PreviewSnapshotPolicyTargetMatches(context.Context, *connect.Request[v1.PreviewSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewSnapshotPolicyTargetMatchesResponse], error)
+ PreviewForensicSnapshotPolicyTargetMatches(context.Context, *connect.Request[v1.PreviewForensicSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewForensicSnapshotPolicyTargetMatchesResponse], error)
+ GetSnapshotPolicyTargetRenderedScope(context.Context, *connect.Request[v1.GetSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetSnapshotPolicyTargetRenderedScopeResponse], error)
+ GetForensicSnapshotPolicyTargetRenderedScope(context.Context, *connect.Request[v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse], error)
+ GetSnapshotRecommendationStatus(context.Context, *connect.Request[v1.GetSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetSnapshotRecommendationStatusResponse], error)
+ GetForensicSnapshotRecommendationStatus(context.Context, *connect.Request[v1.GetForensicSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetForensicSnapshotRecommendationStatusResponse], error)
+ // Compiled-YAML previews are implemented by the phase-3 compiler; until
+ // then the handlers return CodeUnimplemented.
+ PreviewSnapshotRecommendationConfig(context.Context, *connect.Request[v1.PreviewSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewSnapshotRecommendationConfigResponse], error)
+ PreviewForensicSnapshotRecommendationConfig(context.Context, *connect.Request[v1.PreviewForensicSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewForensicSnapshotRecommendationConfigResponse], error)
}
// NewK8SRecommendationServiceHandler builds an HTTP handler from the service implementation. It
@@ -2411,6 +3482,16 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.SuggestedKarpenterConfig,
opts...,
)
+ k8SRecommendationServiceSuggestNodePolicyImprovementsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceSuggestNodePolicyImprovementsProcedure,
+ svc.SuggestNodePolicyImprovements,
+ opts...,
+ )
+ k8SRecommendationServiceListClusterNodePolicySuggestionsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListClusterNodePolicySuggestionsProcedure,
+ svc.ListClusterNodePolicySuggestions,
+ opts...,
+ )
k8SRecommendationServiceGenerateNodePoliciesFromKarpenterHandler := connect.NewUnaryHandler(
K8SRecommendationServiceGenerateNodePoliciesFromKarpenterProcedure,
svc.GenerateNodePoliciesFromKarpenter,
@@ -2441,11 +3522,26 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.GetCheckpointApplyStatus,
opts...,
)
+ k8SRecommendationServiceGetClusterCheckpointLabelCoverageHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetClusterCheckpointLabelCoverageProcedure,
+ svc.GetClusterCheckpointLabelCoverage,
+ opts...,
+ )
+ k8SRecommendationServiceListNodeGroupCheckpointLabelStateHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListNodeGroupCheckpointLabelStateProcedure,
+ svc.ListNodeGroupCheckpointLabelState,
+ opts...,
+ )
k8SRecommendationServiceGetNodeAnnotationReadinessHandler := connect.NewUnaryHandler(
K8SRecommendationServiceGetNodeAnnotationReadinessProcedure,
svc.GetNodeAnnotationReadiness,
opts...,
)
+ k8SRecommendationServiceDetectClusterAutoscalerHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDetectClusterAutoscalerProcedure,
+ svc.DetectClusterAutoscaler,
+ opts...,
+ )
k8SRecommendationServiceGetMigrationStateHandler := connect.NewUnaryHandler(
K8SRecommendationServiceGetMigrationStateProcedure,
svc.GetMigrationState,
@@ -2456,6 +3552,36 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.UpdateMigrationState,
opts...,
)
+ k8SRecommendationServiceGetKarpenterMigrationStateHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetKarpenterMigrationStateProcedure,
+ svc.GetKarpenterMigrationState,
+ opts...,
+ )
+ k8SRecommendationServiceUpdateKarpenterMigrationStateHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceUpdateKarpenterMigrationStateProcedure,
+ svc.UpdateKarpenterMigrationState,
+ opts...,
+ )
+ k8SRecommendationServiceDetectKarpenterOwnershipConflictsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDetectKarpenterOwnershipConflictsProcedure,
+ svc.DetectKarpenterOwnershipConflicts,
+ opts...,
+ )
+ k8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictProcedure,
+ svc.AcknowledgeKarpenterOwnershipConflict,
+ opts...,
+ )
+ k8SRecommendationServiceGetKarpenterSourceResourcesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetKarpenterSourceResourcesProcedure,
+ svc.GetKarpenterSourceResources,
+ opts...,
+ )
+ k8SRecommendationServiceGetKarpenterAdoptionStatusHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetKarpenterAdoptionStatusProcedure,
+ svc.GetKarpenterAdoptionStatus,
+ opts...,
+ )
k8SRecommendationServiceReportNodePoolValidationHandler := connect.NewUnaryHandler(
K8SRecommendationServiceReportNodePoolValidationProcedure,
svc.ReportNodePoolValidation,
@@ -2501,6 +3627,11 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.GetInstanceCategories,
opts...,
)
+ k8SRecommendationServiceGetInstanceShapesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetInstanceShapesProcedure,
+ svc.GetInstanceShapes,
+ opts...,
+ )
k8SRecommendationServiceGetInstanceCPUsHandler := connect.NewUnaryHandler(
K8SRecommendationServiceGetInstanceCPUsProcedure,
svc.GetInstanceCPUs,
@@ -2531,6 +3662,11 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.GetPDBRecommendationForWorkload,
opts...,
)
+ k8SRecommendationServiceListWorkloadStructuralHealthHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListWorkloadStructuralHealthProcedure,
+ svc.ListWorkloadStructuralHealth,
+ opts...,
+ )
k8SRecommendationServiceCreateStorageRecommendationPolicyHandler := connect.NewUnaryHandler(
K8SRecommendationServiceCreateStorageRecommendationPolicyProcedure,
svc.CreateStorageRecommendationPolicy,
@@ -2636,21 +3772,76 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.GetWorkloadOptimizationPolicy,
opts...,
)
+ k8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadProcedure,
+ svc.GetWorkloadOptimizationPolicyByWorkload,
+ opts...,
+ )
k8SRecommendationServiceUpdateWorkloadOptimizationPolicyHandler := connect.NewUnaryHandler(
K8SRecommendationServiceUpdateWorkloadOptimizationPolicyProcedure,
svc.UpdateWorkloadOptimizationPolicy,
opts...,
)
+ k8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledProcedure,
+ svc.ToggleWorkloadOptimizationPolicyDisabled,
+ opts...,
+ )
k8SRecommendationServiceDeleteWorkloadOptimizationPolicyHandler := connect.NewUnaryHandler(
K8SRecommendationServiceDeleteWorkloadOptimizationPolicyProcedure,
svc.DeleteWorkloadOptimizationPolicy,
opts...,
)
+ k8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesProcedure,
+ svc.PreviewWorkloadOptimizationPolicyMatches,
+ opts...,
+ )
+ k8SRecommendationServiceCreateSchedulerPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceCreateSchedulerPolicyProcedure,
+ svc.CreateSchedulerPolicy,
+ opts...,
+ )
+ k8SRecommendationServiceListSchedulerPoliciesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListSchedulerPoliciesProcedure,
+ svc.ListSchedulerPolicies,
+ opts...,
+ )
+ k8SRecommendationServiceUpdateSchedulerPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceUpdateSchedulerPolicyProcedure,
+ svc.UpdateSchedulerPolicy,
+ opts...,
+ )
+ k8SRecommendationServiceToggleSchedulerPolicyDisabledHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceToggleSchedulerPolicyDisabledProcedure,
+ svc.ToggleSchedulerPolicyDisabled,
+ opts...,
+ )
+ k8SRecommendationServiceDeleteSchedulerPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteSchedulerPolicyProcedure,
+ svc.DeleteSchedulerPolicy,
+ opts...,
+ )
+ k8SRecommendationServicePreviewSchedulerPolicyTargetsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServicePreviewSchedulerPolicyTargetsProcedure,
+ svc.PreviewSchedulerPolicyTargets,
+ opts...,
+ )
+ k8SRecommendationServiceListSchedulerPolicyEnrollmentsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListSchedulerPolicyEnrollmentsProcedure,
+ svc.ListSchedulerPolicyEnrollments,
+ opts...,
+ )
k8SRecommendationServiceUpsertManualWorkloadRuleHandler := connect.NewUnaryHandler(
K8SRecommendationServiceUpsertManualWorkloadRuleProcedure,
svc.UpsertManualWorkloadRule,
opts...,
)
+ k8SRecommendationServiceToggleWorkloadRuleDisabledHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceToggleWorkloadRuleDisabledProcedure,
+ svc.ToggleWorkloadRuleDisabled,
+ opts...,
+ )
k8SRecommendationServicePreviewWorkloadRuleHandler := connect.NewUnaryHandler(
K8SRecommendationServicePreviewWorkloadRuleProcedure,
svc.PreviewWorkloadRule,
@@ -2686,6 +3877,21 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.DeleteWorkloadRule,
opts...,
)
+ k8SRecommendationServiceDeleteAllWorkloadRulesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteAllWorkloadRulesProcedure,
+ svc.DeleteAllWorkloadRules,
+ opts...,
+ )
+ k8SRecommendationServiceBulkDeleteWorkloadRulesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceBulkDeleteWorkloadRulesProcedure,
+ svc.BulkDeleteWorkloadRules,
+ opts...,
+ )
+ k8SRecommendationServiceBulkToggleWorkloadRulesDisabledHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceBulkToggleWorkloadRulesDisabledProcedure,
+ svc.BulkToggleWorkloadRulesDisabled,
+ opts...,
+ )
k8SRecommendationServiceGetWorkloadContainerNamesHandler := connect.NewUnaryHandler(
K8SRecommendationServiceGetWorkloadContainerNamesProcedure,
svc.GetWorkloadContainerNames,
@@ -2696,11 +3902,161 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
svc.BatchAutoOptimizeWorkloads,
opts...,
)
+ k8SRecommendationServiceBatchUpsertManualWorkloadRulesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceBatchUpsertManualWorkloadRulesProcedure,
+ svc.BatchUpsertManualWorkloadRules,
+ opts...,
+ )
+ k8SRecommendationServiceBatchPreviewWorkloadRulesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceBatchPreviewWorkloadRulesProcedure,
+ svc.BatchPreviewWorkloadRules,
+ opts...,
+ )
+ k8SRecommendationServiceApplyOneTimeOptimizationHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceApplyOneTimeOptimizationProcedure,
+ svc.ApplyOneTimeOptimization,
+ opts...,
+ )
+ k8SRecommendationServiceDeleteRuleAndApplyRecommendationHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteRuleAndApplyRecommendationProcedure,
+ svc.DeleteRuleAndApplyRecommendation,
+ opts...,
+ )
k8SRecommendationServiceGetNodeRecommendationStatusHandler := connect.NewUnaryHandler(
K8SRecommendationServiceGetNodeRecommendationStatusProcedure,
svc.GetNodeRecommendationStatus,
opts...,
)
+ k8SRecommendationServiceCreateSnapshotPoliciesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceCreateSnapshotPoliciesProcedure,
+ svc.CreateSnapshotPolicies,
+ opts...,
+ )
+ k8SRecommendationServiceListSnapshotPoliciesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListSnapshotPoliciesProcedure,
+ svc.ListSnapshotPolicies,
+ opts...,
+ )
+ k8SRecommendationServiceUpdateSnapshotPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceUpdateSnapshotPolicyProcedure,
+ svc.UpdateSnapshotPolicy,
+ opts...,
+ )
+ k8SRecommendationServiceDeleteSnapshotPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteSnapshotPolicyProcedure,
+ svc.DeleteSnapshotPolicy,
+ opts...,
+ )
+ k8SRecommendationServiceCreateSnapshotPolicyTargetsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceCreateSnapshotPolicyTargetsProcedure,
+ svc.CreateSnapshotPolicyTargets,
+ opts...,
+ )
+ k8SRecommendationServiceListSnapshotPolicyTargetsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListSnapshotPolicyTargetsProcedure,
+ svc.ListSnapshotPolicyTargets,
+ opts...,
+ )
+ k8SRecommendationServiceUpdateSnapshotPolicyTargetHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceUpdateSnapshotPolicyTargetProcedure,
+ svc.UpdateSnapshotPolicyTarget,
+ opts...,
+ )
+ k8SRecommendationServiceDeleteSnapshotPolicyTargetHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteSnapshotPolicyTargetProcedure,
+ svc.DeleteSnapshotPolicyTarget,
+ opts...,
+ )
+ k8SRecommendationServiceCreateForensicSnapshotPoliciesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceCreateForensicSnapshotPoliciesProcedure,
+ svc.CreateForensicSnapshotPolicies,
+ opts...,
+ )
+ k8SRecommendationServiceListForensicSnapshotPoliciesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListForensicSnapshotPoliciesProcedure,
+ svc.ListForensicSnapshotPolicies,
+ opts...,
+ )
+ k8SRecommendationServiceUpdateForensicSnapshotPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceUpdateForensicSnapshotPolicyProcedure,
+ svc.UpdateForensicSnapshotPolicy,
+ opts...,
+ )
+ k8SRecommendationServiceDeleteForensicSnapshotPolicyHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteForensicSnapshotPolicyProcedure,
+ svc.DeleteForensicSnapshotPolicy,
+ opts...,
+ )
+ k8SRecommendationServiceCreateForensicSnapshotPolicyTargetsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceCreateForensicSnapshotPolicyTargetsProcedure,
+ svc.CreateForensicSnapshotPolicyTargets,
+ opts...,
+ )
+ k8SRecommendationServiceListForensicSnapshotPolicyTargetsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListForensicSnapshotPolicyTargetsProcedure,
+ svc.ListForensicSnapshotPolicyTargets,
+ opts...,
+ )
+ k8SRecommendationServiceUpdateForensicSnapshotPolicyTargetHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceUpdateForensicSnapshotPolicyTargetProcedure,
+ svc.UpdateForensicSnapshotPolicyTarget,
+ opts...,
+ )
+ k8SRecommendationServiceDeleteForensicSnapshotPolicyTargetHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceDeleteForensicSnapshotPolicyTargetProcedure,
+ svc.DeleteForensicSnapshotPolicyTarget,
+ opts...,
+ )
+ k8SRecommendationServiceTriggerForensicSnapshotRunHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceTriggerForensicSnapshotRunProcedure,
+ svc.TriggerForensicSnapshotRun,
+ opts...,
+ )
+ k8SRecommendationServiceListReferencedAuthenticationsHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceListReferencedAuthenticationsProcedure,
+ svc.ListReferencedAuthentications,
+ opts...,
+ )
+ k8SRecommendationServicePreviewSnapshotPolicyTargetMatchesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServicePreviewSnapshotPolicyTargetMatchesProcedure,
+ svc.PreviewSnapshotPolicyTargetMatches,
+ opts...,
+ )
+ k8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesHandler := connect.NewUnaryHandler(
+ K8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesProcedure,
+ svc.PreviewForensicSnapshotPolicyTargetMatches,
+ opts...,
+ )
+ k8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeProcedure,
+ svc.GetSnapshotPolicyTargetRenderedScope,
+ opts...,
+ )
+ k8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeProcedure,
+ svc.GetForensicSnapshotPolicyTargetRenderedScope,
+ opts...,
+ )
+ k8SRecommendationServiceGetSnapshotRecommendationStatusHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetSnapshotRecommendationStatusProcedure,
+ svc.GetSnapshotRecommendationStatus,
+ opts...,
+ )
+ k8SRecommendationServiceGetForensicSnapshotRecommendationStatusHandler := connect.NewUnaryHandler(
+ K8SRecommendationServiceGetForensicSnapshotRecommendationStatusProcedure,
+ svc.GetForensicSnapshotRecommendationStatus,
+ opts...,
+ )
+ k8SRecommendationServicePreviewSnapshotRecommendationConfigHandler := connect.NewUnaryHandler(
+ K8SRecommendationServicePreviewSnapshotRecommendationConfigProcedure,
+ svc.PreviewSnapshotRecommendationConfig,
+ opts...,
+ )
+ k8SRecommendationServicePreviewForensicSnapshotRecommendationConfigHandler := connect.NewUnaryHandler(
+ K8SRecommendationServicePreviewForensicSnapshotRecommendationConfigProcedure,
+ svc.PreviewForensicSnapshotRecommendationConfig,
+ opts...,
+ )
return "/api.v1.K8sRecommendationService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case K8SRecommendationServiceGetNodeGroupStatsProcedure:
@@ -2815,6 +4171,10 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
k8SRecommendationServiceSuggestedNodePolicyHandler.ServeHTTP(w, r)
case K8SRecommendationServiceSuggestedKarpenterConfigProcedure:
k8SRecommendationServiceSuggestedKarpenterConfigHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceSuggestNodePolicyImprovementsProcedure:
+ k8SRecommendationServiceSuggestNodePolicyImprovementsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListClusterNodePolicySuggestionsProcedure:
+ k8SRecommendationServiceListClusterNodePolicySuggestionsHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGenerateNodePoliciesFromKarpenterProcedure:
k8SRecommendationServiceGenerateNodePoliciesFromKarpenterHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGenerateNodePoliciesFromNodeGroupsProcedure:
@@ -2827,12 +4187,30 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
k8SRecommendationServiceEnableCheckpointForPolicyHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetCheckpointApplyStatusProcedure:
k8SRecommendationServiceGetCheckpointApplyStatusHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetClusterCheckpointLabelCoverageProcedure:
+ k8SRecommendationServiceGetClusterCheckpointLabelCoverageHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListNodeGroupCheckpointLabelStateProcedure:
+ k8SRecommendationServiceListNodeGroupCheckpointLabelStateHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetNodeAnnotationReadinessProcedure:
k8SRecommendationServiceGetNodeAnnotationReadinessHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDetectClusterAutoscalerProcedure:
+ k8SRecommendationServiceDetectClusterAutoscalerHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetMigrationStateProcedure:
k8SRecommendationServiceGetMigrationStateHandler.ServeHTTP(w, r)
case K8SRecommendationServiceUpdateMigrationStateProcedure:
k8SRecommendationServiceUpdateMigrationStateHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetKarpenterMigrationStateProcedure:
+ k8SRecommendationServiceGetKarpenterMigrationStateHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceUpdateKarpenterMigrationStateProcedure:
+ k8SRecommendationServiceUpdateKarpenterMigrationStateHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDetectKarpenterOwnershipConflictsProcedure:
+ k8SRecommendationServiceDetectKarpenterOwnershipConflictsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictProcedure:
+ k8SRecommendationServiceAcknowledgeKarpenterOwnershipConflictHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetKarpenterSourceResourcesProcedure:
+ k8SRecommendationServiceGetKarpenterSourceResourcesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetKarpenterAdoptionStatusProcedure:
+ k8SRecommendationServiceGetKarpenterAdoptionStatusHandler.ServeHTTP(w, r)
case K8SRecommendationServiceReportNodePoolValidationProcedure:
k8SRecommendationServiceReportNodePoolValidationHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetNodePoolValidationsProcedure:
@@ -2851,6 +4229,8 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
k8SRecommendationServiceGetInstanceSizesHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetInstanceCategoriesProcedure:
k8SRecommendationServiceGetInstanceCategoriesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetInstanceShapesProcedure:
+ k8SRecommendationServiceGetInstanceShapesHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetInstanceCPUsProcedure:
k8SRecommendationServiceGetInstanceCPUsHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetInstanceTypeNamesProcedure:
@@ -2863,6 +4243,8 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
k8SRecommendationServiceCreatePodDisruptionBudgetHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetPDBRecommendationForWorkloadProcedure:
k8SRecommendationServiceGetPDBRecommendationForWorkloadHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListWorkloadStructuralHealthProcedure:
+ k8SRecommendationServiceListWorkloadStructuralHealthHandler.ServeHTTP(w, r)
case K8SRecommendationServiceCreateStorageRecommendationPolicyProcedure:
k8SRecommendationServiceCreateStorageRecommendationPolicyHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetStorageRecommendationPolicyProcedure:
@@ -2905,12 +4287,34 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
k8SRecommendationServiceListWorkloadOptimizationPoliciesHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetWorkloadOptimizationPolicyProcedure:
k8SRecommendationServiceGetWorkloadOptimizationPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadProcedure:
+ k8SRecommendationServiceGetWorkloadOptimizationPolicyByWorkloadHandler.ServeHTTP(w, r)
case K8SRecommendationServiceUpdateWorkloadOptimizationPolicyProcedure:
k8SRecommendationServiceUpdateWorkloadOptimizationPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledProcedure:
+ k8SRecommendationServiceToggleWorkloadOptimizationPolicyDisabledHandler.ServeHTTP(w, r)
case K8SRecommendationServiceDeleteWorkloadOptimizationPolicyProcedure:
k8SRecommendationServiceDeleteWorkloadOptimizationPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesProcedure:
+ k8SRecommendationServicePreviewWorkloadOptimizationPolicyMatchesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceCreateSchedulerPolicyProcedure:
+ k8SRecommendationServiceCreateSchedulerPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListSchedulerPoliciesProcedure:
+ k8SRecommendationServiceListSchedulerPoliciesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceUpdateSchedulerPolicyProcedure:
+ k8SRecommendationServiceUpdateSchedulerPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceToggleSchedulerPolicyDisabledProcedure:
+ k8SRecommendationServiceToggleSchedulerPolicyDisabledHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteSchedulerPolicyProcedure:
+ k8SRecommendationServiceDeleteSchedulerPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServicePreviewSchedulerPolicyTargetsProcedure:
+ k8SRecommendationServicePreviewSchedulerPolicyTargetsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListSchedulerPolicyEnrollmentsProcedure:
+ k8SRecommendationServiceListSchedulerPolicyEnrollmentsHandler.ServeHTTP(w, r)
case K8SRecommendationServiceUpsertManualWorkloadRuleProcedure:
k8SRecommendationServiceUpsertManualWorkloadRuleHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceToggleWorkloadRuleDisabledProcedure:
+ k8SRecommendationServiceToggleWorkloadRuleDisabledHandler.ServeHTTP(w, r)
case K8SRecommendationServicePreviewWorkloadRuleProcedure:
k8SRecommendationServicePreviewWorkloadRuleHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetWorkloadRulesByPolicyProcedure:
@@ -2925,12 +4329,78 @@ func NewK8SRecommendationServiceHandler(svc K8SRecommendationServiceHandler, opt
k8SRecommendationServiceGetWorkloadByWorkloadRuleHandler.ServeHTTP(w, r)
case K8SRecommendationServiceDeleteWorkloadRuleProcedure:
k8SRecommendationServiceDeleteWorkloadRuleHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteAllWorkloadRulesProcedure:
+ k8SRecommendationServiceDeleteAllWorkloadRulesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceBulkDeleteWorkloadRulesProcedure:
+ k8SRecommendationServiceBulkDeleteWorkloadRulesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceBulkToggleWorkloadRulesDisabledProcedure:
+ k8SRecommendationServiceBulkToggleWorkloadRulesDisabledHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetWorkloadContainerNamesProcedure:
k8SRecommendationServiceGetWorkloadContainerNamesHandler.ServeHTTP(w, r)
case K8SRecommendationServiceBatchAutoOptimizeWorkloadsProcedure:
k8SRecommendationServiceBatchAutoOptimizeWorkloadsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceBatchUpsertManualWorkloadRulesProcedure:
+ k8SRecommendationServiceBatchUpsertManualWorkloadRulesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceBatchPreviewWorkloadRulesProcedure:
+ k8SRecommendationServiceBatchPreviewWorkloadRulesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceApplyOneTimeOptimizationProcedure:
+ k8SRecommendationServiceApplyOneTimeOptimizationHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteRuleAndApplyRecommendationProcedure:
+ k8SRecommendationServiceDeleteRuleAndApplyRecommendationHandler.ServeHTTP(w, r)
case K8SRecommendationServiceGetNodeRecommendationStatusProcedure:
k8SRecommendationServiceGetNodeRecommendationStatusHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceCreateSnapshotPoliciesProcedure:
+ k8SRecommendationServiceCreateSnapshotPoliciesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListSnapshotPoliciesProcedure:
+ k8SRecommendationServiceListSnapshotPoliciesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceUpdateSnapshotPolicyProcedure:
+ k8SRecommendationServiceUpdateSnapshotPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteSnapshotPolicyProcedure:
+ k8SRecommendationServiceDeleteSnapshotPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceCreateSnapshotPolicyTargetsProcedure:
+ k8SRecommendationServiceCreateSnapshotPolicyTargetsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListSnapshotPolicyTargetsProcedure:
+ k8SRecommendationServiceListSnapshotPolicyTargetsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceUpdateSnapshotPolicyTargetProcedure:
+ k8SRecommendationServiceUpdateSnapshotPolicyTargetHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteSnapshotPolicyTargetProcedure:
+ k8SRecommendationServiceDeleteSnapshotPolicyTargetHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceCreateForensicSnapshotPoliciesProcedure:
+ k8SRecommendationServiceCreateForensicSnapshotPoliciesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListForensicSnapshotPoliciesProcedure:
+ k8SRecommendationServiceListForensicSnapshotPoliciesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceUpdateForensicSnapshotPolicyProcedure:
+ k8SRecommendationServiceUpdateForensicSnapshotPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteForensicSnapshotPolicyProcedure:
+ k8SRecommendationServiceDeleteForensicSnapshotPolicyHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceCreateForensicSnapshotPolicyTargetsProcedure:
+ k8SRecommendationServiceCreateForensicSnapshotPolicyTargetsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListForensicSnapshotPolicyTargetsProcedure:
+ k8SRecommendationServiceListForensicSnapshotPolicyTargetsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceUpdateForensicSnapshotPolicyTargetProcedure:
+ k8SRecommendationServiceUpdateForensicSnapshotPolicyTargetHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceDeleteForensicSnapshotPolicyTargetProcedure:
+ k8SRecommendationServiceDeleteForensicSnapshotPolicyTargetHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceTriggerForensicSnapshotRunProcedure:
+ k8SRecommendationServiceTriggerForensicSnapshotRunHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceListReferencedAuthenticationsProcedure:
+ k8SRecommendationServiceListReferencedAuthenticationsHandler.ServeHTTP(w, r)
+ case K8SRecommendationServicePreviewSnapshotPolicyTargetMatchesProcedure:
+ k8SRecommendationServicePreviewSnapshotPolicyTargetMatchesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesProcedure:
+ k8SRecommendationServicePreviewForensicSnapshotPolicyTargetMatchesHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeProcedure:
+ k8SRecommendationServiceGetSnapshotPolicyTargetRenderedScopeHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeProcedure:
+ k8SRecommendationServiceGetForensicSnapshotPolicyTargetRenderedScopeHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetSnapshotRecommendationStatusProcedure:
+ k8SRecommendationServiceGetSnapshotRecommendationStatusHandler.ServeHTTP(w, r)
+ case K8SRecommendationServiceGetForensicSnapshotRecommendationStatusProcedure:
+ k8SRecommendationServiceGetForensicSnapshotRecommendationStatusHandler.ServeHTTP(w, r)
+ case K8SRecommendationServicePreviewSnapshotRecommendationConfigProcedure:
+ k8SRecommendationServicePreviewSnapshotRecommendationConfigHandler.ServeHTTP(w, r)
+ case K8SRecommendationServicePreviewForensicSnapshotRecommendationConfigProcedure:
+ k8SRecommendationServicePreviewForensicSnapshotRecommendationConfigHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
@@ -3164,6 +4634,14 @@ func (UnimplementedK8SRecommendationServiceHandler) SuggestedKarpenterConfig(con
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.SuggestedKarpenterConfig is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) SuggestNodePolicyImprovements(context.Context, *connect.Request[v1.SuggestNodePolicyImprovementsRequest]) (*connect.Response[v1.SuggestNodePolicyImprovementsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.SuggestNodePolicyImprovements is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListClusterNodePolicySuggestions(context.Context, *connect.Request[v1.ListClusterNodePolicySuggestionsRequest]) (*connect.Response[v1.ListClusterNodePolicySuggestionsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListClusterNodePolicySuggestions is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) GenerateNodePoliciesFromKarpenter(context.Context, *connect.Request[v1.GenerateNodePoliciesFromKarpenterRequest]) (*connect.Response[v1.GenerateNodePoliciesFromKarpenterResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GenerateNodePoliciesFromKarpenter is not implemented"))
}
@@ -3188,10 +4666,22 @@ func (UnimplementedK8SRecommendationServiceHandler) GetCheckpointApplyStatus(con
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetCheckpointApplyStatus is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) GetClusterCheckpointLabelCoverage(context.Context, *connect.Request[v1.GetClusterCheckpointLabelCoverageRequest]) (*connect.Response[v1.GetClusterCheckpointLabelCoverageResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetClusterCheckpointLabelCoverage is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListNodeGroupCheckpointLabelState(context.Context, *connect.Request[v1.ListNodeGroupCheckpointLabelStateRequest]) (*connect.Response[v1.ListNodeGroupCheckpointLabelStateResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListNodeGroupCheckpointLabelState is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) GetNodeAnnotationReadiness(context.Context, *connect.Request[v1.GetNodeAnnotationReadinessRequest]) (*connect.Response[v1.GetNodeAnnotationReadinessResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetNodeAnnotationReadiness is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) DetectClusterAutoscaler(context.Context, *connect.Request[v1.DetectClusterAutoscalerRequest]) (*connect.Response[v1.DetectClusterAutoscalerResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DetectClusterAutoscaler is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) GetMigrationState(context.Context, *connect.Request[v1.GetMigrationStateRequest]) (*connect.Response[v1.GetMigrationStateResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetMigrationState is not implemented"))
}
@@ -3200,6 +4690,30 @@ func (UnimplementedK8SRecommendationServiceHandler) UpdateMigrationState(context
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateMigrationState is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) GetKarpenterMigrationState(context.Context, *connect.Request[v1.GetKarpenterMigrationStateRequest]) (*connect.Response[v1.GetKarpenterMigrationStateResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetKarpenterMigrationState is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) UpdateKarpenterMigrationState(context.Context, *connect.Request[v1.UpdateKarpenterMigrationStateRequest]) (*connect.Response[v1.UpdateKarpenterMigrationStateResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateKarpenterMigrationState is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DetectKarpenterOwnershipConflicts(context.Context, *connect.Request[v1.DetectKarpenterOwnershipConflictsRequest]) (*connect.Response[v1.DetectKarpenterOwnershipConflictsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DetectKarpenterOwnershipConflicts is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) AcknowledgeKarpenterOwnershipConflict(context.Context, *connect.Request[v1.AcknowledgeKarpenterOwnershipConflictRequest]) (*connect.Response[v1.AcknowledgeKarpenterOwnershipConflictResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.AcknowledgeKarpenterOwnershipConflict is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) GetKarpenterSourceResources(context.Context, *connect.Request[v1.GetKarpenterSourceResourcesRequest]) (*connect.Response[v1.GetKarpenterSourceResourcesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetKarpenterSourceResources is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) GetKarpenterAdoptionStatus(context.Context, *connect.Request[v1.GetKarpenterAdoptionStatusRequest]) (*connect.Response[v1.GetKarpenterAdoptionStatusResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetKarpenterAdoptionStatus is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) ReportNodePoolValidation(context.Context, *connect.Request[v1.ReportNodePoolValidationRequest]) (*connect.Response[v1.ReportNodePoolValidationResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ReportNodePoolValidation is not implemented"))
}
@@ -3236,6 +4750,10 @@ func (UnimplementedK8SRecommendationServiceHandler) GetInstanceCategories(contex
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetInstanceCategories is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) GetInstanceShapes(context.Context, *connect.Request[v1.GetInstanceShapesRequest]) (*connect.Response[v1.GetInstanceShapesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetInstanceShapes is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) GetInstanceCPUs(context.Context, *connect.Request[v1.GetInstanceCPUsRequest]) (*connect.Response[v1.GetInstanceCPUsResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetInstanceCPUs is not implemented"))
}
@@ -3260,6 +4778,10 @@ func (UnimplementedK8SRecommendationServiceHandler) GetPDBRecommendationForWorkl
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetPDBRecommendationForWorkload is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) ListWorkloadStructuralHealth(context.Context, *connect.Request[v1.ListWorkloadStructuralHealthRequest]) (*connect.Response[v1.ListWorkloadStructuralHealthResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListWorkloadStructuralHealth is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) CreateStorageRecommendationPolicy(context.Context, *connect.Request[v1.CreateStorageRecommendationPolicyRequest]) (*connect.Response[v1.CreateStorageRecommendationPolicyResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.CreateStorageRecommendationPolicy is not implemented"))
}
@@ -3344,18 +4866,62 @@ func (UnimplementedK8SRecommendationServiceHandler) GetWorkloadOptimizationPolic
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicy is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) GetWorkloadOptimizationPolicyByWorkload(context.Context, *connect.Request[v1.GetWorkloadOptimizationPolicyByWorkloadRequest]) (*connect.Response[v1.GetWorkloadOptimizationPolicyByWorkloadResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicyByWorkload is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) UpdateWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.UpdateWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.UpdateWorkloadOptimizationPolicyResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateWorkloadOptimizationPolicy is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) ToggleWorkloadOptimizationPolicyDisabled(context.Context, *connect.Request[v1.ToggleWorkloadOptimizationPolicyDisabledRequest]) (*connect.Response[v1.ToggleWorkloadOptimizationPolicyDisabledResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ToggleWorkloadOptimizationPolicyDisabled is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) DeleteWorkloadOptimizationPolicy(context.Context, *connect.Request[v1.DeleteWorkloadOptimizationPolicyRequest]) (*connect.Response[v1.DeleteWorkloadOptimizationPolicyResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteWorkloadOptimizationPolicy is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) PreviewWorkloadOptimizationPolicyMatches(context.Context, *connect.Request[v1.PreviewWorkloadOptimizationPolicyMatchesRequest]) (*connect.Response[v1.PreviewWorkloadOptimizationPolicyMatchesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewWorkloadOptimizationPolicyMatches is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) CreateSchedulerPolicy(context.Context, *connect.Request[v1.CreateSchedulerPolicyRequest]) (*connect.Response[v1.CreateSchedulerPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.CreateSchedulerPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListSchedulerPolicies(context.Context, *connect.Request[v1.ListSchedulerPoliciesRequest]) (*connect.Response[v1.ListSchedulerPoliciesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListSchedulerPolicies is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) UpdateSchedulerPolicy(context.Context, *connect.Request[v1.UpdateSchedulerPolicyRequest]) (*connect.Response[v1.UpdateSchedulerPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateSchedulerPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ToggleSchedulerPolicyDisabled(context.Context, *connect.Request[v1.ToggleSchedulerPolicyDisabledRequest]) (*connect.Response[v1.ToggleSchedulerPolicyDisabledResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ToggleSchedulerPolicyDisabled is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DeleteSchedulerPolicy(context.Context, *connect.Request[v1.DeleteSchedulerPolicyRequest]) (*connect.Response[v1.DeleteSchedulerPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteSchedulerPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) PreviewSchedulerPolicyTargets(context.Context, *connect.Request[v1.PreviewSchedulerPolicyTargetsRequest]) (*connect.Response[v1.PreviewSchedulerPolicyTargetsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewSchedulerPolicyTargets is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListSchedulerPolicyEnrollments(context.Context, *connect.Request[v1.ListSchedulerPolicyEnrollmentsRequest]) (*connect.Response[v1.ListSchedulerPolicyEnrollmentsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListSchedulerPolicyEnrollments is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) UpsertManualWorkloadRule(context.Context, *connect.Request[v1.UpsertManualWorkloadRuleRequest]) (*connect.Response[v1.UpsertManualWorkloadRuleResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpsertManualWorkloadRule is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) ToggleWorkloadRuleDisabled(context.Context, *connect.Request[v1.ToggleWorkloadRuleDisabledRequest]) (*connect.Response[v1.ToggleWorkloadRuleDisabledResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ToggleWorkloadRuleDisabled is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) PreviewWorkloadRule(context.Context, *connect.Request[v1.PreviewWorkloadRuleRequest]) (*connect.Response[v1.PreviewWorkloadRuleResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewWorkloadRule is not implemented"))
}
@@ -3384,6 +4950,18 @@ func (UnimplementedK8SRecommendationServiceHandler) DeleteWorkloadRule(context.C
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteWorkloadRule is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) DeleteAllWorkloadRules(context.Context, *connect.Request[v1.DeleteAllWorkloadRulesRequest]) (*connect.Response[v1.DeleteAllWorkloadRulesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteAllWorkloadRules is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) BulkDeleteWorkloadRules(context.Context, *connect.Request[v1.BulkDeleteWorkloadRulesRequest]) (*connect.Response[v1.BulkDeleteWorkloadRulesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.BulkDeleteWorkloadRules is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) BulkToggleWorkloadRulesDisabled(context.Context, *connect.Request[v1.BulkToggleWorkloadRulesDisabledRequest]) (*connect.Response[v1.BulkToggleWorkloadRulesDisabledResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.BulkToggleWorkloadRulesDisabled is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) GetWorkloadContainerNames(context.Context, *connect.Request[v1.GetWorkloadContainerNamesRequest]) (*connect.Response[v1.GetWorkloadContainerNamesResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetWorkloadContainerNames is not implemented"))
}
@@ -3392,6 +4970,126 @@ func (UnimplementedK8SRecommendationServiceHandler) BatchAutoOptimizeWorkloads(c
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.BatchAutoOptimizeWorkloads is not implemented"))
}
+func (UnimplementedK8SRecommendationServiceHandler) BatchUpsertManualWorkloadRules(context.Context, *connect.Request[v1.BatchUpsertManualWorkloadRulesRequest]) (*connect.Response[v1.BatchUpsertManualWorkloadRulesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.BatchUpsertManualWorkloadRules is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) BatchPreviewWorkloadRules(context.Context, *connect.Request[v1.BatchPreviewWorkloadRulesRequest]) (*connect.Response[v1.BatchPreviewWorkloadRulesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.BatchPreviewWorkloadRules is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ApplyOneTimeOptimization(context.Context, *connect.Request[v1.ApplyOneTimeOptimizationRequest]) (*connect.Response[v1.ApplyOneTimeOptimizationResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ApplyOneTimeOptimization is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DeleteRuleAndApplyRecommendation(context.Context, *connect.Request[v1.DeleteRuleAndApplyRecommendationRequest]) (*connect.Response[v1.DeleteRuleAndApplyRecommendationResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteRuleAndApplyRecommendation is not implemented"))
+}
+
func (UnimplementedK8SRecommendationServiceHandler) GetNodeRecommendationStatus(context.Context, *connect.Request[v1.GetNodeRecommendationStatusRequest]) (*connect.Response[v1.GetNodeRecommendationStatusResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetNodeRecommendationStatus is not implemented"))
}
+
+func (UnimplementedK8SRecommendationServiceHandler) CreateSnapshotPolicies(context.Context, *connect.Request[v1.CreateSnapshotPoliciesRequest]) (*connect.Response[v1.CreateSnapshotPoliciesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.CreateSnapshotPolicies is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListSnapshotPolicies(context.Context, *connect.Request[v1.ListSnapshotPoliciesRequest]) (*connect.Response[v1.ListSnapshotPoliciesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListSnapshotPolicies is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) UpdateSnapshotPolicy(context.Context, *connect.Request[v1.UpdateSnapshotPolicyRequest]) (*connect.Response[v1.UpdateSnapshotPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateSnapshotPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DeleteSnapshotPolicy(context.Context, *connect.Request[v1.DeleteSnapshotPolicyRequest]) (*connect.Response[v1.DeleteSnapshotPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteSnapshotPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) CreateSnapshotPolicyTargets(context.Context, *connect.Request[v1.CreateSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateSnapshotPolicyTargetsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.CreateSnapshotPolicyTargets is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListSnapshotPolicyTargets(context.Context, *connect.Request[v1.ListSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListSnapshotPolicyTargetsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListSnapshotPolicyTargets is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) UpdateSnapshotPolicyTarget(context.Context, *connect.Request[v1.UpdateSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateSnapshotPolicyTargetResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateSnapshotPolicyTarget is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DeleteSnapshotPolicyTarget(context.Context, *connect.Request[v1.DeleteSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteSnapshotPolicyTargetResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteSnapshotPolicyTarget is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) CreateForensicSnapshotPolicies(context.Context, *connect.Request[v1.CreateForensicSnapshotPoliciesRequest]) (*connect.Response[v1.CreateForensicSnapshotPoliciesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.CreateForensicSnapshotPolicies is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListForensicSnapshotPolicies(context.Context, *connect.Request[v1.ListForensicSnapshotPoliciesRequest]) (*connect.Response[v1.ListForensicSnapshotPoliciesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListForensicSnapshotPolicies is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) UpdateForensicSnapshotPolicy(context.Context, *connect.Request[v1.UpdateForensicSnapshotPolicyRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DeleteForensicSnapshotPolicy(context.Context, *connect.Request[v1.DeleteForensicSnapshotPolicyRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicy is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) CreateForensicSnapshotPolicyTargets(context.Context, *connect.Request[v1.CreateForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.CreateForensicSnapshotPolicyTargetsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.CreateForensicSnapshotPolicyTargets is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListForensicSnapshotPolicyTargets(context.Context, *connect.Request[v1.ListForensicSnapshotPolicyTargetsRequest]) (*connect.Response[v1.ListForensicSnapshotPolicyTargetsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListForensicSnapshotPolicyTargets is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) UpdateForensicSnapshotPolicyTarget(context.Context, *connect.Request[v1.UpdateForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.UpdateForensicSnapshotPolicyTargetResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicyTarget is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) DeleteForensicSnapshotPolicyTarget(context.Context, *connect.Request[v1.DeleteForensicSnapshotPolicyTargetRequest]) (*connect.Response[v1.DeleteForensicSnapshotPolicyTargetResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicyTarget is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) TriggerForensicSnapshotRun(context.Context, *connect.Request[v1.TriggerForensicSnapshotRunRequest]) (*connect.Response[v1.TriggerForensicSnapshotRunResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.TriggerForensicSnapshotRun is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) ListReferencedAuthentications(context.Context, *connect.Request[v1.ListReferencedAuthenticationsRequest]) (*connect.Response[v1.ListReferencedAuthenticationsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.ListReferencedAuthentications is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) PreviewSnapshotPolicyTargetMatches(context.Context, *connect.Request[v1.PreviewSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewSnapshotPolicyTargetMatchesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewSnapshotPolicyTargetMatches is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) PreviewForensicSnapshotPolicyTargetMatches(context.Context, *connect.Request[v1.PreviewForensicSnapshotPolicyTargetMatchesRequest]) (*connect.Response[v1.PreviewForensicSnapshotPolicyTargetMatchesResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewForensicSnapshotPolicyTargetMatches is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) GetSnapshotPolicyTargetRenderedScope(context.Context, *connect.Request[v1.GetSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetSnapshotPolicyTargetRenderedScopeResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetSnapshotPolicyTargetRenderedScope is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) GetForensicSnapshotPolicyTargetRenderedScope(context.Context, *connect.Request[v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest]) (*connect.Response[v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetForensicSnapshotPolicyTargetRenderedScope is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) GetSnapshotRecommendationStatus(context.Context, *connect.Request[v1.GetSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetSnapshotRecommendationStatusResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetSnapshotRecommendationStatus is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) GetForensicSnapshotRecommendationStatus(context.Context, *connect.Request[v1.GetForensicSnapshotRecommendationStatusRequest]) (*connect.Response[v1.GetForensicSnapshotRecommendationStatusResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.GetForensicSnapshotRecommendationStatus is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) PreviewSnapshotRecommendationConfig(context.Context, *connect.Request[v1.PreviewSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewSnapshotRecommendationConfigResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewSnapshotRecommendationConfig is not implemented"))
+}
+
+func (UnimplementedK8SRecommendationServiceHandler) PreviewForensicSnapshotRecommendationConfig(context.Context, *connect.Request[v1.PreviewForensicSnapshotRecommendationConfigRequest]) (*connect.Response[v1.PreviewForensicSnapshotRecommendationConfigResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.K8sRecommendationService.PreviewForensicSnapshotRecommendationConfig is not implemented"))
+}
diff --git a/internal/gen/api/v1/cluster.pb.go b/internal/gen/api/v1/cluster.pb.go
index 8784bd7..35e3366 100644
--- a/internal/gen/api/v1/cluster.pb.go
+++ b/internal/gen/api/v1/cluster.pb.go
@@ -768,6 +768,8 @@ type GetNetworkDependenciesRequest struct {
EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
SrcNamespaces []string `protobuf:"bytes,4,rep,name=src_namespaces,json=srcNamespaces,proto3" json:"src_namespaces,omitempty"` // Filter by source namespaces (optional)
SrcNodeGroups []string `protobuf:"bytes,5,rep,name=src_node_groups,json=srcNodeGroups,proto3" json:"src_node_groups,omitempty"` // Filter by source node groups (optional)
+ Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` // Max edges to return, ordered by rank_by (optional; 0/unset means no limit — all matching edges are returned)
+ RankBy string `protobuf:"bytes,7,opt,name=rank_by,json=rankBy,proto3" json:"rank_by,omitempty"` // Ordering dimension: "traffic" (default) or "cost" (optional; unset/unrecognized falls back to "traffic")
}
func (x *GetNetworkDependenciesRequest) Reset() {
@@ -837,6 +839,20 @@ func (x *GetNetworkDependenciesRequest) GetSrcNodeGroups() []string {
return nil
}
+func (x *GetNetworkDependenciesRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *GetNetworkDependenciesRequest) GetRankBy() string {
+ if x != nil {
+ return x.RankBy
+ }
+ return ""
+}
+
// A workload node in the dependency graph
type WorkloadNode struct {
state protoimpl.MessageState
@@ -2154,7 +2170,7 @@ var file_api_v1_cluster_proto_rawDesc = []byte{
0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x64, 0x22, 0xff, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77,
+ 0x65, 0x72, 0x49, 0x64, 0x22, 0xae, 0x02, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77,
0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
@@ -2170,283 +2186,286 @@ var file_api_v1_cluster_proto_rawDesc = []byte{
0x0d, 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x26,
0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x76, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x22, 0x36,
- 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x4e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d,
- 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
- 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x22, 0xc2, 0x03, 0x0a, 0x0e, 0x44, 0x65, 0x70,
- 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x73,
- 0x72, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x73, 0x72, 0x63, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x37, 0x0a, 0x0c, 0x64, 0x73, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65,
- 0x52, 0x0b, 0x64, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x37, 0x0a,
- 0x0c, 0x64, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74,
- 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x64, 0x73, 0x74, 0x45, 0x78,
- 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65,
- 0x52, 0x0a, 0x64, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x12,
- 0x64, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x52, 0x10, 0x64, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65,
- 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19,
- 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73,
- 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x4e, 0x0a,
- 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e,
- 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x2c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e,
- 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x22, 0xce, 0x02,
- 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35,
- 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e,
- 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73,
- 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d,
- 0x73, 0x72, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x05, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x72, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
- 0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61,
- 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x0d, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x8e,
- 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69,
- 0x65, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
- 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65,
- 0x72, 0x69, 0x65, 0x73, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x22,
- 0xc4, 0x01, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5a, 0x6f,
- 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72,
+ 0x61, 0x6e, 0x6b, 0x42, 0x79, 0x22, 0x76, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x22, 0x36, 0x0a,
+ 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
+ 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x4e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f,
+ 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61,
+ 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+ 0x69, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x22, 0xc2, 0x03, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x65,
+ 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x72,
+ 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x73, 0x72, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x12, 0x37, 0x0a, 0x0c, 0x64, 0x73, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52,
+ 0x0b, 0x64, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x37, 0x0a, 0x0c,
+ 0x64, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65,
+ 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x64, 0x73, 0x74, 0x45, 0x78, 0x74,
+ 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72,
+ 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52,
+ 0x0a, 0x64, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x12, 0x64,
+ 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x52, 0x10, 0x64, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
+ 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a,
+ 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x1e,
+ 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64,
+ 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c,
+ 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63,
+ 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x22, 0xce, 0x02, 0x0a,
+ 0x22, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a,
- 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64,
- 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73,
- 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbd, 0x04, 0x0a, 0x17, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x72,
+ 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73,
+ 0x72, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0c, 0x73, 0x72, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
+ 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63,
+ 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74,
+ 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
+ 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x8e, 0x01,
+ 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65,
+ 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73,
+ 0x12, 0x2c, 0x0a, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72,
+ 0x69, 0x65, 0x73, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x22, 0xc4,
+ 0x01, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5a, 0x6f, 0x6e,
+ 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c,
- 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x78,
- 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x78,
- 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f,
- 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
- 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x70,
- 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x78,
- 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c,
- 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73,
- 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x14, 0x74, 0x78,
- 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x12, 0x74, 0x78, 0x42, 0x79, 0x74,
- 0x65, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x51, 0x0a,
- 0x14, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x12, 0x72, 0x78,
- 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
- 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x73,
- 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10,
- 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x7a, 0x6f, 0x6e, 0x65, 0x42, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x73, 0x0a, 0x17, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03,
- 0x70, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x39, 0x22, 0xec, 0x01, 0x0a, 0x18,
- 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
- 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88,
- 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c,
+ 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08,
+ 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54,
+ 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69,
+ 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbd, 0x04, 0x0a, 0x17, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65,
+ 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d,
- 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a,
- 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x19, 0x47, 0x65,
- 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f,
- 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a,
- 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x6c, 0x69,
- 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x76,
- 0x65, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48,
- 0x02, 0x52, 0x08, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09,
- 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x0b, 0x0a, 0x09,
- 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x2c, 0x0a, 0x1a, 0x47, 0x65, 0x74,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2a, 0xcb,
- 0x01, 0x0a, 0x19, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x6e, 0x65,
- 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x27,
- 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45, 0x53, 0x53,
- 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
- 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4c, 0x55,
- 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52,
- 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10,
- 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56,
- 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45,
- 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x2c,
- 0x0a, 0x28, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45,
- 0x53, 0x53, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x45,
- 0x51, 0x55, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x03, 0x32, 0x80, 0x08, 0x0a,
- 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
- 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61,
- 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69,
- 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x61, 0x73,
- 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x2e, 0x61,
+ 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x74,
+ 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19,
+ 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f,
+ 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x78, 0x42,
+ 0x79, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x70,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x78,
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x78, 0x50,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+ 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x14, 0x74, 0x78, 0x5f,
+ 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x12, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65,
+ 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x14,
+ 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x12, 0x72, 0x78, 0x42,
+ 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12,
+ 0x4a, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x73, 0x74,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x7a,
+ 0x6f, 0x6e, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
+ 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x7a, 0x6f, 0x6e, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65,
+ 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x73, 0x0a, 0x17, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
+ 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
+ 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x39, 0x22, 0xec, 0x01, 0x0a, 0x18, 0x47,
+ 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
+ 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48,
+ 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a,
+ 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09,
+ 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x19, 0x47, 0x65, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69,
+ 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f, 0x64,
+ 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a,
+ 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x6c, 0x69, 0x76,
+ 0x65, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65,
+ 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02,
+ 0x52, 0x08, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a,
+ 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6c, 0x6f,
+ 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+ 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x2c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2a, 0xcb, 0x01,
+ 0x0a, 0x19, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73,
+ 0x73, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x43,
+ 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f,
+ 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4c, 0x55, 0x53,
+ 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x45,
+ 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10, 0x01,
+ 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45,
+ 0x4e, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f,
+ 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x2c, 0x0a,
+ 0x28, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45, 0x53,
+ 0x53, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x51,
+ 0x55, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x03, 0x32, 0x80, 0x08, 0x0a, 0x0e,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61,
+ 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73,
+ 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63,
+ 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
+ 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42,
+ 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x61, 0x73, 0x69,
+ 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
+ 0x42, 0x61, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
+ 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
+ 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43,
+ 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
- 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65,
- 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a,
- 0x1b, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43,
- 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x5b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42,
- 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e, 0x61, 0x6d,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79,
- 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14,
- 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e, 0x61,
- 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66,
- 0x6f, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42,
- 0x8a, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0c,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35,
- 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65,
- 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f,
- 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b,
- 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70,
- 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12,
- 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
+ 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x44,
+ 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e,
+ 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b,
+ 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54,
+ 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b,
+ 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x4e,
+ 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47,
+ 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4e, 0x61, 0x6d,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
+ 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8a,
+ 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67,
+ 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72,
+ 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64,
+ 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61,
+ 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69,
+ 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41,
+ 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
}
var (
diff --git a/internal/gen/api/v1/common.pb.go b/internal/gen/api/v1/common.pb.go
index b36e899..42cd190 100644
--- a/internal/gen/api/v1/common.pb.go
+++ b/internal/gen/api/v1/common.pb.go
@@ -65,6 +65,14 @@ const (
K8SObjectKind_K8S_OBJECT_KIND_CNPG_CLUSTER K8SObjectKind = 35
K8SObjectKind_K8S_OBJECT_KIND_SPARK_APPLICATION K8SObjectKind = 36
K8SObjectKind_K8S_OBJECT_KIND_SCHEDULED_SPARK_APPLICATION K8SObjectKind = 37
+ // Kyverno Policy and ClusterPolicy (kyverno.io/v1); one kind for both scopes.
+ K8SObjectKind_K8S_OBJECT_KIND_KYVERNO_POLICY K8SObjectKind = 38
+ // Kyverno PolicyReport and ClusterPolicyReport (wgpolicyk8s.io/v1alpha2).
+ K8SObjectKind_K8S_OBJECT_KIND_KYVERNO_POLICY_REPORT K8SObjectKind = 39
+ // Gatekeeper ConstraintTemplate (templates.gatekeeper.sh/v1).
+ K8SObjectKind_K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT_TEMPLATE K8SObjectKind = 40
+ // Gatekeeper constraint instances (constraints.gatekeeper.sh, dynamic kinds).
+ K8SObjectKind_K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT K8SObjectKind = 41
)
// Enum value maps for K8SObjectKind.
@@ -108,46 +116,54 @@ var (
35: "K8S_OBJECT_KIND_CNPG_CLUSTER",
36: "K8S_OBJECT_KIND_SPARK_APPLICATION",
37: "K8S_OBJECT_KIND_SCHEDULED_SPARK_APPLICATION",
+ 38: "K8S_OBJECT_KIND_KYVERNO_POLICY",
+ 39: "K8S_OBJECT_KIND_KYVERNO_POLICY_REPORT",
+ 40: "K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT_TEMPLATE",
+ 41: "K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT",
}
K8SObjectKind_value = map[string]int32{
- "K8S_OBJECT_KIND_UNSPECIFIED": 0,
- "K8S_OBJECT_KIND_DEPLOYMENT": 1,
- "K8S_OBJECT_KIND_REPLICA_SET": 2,
- "K8S_OBJECT_KIND_STATEFUL_SET": 3,
- "K8S_OBJECT_KIND_DAEMON_SET": 4,
- "K8S_OBJECT_KIND_JOB": 5,
- "K8S_OBJECT_KIND_CRON_JOB": 6,
- "K8S_OBJECT_KIND_REPLICATION_CONTROLLER": 7,
- "K8S_OBJECT_KIND_POD": 8,
- "K8S_OBJECT_KIND_NAMESPACE": 9,
- "K8S_OBJECT_KIND_NODE": 10,
- "K8S_OBJECT_KIND_INGRESS": 11,
- "K8S_OBJECT_KIND_CONTAINER": 12,
- "K8S_OBJECT_KIND_SERVICE": 13,
- "K8S_OBJECT_KIND_CONFIG_MAP": 14,
- "K8S_OBJECT_KIND_PERSISTENT_VOLUME": 15,
- "K8S_OBJECT_KIND_PERSISTENT_VOLUME_CLAIM": 16,
- "K8S_OBJECT_KIND_STORAGE_CLASS": 17,
- "K8S_OBJECT_KIND_ARGO_ROLLOUT": 18,
- "K8S_OBJECT_KIND_HORIZONTAL_POD_AUTOSCALER": 19,
- "K8S_OBJECT_KIND_VERTICAL_POD_AUTOSCALER": 20,
- "K8S_OBJECT_KIND_LIMIT_RANGE": 21,
- "K8S_OBJECT_KIND_SERVICE_ACCOUNT": 22,
- "K8S_OBJECT_KIND_ROLE": 23,
- "K8S_OBJECT_KIND_ROLE_BINDING": 24,
- "K8S_OBJECT_KIND_KEDA_SCALED_OBJECT": 25,
- "K8S_OBJECT_KIND_KARPENTER_RESOURCE": 26,
- "K8S_OBJECT_KIND_POD_DISRUPTION_BUDGET": 27,
- "K8S_OBJECT_KIND_RESOURCE_QUOTA": 28,
- "K8S_OBJECT_KIND_KUBEFLOW_NOTEBOOK": 29,
- "K8S_OBJECT_KIND_VOLCANO_JOB": 30,
- "K8S_OBJECT_KIND_SECRET": 31,
- "K8S_OBJECT_KIND_CLUSTER_ROLE": 32,
- "K8S_OBJECT_KIND_CLUSTER_ROLE_BINDING": 33,
- "K8S_OBJECT_KIND_NETWORK_POLICY": 34,
- "K8S_OBJECT_KIND_CNPG_CLUSTER": 35,
- "K8S_OBJECT_KIND_SPARK_APPLICATION": 36,
- "K8S_OBJECT_KIND_SCHEDULED_SPARK_APPLICATION": 37,
+ "K8S_OBJECT_KIND_UNSPECIFIED": 0,
+ "K8S_OBJECT_KIND_DEPLOYMENT": 1,
+ "K8S_OBJECT_KIND_REPLICA_SET": 2,
+ "K8S_OBJECT_KIND_STATEFUL_SET": 3,
+ "K8S_OBJECT_KIND_DAEMON_SET": 4,
+ "K8S_OBJECT_KIND_JOB": 5,
+ "K8S_OBJECT_KIND_CRON_JOB": 6,
+ "K8S_OBJECT_KIND_REPLICATION_CONTROLLER": 7,
+ "K8S_OBJECT_KIND_POD": 8,
+ "K8S_OBJECT_KIND_NAMESPACE": 9,
+ "K8S_OBJECT_KIND_NODE": 10,
+ "K8S_OBJECT_KIND_INGRESS": 11,
+ "K8S_OBJECT_KIND_CONTAINER": 12,
+ "K8S_OBJECT_KIND_SERVICE": 13,
+ "K8S_OBJECT_KIND_CONFIG_MAP": 14,
+ "K8S_OBJECT_KIND_PERSISTENT_VOLUME": 15,
+ "K8S_OBJECT_KIND_PERSISTENT_VOLUME_CLAIM": 16,
+ "K8S_OBJECT_KIND_STORAGE_CLASS": 17,
+ "K8S_OBJECT_KIND_ARGO_ROLLOUT": 18,
+ "K8S_OBJECT_KIND_HORIZONTAL_POD_AUTOSCALER": 19,
+ "K8S_OBJECT_KIND_VERTICAL_POD_AUTOSCALER": 20,
+ "K8S_OBJECT_KIND_LIMIT_RANGE": 21,
+ "K8S_OBJECT_KIND_SERVICE_ACCOUNT": 22,
+ "K8S_OBJECT_KIND_ROLE": 23,
+ "K8S_OBJECT_KIND_ROLE_BINDING": 24,
+ "K8S_OBJECT_KIND_KEDA_SCALED_OBJECT": 25,
+ "K8S_OBJECT_KIND_KARPENTER_RESOURCE": 26,
+ "K8S_OBJECT_KIND_POD_DISRUPTION_BUDGET": 27,
+ "K8S_OBJECT_KIND_RESOURCE_QUOTA": 28,
+ "K8S_OBJECT_KIND_KUBEFLOW_NOTEBOOK": 29,
+ "K8S_OBJECT_KIND_VOLCANO_JOB": 30,
+ "K8S_OBJECT_KIND_SECRET": 31,
+ "K8S_OBJECT_KIND_CLUSTER_ROLE": 32,
+ "K8S_OBJECT_KIND_CLUSTER_ROLE_BINDING": 33,
+ "K8S_OBJECT_KIND_NETWORK_POLICY": 34,
+ "K8S_OBJECT_KIND_CNPG_CLUSTER": 35,
+ "K8S_OBJECT_KIND_SPARK_APPLICATION": 36,
+ "K8S_OBJECT_KIND_SCHEDULED_SPARK_APPLICATION": 37,
+ "K8S_OBJECT_KIND_KYVERNO_POLICY": 38,
+ "K8S_OBJECT_KIND_KYVERNO_POLICY_REPORT": 39,
+ "K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT_TEMPLATE": 40,
+ "K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT": 41,
}
)
@@ -225,13 +241,36 @@ func (OrderByEnum) EnumDescriptor() ([]byte, []int) {
return file_api_v1_common_proto_rawDescGZIP(), []int{1}
}
-// LabelSelectorOperator is the set of operators that can be used in a selector requirement.
+// LabelSelectorOperator is the set of operators that can be used in a selector
+// requirement.
+//
+// The message shape mirrors Kubernetes metav1.LabelSelector, and matching
+// follows Kubernetes for the IN and NOT_IN operators. In particular, a
+// workload whose labels lack the key still matches NOT_IN, because a missing
+// key is not in the set. This agrees with Kubernetes: in
+// k8s.io/apimachinery/pkg/labels, Requirement.Matches returns true for NotIn
+// when the key is absent, so it is not a divergence.
+//
+// Two DevZero-specific caveats apply (PC-1452):
+//
+// First, the department and workload filter paths implement only IN and
+// NOT_IN. EXISTS, DOES_NOT_EXIST, GT, and LT are part of this proto for shape
+// compatibility but are not honored by those SQL filters.
+//
+// Second, a workload whose entire labels or annotations column is SQL NULL
+// (an unset column, distinct from an empty map) is EXCLUDED from a NOT_IN
+// match by the department query, which ANDs a column IS NOT NULL guard ahead
+// of the selector condition (dakr/repositories/departments.go). This is a
+// genuine divergence from Kubernetes, which matches a label-less object
+// against NotIn. It is also inconsistent with the workload-metrics filter
+// path, which matches a NULL column against NOT_IN
+// (dakr/repositories/workload_metrics_filters.go).
type LabelSelectorOperator int32
const (
LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_UNSPECIFIED LabelSelectorOperator = 0
LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_IN LabelSelectorOperator = 1 // In
- LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_NOT_IN LabelSelectorOperator = 2 // NotIn
+ LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_NOT_IN LabelSelectorOperator = 2 // NotIn (missing key matches; see caveats above and PC-1452)
LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_EXISTS LabelSelectorOperator = 3 // Exists
LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_DOES_NOT_EXIST LabelSelectorOperator = 4 // DoesNotExist
LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_GT LabelSelectorOperator = 5 // GreaterThan
@@ -340,6 +379,136 @@ func (WorkloadStatusFilter) EnumDescriptor() ([]byte, []int) {
return file_api_v1_common_proto_rawDescGZIP(), []int{3}
}
+// DisruptionBlockReason is the structured classification of a consolidation / scale-down
+// block: why the autoscaler could not remove a node.
+//
+// Assigned by zxporter at ingest time, because only the collector has the inputs the
+// answer needs — the blocked pods' annotations, live PodDisruptionBudget status, the
+// NodeClaim's terminationGracePeriod deadline, and (on Cluster Autoscaler) the
+// `cluster-autoscaler-status` ConfigMap. dakr has none of those at read time, and the
+// event's own message is unversioned free text that has changed shape across releases.
+//
+// ONE ENUM FOR BOTH AUTOSCALERS. Karpenter's `DisruptionBlocked` events and Cluster
+// Autoscaler's synthesized `ScaleDownBlocked` observations share these buckets: two mean
+// the same thing under either autoscaler, the rest are specific to one. Which autoscaler
+// produced a row is answered by its `reporting_controller`, not by a second enum — that is
+// what lets one report cover a Karpenter cluster, a CAS cluster, and a cluster running
+// both mid-migration.
+//
+// The value names map 1:1 to models.DisruptionBlockReason and to the
+// k8s_events.disruption_block_reason ClickHouse column's string values. That column is
+// LowCardinality(String), not Enum8, so appending a value here costs no migration.
+type DisruptionBlockReason int32
+
+const (
+ // Not a disruption-block event, or an event ingested before classification existed.
+ // Deliberately distinct from OTHER: this means "never classified", where OTHER means
+ // "classified, and matched no known pattern".
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_UNSPECIFIED DisruptionBlockReason = 0
+ // A PodDisruptionBudget selecting a pod on the node currently allows no disruptions.
+ // blocking_pdb_name carries which one. Both autoscalers (on Cluster Autoscaler this is
+ // the BlockedByPod unremovable reason with a NotEnoughPdb blocking pod).
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_PDB_VIOLATION DisruptionBlockReason = 1
+ // A pod on the node, or the node itself, is annotated un-evictable. Both autoscalers:
+ // `karpenter.sh/do-not-disrupt: "true"` on a pod (Karpenter),
+ // `cluster-autoscaler.kubernetes.io/safe-to-evict: "false"` on a pod, or
+ // `cluster-autoscaler.kubernetes.io/scale-down-disabled: "true"` on a node (CAS).
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_DO_NOT_DISRUPT_ANNOTATION DisruptionBlockReason = 2
+ // The NodeClaim's terminationGracePeriod deadline has already elapsed, so Karpenter
+ // will force-terminate past both PDBs and do-not-disrupt. Karpenter-only: Cluster
+ // Autoscaler has no equivalent override.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_FORCE_DISRUPTED DisruptionBlockReason = 3
+ // Classified, but the block matched none of the above — e.g. a node-level block
+ // (uninitialized, already deleting, missing its NodePool label), or any Cluster
+ // Autoscaler unremovable reason without its own bucket (NodeGroupMinSizeReached,
+ // NotUnderutilized, CurrentlyBeingDeleted, ...). The verbatim `message` is the only
+ // remaining detail, which is why it is never dropped. This is the REQUIRED fallback:
+ // dakr rejects an event carrying a value outside this enum.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_OTHER DisruptionBlockReason = 4
+ // Cluster Autoscaler considers the node underutilized but has not yet seen it stay that
+ // way for --scale-down-unneeded-time. A waiting state rather than a misconfiguration,
+ // and the most common thing a healthy CAS cluster reports — hence its own bucket rather
+ // than OTHER. Cluster-Autoscaler-only.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_NOT_UNNEEDED_LONG_ENOUGH DisruptionBlockReason = 5
+ // Cluster Autoscaler's scheduling simulation found nowhere to move the node's pods to,
+ // so the node cannot be drained. Actionable, unlike NOT_UNNEEDED_LONG_ENOUGH.
+ // Cluster-Autoscaler-only.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_NO_PLACE_TO_MOVE_PODS DisruptionBlockReason = 6
+ // The scheduler has provisionally assigned a pending pod to this node
+ // (pod.Status.NominatedNodeName). The autoscaler will not disrupt a node it is about to
+ // hand a pod, since that would just make the pod re-pend immediately — a self-resolving,
+ // expected-waiting state, not a misconfiguration. related_pod_name carries the pod.
+ // Derived structurally, not from the event message — reachable via the Karpenter path
+ // today.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_POD_NOMINATED DisruptionBlockReason = 7
+ // Karpenter's own `disruption.budgets` allowance for the NodePool is currently spent, so
+ // it throttled itself. Operationally the opposite of every other value here: a config
+ // choice the cluster's owner made, not an obstruction to go find, which is why it is not
+ // folded into OTHER. Reported against the NodePool rather than a node, so it counts as a
+ // blocking event and never as a blocked node. Karpenter-only.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_DISRUPTION_BUDGET DisruptionBlockReason = 8
+ // Karpenter's scheduling simulation found nowhere for the node's pods to go, so draining
+ // it would leave them pending. Same situation as NO_PLACE_TO_MOVE_PODS, which is spelled
+ // to match Cluster Autoscaler's own unremovable reason verbatim and is therefore kept
+ // CAS-only; the per-pod sub-reason stays readable in the verbatim `message`.
+ DisruptionBlockReason_DISRUPTION_BLOCK_REASON_PODS_WOULD_NOT_SCHEDULE DisruptionBlockReason = 9
+)
+
+// Enum value maps for DisruptionBlockReason.
+var (
+ DisruptionBlockReason_name = map[int32]string{
+ 0: "DISRUPTION_BLOCK_REASON_UNSPECIFIED",
+ 1: "DISRUPTION_BLOCK_REASON_PDB_VIOLATION",
+ 2: "DISRUPTION_BLOCK_REASON_DO_NOT_DISRUPT_ANNOTATION",
+ 3: "DISRUPTION_BLOCK_REASON_FORCE_DISRUPTED",
+ 4: "DISRUPTION_BLOCK_REASON_OTHER",
+ 5: "DISRUPTION_BLOCK_REASON_NOT_UNNEEDED_LONG_ENOUGH",
+ 6: "DISRUPTION_BLOCK_REASON_NO_PLACE_TO_MOVE_PODS",
+ 7: "DISRUPTION_BLOCK_REASON_POD_NOMINATED",
+ 8: "DISRUPTION_BLOCK_REASON_DISRUPTION_BUDGET",
+ 9: "DISRUPTION_BLOCK_REASON_PODS_WOULD_NOT_SCHEDULE",
+ }
+ DisruptionBlockReason_value = map[string]int32{
+ "DISRUPTION_BLOCK_REASON_UNSPECIFIED": 0,
+ "DISRUPTION_BLOCK_REASON_PDB_VIOLATION": 1,
+ "DISRUPTION_BLOCK_REASON_DO_NOT_DISRUPT_ANNOTATION": 2,
+ "DISRUPTION_BLOCK_REASON_FORCE_DISRUPTED": 3,
+ "DISRUPTION_BLOCK_REASON_OTHER": 4,
+ "DISRUPTION_BLOCK_REASON_NOT_UNNEEDED_LONG_ENOUGH": 5,
+ "DISRUPTION_BLOCK_REASON_NO_PLACE_TO_MOVE_PODS": 6,
+ "DISRUPTION_BLOCK_REASON_POD_NOMINATED": 7,
+ "DISRUPTION_BLOCK_REASON_DISRUPTION_BUDGET": 8,
+ "DISRUPTION_BLOCK_REASON_PODS_WOULD_NOT_SCHEDULE": 9,
+ }
+)
+
+func (x DisruptionBlockReason) Enum() *DisruptionBlockReason {
+ p := new(DisruptionBlockReason)
+ *p = x
+ return p
+}
+
+func (x DisruptionBlockReason) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (DisruptionBlockReason) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_common_proto_enumTypes[4].Descriptor()
+}
+
+func (DisruptionBlockReason) Type() protoreflect.EnumType {
+ return &file_api_v1_common_proto_enumTypes[4]
+}
+
+func (x DisruptionBlockReason) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DisruptionBlockReason.Descriptor instead.
+func (DisruptionBlockReason) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{4}
+}
+
// Represents a single audit log entry
type AuditLogEntry struct {
state protoimpl.MessageState
@@ -676,6 +845,7 @@ type CostInfo struct {
MoneyCpuCostForTimePeriod *money.Money `protobuf:"bytes,110,opt,name=money_cpu_cost_for_time_period,json=moneyCpuCostForTimePeriod,proto3" json:"money_cpu_cost_for_time_period,omitempty"`
MoneyMemoryCostForTimePeriod *money.Money `protobuf:"bytes,111,opt,name=money_memory_cost_for_time_period,json=moneyMemoryCostForTimePeriod,proto3" json:"money_memory_cost_for_time_period,omitempty"`
MoneyTotalCostForTimePeriod *money.Money `protobuf:"bytes,112,opt,name=money_total_cost_for_time_period,json=moneyTotalCostForTimePeriod,proto3" json:"money_total_cost_for_time_period,omitempty"`
+ MoneyNetworkCostForTimePeriod *money.Money `protobuf:"bytes,122,opt,name=money_network_cost_for_time_period,json=moneyNetworkCostForTimePeriod,proto3" json:"money_network_cost_for_time_period,omitempty"`
MoneyOptimizedCpuCostForTimePeriod *money.Money `protobuf:"bytes,113,opt,name=money_optimized_cpu_cost_for_time_period,json=moneyOptimizedCpuCostForTimePeriod,proto3" json:"money_optimized_cpu_cost_for_time_period,omitempty"`
MoneyOptimizedMemoryCostForTimePeriod *money.Money `protobuf:"bytes,114,opt,name=money_optimized_memory_cost_for_time_period,json=moneyOptimizedMemoryCostForTimePeriod,proto3" json:"money_optimized_memory_cost_for_time_period,omitempty"`
MoneyOptimizedTotalCostForTimePeriod *money.Money `protobuf:"bytes,115,opt,name=money_optimized_total_cost_for_time_period,json=moneyOptimizedTotalCostForTimePeriod,proto3" json:"money_optimized_total_cost_for_time_period,omitempty"`
@@ -986,6 +1156,13 @@ func (x *CostInfo) GetMoneyTotalCostForTimePeriod() *money.Money {
return nil
}
+func (x *CostInfo) GetMoneyNetworkCostForTimePeriod() *money.Money {
+ if x != nil {
+ return x.MoneyNetworkCostForTimePeriod
+ }
+ return nil
+}
+
func (x *CostInfo) GetMoneyOptimizedCpuCostForTimePeriod() *money.Money {
if x != nil {
return x.MoneyOptimizedCpuCostForTimePeriod
@@ -1112,6 +1289,38 @@ type ResourceMetrics struct {
NodeFsWrites float64 `protobuf:"fixed64,104,opt,name=node_fs_writes,json=nodeFsWrites,proto3" json:"node_fs_writes,omitempty"` // number
// Pod count
PodCount int32 `protobuf:"varint,111,opt,name=pod_count,json=podCount,proto3" json:"pod_count,omitempty"` // Number of distinct pods observed in this time bucket.
+ // JVM heap metrics (0 for non-Java containers)
+ JvmHeapUsedBytes int64 `protobuf:"varint,121,opt,name=jvm_heap_used_bytes,json=jvmHeapUsedBytes,proto3" json:"jvm_heap_used_bytes,omitempty"`
+ JvmHeapMaxBytes int64 `protobuf:"varint,122,opt,name=jvm_heap_max_bytes,json=jvmHeapMaxBytes,proto3" json:"jvm_heap_max_bytes,omitempty"`
+ // Memory RSS (Resident Set Size) in bytes from kubelet stats/summary (0 for non-RSS-reporting nodes)
+ ContainerMemoryRssBytes int64 `protobuf:"varint,123,opt,name=container_memory_rss_bytes,json=containerMemoryRssBytes,proto3" json:"container_memory_rss_bytes,omitempty"`
+ // Memory breakdown components (bytes). Relationship:
+ //
+ // usage_bytes = anonymous + file cache + swap cache + kernel (container_memory_usage_bytes / memory.current)
+ // working_set = usage_bytes - inactive_file (what the kubelet/OOM-killer acts on; stored as container_memory_usage)
+ // cache = active_file + inactive_file (file-backed, reclaimable)
+ // inactive_cache = max(0, usage_bytes - working_set) (reclaimable file cache)
+ // active_cache = max(0, cache - inactive_cache) (recently-used file cache)
+ // swap = swapped-out (non-resident) pages; tracked separately, NOT part of usage/working_set
+ ContainerMemoryCacheBytes int64 `protobuf:"varint,124,opt,name=container_memory_cache_bytes,json=containerMemoryCacheBytes,proto3" json:"container_memory_cache_bytes,omitempty"`
+ ContainerMemorySwapBytes int64 `protobuf:"varint,125,opt,name=container_memory_swap_bytes,json=containerMemorySwapBytes,proto3" json:"container_memory_swap_bytes,omitempty"`
+ ContainerMemoryActiveCacheBytes int64 `protobuf:"varint,126,opt,name=container_memory_active_cache_bytes,json=containerMemoryActiveCacheBytes,proto3" json:"container_memory_active_cache_bytes,omitempty"`
+ ContainerMemoryInactiveCacheBytes int64 `protobuf:"varint,127,opt,name=container_memory_inactive_cache_bytes,json=containerMemoryInactiveCacheBytes,proto3" json:"container_memory_inactive_cache_bytes,omitempty"`
+ // Runtime-aware cgroup signals (Plane 0, ADR-0037). Read directly from
+ // /sys/fs/cgroup by zxporter-nodemon (v2 primary). All are cumulative kernel
+ // counters; consumers derive windowed rates as last-first.
+ //
+ // cfs_* CPU CFS throttling (cpu.stat): real throttle, not a usage/limit ratio
+ // memory_events_max memory.events:max — allocations pinned against memory.max, the
+ // Guaranteed-memory ceiling counter that fires before/without an OOM kill
+ // *_pressure_*_usec PSI stall time (cpu.pressure/memory.pressure "total="), microseconds
+ ContainerCfsPeriods int64 `protobuf:"varint,128,opt,name=container_cfs_periods,json=containerCfsPeriods,proto3" json:"container_cfs_periods,omitempty"`
+ ContainerCfsThrottledPeriods int64 `protobuf:"varint,129,opt,name=container_cfs_throttled_periods,json=containerCfsThrottledPeriods,proto3" json:"container_cfs_throttled_periods,omitempty"`
+ ContainerCfsThrottledUsec int64 `protobuf:"varint,130,opt,name=container_cfs_throttled_usec,json=containerCfsThrottledUsec,proto3" json:"container_cfs_throttled_usec,omitempty"`
+ ContainerMemoryEventsMax int64 `protobuf:"varint,131,opt,name=container_memory_events_max,json=containerMemoryEventsMax,proto3" json:"container_memory_events_max,omitempty"`
+ ContainerCpuPressureSomeUsec int64 `protobuf:"varint,132,opt,name=container_cpu_pressure_some_usec,json=containerCpuPressureSomeUsec,proto3" json:"container_cpu_pressure_some_usec,omitempty"`
+ ContainerMemoryPressureSomeUsec int64 `protobuf:"varint,133,opt,name=container_memory_pressure_some_usec,json=containerMemoryPressureSomeUsec,proto3" json:"container_memory_pressure_some_usec,omitempty"`
+ ContainerMemoryPressureFullUsec int64 `protobuf:"varint,134,opt,name=container_memory_pressure_full_usec,json=containerMemoryPressureFullUsec,proto3" json:"container_memory_pressure_full_usec,omitempty"`
}
func (x *ResourceMetrics) Reset() {
@@ -1510,6 +1719,104 @@ func (x *ResourceMetrics) GetPodCount() int32 {
return 0
}
+func (x *ResourceMetrics) GetJvmHeapUsedBytes() int64 {
+ if x != nil {
+ return x.JvmHeapUsedBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetJvmHeapMaxBytes() int64 {
+ if x != nil {
+ return x.JvmHeapMaxBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryRssBytes() int64 {
+ if x != nil {
+ return x.ContainerMemoryRssBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryCacheBytes() int64 {
+ if x != nil {
+ return x.ContainerMemoryCacheBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemorySwapBytes() int64 {
+ if x != nil {
+ return x.ContainerMemorySwapBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryActiveCacheBytes() int64 {
+ if x != nil {
+ return x.ContainerMemoryActiveCacheBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryInactiveCacheBytes() int64 {
+ if x != nil {
+ return x.ContainerMemoryInactiveCacheBytes
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerCfsPeriods() int64 {
+ if x != nil {
+ return x.ContainerCfsPeriods
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerCfsThrottledPeriods() int64 {
+ if x != nil {
+ return x.ContainerCfsThrottledPeriods
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerCfsThrottledUsec() int64 {
+ if x != nil {
+ return x.ContainerCfsThrottledUsec
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryEventsMax() int64 {
+ if x != nil {
+ return x.ContainerMemoryEventsMax
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerCpuPressureSomeUsec() int64 {
+ if x != nil {
+ return x.ContainerCpuPressureSomeUsec
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryPressureSomeUsec() int64 {
+ if x != nil {
+ return x.ContainerMemoryPressureSomeUsec
+ }
+ return 0
+}
+
+func (x *ResourceMetrics) GetContainerMemoryPressureFullUsec() int64 {
+ if x != nil {
+ return x.ContainerMemoryPressureFullUsec
+ }
+ return 0
+}
+
// MetricPercentiles contains percentile statistics for a single metric.
type MetricPercentiles struct {
state protoimpl.MessageState
@@ -1970,6 +2277,25 @@ type ContainerRequestLimits struct {
CurrentMemoryRequest float64 `protobuf:"fixed64,3,opt,name=current_memory_request,json=currentMemoryRequest,proto3" json:"current_memory_request,omitempty"`
CurrentCpuLimit float64 `protobuf:"fixed64,4,opt,name=current_cpu_limit,json=currentCpuLimit,proto3" json:"current_cpu_limit,omitempty"`
CurrentMemoryLimit float64 `protobuf:"fixed64,5,opt,name=current_memory_limit,json=currentMemoryLimit,proto3" json:"current_memory_limit,omitempty"`
+ // JVM metadata (empty/zero for non-Java containers).
+ // Populated from k8s_containers table when JVM is detected via hsperfdata.
+ JvmJavaVersion string `protobuf:"bytes,10,opt,name=jvm_java_version,json=jvmJavaVersion,proto3" json:"jvm_java_version,omitempty"`
+ JvmJavaCommand string `protobuf:"bytes,11,opt,name=jvm_java_command,json=jvmJavaCommand,proto3" json:"jvm_java_command,omitempty"`
+ // Parsed JVM flags (typed fields instead of raw JSON for type-safe frontend access).
+ JvmXmxBytes int64 `protobuf:"varint,13,opt,name=jvm_xmx_bytes,json=jvmXmxBytes,proto3" json:"jvm_xmx_bytes,omitempty"` // -Xmx max heap size in bytes
+ JvmXmsBytes int64 `protobuf:"varint,14,opt,name=jvm_xms_bytes,json=jvmXmsBytes,proto3" json:"jvm_xms_bytes,omitempty"` // -Xms initial heap size in bytes
+ JvmMaxRamPercentage float64 `protobuf:"fixed64,15,opt,name=jvm_max_ram_percentage,json=jvmMaxRamPercentage,proto3" json:"jvm_max_ram_percentage,omitempty"` // -XX:MaxRAMPercentage
+ JvmUseContainerSupport *bool `protobuf:"varint,16,opt,name=jvm_use_container_support,json=jvmUseContainerSupport,proto3,oneof" json:"jvm_use_container_support,omitempty"` // -XX:+/-UseContainerSupport
+ // Source the -Xmx flag was extracted from: "cmdline", "JAVA_TOOL_OPTIONS",
+ // "JDK_JAVA_OPTIONS", or "JAVA_OPTS". Empty when -Xmx is unset. Matters
+ // because the `java` launcher ignores JAVA_OPTS — an -Xmx set there is
+ // inert and the JVM falls back to ergonomic (container-limit) heap sizing.
+ JvmXmxSource string `protobuf:"bytes,17,opt,name=jvm_xmx_source,json=jvmXmxSource,proto3" json:"jvm_xmx_source,omitempty"`
+ // Generic runtime detections (Node.js, .NET, Go, Rust, GraalVM native-image,
+ // Python, Ruby, Deno, Bun) from zxporter-nodemon: existence + best-effort
+ // version per runtime. Empty for containers with no detected runtime. JVM
+ // stays on the dedicated fields above (richer hsperfdata payload).
+ RuntimeProcesses []*RuntimeProcess `protobuf:"bytes,18,rep,name=runtime_processes,json=runtimeProcesses,proto3" json:"runtime_processes,omitempty"`
}
func (x *ContainerRequestLimits) Reset() {
@@ -2039,48 +2365,84 @@ func (x *ContainerRequestLimits) GetCurrentMemoryLimit() float64 {
return 0
}
-// ForecastResourceMetrics encapsulates Forecasted CPU and memory capacity, usage, and utilization for nodes and containers.
-type ForecastResourceMetrics struct {
+func (x *ContainerRequestLimits) GetJvmJavaVersion() string {
+ if x != nil {
+ return x.JvmJavaVersion
+ }
+ return ""
+}
+
+func (x *ContainerRequestLimits) GetJvmJavaCommand() string {
+ if x != nil {
+ return x.JvmJavaCommand
+ }
+ return ""
+}
+
+func (x *ContainerRequestLimits) GetJvmXmxBytes() int64 {
+ if x != nil {
+ return x.JvmXmxBytes
+ }
+ return 0
+}
+
+func (x *ContainerRequestLimits) GetJvmXmsBytes() int64 {
+ if x != nil {
+ return x.JvmXmsBytes
+ }
+ return 0
+}
+
+func (x *ContainerRequestLimits) GetJvmMaxRamPercentage() float64 {
+ if x != nil {
+ return x.JvmMaxRamPercentage
+ }
+ return 0
+}
+
+func (x *ContainerRequestLimits) GetJvmUseContainerSupport() bool {
+ if x != nil && x.JvmUseContainerSupport != nil {
+ return *x.JvmUseContainerSupport
+ }
+ return false
+}
+
+func (x *ContainerRequestLimits) GetJvmXmxSource() string {
+ if x != nil {
+ return x.JvmXmxSource
+ }
+ return ""
+}
+
+func (x *ContainerRequestLimits) GetRuntimeProcesses() []*RuntimeProcess {
+ if x != nil {
+ return x.RuntimeProcesses
+ }
+ return nil
+}
+
+// GPUMigInstance captures per-instance identity and profiling metrics for a
+// single MIG partition. GPU utilization/SM fields are intentionally absent —
+// DCGM never populates them on MIG rows.
+type GPUMigInstance struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Forecast timestamp.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Cluster id of the container.
- ApplicationId string `protobuf:"bytes,3,opt,name=application_id,json=applicationId,proto3" json:"application_id,omitempty"` // Application id of the container.
- ApplicationKind string `protobuf:"bytes,4,opt,name=application_kind,json=applicationKind,proto3" json:"application_kind,omitempty"` // Application kind of the container.
- Model string `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"` // Model used for the forecast
- NodeCpuCapacity float64 `protobuf:"fixed64,6,opt,name=node_cpu_capacity,json=nodeCpuCapacity,proto3" json:"node_cpu_capacity,omitempty"` // Total CPU capacity of nodes.
- NodeMemoryCapacity float64 `protobuf:"fixed64,7,opt,name=node_memory_capacity,json=nodeMemoryCapacity,proto3" json:"node_memory_capacity,omitempty"` // Total memory capacity of nodes.
- NodeCpuUsage float64 `protobuf:"fixed64,8,opt,name=node_cpu_usage,json=nodeCpuUsage,proto3" json:"node_cpu_usage,omitempty"` // Current CPU usage of nodes.
- NodeMemoryUsage float64 `protobuf:"fixed64,9,opt,name=node_memory_usage,json=nodeMemoryUsage,proto3" json:"node_memory_usage,omitempty"` // Current memory usage of nodes.
- NodeCpuUtilization float64 `protobuf:"fixed64,10,opt,name=node_cpu_utilization,json=nodeCpuUtilization,proto3" json:"node_cpu_utilization,omitempty"` // CPU utilization percentage of nodes.
- NodeMemoryUtilization float64 `protobuf:"fixed64,11,opt,name=node_memory_utilization,json=nodeMemoryUtilization,proto3" json:"node_memory_utilization,omitempty"` // Memory utilization percentage of nodes.
- ContainerCpuUsage float64 `protobuf:"fixed64,12,opt,name=container_cpu_usage,json=containerCpuUsage,proto3" json:"container_cpu_usage,omitempty"` // Current CPU usage of containers.
- ContainerMemoryUsage float64 `protobuf:"fixed64,13,opt,name=container_memory_usage,json=containerMemoryUsage,proto3" json:"container_memory_usage,omitempty"` // Current memory usage of containers.
- ContainerCpuUtilization float64 `protobuf:"fixed64,14,opt,name=container_cpu_utilization,json=containerCpuUtilization,proto3" json:"container_cpu_utilization,omitempty"` // CPU utilization percentage of containers.
- ContainerMemoryUtilization float64 `protobuf:"fixed64,15,opt,name=container_memory_utilization,json=containerMemoryUtilization,proto3" json:"container_memory_utilization,omitempty"` // Memory utilization percentage of containers.
- ContainerCpuRequested float64 `protobuf:"fixed64,16,opt,name=container_cpu_requested,json=containerCpuRequested,proto3" json:"container_cpu_requested,omitempty"` // CPU requested by containers.
- ContainerMemoryRequested float64 `protobuf:"fixed64,17,opt,name=container_memory_requested,json=containerMemoryRequested,proto3" json:"container_memory_requested,omitempty"` // Memory requested by containers.
- ContainerCpuLimits float64 `protobuf:"fixed64,18,opt,name=container_cpu_limits,json=containerCpuLimits,proto3" json:"container_cpu_limits,omitempty"` // CPU limits of containers.
- ContainerMemoryLimits float64 `protobuf:"fixed64,19,opt,name=container_memory_limits,json=containerMemoryLimits,proto3" json:"container_memory_limits,omitempty"` // Memory limits of containers.
- ContainerGpuUsage float64 `protobuf:"fixed64,20,opt,name=container_gpu_usage,json=containerGpuUsage,proto3" json:"container_gpu_usage,omitempty"` // GPU usage of containers.
- ContainerGpuRequested float64 `protobuf:"fixed64,21,opt,name=container_gpu_requested,json=containerGpuRequested,proto3" json:"container_gpu_requested,omitempty"` // GPU requests of containers.
- ContainerGpuLimits float64 `protobuf:"fixed64,22,opt,name=container_gpu_limits,json=containerGpuLimits,proto3" json:"container_gpu_limits,omitempty"` // GPU limits of containers.
- ContainerGpuUtilization float64 `protobuf:"fixed64,23,opt,name=container_gpu_utilization,json=containerGpuUtilization,proto3" json:"container_gpu_utilization,omitempty"` // GPU utilization of containers.
- NodeGpuCapacity float64 `protobuf:"fixed64,24,opt,name=node_gpu_capacity,json=nodeGpuCapacity,proto3" json:"node_gpu_capacity,omitempty"` // GPU capcity of nodes.
- NodeGpuUsage float64 `protobuf:"fixed64,25,opt,name=node_gpu_usage,json=nodeGpuUsage,proto3" json:"node_gpu_usage,omitempty"` // GPU usage of nodes.
- NodeGpuUtilization float64 `protobuf:"fixed64,26,opt,name=node_gpu_utilization,json=nodeGpuUtilization,proto3" json:"node_gpu_utilization,omitempty"` // GPU utilization of nodes.
- NodeGpuVramUsage float64 `protobuf:"fixed64,27,opt,name=node_gpu_vram_usage,json=nodeGpuVramUsage,proto3" json:"node_gpu_vram_usage,omitempty"` // GPU VRAM usage of nodes.
- ContainerGpuVramUsage float64 `protobuf:"fixed64,28,opt,name=container_gpu_vram_usage,json=containerGpuVramUsage,proto3" json:"container_gpu_vram_usage,omitempty"` // GPU VRAM usage of containers.
- NodeGpuVramCapacity float64 `protobuf:"fixed64,29,opt,name=node_gpu_vram_capacity,json=nodeGpuVramCapacity,proto3" json:"node_gpu_vram_capacity,omitempty"` // GPU VRAM capacity of nodes.
- NodeGpuVramUtilization float64 `protobuf:"fixed64,30,opt,name=node_gpu_vram_utilization,json=nodeGpuVramUtilization,proto3" json:"node_gpu_vram_utilization,omitempty"` // GPU VRAM utilization of nodes.
- NormalizedNodeMemoryCapacity float64 `protobuf:"fixed64,31,opt,name=normalized_node_memory_capacity,json=normalizedNodeMemoryCapacity,proto3" json:"normalized_node_memory_capacity,omitempty"` // Total memory capacity of nodes, normalized to cover for missing bytes.
- NormalizedGpuVramCapacity float64 `protobuf:"fixed64,32,opt,name=normalized_gpu_vram_capacity,json=normalizedGpuVramCapacity,proto3" json:"normalized_gpu_vram_capacity,omitempty"` // Normalized GPU VRAM capacity of nodes.
+ DeviceUuid string `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+ DeviceId string `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ MigProfile string `protobuf:"bytes,3,opt,name=mig_profile,json=migProfile,proto3" json:"mig_profile,omitempty"`
+ MigInstanceId string `protobuf:"bytes,4,opt,name=mig_instance_id,json=migInstanceId,proto3" json:"mig_instance_id,omitempty"`
+ ModelName string `protobuf:"bytes,5,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
+ TensorActive float64 `protobuf:"fixed64,6,opt,name=tensor_active,json=tensorActive,proto3" json:"tensor_active,omitempty"`
+ DramActive float64 `protobuf:"fixed64,7,opt,name=dram_active,json=dramActive,proto3" json:"dram_active,omitempty"`
+ GraphicsEngineActive float64 `protobuf:"fixed64,8,opt,name=graphics_engine_active,json=graphicsEngineActive,proto3" json:"graphics_engine_active,omitempty"`
+ FramebufferUsed float64 `protobuf:"fixed64,9,opt,name=framebuffer_used,json=framebufferUsed,proto3" json:"framebuffer_used,omitempty"`
+ FramebufferTotal float64 `protobuf:"fixed64,10,opt,name=framebuffer_total,json=framebufferTotal,proto3" json:"framebuffer_total,omitempty"`
}
-func (x *ForecastResourceMetrics) Reset() {
- *x = ForecastResourceMetrics{}
+func (x *GPUMigInstance) Reset() {
+ *x = GPUMigInstance{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v1_common_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -2088,13 +2450,13 @@ func (x *ForecastResourceMetrics) Reset() {
}
}
-func (x *ForecastResourceMetrics) String() string {
+func (x *GPUMigInstance) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ForecastResourceMetrics) ProtoMessage() {}
+func (*GPUMigInstance) ProtoMessage() {}
-func (x *ForecastResourceMetrics) ProtoReflect() protoreflect.Message {
+func (x *GPUMigInstance) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_common_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -2106,275 +2468,436 @@ func (x *ForecastResourceMetrics) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ForecastResourceMetrics.ProtoReflect.Descriptor instead.
-func (*ForecastResourceMetrics) Descriptor() ([]byte, []int) {
+// Deprecated: Use GPUMigInstance.ProtoReflect.Descriptor instead.
+func (*GPUMigInstance) Descriptor() ([]byte, []int) {
return file_api_v1_common_proto_rawDescGZIP(), []int{7}
}
-func (x *ForecastResourceMetrics) GetTimestamp() *timestamppb.Timestamp {
+func (x *GPUMigInstance) GetDeviceUuid() string {
if x != nil {
- return x.Timestamp
+ return x.DeviceUuid
}
- return nil
+ return ""
}
-func (x *ForecastResourceMetrics) GetClusterId() string {
+func (x *GPUMigInstance) GetDeviceId() string {
if x != nil {
- return x.ClusterId
+ return x.DeviceId
}
return ""
}
-func (x *ForecastResourceMetrics) GetApplicationId() string {
+func (x *GPUMigInstance) GetMigProfile() string {
if x != nil {
- return x.ApplicationId
+ return x.MigProfile
}
return ""
}
-func (x *ForecastResourceMetrics) GetApplicationKind() string {
+func (x *GPUMigInstance) GetMigInstanceId() string {
if x != nil {
- return x.ApplicationKind
+ return x.MigInstanceId
}
return ""
}
-func (x *ForecastResourceMetrics) GetModel() string {
+func (x *GPUMigInstance) GetModelName() string {
if x != nil {
- return x.Model
+ return x.ModelName
}
return ""
}
-func (x *ForecastResourceMetrics) GetNodeCpuCapacity() float64 {
+func (x *GPUMigInstance) GetTensorActive() float64 {
if x != nil {
- return x.NodeCpuCapacity
+ return x.TensorActive
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeMemoryCapacity() float64 {
+func (x *GPUMigInstance) GetDramActive() float64 {
if x != nil {
- return x.NodeMemoryCapacity
+ return x.DramActive
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeCpuUsage() float64 {
+func (x *GPUMigInstance) GetGraphicsEngineActive() float64 {
if x != nil {
- return x.NodeCpuUsage
+ return x.GraphicsEngineActive
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeMemoryUsage() float64 {
+func (x *GPUMigInstance) GetFramebufferUsed() float64 {
if x != nil {
- return x.NodeMemoryUsage
+ return x.FramebufferUsed
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeCpuUtilization() float64 {
+func (x *GPUMigInstance) GetFramebufferTotal() float64 {
if x != nil {
- return x.NodeCpuUtilization
+ return x.FramebufferTotal
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeMemoryUtilization() float64 {
- if x != nil {
- return x.NodeMemoryUtilization
+// IndividualGPUMetric captures point-in-time metrics for a single GPU used
+// by a container.
+type IndividualGPUMetric struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
+ ModelName string `protobuf:"bytes,2,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
+ DeviceIndex string `protobuf:"bytes,3,opt,name=device_index,json=deviceIndex,proto3" json:"device_index,omitempty"`
+ MigProfile string `protobuf:"bytes,4,opt,name=mig_profile,json=migProfile,proto3" json:"mig_profile,omitempty"`
+ MigInstanceId string `protobuf:"bytes,5,opt,name=mig_instance_id,json=migInstanceId,proto3" json:"mig_instance_id,omitempty"`
+ Utilization float64 `protobuf:"fixed64,6,opt,name=utilization,proto3" json:"utilization,omitempty"`
+ MemoryUsed float64 `protobuf:"fixed64,7,opt,name=memory_used,json=memoryUsed,proto3" json:"memory_used,omitempty"`
+ MemoryFree float64 `protobuf:"fixed64,8,opt,name=memory_free,json=memoryFree,proto3" json:"memory_free,omitempty"`
+ TotalMemory float64 `protobuf:"fixed64,9,opt,name=total_memory,json=totalMemory,proto3" json:"total_memory,omitempty"`
+ MemoryUtilizationPercentage float64 `protobuf:"fixed64,10,opt,name=memory_utilization_percentage,json=memoryUtilizationPercentage,proto3" json:"memory_utilization_percentage,omitempty"`
+ PowerUsage float64 `protobuf:"fixed64,11,opt,name=power_usage,json=powerUsage,proto3" json:"power_usage,omitempty"`
+ Temperature float64 `protobuf:"fixed64,12,opt,name=temperature,proto3" json:"temperature,omitempty"`
+ SmClock float64 `protobuf:"fixed64,13,opt,name=sm_clock,json=smClock,proto3" json:"sm_clock,omitempty"`
+ MemClock float64 `protobuf:"fixed64,14,opt,name=mem_clock,json=memClock,proto3" json:"mem_clock,omitempty"`
+}
+
+func (x *IndividualGPUMetric) Reset() {
+ *x = IndividualGPUMetric{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *ForecastResourceMetrics) GetContainerCpuUsage() float64 {
+func (x *IndividualGPUMetric) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IndividualGPUMetric) ProtoMessage() {}
+
+func (x *IndividualGPUMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IndividualGPUMetric.ProtoReflect.Descriptor instead.
+func (*IndividualGPUMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *IndividualGPUMetric) GetUuid() string {
if x != nil {
- return x.ContainerCpuUsage
+ return x.Uuid
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetContainerMemoryUsage() float64 {
+func (x *IndividualGPUMetric) GetModelName() string {
if x != nil {
- return x.ContainerMemoryUsage
+ return x.ModelName
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetContainerCpuUtilization() float64 {
+func (x *IndividualGPUMetric) GetDeviceIndex() string {
if x != nil {
- return x.ContainerCpuUtilization
+ return x.DeviceIndex
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetContainerMemoryUtilization() float64 {
+func (x *IndividualGPUMetric) GetMigProfile() string {
if x != nil {
- return x.ContainerMemoryUtilization
+ return x.MigProfile
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetContainerCpuRequested() float64 {
+func (x *IndividualGPUMetric) GetMigInstanceId() string {
if x != nil {
- return x.ContainerCpuRequested
+ return x.MigInstanceId
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetContainerMemoryRequested() float64 {
+func (x *IndividualGPUMetric) GetUtilization() float64 {
if x != nil {
- return x.ContainerMemoryRequested
+ return x.Utilization
}
return 0
}
-func (x *ForecastResourceMetrics) GetContainerCpuLimits() float64 {
+func (x *IndividualGPUMetric) GetMemoryUsed() float64 {
if x != nil {
- return x.ContainerCpuLimits
+ return x.MemoryUsed
}
return 0
}
-func (x *ForecastResourceMetrics) GetContainerMemoryLimits() float64 {
+func (x *IndividualGPUMetric) GetMemoryFree() float64 {
if x != nil {
- return x.ContainerMemoryLimits
+ return x.MemoryFree
}
return 0
}
-func (x *ForecastResourceMetrics) GetContainerGpuUsage() float64 {
+func (x *IndividualGPUMetric) GetTotalMemory() float64 {
if x != nil {
- return x.ContainerGpuUsage
+ return x.TotalMemory
}
return 0
}
-func (x *ForecastResourceMetrics) GetContainerGpuRequested() float64 {
+func (x *IndividualGPUMetric) GetMemoryUtilizationPercentage() float64 {
if x != nil {
- return x.ContainerGpuRequested
+ return x.MemoryUtilizationPercentage
}
return 0
}
-func (x *ForecastResourceMetrics) GetContainerGpuLimits() float64 {
+func (x *IndividualGPUMetric) GetPowerUsage() float64 {
if x != nil {
- return x.ContainerGpuLimits
+ return x.PowerUsage
}
return 0
}
-func (x *ForecastResourceMetrics) GetContainerGpuUtilization() float64 {
+func (x *IndividualGPUMetric) GetTemperature() float64 {
if x != nil {
- return x.ContainerGpuUtilization
+ return x.Temperature
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeGpuCapacity() float64 {
+func (x *IndividualGPUMetric) GetSmClock() float64 {
if x != nil {
- return x.NodeGpuCapacity
+ return x.SmClock
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeGpuUsage() float64 {
+func (x *IndividualGPUMetric) GetMemClock() float64 {
if x != nil {
- return x.NodeGpuUsage
+ return x.MemClock
}
return 0
}
-func (x *ForecastResourceMetrics) GetNodeGpuUtilization() float64 {
+// ContainerIndividualGPUMetrics is the most recent per-GPU breakdown for a
+// single container.
+type ContainerIndividualGPUMetrics struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
+ Instances []*IndividualGPUMetric `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+ CollectedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=collected_at,json=collectedAt,proto3,oneof" json:"collected_at,omitempty"`
+}
+
+func (x *ContainerIndividualGPUMetrics) Reset() {
+ *x = ContainerIndividualGPUMetrics{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ContainerIndividualGPUMetrics) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContainerIndividualGPUMetrics) ProtoMessage() {}
+
+func (x *ContainerIndividualGPUMetrics) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContainerIndividualGPUMetrics.ProtoReflect.Descriptor instead.
+func (*ContainerIndividualGPUMetrics) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *ContainerIndividualGPUMetrics) GetContainerName() string {
if x != nil {
- return x.NodeGpuUtilization
+ return x.ContainerName
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetNodeGpuVramUsage() float64 {
+func (x *ContainerIndividualGPUMetrics) GetInstances() []*IndividualGPUMetric {
if x != nil {
- return x.NodeGpuVramUsage
+ return x.Instances
}
- return 0
+ return nil
}
-func (x *ForecastResourceMetrics) GetContainerGpuVramUsage() float64 {
+func (x *ContainerIndividualGPUMetrics) GetCollectedAt() *timestamppb.Timestamp {
if x != nil {
- return x.ContainerGpuVramUsage
+ return x.CollectedAt
}
- return 0
+ return nil
}
-func (x *ForecastResourceMetrics) GetNodeGpuVramCapacity() float64 {
+// RuntimeProcess is one detected language runtime in a container.
+type RuntimeProcess struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Runtime name: "nodejs" | "dotnet" | "go" | "rust" |
+ // "graalvm-native-image" | "python" | "ruby" | "deno" | "bun".
+ Runtime string `protobuf:"bytes,1,opt,name=runtime,proto3" json:"runtime,omitempty"`
+ // Best-effort version; may be empty (stripped/custom binaries) — the
+ // detection itself is still meaningful.
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ // How the version was resolved: "env" | "maps" | "buildinfo" | "elf-comment"
+ // | "binary-scan" | "exe-path" | "comm".
+ VersionSource string `protobuf:"bytes,3,opt,name=version_source,json=versionSource,proto3" json:"version_source,omitempty"`
+ // Raw process cmdline (useful for future flag heuristics, e.g.
+ // --max-old-space-size).
+ RawCmdline string `protobuf:"bytes,4,opt,name=raw_cmdline,json=rawCmdline,proto3" json:"raw_cmdline,omitempty"`
+}
+
+func (x *RuntimeProcess) Reset() {
+ *x = RuntimeProcess{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RuntimeProcess) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RuntimeProcess) ProtoMessage() {}
+
+func (x *RuntimeProcess) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RuntimeProcess.ProtoReflect.Descriptor instead.
+func (*RuntimeProcess) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *RuntimeProcess) GetRuntime() string {
if x != nil {
- return x.NodeGpuVramCapacity
+ return x.Runtime
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetNodeGpuVramUtilization() float64 {
+func (x *RuntimeProcess) GetVersion() string {
if x != nil {
- return x.NodeGpuVramUtilization
+ return x.Version
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetNormalizedNodeMemoryCapacity() float64 {
+func (x *RuntimeProcess) GetVersionSource() string {
if x != nil {
- return x.NormalizedNodeMemoryCapacity
+ return x.VersionSource
}
- return 0
+ return ""
}
-func (x *ForecastResourceMetrics) GetNormalizedGpuVramCapacity() float64 {
+func (x *RuntimeProcess) GetRawCmdline() string {
if x != nil {
- return x.NormalizedGpuVramCapacity
+ return x.RawCmdline
}
- return 0
+ return ""
}
-// ResourceSummary provides aggregated resource counts and pod status counts for a cluster or workload.
-type ResourceSummary struct {
+// ForecastResourceMetrics encapsulates Forecasted CPU and memory capacity, usage, and utilization for nodes and containers.
+type ForecastResourceMetrics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- DeploymentCount int32 `protobuf:"varint,1,opt,name=deployment_count,json=deploymentCount,proto3" json:"deployment_count,omitempty"` // Number of Deployments.
- StatefulSetCount int32 `protobuf:"varint,2,opt,name=stateful_set_count,json=statefulSetCount,proto3" json:"stateful_set_count,omitempty"` // Number of StatefulSets.
- DaemonSetCount int32 `protobuf:"varint,3,opt,name=daemon_set_count,json=daemonSetCount,proto3" json:"daemon_set_count,omitempty"` // Number of DaemonSets.
- JobCount int32 `protobuf:"varint,4,opt,name=job_count,json=jobCount,proto3" json:"job_count,omitempty"` // Number of Jobs.
- CronJobCount int32 `protobuf:"varint,5,opt,name=cron_job_count,json=cronJobCount,proto3" json:"cron_job_count,omitempty"` // Number of CronJobs.
- ReplicaSetCount int32 `protobuf:"varint,6,opt,name=replica_set_count,json=replicaSetCount,proto3" json:"replica_set_count,omitempty"` // Number of ReplicaSets.
- PodCount int32 `protobuf:"varint,7,opt,name=pod_count,json=podCount,proto3" json:"pod_count,omitempty"` // Number of Pods.
- ContainerCount int32 `protobuf:"varint,8,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` // Number of Containers.
- PendingPods int32 `protobuf:"varint,9,opt,name=pending_pods,json=pendingPods,proto3" json:"pending_pods,omitempty"` // Number of Pods in Pending state.
- RunningPods int32 `protobuf:"varint,10,opt,name=running_pods,json=runningPods,proto3" json:"running_pods,omitempty"` // Number of Pods in Running state.
- SucceededPods int32 `protobuf:"varint,11,opt,name=succeeded_pods,json=succeededPods,proto3" json:"succeeded_pods,omitempty"` // Number of Pods in Succeeded state.
- FailedPods int32 `protobuf:"varint,12,opt,name=failed_pods,json=failedPods,proto3" json:"failed_pods,omitempty"` // Number of Pods in Failed state.
- UnknownPods int32 `protobuf:"varint,13,opt,name=unknown_pods,json=unknownPods,proto3" json:"unknown_pods,omitempty"` // Number of Pods in Unknown state.
- UnderProvisionedCount int32 `protobuf:"varint,14,opt,name=under_provisioned_count,json=underProvisionedCount,proto3" json:"under_provisioned_count,omitempty"` // Number of resources under-provisioned.
- OverProvisionedCount int32 `protobuf:"varint,15,opt,name=over_provisioned_count,json=overProvisionedCount,proto3" json:"over_provisioned_count,omitempty"` // Number of resources over-provisioned.
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Forecast timestamp.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Cluster id of the container.
+ ApplicationId string `protobuf:"bytes,3,opt,name=application_id,json=applicationId,proto3" json:"application_id,omitempty"` // Application id of the container.
+ ApplicationKind string `protobuf:"bytes,4,opt,name=application_kind,json=applicationKind,proto3" json:"application_kind,omitempty"` // Application kind of the container.
+ Model string `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"` // Model used for the forecast
+ NodeCpuCapacity float64 `protobuf:"fixed64,6,opt,name=node_cpu_capacity,json=nodeCpuCapacity,proto3" json:"node_cpu_capacity,omitempty"` // Total CPU capacity of nodes.
+ NodeMemoryCapacity float64 `protobuf:"fixed64,7,opt,name=node_memory_capacity,json=nodeMemoryCapacity,proto3" json:"node_memory_capacity,omitempty"` // Total memory capacity of nodes.
+ NodeCpuUsage float64 `protobuf:"fixed64,8,opt,name=node_cpu_usage,json=nodeCpuUsage,proto3" json:"node_cpu_usage,omitempty"` // Current CPU usage of nodes.
+ NodeMemoryUsage float64 `protobuf:"fixed64,9,opt,name=node_memory_usage,json=nodeMemoryUsage,proto3" json:"node_memory_usage,omitempty"` // Current memory usage of nodes.
+ NodeCpuUtilization float64 `protobuf:"fixed64,10,opt,name=node_cpu_utilization,json=nodeCpuUtilization,proto3" json:"node_cpu_utilization,omitempty"` // CPU utilization percentage of nodes.
+ NodeMemoryUtilization float64 `protobuf:"fixed64,11,opt,name=node_memory_utilization,json=nodeMemoryUtilization,proto3" json:"node_memory_utilization,omitempty"` // Memory utilization percentage of nodes.
+ ContainerCpuUsage float64 `protobuf:"fixed64,12,opt,name=container_cpu_usage,json=containerCpuUsage,proto3" json:"container_cpu_usage,omitempty"` // Current CPU usage of containers.
+ ContainerMemoryUsage float64 `protobuf:"fixed64,13,opt,name=container_memory_usage,json=containerMemoryUsage,proto3" json:"container_memory_usage,omitempty"` // Current memory usage of containers.
+ ContainerCpuUtilization float64 `protobuf:"fixed64,14,opt,name=container_cpu_utilization,json=containerCpuUtilization,proto3" json:"container_cpu_utilization,omitempty"` // CPU utilization percentage of containers.
+ ContainerMemoryUtilization float64 `protobuf:"fixed64,15,opt,name=container_memory_utilization,json=containerMemoryUtilization,proto3" json:"container_memory_utilization,omitempty"` // Memory utilization percentage of containers.
+ ContainerCpuRequested float64 `protobuf:"fixed64,16,opt,name=container_cpu_requested,json=containerCpuRequested,proto3" json:"container_cpu_requested,omitempty"` // CPU requested by containers.
+ ContainerMemoryRequested float64 `protobuf:"fixed64,17,opt,name=container_memory_requested,json=containerMemoryRequested,proto3" json:"container_memory_requested,omitempty"` // Memory requested by containers.
+ ContainerCpuLimits float64 `protobuf:"fixed64,18,opt,name=container_cpu_limits,json=containerCpuLimits,proto3" json:"container_cpu_limits,omitempty"` // CPU limits of containers.
+ ContainerMemoryLimits float64 `protobuf:"fixed64,19,opt,name=container_memory_limits,json=containerMemoryLimits,proto3" json:"container_memory_limits,omitempty"` // Memory limits of containers.
+ ContainerGpuUsage float64 `protobuf:"fixed64,20,opt,name=container_gpu_usage,json=containerGpuUsage,proto3" json:"container_gpu_usage,omitempty"` // GPU usage of containers.
+ ContainerGpuRequested float64 `protobuf:"fixed64,21,opt,name=container_gpu_requested,json=containerGpuRequested,proto3" json:"container_gpu_requested,omitempty"` // GPU requests of containers.
+ ContainerGpuLimits float64 `protobuf:"fixed64,22,opt,name=container_gpu_limits,json=containerGpuLimits,proto3" json:"container_gpu_limits,omitempty"` // GPU limits of containers.
+ ContainerGpuUtilization float64 `protobuf:"fixed64,23,opt,name=container_gpu_utilization,json=containerGpuUtilization,proto3" json:"container_gpu_utilization,omitempty"` // GPU utilization of containers.
+ NodeGpuCapacity float64 `protobuf:"fixed64,24,opt,name=node_gpu_capacity,json=nodeGpuCapacity,proto3" json:"node_gpu_capacity,omitempty"` // GPU capcity of nodes.
+ NodeGpuUsage float64 `protobuf:"fixed64,25,opt,name=node_gpu_usage,json=nodeGpuUsage,proto3" json:"node_gpu_usage,omitempty"` // GPU usage of nodes.
+ NodeGpuUtilization float64 `protobuf:"fixed64,26,opt,name=node_gpu_utilization,json=nodeGpuUtilization,proto3" json:"node_gpu_utilization,omitempty"` // GPU utilization of nodes.
+ NodeGpuVramUsage float64 `protobuf:"fixed64,27,opt,name=node_gpu_vram_usage,json=nodeGpuVramUsage,proto3" json:"node_gpu_vram_usage,omitempty"` // GPU VRAM usage of nodes.
+ ContainerGpuVramUsage float64 `protobuf:"fixed64,28,opt,name=container_gpu_vram_usage,json=containerGpuVramUsage,proto3" json:"container_gpu_vram_usage,omitempty"` // GPU VRAM usage of containers.
+ NodeGpuVramCapacity float64 `protobuf:"fixed64,29,opt,name=node_gpu_vram_capacity,json=nodeGpuVramCapacity,proto3" json:"node_gpu_vram_capacity,omitempty"` // GPU VRAM capacity of nodes.
+ NodeGpuVramUtilization float64 `protobuf:"fixed64,30,opt,name=node_gpu_vram_utilization,json=nodeGpuVramUtilization,proto3" json:"node_gpu_vram_utilization,omitempty"` // GPU VRAM utilization of nodes.
+ NormalizedNodeMemoryCapacity float64 `protobuf:"fixed64,31,opt,name=normalized_node_memory_capacity,json=normalizedNodeMemoryCapacity,proto3" json:"normalized_node_memory_capacity,omitempty"` // Total memory capacity of nodes, normalized to cover for missing bytes.
+ NormalizedGpuVramCapacity float64 `protobuf:"fixed64,32,opt,name=normalized_gpu_vram_capacity,json=normalizedGpuVramCapacity,proto3" json:"normalized_gpu_vram_capacity,omitempty"` // Normalized GPU VRAM capacity of nodes.
}
-func (x *ResourceSummary) Reset() {
- *x = ResourceSummary{}
+func (x *ForecastResourceMetrics) Reset() {
+ *x = ForecastResourceMetrics{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[8]
+ mi := &file_api_v1_common_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceSummary) String() string {
+func (x *ForecastResourceMetrics) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceSummary) ProtoMessage() {}
+func (*ForecastResourceMetrics) ProtoMessage() {}
-func (x *ResourceSummary) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[8]
+func (x *ForecastResourceMetrics) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2385,400 +2908,423 @@ func (x *ResourceSummary) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceSummary.ProtoReflect.Descriptor instead.
-func (*ResourceSummary) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{8}
+// Deprecated: Use ForecastResourceMetrics.ProtoReflect.Descriptor instead.
+func (*ForecastResourceMetrics) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{11}
}
-func (x *ResourceSummary) GetDeploymentCount() int32 {
+func (x *ForecastResourceMetrics) GetTimestamp() *timestamppb.Timestamp {
if x != nil {
- return x.DeploymentCount
+ return x.Timestamp
}
- return 0
+ return nil
}
-func (x *ResourceSummary) GetStatefulSetCount() int32 {
+func (x *ForecastResourceMetrics) GetClusterId() string {
if x != nil {
- return x.StatefulSetCount
+ return x.ClusterId
}
- return 0
+ return ""
}
-func (x *ResourceSummary) GetDaemonSetCount() int32 {
+func (x *ForecastResourceMetrics) GetApplicationId() string {
if x != nil {
- return x.DaemonSetCount
+ return x.ApplicationId
}
- return 0
+ return ""
}
-func (x *ResourceSummary) GetJobCount() int32 {
+func (x *ForecastResourceMetrics) GetApplicationKind() string {
if x != nil {
- return x.JobCount
+ return x.ApplicationKind
}
- return 0
+ return ""
}
-func (x *ResourceSummary) GetCronJobCount() int32 {
+func (x *ForecastResourceMetrics) GetModel() string {
if x != nil {
- return x.CronJobCount
+ return x.Model
+ }
+ return ""
+}
+
+func (x *ForecastResourceMetrics) GetNodeCpuCapacity() float64 {
+ if x != nil {
+ return x.NodeCpuCapacity
}
return 0
}
-func (x *ResourceSummary) GetReplicaSetCount() int32 {
+func (x *ForecastResourceMetrics) GetNodeMemoryCapacity() float64 {
if x != nil {
- return x.ReplicaSetCount
+ return x.NodeMemoryCapacity
}
return 0
}
-func (x *ResourceSummary) GetPodCount() int32 {
+func (x *ForecastResourceMetrics) GetNodeCpuUsage() float64 {
if x != nil {
- return x.PodCount
+ return x.NodeCpuUsage
}
return 0
}
-func (x *ResourceSummary) GetContainerCount() int32 {
+func (x *ForecastResourceMetrics) GetNodeMemoryUsage() float64 {
if x != nil {
- return x.ContainerCount
+ return x.NodeMemoryUsage
}
return 0
}
-func (x *ResourceSummary) GetPendingPods() int32 {
+func (x *ForecastResourceMetrics) GetNodeCpuUtilization() float64 {
if x != nil {
- return x.PendingPods
+ return x.NodeCpuUtilization
}
return 0
}
-func (x *ResourceSummary) GetRunningPods() int32 {
+func (x *ForecastResourceMetrics) GetNodeMemoryUtilization() float64 {
if x != nil {
- return x.RunningPods
+ return x.NodeMemoryUtilization
}
return 0
}
-func (x *ResourceSummary) GetSucceededPods() int32 {
+func (x *ForecastResourceMetrics) GetContainerCpuUsage() float64 {
if x != nil {
- return x.SucceededPods
+ return x.ContainerCpuUsage
}
return 0
}
-func (x *ResourceSummary) GetFailedPods() int32 {
+func (x *ForecastResourceMetrics) GetContainerMemoryUsage() float64 {
if x != nil {
- return x.FailedPods
+ return x.ContainerMemoryUsage
}
return 0
}
-func (x *ResourceSummary) GetUnknownPods() int32 {
+func (x *ForecastResourceMetrics) GetContainerCpuUtilization() float64 {
if x != nil {
- return x.UnknownPods
+ return x.ContainerCpuUtilization
}
return 0
}
-func (x *ResourceSummary) GetUnderProvisionedCount() int32 {
+func (x *ForecastResourceMetrics) GetContainerMemoryUtilization() float64 {
if x != nil {
- return x.UnderProvisionedCount
+ return x.ContainerMemoryUtilization
}
return 0
}
-func (x *ResourceSummary) GetOverProvisionedCount() int32 {
+func (x *ForecastResourceMetrics) GetContainerCpuRequested() float64 {
if x != nil {
- return x.OverProvisionedCount
+ return x.ContainerCpuRequested
}
return 0
}
-// WorkloadItem represents a Kubernetes resource and its hierarchical children.
-type WorkloadItem struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Kind of the resource (e.g., Pod, Container, Deployment).
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Name of the resource.
- Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"` // Unique identifier for the resource.
- Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` // Namespace of the resource.
- OwnerKind string `protobuf:"bytes,5,opt,name=owner_kind,json=ownerKind,proto3" json:"owner_kind,omitempty"` // Kind of the owning resource, if any.
- OwnerUid string `protobuf:"bytes,6,opt,name=owner_uid,json=ownerUid,proto3" json:"owner_uid,omitempty"` // UID of the owning resource, if any.
- Children []*WorkloadItem `protobuf:"bytes,7,rep,name=children,proto3" json:"children,omitempty"` // Child resources of this workload item.
- Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource labels.
- Annotations map[string]string `protobuf:"bytes,9,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource annotations.
- CreationTimestamp int64 `protobuf:"varint,10,opt,name=creation_timestamp,json=creationTimestamp,proto3" json:"creation_timestamp,omitempty"` // Creation time as a Unix timestamp.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,11,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource metrics for the workload item.
- CostInfo *CostInfo `protobuf:"bytes,12,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost information for the workload item.
- CostDataPoints []*CostDataPoint `protobuf:"bytes,13,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the workload.
- ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,14,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the workload.
- ImpactScore float64 `protobuf:"fixed64,15,opt,name=impact_score,json=impactScore,proto3" json:"impact_score,omitempty"` // Optimization impact score for workload
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Creation time of the workload item.
- DeletedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=deleted_at,json=deletedAt,proto3,oneof" json:"deleted_at,omitempty"` // Last update time of the workload item.
- ClusterId string `protobuf:"bytes,18,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Cluster id of the workload
- Id string `protobuf:"bytes,19,opt,name=id,proto3" json:"id,omitempty"` // DevZero unique identifier
- // Resource-specific details for different K8s resource types
- IsKarpenterResource bool `protobuf:"varint,20,opt,name=is_karpenter_resource,json=isKarpenterResource,proto3" json:"is_karpenter_resource,omitempty"`
- ResourceDetails *ResourceDetails `protobuf:"bytes,30,opt,name=resource_details,json=resourceDetails,proto3,oneof" json:"resource_details,omitempty"`
- PolicyIds []string `protobuf:"bytes,56,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // List of policy IDs attached to this workload
- ReplicasFromStatus int32 `protobuf:"varint,76,opt,name=replicas_from_status,json=replicasFromStatus,proto3" json:"replicas_from_status,omitempty"`
- ReplicasFromSpec int32 `protobuf:"varint,77,opt,name=replicas_from_spec,json=replicasFromSpec,proto3" json:"replicas_from_spec,omitempty"`
- ReplicasFromMetrics int32 `protobuf:"varint,78,opt,name=replicas_from_metrics,json=replicasFromMetrics,proto3" json:"replicas_from_metrics,omitempty"`
- RootOwnerKind string `protobuf:"bytes,91,opt,name=root_owner_kind,json=rootOwnerKind,proto3" json:"root_owner_kind,omitempty"` // Kind of the root owning resource, if any.
- RootOwnerUid string `protobuf:"bytes,92,opt,name=root_owner_uid,json=rootOwnerUid,proto3" json:"root_owner_uid,omitempty"` // UID of the root owning resource, if any.
-}
-
-func (x *WorkloadItem) Reset() {
- *x = WorkloadItem{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *ForecastResourceMetrics) GetContainerMemoryRequested() float64 {
+ if x != nil {
+ return x.ContainerMemoryRequested
}
+ return 0
}
-func (x *WorkloadItem) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *ForecastResourceMetrics) GetContainerCpuLimits() float64 {
+ if x != nil {
+ return x.ContainerCpuLimits
+ }
+ return 0
}
-func (*WorkloadItem) ProtoMessage() {}
-
-func (x *WorkloadItem) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *ForecastResourceMetrics) GetContainerMemoryLimits() float64 {
+ if x != nil {
+ return x.ContainerMemoryLimits
}
- return mi.MessageOf(x)
+ return 0
}
-// Deprecated: Use WorkloadItem.ProtoReflect.Descriptor instead.
-func (*WorkloadItem) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{9}
+func (x *ForecastResourceMetrics) GetContainerGpuUsage() float64 {
+ if x != nil {
+ return x.ContainerGpuUsage
+ }
+ return 0
}
-func (x *WorkloadItem) GetKind() string {
+func (x *ForecastResourceMetrics) GetContainerGpuRequested() float64 {
if x != nil {
- return x.Kind
+ return x.ContainerGpuRequested
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetName() string {
+func (x *ForecastResourceMetrics) GetContainerGpuLimits() float64 {
if x != nil {
- return x.Name
+ return x.ContainerGpuLimits
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetUid() string {
+func (x *ForecastResourceMetrics) GetContainerGpuUtilization() float64 {
if x != nil {
- return x.Uid
+ return x.ContainerGpuUtilization
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetNamespace() string {
+func (x *ForecastResourceMetrics) GetNodeGpuCapacity() float64 {
if x != nil {
- return x.Namespace
+ return x.NodeGpuCapacity
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetOwnerKind() string {
+func (x *ForecastResourceMetrics) GetNodeGpuUsage() float64 {
if x != nil {
- return x.OwnerKind
+ return x.NodeGpuUsage
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetOwnerUid() string {
+func (x *ForecastResourceMetrics) GetNodeGpuUtilization() float64 {
if x != nil {
- return x.OwnerUid
+ return x.NodeGpuUtilization
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetChildren() []*WorkloadItem {
+func (x *ForecastResourceMetrics) GetNodeGpuVramUsage() float64 {
if x != nil {
- return x.Children
+ return x.NodeGpuVramUsage
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetLabels() map[string]string {
+func (x *ForecastResourceMetrics) GetContainerGpuVramUsage() float64 {
if x != nil {
- return x.Labels
+ return x.ContainerGpuVramUsage
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetAnnotations() map[string]string {
+func (x *ForecastResourceMetrics) GetNodeGpuVramCapacity() float64 {
if x != nil {
- return x.Annotations
+ return x.NodeGpuVramCapacity
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetCreationTimestamp() int64 {
+func (x *ForecastResourceMetrics) GetNodeGpuVramUtilization() float64 {
if x != nil {
- return x.CreationTimestamp
+ return x.NodeGpuVramUtilization
}
return 0
}
-func (x *WorkloadItem) GetResourceMetrics() *ResourceMetrics {
+func (x *ForecastResourceMetrics) GetNormalizedNodeMemoryCapacity() float64 {
if x != nil {
- return x.ResourceMetrics
+ return x.NormalizedNodeMemoryCapacity
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetCostInfo() *CostInfo {
+func (x *ForecastResourceMetrics) GetNormalizedGpuVramCapacity() float64 {
if x != nil {
- return x.CostInfo
+ return x.NormalizedGpuVramCapacity
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetCostDataPoints() []*CostDataPoint {
- if x != nil {
- return x.CostDataPoints
+// ResourceSummary provides aggregated resource counts and pod status counts for a cluster or workload.
+type ResourceSummary struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DeploymentCount int32 `protobuf:"varint,1,opt,name=deployment_count,json=deploymentCount,proto3" json:"deployment_count,omitempty"` // Number of Deployments.
+ StatefulSetCount int32 `protobuf:"varint,2,opt,name=stateful_set_count,json=statefulSetCount,proto3" json:"stateful_set_count,omitempty"` // Number of StatefulSets.
+ DaemonSetCount int32 `protobuf:"varint,3,opt,name=daemon_set_count,json=daemonSetCount,proto3" json:"daemon_set_count,omitempty"` // Number of DaemonSets.
+ JobCount int32 `protobuf:"varint,4,opt,name=job_count,json=jobCount,proto3" json:"job_count,omitempty"` // Number of Jobs.
+ CronJobCount int32 `protobuf:"varint,5,opt,name=cron_job_count,json=cronJobCount,proto3" json:"cron_job_count,omitempty"` // Number of CronJobs.
+ ReplicaSetCount int32 `protobuf:"varint,6,opt,name=replica_set_count,json=replicaSetCount,proto3" json:"replica_set_count,omitempty"` // Number of ReplicaSets.
+ PodCount int32 `protobuf:"varint,7,opt,name=pod_count,json=podCount,proto3" json:"pod_count,omitempty"` // Number of Pods.
+ ContainerCount int32 `protobuf:"varint,8,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` // Number of Containers.
+ PendingPods int32 `protobuf:"varint,9,opt,name=pending_pods,json=pendingPods,proto3" json:"pending_pods,omitempty"` // Number of Pods in Pending state.
+ RunningPods int32 `protobuf:"varint,10,opt,name=running_pods,json=runningPods,proto3" json:"running_pods,omitempty"` // Number of Pods in Running state.
+ SucceededPods int32 `protobuf:"varint,11,opt,name=succeeded_pods,json=succeededPods,proto3" json:"succeeded_pods,omitempty"` // Number of Pods in Succeeded state.
+ FailedPods int32 `protobuf:"varint,12,opt,name=failed_pods,json=failedPods,proto3" json:"failed_pods,omitempty"` // Number of Pods in Failed state.
+ UnknownPods int32 `protobuf:"varint,13,opt,name=unknown_pods,json=unknownPods,proto3" json:"unknown_pods,omitempty"` // Number of Pods in Unknown state.
+ UnderProvisionedCount int32 `protobuf:"varint,14,opt,name=under_provisioned_count,json=underProvisionedCount,proto3" json:"under_provisioned_count,omitempty"` // Number of resources under-provisioned.
+ OverProvisionedCount int32 `protobuf:"varint,15,opt,name=over_provisioned_count,json=overProvisionedCount,proto3" json:"over_provisioned_count,omitempty"` // Number of resources over-provisioned.
+}
+
+func (x *ResourceSummary) Reset() {
+ *x = ResourceSummary{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *WorkloadItem) GetResourceDataPoints() []*ResourceDataPoint {
- if x != nil {
- return x.ResourceDataPoints
+func (x *ResourceSummary) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResourceSummary) ProtoMessage() {}
+
+func (x *ResourceSummary) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *WorkloadItem) GetImpactScore() float64 {
+// Deprecated: Use ResourceSummary.ProtoReflect.Descriptor instead.
+func (*ResourceSummary) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *ResourceSummary) GetDeploymentCount() int32 {
if x != nil {
- return x.ImpactScore
+ return x.DeploymentCount
}
return 0
}
-func (x *WorkloadItem) GetCreatedAt() *timestamppb.Timestamp {
+func (x *ResourceSummary) GetStatefulSetCount() int32 {
if x != nil {
- return x.CreatedAt
+ return x.StatefulSetCount
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetDeletedAt() *timestamppb.Timestamp {
+func (x *ResourceSummary) GetDaemonSetCount() int32 {
if x != nil {
- return x.DeletedAt
+ return x.DaemonSetCount
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetClusterId() string {
+func (x *ResourceSummary) GetJobCount() int32 {
if x != nil {
- return x.ClusterId
+ return x.JobCount
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetId() string {
+func (x *ResourceSummary) GetCronJobCount() int32 {
if x != nil {
- return x.Id
+ return x.CronJobCount
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetIsKarpenterResource() bool {
+func (x *ResourceSummary) GetReplicaSetCount() int32 {
if x != nil {
- return x.IsKarpenterResource
+ return x.ReplicaSetCount
}
- return false
+ return 0
}
-func (x *WorkloadItem) GetResourceDetails() *ResourceDetails {
+func (x *ResourceSummary) GetPodCount() int32 {
if x != nil {
- return x.ResourceDetails
+ return x.PodCount
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetPolicyIds() []string {
+func (x *ResourceSummary) GetContainerCount() int32 {
if x != nil {
- return x.PolicyIds
+ return x.ContainerCount
}
- return nil
+ return 0
}
-func (x *WorkloadItem) GetReplicasFromStatus() int32 {
+func (x *ResourceSummary) GetPendingPods() int32 {
if x != nil {
- return x.ReplicasFromStatus
+ return x.PendingPods
}
return 0
}
-func (x *WorkloadItem) GetReplicasFromSpec() int32 {
+func (x *ResourceSummary) GetRunningPods() int32 {
if x != nil {
- return x.ReplicasFromSpec
+ return x.RunningPods
}
return 0
}
-func (x *WorkloadItem) GetReplicasFromMetrics() int32 {
+func (x *ResourceSummary) GetSucceededPods() int32 {
if x != nil {
- return x.ReplicasFromMetrics
+ return x.SucceededPods
}
return 0
}
-func (x *WorkloadItem) GetRootOwnerKind() string {
+func (x *ResourceSummary) GetFailedPods() int32 {
if x != nil {
- return x.RootOwnerKind
+ return x.FailedPods
}
- return ""
+ return 0
}
-func (x *WorkloadItem) GetRootOwnerUid() string {
+func (x *ResourceSummary) GetUnknownPods() int32 {
if x != nil {
- return x.RootOwnerUid
+ return x.UnknownPods
}
- return ""
+ return 0
}
-// ContainerRuntimeInfo containes information about container runtime info
-type ContainerRuntimeInfo struct {
+func (x *ResourceSummary) GetUnderProvisionedCount() int32 {
+ if x != nil {
+ return x.UnderProvisionedCount
+ }
+ return 0
+}
+
+func (x *ResourceSummary) GetOverProvisionedCount() int32 {
+ if x != nil {
+ return x.OverProvisionedCount
+ }
+ return 0
+}
+
+// WorkloadItem represents a Kubernetes resource and its hierarchical children.
+// LegacyPolicyRef identifies a legacy WorkloadPolicy whose target matches a workload.
+type LegacyPolicyRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RuntimeName string `protobuf:"bytes,1,opt,name=runtime_name,json=runtimeName,proto3" json:"runtime_name,omitempty"`
- Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ PolicyName string `protobuf:"bytes,2,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"`
}
-func (x *ContainerRuntimeInfo) Reset() {
- *x = ContainerRuntimeInfo{}
+func (x *LegacyPolicyRef) Reset() {
+ *x = LegacyPolicyRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[10]
+ mi := &file_api_v1_common_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ContainerRuntimeInfo) String() string {
+func (x *LegacyPolicyRef) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ContainerRuntimeInfo) ProtoMessage() {}
+func (*LegacyPolicyRef) ProtoMessage() {}
-func (x *ContainerRuntimeInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[10]
+func (x *LegacyPolicyRef) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2789,56 +3335,61 @@ func (x *ContainerRuntimeInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ContainerRuntimeInfo.ProtoReflect.Descriptor instead.
-func (*ContainerRuntimeInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{10}
+// Deprecated: Use LegacyPolicyRef.ProtoReflect.Descriptor instead.
+func (*LegacyPolicyRef) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{13}
}
-func (x *ContainerRuntimeInfo) GetRuntimeName() string {
+func (x *LegacyPolicyRef) GetPolicyId() string {
if x != nil {
- return x.RuntimeName
+ return x.PolicyId
}
return ""
}
-func (x *ContainerRuntimeInfo) GetVersion() string {
+func (x *LegacyPolicyRef) GetPolicyName() string {
if x != nil {
- return x.Version
+ return x.PolicyName
}
return ""
}
-// NodeInfo contains information about nodes in a cluster.
-type NodeInfo struct {
+// OptimizationStatus reports whether a workload is optimized under either the
+// legacy (WorkloadPolicy/WorkloadPolicyTarget) or MPA v2 (WorkloadRule) system.
+// Only populated on WorkloadItem when at least one of
+// GetWorkloadsRequest.include_legacy_optimization_status or
+// GetWorkloadsRequest.include_v2_optimization_status is true.
+type OptimizationStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodeCount int32 `protobuf:"varint,1,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` // Total number of nodes.
- OnDemandCount int32 `protobuf:"varint,2,opt,name=on_demand_count,json=onDemandCount,proto3" json:"on_demand_count,omitempty"` // Number of on-demand nodes.
- ReservedCount int32 `protobuf:"varint,3,opt,name=reserved_count,json=reservedCount,proto3" json:"reserved_count,omitempty"` // Number of reserved nodes.
- SpotCount int32 `protobuf:"varint,4,opt,name=spot_count,json=spotCount,proto3" json:"spot_count,omitempty"` // Number of spot nodes.
- UnknownCount int32 `protobuf:"varint,5,opt,name=unknown_count,json=unknownCount,proto3" json:"unknown_count,omitempty"` // Number of nodes with unknown type.
- PriceSourceCounts map[string]int32 `protobuf:"bytes,6,rep,name=price_source_counts,json=priceSourceCounts,proto3" json:"price_source_counts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Node count by price_source (e.g. {"ri_exact": 2, "sp_api_rate": 1, "on_demand": 5}).
+ IsOptimized bool `protobuf:"varint,1,opt,name=is_optimized,json=isOptimized,proto3" json:"is_optimized,omitempty"` // is_optimized_legacy || is_optimized_v2
+ IsOptimizedLegacy bool `protobuf:"varint,2,opt,name=is_optimized_legacy,json=isOptimizedLegacy,proto3" json:"is_optimized_legacy,omitempty"`
+ IsOptimizedV2 bool `protobuf:"varint,3,opt,name=is_optimized_v2,json=isOptimizedV2,proto3" json:"is_optimized_v2,omitempty"`
+ LegacyPolicies []*LegacyPolicyRef `protobuf:"bytes,4,rep,name=legacy_policies,json=legacyPolicies,proto3" json:"legacy_policies,omitempty"` // legacy policies whose targets match this workload
+ WorkloadRuleId string `protobuf:"bytes,5,opt,name=workload_rule_id,json=workloadRuleId,proto3" json:"workload_rule_id,omitempty"` // v2: empty if no active WorkloadRule
+ WorkloadRulePolicyName string `protobuf:"bytes,6,opt,name=workload_rule_policy_name,json=workloadRulePolicyName,proto3" json:"workload_rule_policy_name,omitempty"` // v2: display name of the policy behind the active rule, empty if unresolved
+ Disabled bool `protobuf:"varint,7,opt,name=disabled,proto3" json:"disabled,omitempty"` // v2: whether the active WorkloadRule (workload_rule_id) is currently disabled. Always false when workload_rule_id is empty.
}
-func (x *NodeInfo) Reset() {
- *x = NodeInfo{}
+func (x *OptimizationStatus) Reset() {
+ *x = OptimizationStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[11]
+ mi := &file_api_v1_common_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeInfo) String() string {
+func (x *OptimizationStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeInfo) ProtoMessage() {}
+func (*OptimizationStatus) ProtoMessage() {}
-func (x *NodeInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[11]
+func (x *OptimizationStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2849,82 +3400,113 @@ func (x *NodeInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead.
-func (*NodeInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{11}
+// Deprecated: Use OptimizationStatus.ProtoReflect.Descriptor instead.
+func (*OptimizationStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{14}
}
-func (x *NodeInfo) GetNodeCount() int32 {
+func (x *OptimizationStatus) GetIsOptimized() bool {
if x != nil {
- return x.NodeCount
+ return x.IsOptimized
}
- return 0
+ return false
}
-func (x *NodeInfo) GetOnDemandCount() int32 {
+func (x *OptimizationStatus) GetIsOptimizedLegacy() bool {
if x != nil {
- return x.OnDemandCount
+ return x.IsOptimizedLegacy
}
- return 0
+ return false
}
-func (x *NodeInfo) GetReservedCount() int32 {
+func (x *OptimizationStatus) GetIsOptimizedV2() bool {
if x != nil {
- return x.ReservedCount
+ return x.IsOptimizedV2
}
- return 0
+ return false
}
-func (x *NodeInfo) GetSpotCount() int32 {
+func (x *OptimizationStatus) GetLegacyPolicies() []*LegacyPolicyRef {
if x != nil {
- return x.SpotCount
+ return x.LegacyPolicies
}
- return 0
+ return nil
}
-func (x *NodeInfo) GetUnknownCount() int32 {
+func (x *OptimizationStatus) GetWorkloadRuleId() string {
if x != nil {
- return x.UnknownCount
+ return x.WorkloadRuleId
}
- return 0
+ return ""
}
-func (x *NodeInfo) GetPriceSourceCounts() map[string]int32 {
+func (x *OptimizationStatus) GetWorkloadRulePolicyName() string {
if x != nil {
- return x.PriceSourceCounts
+ return x.WorkloadRulePolicyName
}
- return nil
+ return ""
}
-// ResourceInfo provides counts of resources and their scheduling states.
-type ResourceInfo struct {
+func (x *OptimizationStatus) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+type WorkloadItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ResourcesCount int32 `protobuf:"varint,1,opt,name=resources_count,json=resourcesCount,proto3" json:"resources_count,omitempty"` // Total number of resources.
- ScheduledResourceCount int32 `protobuf:"varint,2,opt,name=scheduled_resource_count,json=scheduledResourceCount,proto3" json:"scheduled_resource_count,omitempty"` // Number of scheduled resources.
- UnscheduledResourceCount int32 `protobuf:"varint,3,opt,name=unscheduled_resource_count,json=unscheduledResourceCount,proto3" json:"unscheduled_resource_count,omitempty"` // Number of unscheduled resources.
- UnknownResourceCount int32 `protobuf:"varint,4,opt,name=unknown_resource_count,json=unknownResourceCount,proto3" json:"unknown_resource_count,omitempty"` // Number of resources in unknown state.
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Kind of the resource (e.g., Pod, Container, Deployment).
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Name of the resource.
+ Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"` // Unique identifier for the resource.
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` // Namespace of the resource.
+ OwnerKind string `protobuf:"bytes,5,opt,name=owner_kind,json=ownerKind,proto3" json:"owner_kind,omitempty"` // Kind of the owning resource, if any.
+ OwnerUid string `protobuf:"bytes,6,opt,name=owner_uid,json=ownerUid,proto3" json:"owner_uid,omitempty"` // UID of the owning resource, if any.
+ Children []*WorkloadItem `protobuf:"bytes,7,rep,name=children,proto3" json:"children,omitempty"` // Child resources of this workload item.
+ Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource labels.
+ Annotations map[string]string `protobuf:"bytes,9,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource annotations.
+ CreationTimestamp int64 `protobuf:"varint,10,opt,name=creation_timestamp,json=creationTimestamp,proto3" json:"creation_timestamp,omitempty"` // Creation time as a Unix timestamp.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,11,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource metrics for the workload item.
+ CostInfo *CostInfo `protobuf:"bytes,12,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost information for the workload item.
+ CostDataPoints []*CostDataPoint `protobuf:"bytes,13,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the workload.
+ ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,14,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the workload.
+ ImpactScore float64 `protobuf:"fixed64,15,opt,name=impact_score,json=impactScore,proto3" json:"impact_score,omitempty"` // Optimization impact score for workload
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Creation time of the workload item.
+ DeletedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=deleted_at,json=deletedAt,proto3,oneof" json:"deleted_at,omitempty"` // Last update time of the workload item.
+ ClusterId string `protobuf:"bytes,18,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Cluster id of the workload
+ Id string `protobuf:"bytes,19,opt,name=id,proto3" json:"id,omitempty"` // DevZero unique identifier
+ // Resource-specific details for different K8s resource types
+ IsKarpenterResource bool `protobuf:"varint,20,opt,name=is_karpenter_resource,json=isKarpenterResource,proto3" json:"is_karpenter_resource,omitempty"`
+ ResourceDetails *ResourceDetails `protobuf:"bytes,30,opt,name=resource_details,json=resourceDetails,proto3,oneof" json:"resource_details,omitempty"`
+ PolicyIds []string `protobuf:"bytes,56,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // List of policy IDs attached to this workload
+ ReplicasFromStatus int32 `protobuf:"varint,76,opt,name=replicas_from_status,json=replicasFromStatus,proto3" json:"replicas_from_status,omitempty"`
+ ReplicasFromSpec int32 `protobuf:"varint,77,opt,name=replicas_from_spec,json=replicasFromSpec,proto3" json:"replicas_from_spec,omitempty"`
+ ReplicasFromMetrics int32 `protobuf:"varint,78,opt,name=replicas_from_metrics,json=replicasFromMetrics,proto3" json:"replicas_from_metrics,omitempty"`
+ RootOwnerKind string `protobuf:"bytes,91,opt,name=root_owner_kind,json=rootOwnerKind,proto3" json:"root_owner_kind,omitempty"` // Kind of the root owning resource, if any.
+ RootOwnerUid string `protobuf:"bytes,92,opt,name=root_owner_uid,json=rootOwnerUid,proto3" json:"root_owner_uid,omitempty"` // UID of the root owning resource, if any.
+ OptimizationStatus *OptimizationStatus `protobuf:"bytes,93,opt,name=optimization_status,json=optimizationStatus,proto3,oneof" json:"optimization_status,omitempty"` // Populated only when GetWorkloadsRequest.include_legacy_optimization_status and/or GetWorkloadsRequest.include_v2_optimization_status is true
}
-func (x *ResourceInfo) Reset() {
- *x = ResourceInfo{}
+func (x *WorkloadItem) Reset() {
+ *x = WorkloadItem{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[12]
+ mi := &file_api_v1_common_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceInfo) String() string {
+func (x *WorkloadItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceInfo) ProtoMessage() {}
+func (*WorkloadItem) ProtoMessage() {}
-func (x *ResourceInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[12]
+func (x *WorkloadItem) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2935,491 +3517,380 @@ func (x *ResourceInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceInfo.ProtoReflect.Descriptor instead.
-func (*ResourceInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{12}
+// Deprecated: Use WorkloadItem.ProtoReflect.Descriptor instead.
+func (*WorkloadItem) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{15}
}
-func (x *ResourceInfo) GetResourcesCount() int32 {
+func (x *WorkloadItem) GetKind() string {
if x != nil {
- return x.ResourcesCount
+ return x.Kind
}
- return 0
+ return ""
}
-func (x *ResourceInfo) GetScheduledResourceCount() int32 {
+func (x *WorkloadItem) GetName() string {
if x != nil {
- return x.ScheduledResourceCount
+ return x.Name
}
- return 0
+ return ""
}
-func (x *ResourceInfo) GetUnscheduledResourceCount() int32 {
+func (x *WorkloadItem) GetUid() string {
if x != nil {
- return x.UnscheduledResourceCount
+ return x.Uid
}
- return 0
+ return ""
}
-func (x *ResourceInfo) GetUnknownResourceCount() int32 {
+func (x *WorkloadItem) GetNamespace() string {
if x != nil {
- return x.UnknownResourceCount
+ return x.Namespace
}
- return 0
+ return ""
}
-// Node represents a Kubernetes node with metadata, metrics, and cost information.
-type Node struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the node.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Name of the node.
- InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` // Instance type of the node.
- Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` // Type/category of the node.
- Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` // Region where the node is deployed.
- Zone string `protobuf:"bytes,6,opt,name=zone,proto3" json:"zone,omitempty"` // Zone where the node is deployed.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,7,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource utilization metrics for the node.
- CostInfo *CostInfo `protobuf:"bytes,8,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost information for the node.
- NodeCreatedAt int64 `protobuf:"varint,9,opt,name=node_created_at,json=nodeCreatedAt,proto3" json:"node_created_at,omitempty"` // Node creation time as a Unix timestamp.
- IsReady bool `protobuf:"varint,10,opt,name=is_ready,json=isReady,proto3" json:"is_ready,omitempty"` // Indicates whether the node is ready.
- ContainerRuntime *ContainerRuntimeInfo `protobuf:"bytes,20,opt,name=container_runtime,json=containerRuntime,proto3,oneof" json:"container_runtime,omitempty"`
- NodeGroupName string `protobuf:"bytes,30,opt,name=node_group_name,json=nodeGroupName,proto3" json:"node_group_name,omitempty"` // it is what the variable says it is
- ResourceDetails *ResourceDetails `protobuf:"bytes,40,opt,name=resource_details,json=resourceDetails,proto3" json:"resource_details,omitempty"` // if withDetails is true
- // metadata if withMetadata is true
- OwnerKind string `protobuf:"bytes,41,opt,name=owner_kind,json=ownerKind,proto3" json:"owner_kind,omitempty"` // Kind of the owning resource, if any.
- OwnerUid string `protobuf:"bytes,42,opt,name=owner_uid,json=ownerUid,proto3" json:"owner_uid,omitempty"` // UID of the owning resource, if any.
- Children []*WorkloadItem `protobuf:"bytes,43,rep,name=children,proto3" json:"children,omitempty"` // Child resources of this workload item.
- Labels map[string]string `protobuf:"bytes,44,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource labels.
- Annotations map[string]string `protobuf:"bytes,45,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource annotations.
- // Pricing information (legacy float fields - deprecated)
- //
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- PricePerHour float64 `protobuf:"fixed64,50,opt,name=price_per_hour,json=pricePerHour,proto3" json:"price_per_hour,omitempty"`
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- PricePerVcpu float64 `protobuf:"fixed64,51,opt,name=price_per_vcpu,json=pricePerVcpu,proto3" json:"price_per_vcpu,omitempty"`
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- PricePerGib float64 `protobuf:"fixed64,52,opt,name=price_per_gib,json=pricePerGib,proto3" json:"price_per_gib,omitempty"`
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- PricePerGpu float64 `protobuf:"fixed64,53,opt,name=price_per_gpu,json=pricePerGpu,proto3" json:"price_per_gpu,omitempty"`
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- CpuPrice float64 `protobuf:"fixed64,54,opt,name=cpu_price,json=cpuPrice,proto3" json:"cpu_price,omitempty"`
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- MemoryPrice float64 `protobuf:"fixed64,55,opt,name=memory_price,json=memoryPrice,proto3" json:"memory_price,omitempty"`
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- GpuPrice float64 `protobuf:"fixed64,56,opt,name=gpu_price,json=gpuPrice,proto3" json:"gpu_price,omitempty"`
- // Pricing information (using Money type for currency flexibility)
- MoneyPricePerHour *money.Money `protobuf:"bytes,57,opt,name=money_price_per_hour,json=moneyPricePerHour,proto3" json:"money_price_per_hour,omitempty"`
- MoneyEffPeriodTotalCost *money.Money `protobuf:"bytes,58,opt,name=money_eff_period_total_cost,json=moneyEffPeriodTotalCost,proto3" json:"money_eff_period_total_cost,omitempty"`
- MoneyPricePerVcpu *money.Money `protobuf:"bytes,59,opt,name=money_price_per_vcpu,json=moneyPricePerVcpu,proto3" json:"money_price_per_vcpu,omitempty"`
- MoneyPricePerGib *money.Money `protobuf:"bytes,80,opt,name=money_price_per_gib,json=moneyPricePerGib,proto3" json:"money_price_per_gib,omitempty"`
- MoneyPricePerGpu *money.Money `protobuf:"bytes,81,opt,name=money_price_per_gpu,json=moneyPricePerGpu,proto3" json:"money_price_per_gpu,omitempty"`
- MoneyCpuPrice *money.Money `protobuf:"bytes,82,opt,name=money_cpu_price,json=moneyCpuPrice,proto3" json:"money_cpu_price,omitempty"`
- MoneyMemoryPrice *money.Money `protobuf:"bytes,83,opt,name=money_memory_price,json=moneyMemoryPrice,proto3" json:"money_memory_price,omitempty"`
- MoneyGpuPrice *money.Money `protobuf:"bytes,84,opt,name=money_gpu_price,json=moneyGpuPrice,proto3" json:"money_gpu_price,omitempty"`
- // Commitment pricing: original on-demand list price and billing source.
- // money_price_per_hour holds the effective (RI/SP-adjusted) price.
- // money_on_demand_price_per_hour holds the baseline list price before any discount.
- // For on-demand and spot nodes both fields are equal.
- MoneyOnDemandPricePerHour *money.Money `protobuf:"bytes,85,opt,name=money_on_demand_price_per_hour,json=moneyOnDemandPricePerHour,proto3" json:"money_on_demand_price_per_hour,omitempty"`
- PriceSource string `protobuf:"bytes,86,opt,name=price_source,json=priceSource,proto3" json:"price_source,omitempty"` // "ri_exact", "ri_flexible", "sp_api_rate", "sp_estimated", "mixed", "spot", "on_demand", "unknown"
- PricingAccuracy string `protobuf:"bytes,87,opt,name=pricing_accuracy,json=pricingAccuracy,proto3" json:"pricing_accuracy,omitempty"` // "accurate", "estimated", "fallback", "unknown"
- // Enhanced node classification
- ExtractedNodeType string `protobuf:"bytes,60,opt,name=extracted_node_type,json=extractedNodeType,proto3" json:"extracted_node_type,omitempty"` // "spot", "on-demand", "reserved"
- AvailabilityZone string `protobuf:"bytes,61,opt,name=availability_zone,json=availabilityZone,proto3" json:"availability_zone,omitempty"` // Multi-cloud AZ extraction
- // Kubernetes metadata
- KubernetesUid string `protobuf:"bytes,62,opt,name=kubernetes_uid,json=kubernetesUid,proto3" json:"kubernetes_uid,omitempty"`
- ResourceVersion string `protobuf:"bytes,63,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"`
- // Volume and storage information
- VolumesInUse []string `protobuf:"bytes,65,rep,name=volumes_in_use,json=volumesInUse,proto3" json:"volumes_in_use,omitempty"`
- VolumesAttached []*AttachedVolume `protobuf:"bytes,66,rep,name=volumes_attached,json=volumesAttached,proto3" json:"volumes_attached,omitempty"`
- // Timing information
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,70,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- CollectedAt *timestamppb.Timestamp `protobuf:"bytes,71,opt,name=collected_at,json=collectedAt,proto3" json:"collected_at,omitempty"`
- DeletionTimestamp *timestamppb.Timestamp `protobuf:"bytes,72,opt,name=deletion_timestamp,json=deletionTimestamp,proto3" json:"deletion_timestamp,omitempty"`
+func (x *WorkloadItem) GetOwnerKind() string {
+ if x != nil {
+ return x.OwnerKind
+ }
+ return ""
}
-func (x *Node) Reset() {
- *x = Node{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *WorkloadItem) GetOwnerUid() string {
+ if x != nil {
+ return x.OwnerUid
}
+ return ""
}
-func (x *Node) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *WorkloadItem) GetChildren() []*WorkloadItem {
+ if x != nil {
+ return x.Children
+ }
+ return nil
}
-func (*Node) ProtoMessage() {}
-
-func (x *Node) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Node.ProtoReflect.Descriptor instead.
-func (*Node) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Node) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Node) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Node) GetInstanceType() string {
- if x != nil {
- return x.InstanceType
- }
- return ""
-}
-
-func (x *Node) GetType() string {
+func (x *WorkloadItem) GetLabels() map[string]string {
if x != nil {
- return x.Type
+ return x.Labels
}
- return ""
+ return nil
}
-func (x *Node) GetRegion() string {
+func (x *WorkloadItem) GetAnnotations() map[string]string {
if x != nil {
- return x.Region
+ return x.Annotations
}
- return ""
+ return nil
}
-func (x *Node) GetZone() string {
+func (x *WorkloadItem) GetCreationTimestamp() int64 {
if x != nil {
- return x.Zone
+ return x.CreationTimestamp
}
- return ""
+ return 0
}
-func (x *Node) GetResourceMetrics() *ResourceMetrics {
+func (x *WorkloadItem) GetResourceMetrics() *ResourceMetrics {
if x != nil {
return x.ResourceMetrics
}
return nil
}
-func (x *Node) GetCostInfo() *CostInfo {
+func (x *WorkloadItem) GetCostInfo() *CostInfo {
if x != nil {
return x.CostInfo
}
return nil
}
-func (x *Node) GetNodeCreatedAt() int64 {
+func (x *WorkloadItem) GetCostDataPoints() []*CostDataPoint {
if x != nil {
- return x.NodeCreatedAt
+ return x.CostDataPoints
}
- return 0
+ return nil
}
-func (x *Node) GetIsReady() bool {
+func (x *WorkloadItem) GetResourceDataPoints() []*ResourceDataPoint {
if x != nil {
- return x.IsReady
+ return x.ResourceDataPoints
}
- return false
+ return nil
}
-func (x *Node) GetContainerRuntime() *ContainerRuntimeInfo {
+func (x *WorkloadItem) GetImpactScore() float64 {
if x != nil {
- return x.ContainerRuntime
+ return x.ImpactScore
}
- return nil
+ return 0
}
-func (x *Node) GetNodeGroupName() string {
+func (x *WorkloadItem) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.NodeGroupName
+ return x.CreatedAt
}
- return ""
+ return nil
}
-func (x *Node) GetResourceDetails() *ResourceDetails {
+func (x *WorkloadItem) GetDeletedAt() *timestamppb.Timestamp {
if x != nil {
- return x.ResourceDetails
+ return x.DeletedAt
}
return nil
}
-func (x *Node) GetOwnerKind() string {
+func (x *WorkloadItem) GetClusterId() string {
if x != nil {
- return x.OwnerKind
+ return x.ClusterId
}
return ""
}
-func (x *Node) GetOwnerUid() string {
+func (x *WorkloadItem) GetId() string {
if x != nil {
- return x.OwnerUid
+ return x.Id
}
return ""
}
-func (x *Node) GetChildren() []*WorkloadItem {
+func (x *WorkloadItem) GetIsKarpenterResource() bool {
if x != nil {
- return x.Children
+ return x.IsKarpenterResource
}
- return nil
+ return false
}
-func (x *Node) GetLabels() map[string]string {
+func (x *WorkloadItem) GetResourceDetails() *ResourceDetails {
if x != nil {
- return x.Labels
+ return x.ResourceDetails
}
return nil
}
-func (x *Node) GetAnnotations() map[string]string {
+func (x *WorkloadItem) GetPolicyIds() []string {
if x != nil {
- return x.Annotations
+ return x.PolicyIds
}
return nil
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetPricePerHour() float64 {
+func (x *WorkloadItem) GetReplicasFromStatus() int32 {
if x != nil {
- return x.PricePerHour
+ return x.ReplicasFromStatus
}
return 0
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetPricePerVcpu() float64 {
+func (x *WorkloadItem) GetReplicasFromSpec() int32 {
if x != nil {
- return x.PricePerVcpu
+ return x.ReplicasFromSpec
}
return 0
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetPricePerGib() float64 {
+func (x *WorkloadItem) GetReplicasFromMetrics() int32 {
if x != nil {
- return x.PricePerGib
+ return x.ReplicasFromMetrics
}
return 0
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetPricePerGpu() float64 {
+func (x *WorkloadItem) GetRootOwnerKind() string {
if x != nil {
- return x.PricePerGpu
+ return x.RootOwnerKind
}
- return 0
+ return ""
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetCpuPrice() float64 {
+func (x *WorkloadItem) GetRootOwnerUid() string {
if x != nil {
- return x.CpuPrice
+ return x.RootOwnerUid
}
- return 0
+ return ""
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetMemoryPrice() float64 {
+func (x *WorkloadItem) GetOptimizationStatus() *OptimizationStatus {
if x != nil {
- return x.MemoryPrice
+ return x.OptimizationStatus
}
- return 0
+ return nil
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *Node) GetGpuPrice() float64 {
- if x != nil {
- return x.GpuPrice
- }
- return 0
-}
+// ContainerRuntimeInfo containes information about container runtime info
+type ContainerRuntimeInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *Node) GetMoneyPricePerHour() *money.Money {
- if x != nil {
- return x.MoneyPricePerHour
- }
- return nil
+ RuntimeName string `protobuf:"bytes,1,opt,name=runtime_name,json=runtimeName,proto3" json:"runtime_name,omitempty"`
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
}
-func (x *Node) GetMoneyEffPeriodTotalCost() *money.Money {
- if x != nil {
- return x.MoneyEffPeriodTotalCost
+func (x *ContainerRuntimeInfo) Reset() {
+ *x = ContainerRuntimeInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *Node) GetMoneyPricePerVcpu() *money.Money {
- if x != nil {
- return x.MoneyPricePerVcpu
- }
- return nil
+func (x *ContainerRuntimeInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *Node) GetMoneyPricePerGib() *money.Money {
- if x != nil {
- return x.MoneyPricePerGib
- }
- return nil
-}
+func (*ContainerRuntimeInfo) ProtoMessage() {}
-func (x *Node) GetMoneyPricePerGpu() *money.Money {
- if x != nil {
- return x.MoneyPricePerGpu
+func (x *ContainerRuntimeInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *Node) GetMoneyCpuPrice() *money.Money {
- if x != nil {
- return x.MoneyCpuPrice
- }
- return nil
+// Deprecated: Use ContainerRuntimeInfo.ProtoReflect.Descriptor instead.
+func (*ContainerRuntimeInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{16}
}
-func (x *Node) GetMoneyMemoryPrice() *money.Money {
+func (x *ContainerRuntimeInfo) GetRuntimeName() string {
if x != nil {
- return x.MoneyMemoryPrice
+ return x.RuntimeName
}
- return nil
+ return ""
}
-func (x *Node) GetMoneyGpuPrice() *money.Money {
+func (x *ContainerRuntimeInfo) GetVersion() string {
if x != nil {
- return x.MoneyGpuPrice
+ return x.Version
}
- return nil
+ return ""
}
-func (x *Node) GetMoneyOnDemandPricePerHour() *money.Money {
- if x != nil {
- return x.MoneyOnDemandPricePerHour
- }
- return nil
+// NodeInfo contains information about nodes in a cluster.
+type NodeInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeCount int32 `protobuf:"varint,1,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` // Total number of nodes.
+ OnDemandCount int32 `protobuf:"varint,2,opt,name=on_demand_count,json=onDemandCount,proto3" json:"on_demand_count,omitempty"` // Number of on-demand nodes.
+ ReservedCount int32 `protobuf:"varint,3,opt,name=reserved_count,json=reservedCount,proto3" json:"reserved_count,omitempty"` // Number of reserved nodes.
+ SpotCount int32 `protobuf:"varint,4,opt,name=spot_count,json=spotCount,proto3" json:"spot_count,omitempty"` // Number of spot nodes.
+ UnknownCount int32 `protobuf:"varint,5,opt,name=unknown_count,json=unknownCount,proto3" json:"unknown_count,omitempty"` // Number of nodes with unknown type.
+ PriceSourceCounts map[string]int32 `protobuf:"bytes,6,rep,name=price_source_counts,json=priceSourceCounts,proto3" json:"price_source_counts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Node count by price_source (e.g. {"ri_exact": 2, "sp_api_rate": 1, "on_demand": 5}).
}
-func (x *Node) GetPriceSource() string {
- if x != nil {
- return x.PriceSource
+func (x *NodeInfo) Reset() {
+ *x = NodeInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *Node) GetPricingAccuracy() string {
- if x != nil {
- return x.PricingAccuracy
- }
- return ""
+func (x *NodeInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *Node) GetExtractedNodeType() string {
- if x != nil {
- return x.ExtractedNodeType
- }
- return ""
-}
+func (*NodeInfo) ProtoMessage() {}
-func (x *Node) GetAvailabilityZone() string {
- if x != nil {
- return x.AvailabilityZone
+func (x *NodeInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *Node) GetKubernetesUid() string {
- if x != nil {
- return x.KubernetesUid
- }
- return ""
+// Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead.
+func (*NodeInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{17}
}
-func (x *Node) GetResourceVersion() string {
+func (x *NodeInfo) GetNodeCount() int32 {
if x != nil {
- return x.ResourceVersion
+ return x.NodeCount
}
- return ""
+ return 0
}
-func (x *Node) GetVolumesInUse() []string {
+func (x *NodeInfo) GetOnDemandCount() int32 {
if x != nil {
- return x.VolumesInUse
+ return x.OnDemandCount
}
- return nil
+ return 0
}
-func (x *Node) GetVolumesAttached() []*AttachedVolume {
+func (x *NodeInfo) GetReservedCount() int32 {
if x != nil {
- return x.VolumesAttached
+ return x.ReservedCount
}
- return nil
+ return 0
}
-func (x *Node) GetLastSeen() *timestamppb.Timestamp {
+func (x *NodeInfo) GetSpotCount() int32 {
if x != nil {
- return x.LastSeen
+ return x.SpotCount
}
- return nil
+ return 0
}
-func (x *Node) GetCollectedAt() *timestamppb.Timestamp {
+func (x *NodeInfo) GetUnknownCount() int32 {
if x != nil {
- return x.CollectedAt
+ return x.UnknownCount
}
- return nil
+ return 0
}
-func (x *Node) GetDeletionTimestamp() *timestamppb.Timestamp {
+func (x *NodeInfo) GetPriceSourceCounts() map[string]int32 {
if x != nil {
- return x.DeletionTimestamp
+ return x.PriceSourceCounts
}
return nil
}
-type AttachedVolume struct {
+// ResourceInfo provides counts of resources and their scheduling states.
+type ResourceInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- DevicePath string `protobuf:"bytes,2,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"`
+ ResourcesCount int32 `protobuf:"varint,1,opt,name=resources_count,json=resourcesCount,proto3" json:"resources_count,omitempty"` // Total number of resources.
+ ScheduledResourceCount int32 `protobuf:"varint,2,opt,name=scheduled_resource_count,json=scheduledResourceCount,proto3" json:"scheduled_resource_count,omitempty"` // Number of scheduled resources.
+ UnscheduledResourceCount int32 `protobuf:"varint,3,opt,name=unscheduled_resource_count,json=unscheduledResourceCount,proto3" json:"unscheduled_resource_count,omitempty"` // Number of unscheduled resources.
+ UnknownResourceCount int32 `protobuf:"varint,4,opt,name=unknown_resource_count,json=unknownResourceCount,proto3" json:"unknown_resource_count,omitempty"` // Number of resources in unknown state.
}
-func (x *AttachedVolume) Reset() {
- *x = AttachedVolume{}
+func (x *ResourceInfo) Reset() {
+ *x = ResourceInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[14]
+ mi := &file_api_v1_common_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AttachedVolume) String() string {
+func (x *ResourceInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AttachedVolume) ProtoMessage() {}
+func (*ResourceInfo) ProtoMessage() {}
-func (x *AttachedVolume) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[14]
+func (x *ResourceInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3430,58 +3901,128 @@ func (x *AttachedVolume) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AttachedVolume.ProtoReflect.Descriptor instead.
-func (*AttachedVolume) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{14}
+// Deprecated: Use ResourceInfo.ProtoReflect.Descriptor instead.
+func (*ResourceInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{18}
}
-func (x *AttachedVolume) GetName() string {
+func (x *ResourceInfo) GetResourcesCount() int32 {
if x != nil {
- return x.Name
+ return x.ResourcesCount
}
- return ""
+ return 0
}
-func (x *AttachedVolume) GetDevicePath() string {
+func (x *ResourceInfo) GetScheduledResourceCount() int32 {
if x != nil {
- return x.DevicePath
+ return x.ScheduledResourceCount
}
- return ""
+ return 0
}
-// NodeGroup represents a group of Kubernetes nodes with aggregated metrics.
-type NodeGroup struct {
+func (x *ResourceInfo) GetUnscheduledResourceCount() int32 {
+ if x != nil {
+ return x.UnscheduledResourceCount
+ }
+ return 0
+}
+
+func (x *ResourceInfo) GetUnknownResourceCount() int32 {
+ if x != nil {
+ return x.UnknownResourceCount
+ }
+ return 0
+}
+
+// Node represents a Kubernetes node with metadata, metrics, and cost information.
+type Node struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name of the node group.
- Nodes []*Node `protobuf:"bytes,2,rep,name=nodes,proto3" json:"nodes,omitempty"` // Nodes in the group.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,3,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics for the node group.
- CostInfo *CostInfo `protobuf:"bytes,4,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information for the node group.
- NodeInfo *NodeInfo `protobuf:"bytes,5,opt,name=node_info,json=nodeInfo,proto3" json:"node_info,omitempty"` // Node count breakdown for the node group.
- ResourceInfo *ResourceInfo `protobuf:"bytes,6,opt,name=resource_info,json=resourceInfo,proto3" json:"resource_info,omitempty"` // Resource scheduling information for the node group.
- CostDataPoints []*CostDataPoint `protobuf:"bytes,11,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the node group.
- ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,12,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the node group.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the node.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Name of the node.
+ InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` // Instance type of the node.
+ Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` // Type/category of the node.
+ Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` // Region where the node is deployed.
+ Zone string `protobuf:"bytes,6,opt,name=zone,proto3" json:"zone,omitempty"` // Zone where the node is deployed.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,7,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource utilization metrics for the node.
+ CostInfo *CostInfo `protobuf:"bytes,8,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost information for the node.
+ NodeCreatedAt int64 `protobuf:"varint,9,opt,name=node_created_at,json=nodeCreatedAt,proto3" json:"node_created_at,omitempty"` // Node creation time as a Unix timestamp.
+ IsReady bool `protobuf:"varint,10,opt,name=is_ready,json=isReady,proto3" json:"is_ready,omitempty"` // Indicates whether the node is ready.
+ ContainerRuntime *ContainerRuntimeInfo `protobuf:"bytes,20,opt,name=container_runtime,json=containerRuntime,proto3,oneof" json:"container_runtime,omitempty"`
+ NodeGroupName string `protobuf:"bytes,30,opt,name=node_group_name,json=nodeGroupName,proto3" json:"node_group_name,omitempty"` // it is what the variable says it is
+ ResourceDetails *ResourceDetails `protobuf:"bytes,40,opt,name=resource_details,json=resourceDetails,proto3" json:"resource_details,omitempty"` // if withDetails is true
+ // metadata if withMetadata is true
+ OwnerKind string `protobuf:"bytes,41,opt,name=owner_kind,json=ownerKind,proto3" json:"owner_kind,omitempty"` // Kind of the owning resource, if any.
+ OwnerUid string `protobuf:"bytes,42,opt,name=owner_uid,json=ownerUid,proto3" json:"owner_uid,omitempty"` // UID of the owning resource, if any.
+ Children []*WorkloadItem `protobuf:"bytes,43,rep,name=children,proto3" json:"children,omitempty"` // Child resources of this workload item.
+ Labels map[string]string `protobuf:"bytes,44,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource labels.
+ Annotations map[string]string `protobuf:"bytes,45,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource annotations.
+ // Pricing information (legacy float fields - deprecated)
+ //
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ PricePerHour float64 `protobuf:"fixed64,50,opt,name=price_per_hour,json=pricePerHour,proto3" json:"price_per_hour,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ PricePerVcpu float64 `protobuf:"fixed64,51,opt,name=price_per_vcpu,json=pricePerVcpu,proto3" json:"price_per_vcpu,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ PricePerGib float64 `protobuf:"fixed64,52,opt,name=price_per_gib,json=pricePerGib,proto3" json:"price_per_gib,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ PricePerGpu float64 `protobuf:"fixed64,53,opt,name=price_per_gpu,json=pricePerGpu,proto3" json:"price_per_gpu,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ CpuPrice float64 `protobuf:"fixed64,54,opt,name=cpu_price,json=cpuPrice,proto3" json:"cpu_price,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ MemoryPrice float64 `protobuf:"fixed64,55,opt,name=memory_price,json=memoryPrice,proto3" json:"memory_price,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ GpuPrice float64 `protobuf:"fixed64,56,opt,name=gpu_price,json=gpuPrice,proto3" json:"gpu_price,omitempty"`
+ // Pricing information (using Money type for currency flexibility)
+ MoneyPricePerHour *money.Money `protobuf:"bytes,57,opt,name=money_price_per_hour,json=moneyPricePerHour,proto3" json:"money_price_per_hour,omitempty"`
+ MoneyEffPeriodTotalCost *money.Money `protobuf:"bytes,58,opt,name=money_eff_period_total_cost,json=moneyEffPeriodTotalCost,proto3" json:"money_eff_period_total_cost,omitempty"`
+ MoneyPricePerVcpu *money.Money `protobuf:"bytes,59,opt,name=money_price_per_vcpu,json=moneyPricePerVcpu,proto3" json:"money_price_per_vcpu,omitempty"`
+ MoneyPricePerGib *money.Money `protobuf:"bytes,80,opt,name=money_price_per_gib,json=moneyPricePerGib,proto3" json:"money_price_per_gib,omitempty"`
+ MoneyPricePerGpu *money.Money `protobuf:"bytes,81,opt,name=money_price_per_gpu,json=moneyPricePerGpu,proto3" json:"money_price_per_gpu,omitempty"`
+ MoneyCpuPrice *money.Money `protobuf:"bytes,82,opt,name=money_cpu_price,json=moneyCpuPrice,proto3" json:"money_cpu_price,omitempty"`
+ MoneyMemoryPrice *money.Money `protobuf:"bytes,83,opt,name=money_memory_price,json=moneyMemoryPrice,proto3" json:"money_memory_price,omitempty"`
+ MoneyGpuPrice *money.Money `protobuf:"bytes,84,opt,name=money_gpu_price,json=moneyGpuPrice,proto3" json:"money_gpu_price,omitempty"`
+ // Commitment pricing: original on-demand list price and billing source.
+ // money_price_per_hour holds the effective (RI/SP-adjusted) price.
+ // money_on_demand_price_per_hour holds the baseline list price before any discount.
+ // For on-demand and spot nodes both fields are equal.
+ MoneyOnDemandPricePerHour *money.Money `protobuf:"bytes,85,opt,name=money_on_demand_price_per_hour,json=moneyOnDemandPricePerHour,proto3" json:"money_on_demand_price_per_hour,omitempty"`
+ PriceSource string `protobuf:"bytes,86,opt,name=price_source,json=priceSource,proto3" json:"price_source,omitempty"` // "ri_exact", "ri_flexible", "sp_api_rate", "sp_estimated", "mixed", "spot", "on_demand", "unknown"
+ PricingAccuracy string `protobuf:"bytes,87,opt,name=pricing_accuracy,json=pricingAccuracy,proto3" json:"pricing_accuracy,omitempty"` // "accurate", "estimated", "fallback", "unknown"
+ // Enhanced node classification
+ ExtractedNodeType string `protobuf:"bytes,60,opt,name=extracted_node_type,json=extractedNodeType,proto3" json:"extracted_node_type,omitempty"` // "spot", "on-demand", "reserved"
+ AvailabilityZone string `protobuf:"bytes,61,opt,name=availability_zone,json=availabilityZone,proto3" json:"availability_zone,omitempty"` // Multi-cloud AZ extraction
+ // Kubernetes metadata
+ KubernetesUid string `protobuf:"bytes,62,opt,name=kubernetes_uid,json=kubernetesUid,proto3" json:"kubernetes_uid,omitempty"`
+ ResourceVersion string `protobuf:"bytes,63,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"`
+ // Volume and storage information
+ VolumesInUse []string `protobuf:"bytes,65,rep,name=volumes_in_use,json=volumesInUse,proto3" json:"volumes_in_use,omitempty"`
+ VolumesAttached []*AttachedVolume `protobuf:"bytes,66,rep,name=volumes_attached,json=volumesAttached,proto3" json:"volumes_attached,omitempty"`
+ // Timing information
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,70,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ CollectedAt *timestamppb.Timestamp `protobuf:"bytes,71,opt,name=collected_at,json=collectedAt,proto3" json:"collected_at,omitempty"`
+ DeletionTimestamp *timestamppb.Timestamp `protobuf:"bytes,72,opt,name=deletion_timestamp,json=deletionTimestamp,proto3" json:"deletion_timestamp,omitempty"`
}
-func (x *NodeGroup) Reset() {
- *x = NodeGroup{}
+func (x *Node) Reset() {
+ *x = Node{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[15]
+ mi := &file_api_v1_common_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeGroup) String() string {
+func (x *Node) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeGroup) ProtoMessage() {}
+func (*Node) ProtoMessage() {}
-func (x *NodeGroup) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[15]
+func (x *Node) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3492,508 +4033,359 @@ func (x *NodeGroup) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeGroup.ProtoReflect.Descriptor instead.
-func (*NodeGroup) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{15}
+// Deprecated: Use Node.ProtoReflect.Descriptor instead.
+func (*Node) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{19}
}
-func (x *NodeGroup) GetName() string {
+func (x *Node) GetId() string {
if x != nil {
- return x.Name
+ return x.Id
}
return ""
}
-func (x *NodeGroup) GetNodes() []*Node {
+func (x *Node) GetName() string {
if x != nil {
- return x.Nodes
+ return x.Name
}
- return nil
+ return ""
}
-func (x *NodeGroup) GetResourceMetrics() *ResourceMetrics {
+func (x *Node) GetInstanceType() string {
if x != nil {
- return x.ResourceMetrics
+ return x.InstanceType
}
- return nil
+ return ""
}
-func (x *NodeGroup) GetCostInfo() *CostInfo {
+func (x *Node) GetType() string {
if x != nil {
- return x.CostInfo
+ return x.Type
}
- return nil
+ return ""
}
-func (x *NodeGroup) GetNodeInfo() *NodeInfo {
+func (x *Node) GetRegion() string {
if x != nil {
- return x.NodeInfo
+ return x.Region
}
- return nil
+ return ""
}
-func (x *NodeGroup) GetResourceInfo() *ResourceInfo {
+func (x *Node) GetZone() string {
if x != nil {
- return x.ResourceInfo
+ return x.Zone
}
- return nil
+ return ""
}
-func (x *NodeGroup) GetCostDataPoints() []*CostDataPoint {
+func (x *Node) GetResourceMetrics() *ResourceMetrics {
if x != nil {
- return x.CostDataPoints
+ return x.ResourceMetrics
}
return nil
}
-func (x *NodeGroup) GetResourceDataPoints() []*ResourceDataPoint {
+func (x *Node) GetCostInfo() *CostInfo {
if x != nil {
- return x.ResourceDataPoints
+ return x.CostInfo
}
return nil
}
-// CostDataPoint represents cost information at a specific time.
-type CostDataPoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix timestamp (seconds since epoch).
- CostInfo *CostInfo `protobuf:"bytes,2,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost information for the data point.
-}
-
-func (x *CostDataPoint) Reset() {
- *x = CostDataPoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CostDataPoint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CostDataPoint) ProtoMessage() {}
-
-func (x *CostDataPoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CostDataPoint.ProtoReflect.Descriptor instead.
-func (*CostDataPoint) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *CostDataPoint) GetTimestamp() int64 {
+func (x *Node) GetNodeCreatedAt() int64 {
if x != nil {
- return x.Timestamp
+ return x.NodeCreatedAt
}
return 0
}
-func (x *CostDataPoint) GetCostInfo() *CostInfo {
+func (x *Node) GetIsReady() bool {
if x != nil {
- return x.CostInfo
- }
- return nil
-}
-
-// ResourceDataPoint represents resource utilization at a specific time.
-type ResourceDataPoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix timestamp (seconds since epoch).
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,2,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource metrics for the data point.
-}
-
-func (x *ResourceDataPoint) Reset() {
- *x = ResourceDataPoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+ return x.IsReady
}
+ return false
}
-func (x *ResourceDataPoint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ResourceDataPoint) ProtoMessage() {}
-
-func (x *ResourceDataPoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *Node) GetContainerRuntime() *ContainerRuntimeInfo {
+ if x != nil {
+ return x.ContainerRuntime
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ResourceDataPoint.ProtoReflect.Descriptor instead.
-func (*ResourceDataPoint) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{17}
+ return nil
}
-func (x *ResourceDataPoint) GetTimestamp() int64 {
+func (x *Node) GetNodeGroupName() string {
if x != nil {
- return x.Timestamp
+ return x.NodeGroupName
}
- return 0
+ return ""
}
-func (x *ResourceDataPoint) GetResourceMetrics() *ResourceMetrics {
+func (x *Node) GetResourceDetails() *ResourceDetails {
if x != nil {
- return x.ResourceMetrics
+ return x.ResourceDetails
}
return nil
}
-// ContainerTimeSeries contains time-series resource metrics for a single container.
-type ContainerTimeSeries struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
- ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,2,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"`
-}
-
-func (x *ContainerTimeSeries) Reset() {
- *x = ContainerTimeSeries{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ContainerTimeSeries) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerTimeSeries) ProtoMessage() {}
-
-func (x *ContainerTimeSeries) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *Node) GetOwnerKind() string {
+ if x != nil {
+ return x.OwnerKind
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerTimeSeries.ProtoReflect.Descriptor instead.
-func (*ContainerTimeSeries) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{18}
+ return ""
}
-func (x *ContainerTimeSeries) GetContainerName() string {
+func (x *Node) GetOwnerUid() string {
if x != nil {
- return x.ContainerName
+ return x.OwnerUid
}
return ""
}
-func (x *ContainerTimeSeries) GetResourceDataPoints() []*ResourceDataPoint {
+func (x *Node) GetChildren() []*WorkloadItem {
if x != nil {
- return x.ResourceDataPoints
+ return x.Children
}
return nil
}
-type SavingsData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- CpuSavingsMillicores float64 `protobuf:"fixed64,1,opt,name=cpu_savings_millicores,json=cpuSavingsMillicores,proto3" json:"cpu_savings_millicores,omitempty"`
- CpuHighWaterMark float64 `protobuf:"fixed64,2,opt,name=cpu_high_water_mark,json=cpuHighWaterMark,proto3" json:"cpu_high_water_mark,omitempty"`
- ActualCpuRequest float64 `protobuf:"fixed64,3,opt,name=actual_cpu_request,json=actualCpuRequest,proto3" json:"actual_cpu_request,omitempty"`
- CumulativeCpuSavingsMillicores float64 `protobuf:"fixed64,4,opt,name=cumulative_cpu_savings_millicores,json=cumulativeCpuSavingsMillicores,proto3" json:"cumulative_cpu_savings_millicores,omitempty"`
- CpuCostWithoutAutoscaler float64 `protobuf:"fixed64,5,opt,name=cpu_cost_without_autoscaler,json=cpuCostWithoutAutoscaler,proto3" json:"cpu_cost_without_autoscaler,omitempty"` // hypothetical cost w/ chart-level request
- ActualCpuCost float64 `protobuf:"fixed64,6,opt,name=actual_cpu_cost,json=actualCpuCost,proto3" json:"actual_cpu_cost,omitempty"` // what you paid
- CpuCostSavings float64 `protobuf:"fixed64,7,opt,name=cpu_cost_savings,json=cpuCostSavings,proto3" json:"cpu_cost_savings,omitempty"` // autoscaler impact (5 - 6)
- CpuUsageCost float64 `protobuf:"fixed64,8,opt,name=cpu_usage_cost,json=cpuUsageCost,proto3" json:"cpu_usage_cost,omitempty"` // based on actual usage
- CpuCostWaste float64 `protobuf:"fixed64,9,opt,name=cpu_cost_waste,json=cpuCostWaste,proto3" json:"cpu_cost_waste,omitempty"` // 6 - 8
-}
-
-func (x *SavingsData) Reset() {
- *x = SavingsData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[19]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *Node) GetLabels() map[string]string {
+ if x != nil {
+ return x.Labels
}
+ return nil
}
-func (x *SavingsData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SavingsData) ProtoMessage() {}
-
-func (x *SavingsData) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[19]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *Node) GetAnnotations() map[string]string {
+ if x != nil {
+ return x.Annotations
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use SavingsData.ProtoReflect.Descriptor instead.
-func (*SavingsData) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{19}
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetPricePerHour() float64 {
+ if x != nil {
+ return x.PricePerHour
+ }
+ return 0
}
-func (x *SavingsData) GetCpuSavingsMillicores() float64 {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetPricePerVcpu() float64 {
if x != nil {
- return x.CpuSavingsMillicores
+ return x.PricePerVcpu
}
return 0
}
-func (x *SavingsData) GetCpuHighWaterMark() float64 {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetPricePerGib() float64 {
if x != nil {
- return x.CpuHighWaterMark
+ return x.PricePerGib
}
return 0
}
-func (x *SavingsData) GetActualCpuRequest() float64 {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetPricePerGpu() float64 {
if x != nil {
- return x.ActualCpuRequest
+ return x.PricePerGpu
}
return 0
}
-func (x *SavingsData) GetCumulativeCpuSavingsMillicores() float64 {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetCpuPrice() float64 {
if x != nil {
- return x.CumulativeCpuSavingsMillicores
+ return x.CpuPrice
}
return 0
}
-func (x *SavingsData) GetCpuCostWithoutAutoscaler() float64 {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetMemoryPrice() float64 {
if x != nil {
- return x.CpuCostWithoutAutoscaler
+ return x.MemoryPrice
}
return 0
}
-func (x *SavingsData) GetActualCpuCost() float64 {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *Node) GetGpuPrice() float64 {
if x != nil {
- return x.ActualCpuCost
+ return x.GpuPrice
}
return 0
}
-func (x *SavingsData) GetCpuCostSavings() float64 {
+func (x *Node) GetMoneyPricePerHour() *money.Money {
if x != nil {
- return x.CpuCostSavings
+ return x.MoneyPricePerHour
}
- return 0
+ return nil
}
-func (x *SavingsData) GetCpuUsageCost() float64 {
+func (x *Node) GetMoneyEffPeriodTotalCost() *money.Money {
if x != nil {
- return x.CpuUsageCost
+ return x.MoneyEffPeriodTotalCost
}
- return 0
+ return nil
}
-func (x *SavingsData) GetCpuCostWaste() float64 {
+func (x *Node) GetMoneyPricePerVcpu() *money.Money {
if x != nil {
- return x.CpuCostWaste
+ return x.MoneyPricePerVcpu
}
- return 0
+ return nil
}
-type SavingsDataPoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- SavingsData *SavingsData `protobuf:"bytes,2,opt,name=savings_data,json=savingsData,proto3" json:"savings_data,omitempty"`
-}
-
-func (x *SavingsDataPoint) Reset() {
- *x = SavingsDataPoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *Node) GetMoneyPricePerGib() *money.Money {
+ if x != nil {
+ return x.MoneyPricePerGib
}
+ return nil
}
-func (x *SavingsDataPoint) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *Node) GetMoneyPricePerGpu() *money.Money {
+ if x != nil {
+ return x.MoneyPricePerGpu
+ }
+ return nil
}
-func (*SavingsDataPoint) ProtoMessage() {}
-
-func (x *SavingsDataPoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *Node) GetMoneyCpuPrice() *money.Money {
+ if x != nil {
+ return x.MoneyCpuPrice
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use SavingsDataPoint.ProtoReflect.Descriptor instead.
-func (*SavingsDataPoint) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{20}
+func (x *Node) GetMoneyMemoryPrice() *money.Money {
+ if x != nil {
+ return x.MoneyMemoryPrice
+ }
+ return nil
}
-func (x *SavingsDataPoint) GetTimestamp() int64 {
+func (x *Node) GetMoneyGpuPrice() *money.Money {
if x != nil {
- return x.Timestamp
+ return x.MoneyGpuPrice
}
- return 0
+ return nil
}
-func (x *SavingsDataPoint) GetSavingsData() *SavingsData {
+func (x *Node) GetMoneyOnDemandPricePerHour() *money.Money {
if x != nil {
- return x.SavingsData
+ return x.MoneyOnDemandPricePerHour
}
return nil
}
-type SavingsTimeSeries struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *Node) GetPriceSource() string {
+ if x != nil {
+ return x.PriceSource
+ }
+ return ""
+}
- SavingsDatapoints []*SavingsDataPoint `protobuf:"bytes,1,rep,name=savings_datapoints,json=savingsDatapoints,proto3" json:"savings_datapoints,omitempty"`
- TotalCpuSavingsMillicores float64 `protobuf:"fixed64,2,opt,name=total_cpu_savings_millicores,json=totalCpuSavingsMillicores,proto3" json:"total_cpu_savings_millicores,omitempty"`
- TotalCpuCostSavings float64 `protobuf:"fixed64,3,opt,name=total_cpu_cost_savings,json=totalCpuCostSavings,proto3" json:"total_cpu_cost_savings,omitempty"`
- TotalCpuCostWaste float64 `protobuf:"fixed64,4,opt,name=total_cpu_cost_waste,json=totalCpuCostWaste,proto3" json:"total_cpu_cost_waste,omitempty"`
+func (x *Node) GetPricingAccuracy() string {
+ if x != nil {
+ return x.PricingAccuracy
+ }
+ return ""
}
-func (x *SavingsTimeSeries) Reset() {
- *x = SavingsTimeSeries{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *Node) GetExtractedNodeType() string {
+ if x != nil {
+ return x.ExtractedNodeType
}
+ return ""
}
-func (x *SavingsTimeSeries) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *Node) GetAvailabilityZone() string {
+ if x != nil {
+ return x.AvailabilityZone
+ }
+ return ""
}
-func (*SavingsTimeSeries) ProtoMessage() {}
+func (x *Node) GetKubernetesUid() string {
+ if x != nil {
+ return x.KubernetesUid
+ }
+ return ""
+}
-func (x *SavingsTimeSeries) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *Node) GetResourceVersion() string {
+ if x != nil {
+ return x.ResourceVersion
}
- return mi.MessageOf(x)
+ return ""
}
-// Deprecated: Use SavingsTimeSeries.ProtoReflect.Descriptor instead.
-func (*SavingsTimeSeries) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{21}
+func (x *Node) GetVolumesInUse() []string {
+ if x != nil {
+ return x.VolumesInUse
+ }
+ return nil
}
-func (x *SavingsTimeSeries) GetSavingsDatapoints() []*SavingsDataPoint {
+func (x *Node) GetVolumesAttached() []*AttachedVolume {
if x != nil {
- return x.SavingsDatapoints
+ return x.VolumesAttached
}
return nil
}
-func (x *SavingsTimeSeries) GetTotalCpuSavingsMillicores() float64 {
+func (x *Node) GetLastSeen() *timestamppb.Timestamp {
if x != nil {
- return x.TotalCpuSavingsMillicores
+ return x.LastSeen
}
- return 0
+ return nil
}
-func (x *SavingsTimeSeries) GetTotalCpuCostSavings() float64 {
+func (x *Node) GetCollectedAt() *timestamppb.Timestamp {
if x != nil {
- return x.TotalCpuCostSavings
+ return x.CollectedAt
}
- return 0
+ return nil
}
-func (x *SavingsTimeSeries) GetTotalCpuCostWaste() float64 {
+func (x *Node) GetDeletionTimestamp() *timestamppb.Timestamp {
if x != nil {
- return x.TotalCpuCostWaste
+ return x.DeletionTimestamp
}
- return 0
+ return nil
}
-// LabelSelectorRequirement is a selector that contains values, a key, and an operator that
-// relates the key and values.
-type LabelSelectorRequirement struct {
+type AttachedVolume struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // key is the label key that the selector applies to.
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- // operator represents a key's relationship to a set of values.
- // Valid operators are In, NotIn, Exists and DoesNotExist.
- Operator LabelSelectorOperator `protobuf:"varint,2,opt,name=operator,proto3,enum=api.v1.LabelSelectorOperator" json:"operator,omitempty"`
- // values is an array of string values. If the operator is In or NotIn,
- // the values array must be non-empty. If the operator is Exists or DoesNotExist,
- // the values array must be empty. This array is replaced during a strategic
- // merge patch.
- Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ DevicePath string `protobuf:"bytes,2,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"`
}
-func (x *LabelSelectorRequirement) Reset() {
- *x = LabelSelectorRequirement{}
+func (x *AttachedVolume) Reset() {
+ *x = AttachedVolume{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[22]
+ mi := &file_api_v1_common_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *LabelSelectorRequirement) String() string {
+func (x *AttachedVolume) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*LabelSelectorRequirement) ProtoMessage() {}
+func (*AttachedVolume) ProtoMessage() {}
-func (x *LabelSelectorRequirement) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[22]
+func (x *AttachedVolume) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4004,58 +4396,58 @@ func (x *LabelSelectorRequirement) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use LabelSelectorRequirement.ProtoReflect.Descriptor instead.
-func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{22}
+// Deprecated: Use AttachedVolume.ProtoReflect.Descriptor instead.
+func (*AttachedVolume) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{20}
}
-func (x *LabelSelectorRequirement) GetKey() string {
+func (x *AttachedVolume) GetName() string {
if x != nil {
- return x.Key
+ return x.Name
}
return ""
}
-func (x *LabelSelectorRequirement) GetOperator() LabelSelectorOperator {
- if x != nil {
- return x.Operator
- }
- return LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_UNSPECIFIED
-}
-
-func (x *LabelSelectorRequirement) GetValues() []string {
+func (x *AttachedVolume) GetDevicePath() string {
if x != nil {
- return x.Values
+ return x.DevicePath
}
- return nil
+ return ""
}
-type Label struct {
+// NodeGroup represents a group of Kubernetes nodes with aggregated metrics.
+type NodeGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name of the node group.
+ Nodes []*Node `protobuf:"bytes,2,rep,name=nodes,proto3" json:"nodes,omitempty"` // Nodes in the group.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,3,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics for the node group.
+ CostInfo *CostInfo `protobuf:"bytes,4,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information for the node group.
+ NodeInfo *NodeInfo `protobuf:"bytes,5,opt,name=node_info,json=nodeInfo,proto3" json:"node_info,omitempty"` // Node count breakdown for the node group.
+ ResourceInfo *ResourceInfo `protobuf:"bytes,6,opt,name=resource_info,json=resourceInfo,proto3" json:"resource_info,omitempty"` // Resource scheduling information for the node group.
+ CostDataPoints []*CostDataPoint `protobuf:"bytes,11,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the node group.
+ ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,12,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the node group.
}
-func (x *Label) Reset() {
- *x = Label{}
+func (x *NodeGroup) Reset() {
+ *x = NodeGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[23]
+ mi := &file_api_v1_common_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *Label) String() string {
+func (x *NodeGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*Label) ProtoMessage() {}
+func (*NodeGroup) ProtoMessage() {}
-func (x *Label) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[23]
+func (x *NodeGroup) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4066,62 +4458,94 @@ func (x *Label) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use Label.ProtoReflect.Descriptor instead.
-func (*Label) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{23}
+// Deprecated: Use NodeGroup.ProtoReflect.Descriptor instead.
+func (*NodeGroup) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{21}
}
-func (x *Label) GetKey() string {
+func (x *NodeGroup) GetName() string {
if x != nil {
- return x.Key
+ return x.Name
}
return ""
}
-func (x *Label) GetValue() string {
+func (x *NodeGroup) GetNodes() []*Node {
if x != nil {
- return x.Value
+ return x.Nodes
}
- return ""
+ return nil
}
-// LabelSelector is a label query over a set of resources. The result of matchLabels and
-// matchExpressions are ANDed. An empty label selector matches all objects. A null
-// label selector matches no objects.
-type LabelSelector struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *NodeGroup) GetResourceMetrics() *ResourceMetrics {
+ if x != nil {
+ return x.ResourceMetrics
+ }
+ return nil
+}
- // Department-style labels for backwards compatibility
- //
- // Deprecated: Marked as deprecated in api/v1/common.proto.
- Labels []*Label `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty"` // Deprecated: Label is still used for departments but we will soon migrate to match_label and match_expressions
- // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- // map is equivalent to an element of matchExpressions, whose key field is "key", the
- // operator is "In", and the values array contains only "value". The requirements are ANDed.
- MatchLabels map[string]string `protobuf:"bytes,2,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // matchExpressions is a list of label selector requirements. The requirements are ANDed.
- MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,3,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"`
+func (x *NodeGroup) GetCostInfo() *CostInfo {
+ if x != nil {
+ return x.CostInfo
+ }
+ return nil
}
-func (x *LabelSelector) Reset() {
- *x = LabelSelector{}
+func (x *NodeGroup) GetNodeInfo() *NodeInfo {
+ if x != nil {
+ return x.NodeInfo
+ }
+ return nil
+}
+
+func (x *NodeGroup) GetResourceInfo() *ResourceInfo {
+ if x != nil {
+ return x.ResourceInfo
+ }
+ return nil
+}
+
+func (x *NodeGroup) GetCostDataPoints() []*CostDataPoint {
+ if x != nil {
+ return x.CostDataPoints
+ }
+ return nil
+}
+
+func (x *NodeGroup) GetResourceDataPoints() []*ResourceDataPoint {
+ if x != nil {
+ return x.ResourceDataPoints
+ }
+ return nil
+}
+
+// CostDataPoint represents cost information at a specific time.
+type CostDataPoint struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix timestamp (seconds since epoch).
+ CostInfo *CostInfo `protobuf:"bytes,2,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost information for the data point.
+}
+
+func (x *CostDataPoint) Reset() {
+ *x = CostDataPoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[24]
+ mi := &file_api_v1_common_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *LabelSelector) String() string {
+func (x *CostDataPoint) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*LabelSelector) ProtoMessage() {}
+func (*CostDataPoint) ProtoMessage() {}
-func (x *LabelSelector) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[24]
+func (x *CostDataPoint) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4132,60 +4556,108 @@ func (x *LabelSelector) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use LabelSelector.ProtoReflect.Descriptor instead.
-func (*LabelSelector) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{24}
+// Deprecated: Use CostDataPoint.ProtoReflect.Descriptor instead.
+func (*CostDataPoint) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{22}
}
-// Deprecated: Marked as deprecated in api/v1/common.proto.
-func (x *LabelSelector) GetLabels() []*Label {
+func (x *CostDataPoint) GetTimestamp() int64 {
if x != nil {
- return x.Labels
+ return x.Timestamp
}
- return nil
+ return 0
}
-func (x *LabelSelector) GetMatchLabels() map[string]string {
+func (x *CostDataPoint) GetCostInfo() *CostInfo {
if x != nil {
- return x.MatchLabels
+ return x.CostInfo
}
return nil
}
-func (x *LabelSelector) GetMatchExpressions() []*LabelSelectorRequirement {
+// ResourceDataPoint represents resource utilization at a specific time.
+type ResourceDataPoint struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix timestamp (seconds since epoch).
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,2,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource metrics for the data point.
+}
+
+func (x *ResourceDataPoint) Reset() {
+ *x = ResourceDataPoint{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ResourceDataPoint) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResourceDataPoint) ProtoMessage() {}
+
+func (x *ResourceDataPoint) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResourceDataPoint.ProtoReflect.Descriptor instead.
+func (*ResourceDataPoint) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *ResourceDataPoint) GetTimestamp() int64 {
if x != nil {
- return x.MatchExpressions
+ return x.Timestamp
+ }
+ return 0
+}
+
+func (x *ResourceDataPoint) GetResourceMetrics() *ResourceMetrics {
+ if x != nil {
+ return x.ResourceMetrics
}
return nil
}
-// RegexPattern represents a regex pattern with optional flags
-type RegexPattern struct {
+// ContainerTimeSeries contains time-series resource metrics for a single container.
+type ContainerTimeSeries struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"`
- Flags string `protobuf:"bytes,2,opt,name=flags,proto3" json:"flags,omitempty"` // case-insensitive, etc. (optional)
+ ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
+ ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,2,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"`
}
-func (x *RegexPattern) Reset() {
- *x = RegexPattern{}
+func (x *ContainerTimeSeries) Reset() {
+ *x = ContainerTimeSeries{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[25]
+ mi := &file_api_v1_common_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RegexPattern) String() string {
+func (x *ContainerTimeSeries) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RegexPattern) ProtoMessage() {}
+func (*ContainerTimeSeries) ProtoMessage() {}
-func (x *RegexPattern) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[25]
+func (x *ContainerTimeSeries) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4196,249 +4668,58 @@ func (x *RegexPattern) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RegexPattern.ProtoReflect.Descriptor instead.
-func (*RegexPattern) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{25}
+// Deprecated: Use ContainerTimeSeries.ProtoReflect.Descriptor instead.
+func (*ContainerTimeSeries) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{24}
}
-func (x *RegexPattern) GetPattern() string {
+func (x *ContainerTimeSeries) GetContainerName() string {
if x != nil {
- return x.Pattern
+ return x.ContainerName
}
return ""
}
-func (x *RegexPattern) GetFlags() string {
+func (x *ContainerTimeSeries) GetResourceDataPoints() []*ResourceDataPoint {
if x != nil {
- return x.Flags
+ return x.ResourceDataPoints
}
- return ""
+ return nil
}
-// ResourceDetails contains resource-specific information flattened for easy frontend access
-type ResourceDetails struct {
+type SavingsData struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Types that are assignable to Details:
- //
- // *ResourceDetails_PodDetails
- // *ResourceDetails_DeploymentDetails
- // *ResourceDetails_StatefulSetDetails
- // *ResourceDetails_DaemonSetDetails
- // *ResourceDetails_ReplicaSetDetails
- // *ResourceDetails_JobDetails
- // *ResourceDetails_CronJobDetails
- // *ResourceDetails_ServiceDetails
- // *ResourceDetails_IngressDetails
- // *ResourceDetails_PvcDetails
- // *ResourceDetails_PvDetails
- // *ResourceDetails_ScDetails
- // *ResourceDetails_NsDetails
- // *ResourceDetails_NodeDetails
- // *ResourceDetails_HpaDetails
- // *ResourceDetails_VpaDetails
- // *ResourceDetails_LimitRangeDetails
- // *ResourceDetails_ServiceAccountDetails
- // *ResourceDetails_RoleDetails
- // *ResourceDetails_RoleBindingDetails
- // *ResourceDetails_KedaScaledObjectDetails
- // *ResourceDetails_KarpenterResourceDetails
- // *ResourceDetails_PodDisruptionBudgetDetails
- // *ResourceDetails_ResourceQuotaDetails
- // *ResourceDetails_VolcanoJobDetails
- // *ResourceDetails_SparkApplicationDetails
- // *ResourceDetails_ScheduledSparkApplicationDetails
- Details isResourceDetails_Details `protobuf_oneof:"details"`
- // Common fields that can be flattened at this level for easier access
- // These are populated based on the resource type
- Phase string `protobuf:"bytes,10,opt,name=phase,proto3" json:"phase,omitempty"` // Pod phase: "Running", "Pending", "Succeeded", "Failed", "Unknown"
- PodIp string `protobuf:"bytes,11,opt,name=pod_ip,json=podIp,proto3" json:"pod_ip,omitempty"` // Pod IP from status.podIP
- HostIp string `protobuf:"bytes,12,opt,name=host_ip,json=hostIp,proto3" json:"host_ip,omitempty"` // Host IP from status.hostIP
- NodeName string `protobuf:"bytes,13,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` // Node name where pod is scheduled
- Ready bool `protobuf:"varint,14,opt,name=ready,proto3" json:"ready,omitempty"` // Pod ready status from conditions
- QosClass string `protobuf:"bytes,15,opt,name=qos_class,json=qosClass,proto3" json:"qos_class,omitempty"` // Pod QoS class: "Guaranteed", "Burstable", "BestEffort"
- ContainerCount int32 `protobuf:"varint,16,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` // Number of containers in the pod
- RestartCount int32 `protobuf:"varint,17,opt,name=restart_count,json=restartCount,proto3" json:"restart_count,omitempty"` // Sum of all container restart counts
- // Resource requests/limits from Pod spec (static declarations)
- CpuRequestsMillicores int64 `protobuf:"varint,20,opt,name=cpu_requests_millicores,json=cpuRequestsMillicores,proto3" json:"cpu_requests_millicores,omitempty"` // Sum of all container CPU requests in millicores
- MemoryRequestsBytes int64 `protobuf:"varint,21,opt,name=memory_requests_bytes,json=memoryRequestsBytes,proto3" json:"memory_requests_bytes,omitempty"` // Sum of all container memory requests in bytes
- CpuLimitsMillicores int64 `protobuf:"varint,22,opt,name=cpu_limits_millicores,json=cpuLimitsMillicores,proto3" json:"cpu_limits_millicores,omitempty"` // Sum of all container CPU limits in millicores
- MemoryLimitsBytes int64 `protobuf:"varint,23,opt,name=memory_limits_bytes,json=memoryLimitsBytes,proto3" json:"memory_limits_bytes,omitempty"` // Sum of all container memory limits in bytes
- StatusReason string `protobuf:"bytes,30,opt,name=status_reason,json=statusReason,proto3" json:"status_reason,omitempty"` // Reason for current status (e.g., "ImagePullBackOff", "Completed")
- ControlledBy string `protobuf:"bytes,31,opt,name=controlled_by,json=controlledBy,proto3" json:"controlled_by,omitempty"` // Friendly owner name (e.g., "deployment/my-app", "daemonset/logs")
- Age string `protobuf:"bytes,32,opt,name=age,proto3" json:"age,omitempty"` // Human-readable age since creation (e.g., "2h", "5m", "10d")
- // Deployment-specific fields (flattened for easy access)
- ReplicasDesired int32 `protobuf:"varint,40,opt,name=replicas_desired,json=replicasDesired,proto3" json:"replicas_desired,omitempty"` // Desired replicas from spec.replicas
- ReplicasReady int32 `protobuf:"varint,41,opt,name=replicas_ready,json=replicasReady,proto3" json:"replicas_ready,omitempty"` // Ready replicas from status.readyReplicas
- ReplicasAvailable int32 `protobuf:"varint,42,opt,name=replicas_available,json=replicasAvailable,proto3" json:"replicas_available,omitempty"` // Available replicas from status.availableReplicas
- ReplicasUpdated int32 `protobuf:"varint,43,opt,name=replicas_updated,json=replicasUpdated,proto3" json:"replicas_updated,omitempty"` // Updated replicas from status.updatedReplicas
- StrategyType string `protobuf:"bytes,44,opt,name=strategy_type,json=strategyType,proto3" json:"strategy_type,omitempty"` // Deployment strategy: "RollingUpdate", "Recreate"
- Available bool `protobuf:"varint,45,opt,name=available,proto3" json:"available,omitempty"` // Deployment Available condition status
- Progressing bool `protobuf:"varint,46,opt,name=progressing,proto3" json:"progressing,omitempty"` // Deployment Progressing condition status
- DeploymentStatus string `protobuf:"bytes,47,opt,name=deployment_status,json=deploymentStatus,proto3" json:"deployment_status,omitempty"` // Overall status: "Available", "Progressing", "Failed"
- Images []string `protobuf:"bytes,48,rep,name=images,proto3" json:"images,omitempty"` // Unique container images used
- // StatefulSet-specific fields (reuses deployment replica fields 40-43)
- ServiceName string `protobuf:"bytes,60,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // Headless service name for StatefulSet
- PodManagementPolicy string `protobuf:"bytes,61,opt,name=pod_management_policy,json=podManagementPolicy,proto3" json:"pod_management_policy,omitempty"` // "OrderedReady" or "Parallel"
- UpdateStrategyType string `protobuf:"bytes,62,opt,name=update_strategy_type,json=updateStrategyType,proto3" json:"update_strategy_type,omitempty"` // "RollingUpdate" (StatefulSet strategy)
- VolumeClaimTemplateCount int32 `protobuf:"varint,63,opt,name=volume_claim_template_count,json=volumeClaimTemplateCount,proto3" json:"volume_claim_template_count,omitempty"` // Number of persistent volume claim templates
- PvcRetentionPolicy string `protobuf:"bytes,64,opt,name=pvc_retention_policy,json=pvcRetentionPolicy,proto3" json:"pvc_retention_policy,omitempty"` // "Retain" or "Delete" for PVC retention
- CurrentRevision string `protobuf:"bytes,65,opt,name=current_revision,json=currentRevision,proto3" json:"current_revision,omitempty"` // Current StatefulSet revision
- UpdateRevision string `protobuf:"bytes,66,opt,name=update_revision,json=updateRevision,proto3" json:"update_revision,omitempty"` // Update StatefulSet revision
- // DaemonSet-specific fields (nodes instead of replicas)
- NodesDesired int32 `protobuf:"varint,70,opt,name=nodes_desired,json=nodesDesired,proto3" json:"nodes_desired,omitempty"` // Desired nodes to schedule on (desiredNumberScheduled)
- NodesReady int32 `protobuf:"varint,71,opt,name=nodes_ready,json=nodesReady,proto3" json:"nodes_ready,omitempty"` // Ready nodes (numberReady)
- NodesAvailable int32 `protobuf:"varint,72,opt,name=nodes_available,json=nodesAvailable,proto3" json:"nodes_available,omitempty"` // Available nodes (numberAvailable)
- NodesCurrent int32 `protobuf:"varint,73,opt,name=nodes_current,json=nodesCurrent,proto3" json:"nodes_current,omitempty"` // Currently scheduled nodes (currentNumberScheduled)
- NodesUpdated int32 `protobuf:"varint,74,opt,name=nodes_updated,json=nodesUpdated,proto3" json:"nodes_updated,omitempty"` // Updated nodes (updatedNumberScheduled)
- NodesMisscheduled int32 `protobuf:"varint,75,opt,name=nodes_misscheduled,json=nodesMisscheduled,proto3" json:"nodes_misscheduled,omitempty"` // Misscheduled nodes (numberMisscheduled)
- MaxUnavailable string `protobuf:"bytes,76,opt,name=max_unavailable,json=maxUnavailable,proto3" json:"max_unavailable,omitempty"` // RollingUpdate maxUnavailable setting
- PriorityClass string `protobuf:"bytes,77,opt,name=priority_class,json=priorityClass,proto3" json:"priority_class,omitempty"` // Priority class name
- // Job-specific fields
- JobCompletionsDesired int32 `protobuf:"varint,80,opt,name=job_completions_desired,json=jobCompletionsDesired,proto3" json:"job_completions_desired,omitempty"` // Desired number of completions from spec.completions
- JobCompletionsSucceeded int32 `protobuf:"varint,81,opt,name=job_completions_succeeded,json=jobCompletionsSucceeded,proto3" json:"job_completions_succeeded,omitempty"` // Number of succeeded pods from status.succeeded
- JobParallelism int32 `protobuf:"varint,82,opt,name=job_parallelism,json=jobParallelism,proto3" json:"job_parallelism,omitempty"` // Maximum number of pods that can run in parallel
- JobBackoffLimit int32 `protobuf:"varint,83,opt,name=job_backoff_limit,json=jobBackoffLimit,proto3" json:"job_backoff_limit,omitempty"` // Number of retries before marking job as failed
- JobCompletionMode string `protobuf:"bytes,84,opt,name=job_completion_mode,json=jobCompletionMode,proto3" json:"job_completion_mode,omitempty"` // "NonIndexed" or "Indexed"
- JobSuspended bool `protobuf:"varint,85,opt,name=job_suspended,json=jobSuspended,proto3" json:"job_suspended,omitempty"` // Whether the job is suspended
- JobDuration string `protobuf:"bytes,86,opt,name=job_duration,json=jobDuration,proto3" json:"job_duration,omitempty"` // Duration from start to completion (or current time)
- JobStatus string `protobuf:"bytes,87,opt,name=job_status,json=jobStatus,proto3" json:"job_status,omitempty"` // Overall job status: "Complete", "Failed", "Running", "Suspended"
- JobActivePods int32 `protobuf:"varint,88,opt,name=job_active_pods,json=jobActivePods,proto3" json:"job_active_pods,omitempty"` // Number of actively running pods
- JobFailedPods int32 `protobuf:"varint,89,opt,name=job_failed_pods,json=jobFailedPods,proto3" json:"job_failed_pods,omitempty"` // Number of failed pods
- // CronJob-specific fields
- CronSchedule string `protobuf:"bytes,90,opt,name=cron_schedule,json=cronSchedule,proto3" json:"cron_schedule,omitempty"` // Cron schedule expression (e.g., "0 */6 * * *")
- CronSuspended bool `protobuf:"varint,91,opt,name=cron_suspended,json=cronSuspended,proto3" json:"cron_suspended,omitempty"` // Whether the cron job is suspended
- CronActiveJobs int32 `protobuf:"varint,92,opt,name=cron_active_jobs,json=cronActiveJobs,proto3" json:"cron_active_jobs,omitempty"` // Number of currently active jobs
- CronLastScheduleTime string `protobuf:"bytes,93,opt,name=cron_last_schedule_time,json=cronLastScheduleTime,proto3" json:"cron_last_schedule_time,omitempty"` // Last time the job was scheduled (RFC3339 format)
- CronNextScheduleTime string `protobuf:"bytes,94,opt,name=cron_next_schedule_time,json=cronNextScheduleTime,proto3" json:"cron_next_schedule_time,omitempty"` // Next scheduled time (calculated, RFC3339 format)
- CronConcurrencyPolicy string `protobuf:"bytes,95,opt,name=cron_concurrency_policy,json=cronConcurrencyPolicy,proto3" json:"cron_concurrency_policy,omitempty"` // "Allow", "Forbid", "Replace"
- CronSuccessfulJobsLimit int32 `protobuf:"varint,96,opt,name=cron_successful_jobs_limit,json=cronSuccessfulJobsLimit,proto3" json:"cron_successful_jobs_limit,omitempty"` // Number of successful job history to retain
- CronFailedJobsLimit int32 `protobuf:"varint,97,opt,name=cron_failed_jobs_limit,json=cronFailedJobsLimit,proto3" json:"cron_failed_jobs_limit,omitempty"` // Number of failed job history to retain
- CronStartingDeadlineSeconds int32 `protobuf:"varint,98,opt,name=cron_starting_deadline_seconds,json=cronStartingDeadlineSeconds,proto3" json:"cron_starting_deadline_seconds,omitempty"` // Optional deadline in seconds for starting the job
- // Service-specific fields
- ServiceType string `protobuf:"bytes,100,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"` // Service type: "ClusterIP", "NodePort", "LoadBalancer", "ExternalName"
- ServiceClusterIp string `protobuf:"bytes,101,opt,name=service_cluster_ip,json=serviceClusterIp,proto3" json:"service_cluster_ip,omitempty"` // Cluster IP address
- ServiceExternalIps []string `protobuf:"bytes,102,rep,name=service_external_ips,json=serviceExternalIps,proto3" json:"service_external_ips,omitempty"` // External IP addresses (from spec or loadbalancer status)
- ServicePorts []*ServicePort `protobuf:"bytes,103,rep,name=service_ports,json=servicePorts,proto3" json:"service_ports,omitempty"` // Service ports information
- ServiceSelector map[string]string `protobuf:"bytes,104,rep,name=service_selector,json=serviceSelector,proto3" json:"service_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Service selector labels
- ServiceSessionAffinity string `protobuf:"bytes,105,opt,name=service_session_affinity,json=serviceSessionAffinity,proto3" json:"service_session_affinity,omitempty"` // Session affinity: "None" or "ClientIP"
- ServiceExternalTrafficPolicy string `protobuf:"bytes,106,opt,name=service_external_traffic_policy,json=serviceExternalTrafficPolicy,proto3" json:"service_external_traffic_policy,omitempty"` // "Cluster" or "Local"
- ServiceInternalTrafficPolicy string `protobuf:"bytes,107,opt,name=service_internal_traffic_policy,json=serviceInternalTrafficPolicy,proto3" json:"service_internal_traffic_policy,omitempty"` // "Cluster" or "Local"
- ServiceLoadBalancerSourceRanges []string `protobuf:"bytes,108,rep,name=service_load_balancer_source_ranges,json=serviceLoadBalancerSourceRanges,proto3" json:"service_load_balancer_source_ranges,omitempty"` // LoadBalancer source ranges
- ServiceLoadBalancerClass string `protobuf:"bytes,109,opt,name=service_load_balancer_class,json=serviceLoadBalancerClass,proto3" json:"service_load_balancer_class,omitempty"` // LoadBalancer class
- ServiceIpFamilies []string `protobuf:"bytes,110,rep,name=service_ip_families,json=serviceIpFamilies,proto3" json:"service_ip_families,omitempty"` // IP families: ["IPv4"], ["IPv6"], or ["IPv4", "IPv6"]
- ServiceIpFamilyPolicy string `protobuf:"bytes,111,opt,name=service_ip_family_policy,json=serviceIpFamilyPolicy,proto3" json:"service_ip_family_policy,omitempty"` // "SingleStack", "PreferDualStack", "RequireDualStack"
- // Ingress-specific fields
- IngressClassName string `protobuf:"bytes,120,opt,name=ingress_class_name,json=ingressClassName,proto3" json:"ingress_class_name,omitempty"` // Ingress class name (e.g., "nginx", "traefik")
- IngressHosts []string `protobuf:"bytes,121,rep,name=ingress_hosts,json=ingressHosts,proto3" json:"ingress_hosts,omitempty"` // List of hosts served by this ingress
- IngressPaths []string `protobuf:"bytes,122,rep,name=ingress_paths,json=ingressPaths,proto3" json:"ingress_paths,omitempty"` // List of paths served by this ingress
- IngressBackends []string `protobuf:"bytes,123,rep,name=ingress_backends,json=ingressBackends,proto3" json:"ingress_backends,omitempty"` // List of backend services
- IngressTlsHosts []string `protobuf:"bytes,124,rep,name=ingress_tls_hosts,json=ingressTlsHosts,proto3" json:"ingress_tls_hosts,omitempty"` // Hosts covered by TLS
- IngressTlsSecrets []string `protobuf:"bytes,125,rep,name=ingress_tls_secrets,json=ingressTlsSecrets,proto3" json:"ingress_tls_secrets,omitempty"` // TLS secret names
- IngressLoadBalancerIps []string `protobuf:"bytes,126,rep,name=ingress_load_balancer_ips,json=ingressLoadBalancerIps,proto3" json:"ingress_load_balancer_ips,omitempty"` // Load balancer IPs/hostnames from status
- IngressRulesCount int32 `protobuf:"varint,127,opt,name=ingress_rules_count,json=ingressRulesCount,proto3" json:"ingress_rules_count,omitempty"` // Number of ingress rules
- IngressTlsCount int32 `protobuf:"varint,128,opt,name=ingress_tls_count,json=ingressTlsCount,proto3" json:"ingress_tls_count,omitempty"` // Number of TLS configurations
- IngressHasDefaultBackend bool `protobuf:"varint,129,opt,name=ingress_has_default_backend,json=ingressHasDefaultBackend,proto3" json:"ingress_has_default_backend,omitempty"` // Whether ingress has a default backend
- // PersistentVolumeClaim-specific fields
- PvcStorageClassName string `protobuf:"bytes,130,opt,name=pvc_storage_class_name,json=pvcStorageClassName,proto3" json:"pvc_storage_class_name,omitempty"` // Storage class name (e.g., "gp2", "fast-ssd")
- PvcRequestedCapacity string `protobuf:"bytes,131,opt,name=pvc_requested_capacity,json=pvcRequestedCapacity,proto3" json:"pvc_requested_capacity,omitempty"` // Requested storage capacity (e.g., "50Gi")
- PvcActualCapacity string `protobuf:"bytes,132,opt,name=pvc_actual_capacity,json=pvcActualCapacity,proto3" json:"pvc_actual_capacity,omitempty"` // Actual allocated capacity from status (e.g., "100Gi")
- PvcAccessModes []string `protobuf:"bytes,133,rep,name=pvc_access_modes,json=pvcAccessModes,proto3" json:"pvc_access_modes,omitempty"` // Access modes: ["ReadWriteOnce", "ReadOnlyMany", "ReadWriteMany"]
- PvcVolumeMode string `protobuf:"bytes,134,opt,name=pvc_volume_mode,json=pvcVolumeMode,proto3" json:"pvc_volume_mode,omitempty"` // Volume mode: "Filesystem" or "Block"
- PvcVolumeName string `protobuf:"bytes,135,opt,name=pvc_volume_name,json=pvcVolumeName,proto3" json:"pvc_volume_name,omitempty"` // Bound persistent volume name
- PvcStatus string `protobuf:"bytes,136,opt,name=pvc_status,json=pvcStatus,proto3" json:"pvc_status,omitempty"` // PVC status: "Pending", "Bound", "Lost"
- PvcIsBound bool `protobuf:"varint,137,opt,name=pvc_is_bound,json=pvcIsBound,proto3" json:"pvc_is_bound,omitempty"` // Whether PVC is bound to a PV
- PvcSelectorMatchLabels string `protobuf:"bytes,138,opt,name=pvc_selector_match_labels,json=pvcSelectorMatchLabels,proto3" json:"pvc_selector_match_labels,omitempty"` // Selector labels for PV binding (JSON string)
- PvcAllowedTopologies []string `protobuf:"bytes,139,rep,name=pvc_allowed_topologies,json=pvcAllowedTopologies,proto3" json:"pvc_allowed_topologies,omitempty"` // Allowed node topologies
- // PersistentVolume-specific fields
- PvStorageClassName string `protobuf:"bytes,150,opt,name=pv_storage_class_name,json=pvStorageClassName,proto3" json:"pv_storage_class_name,omitempty"` // Storage class name (e.g., "standard-rwo", "fast-ssd")
- PvCapacity string `protobuf:"bytes,151,opt,name=pv_capacity,json=pvCapacity,proto3" json:"pv_capacity,omitempty"` // Storage capacity (e.g., "5Gi")
- PvAccessModes []string `protobuf:"bytes,152,rep,name=pv_access_modes,json=pvAccessModes,proto3" json:"pv_access_modes,omitempty"` // Access modes: ["ReadWriteOnce", "ReadOnlyMany", "ReadWriteMany"]
- PvReclaimPolicy string `protobuf:"bytes,153,opt,name=pv_reclaim_policy,json=pvReclaimPolicy,proto3" json:"pv_reclaim_policy,omitempty"` // Reclaim policy: "Retain", "Delete", "Recycle"
- PvClaimRefName string `protobuf:"bytes,154,opt,name=pv_claim_ref_name,json=pvClaimRefName,proto3" json:"pv_claim_ref_name,omitempty"` // Referenced PVC name
- PvClaimRefNamespace string `protobuf:"bytes,155,opt,name=pv_claim_ref_namespace,json=pvClaimRefNamespace,proto3" json:"pv_claim_ref_namespace,omitempty"` // Referenced PVC namespace
- PvStatus string `protobuf:"bytes,156,opt,name=pv_status,json=pvStatus,proto3" json:"pv_status,omitempty"` // PV status: "Available", "Bound", "Released", "Failed"
- PvIsBound bool `protobuf:"varint,157,opt,name=pv_is_bound,json=pvIsBound,proto3" json:"pv_is_bound,omitempty"` // Whether PV is bound to a PVC
- PvVolumeMode string `protobuf:"bytes,158,opt,name=pv_volume_mode,json=pvVolumeMode,proto3" json:"pv_volume_mode,omitempty"` // Volume mode: "Filesystem" or "Block"
- PvCsiDriver string `protobuf:"bytes,159,opt,name=pv_csi_driver,json=pvCsiDriver,proto3" json:"pv_csi_driver,omitempty"` // CSI driver name (if using CSI)
- PvVolumeSourceType string `protobuf:"bytes,160,opt,name=pv_volume_source_type,json=pvVolumeSourceType,proto3" json:"pv_volume_source_type,omitempty"` // Volume source type: "CSI", "HostPath", "NFS", "AWS EBS", etc.
- PvNodeAffinityZones []string `protobuf:"bytes,161,rep,name=pv_node_affinity_zones,json=pvNodeAffinityZones,proto3" json:"pv_node_affinity_zones,omitempty"` // Node affinity zones/regions
- // StorageClass-specific fields
- ScProvisioner string `protobuf:"bytes,170,opt,name=sc_provisioner,json=scProvisioner,proto3" json:"sc_provisioner,omitempty"` // Storage provisioner (e.g., "kubernetes.io/aws-ebs", "pd.csi.storage.gke.io")
- ScReclaimPolicy string `protobuf:"bytes,171,opt,name=sc_reclaim_policy,json=scReclaimPolicy,proto3" json:"sc_reclaim_policy,omitempty"` // Default reclaim policy: "Retain", "Delete"
- ScVolumeBindingMode string `protobuf:"bytes,172,opt,name=sc_volume_binding_mode,json=scVolumeBindingMode,proto3" json:"sc_volume_binding_mode,omitempty"` // Volume binding mode: "Immediate", "WaitForFirstConsumer"
- ScAllowVolumeExpansion bool `protobuf:"varint,173,opt,name=sc_allow_volume_expansion,json=scAllowVolumeExpansion,proto3" json:"sc_allow_volume_expansion,omitempty"` // Whether volume expansion is allowed
- ScParameters map[string]string `protobuf:"bytes,174,rep,name=sc_parameters,json=scParameters,proto3" json:"sc_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Storage class parameters (type, encrypted, etc.)
- ScAllowedTopologies []string `protobuf:"bytes,175,rep,name=sc_allowed_topologies,json=scAllowedTopologies,proto3" json:"sc_allowed_topologies,omitempty"` // Allowed topologies for volumes
- ScMountOptions []string `protobuf:"bytes,176,rep,name=sc_mount_options,json=scMountOptions,proto3" json:"sc_mount_options,omitempty"` // Default mount options
- // Namespace fields (name|status|age + additional)
- NsStatus string `protobuf:"bytes,177,opt,name=ns_status,json=nsStatus,proto3" json:"ns_status,omitempty"` // Namespace status/phase: "Active", "Terminating"
- NsFinalizers []string `protobuf:"bytes,178,rep,name=ns_finalizers,json=nsFinalizers,proto3" json:"ns_finalizers,omitempty"` // Finalizers preventing deletion
- // Node fields (name|cpu|memory|ready|taints|roles|internal IP|external IP|version|age + additional)
- NodeCpuCapacity string `protobuf:"bytes,179,opt,name=node_cpu_capacity,json=nodeCpuCapacity,proto3" json:"node_cpu_capacity,omitempty"` // CPU capacity (e.g., "16", "15890m")
- NodeMemoryCapacity string `protobuf:"bytes,180,opt,name=node_memory_capacity,json=nodeMemoryCapacity,proto3" json:"node_memory_capacity,omitempty"` // Memory capacity (e.g., "64422188Ki")
- NodeReady bool `protobuf:"varint,181,opt,name=node_ready,json=nodeReady,proto3" json:"node_ready,omitempty"` // Node ready status
- NodeTaints []*NodeTaint `protobuf:"bytes,182,rep,name=node_taints,json=nodeTaints,proto3" json:"node_taints,omitempty"` // Node taints affecting scheduling
- NodeRoles []string `protobuf:"bytes,183,rep,name=node_roles,json=nodeRoles,proto3" json:"node_roles,omitempty"` // Node roles (master, worker, etc.)
- NodeInternalIp string `protobuf:"bytes,184,opt,name=node_internal_ip,json=nodeInternalIp,proto3" json:"node_internal_ip,omitempty"` // Internal IP address
- NodeExternalIp string `protobuf:"bytes,185,opt,name=node_external_ip,json=nodeExternalIp,proto3" json:"node_external_ip,omitempty"` // External IP address (if any)
- NodeVersion string `protobuf:"bytes,186,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` // Kubelet version
- NodeInstanceType string `protobuf:"bytes,187,opt,name=node_instance_type,json=nodeInstanceType,proto3" json:"node_instance_type,omitempty"` // Cloud instance type (e.g., "m5.xlarge")
- NodeOs string `protobuf:"bytes,188,opt,name=node_os,json=nodeOs,proto3" json:"node_os,omitempty"` // Operating system
- NodeContainerRuntime string `protobuf:"bytes,189,opt,name=node_container_runtime,json=nodeContainerRuntime,proto3" json:"node_container_runtime,omitempty"` // Container runtime version
- NodeImageCount int32 `protobuf:"varint,190,opt,name=node_image_count,json=nodeImageCount,proto3" json:"node_image_count,omitempty"` // Number of container images
- // HorizontalPodAutoscaler-specific fields
- HpaMinReplicas int32 `protobuf:"varint,200,opt,name=hpa_min_replicas,json=hpaMinReplicas,proto3" json:"hpa_min_replicas,omitempty"` // Minimum replicas from spec.minReplicas
- HpaMaxReplicas int32 `protobuf:"varint,201,opt,name=hpa_max_replicas,json=hpaMaxReplicas,proto3" json:"hpa_max_replicas,omitempty"` // Maximum replicas from spec.maxReplicas
- HpaCurrentReplicas int32 `protobuf:"varint,202,opt,name=hpa_current_replicas,json=hpaCurrentReplicas,proto3" json:"hpa_current_replicas,omitempty"` // Current replicas from status.currentReplicas
- HpaDesiredReplicas int32 `protobuf:"varint,203,opt,name=hpa_desired_replicas,json=hpaDesiredReplicas,proto3" json:"hpa_desired_replicas,omitempty"` // Desired replicas from status.desiredReplicas
- HpaMetricsCount int32 `protobuf:"varint,204,opt,name=hpa_metrics_count,json=hpaMetricsCount,proto3" json:"hpa_metrics_count,omitempty"` // Number of metrics configured
- HpaStatus string `protobuf:"bytes,205,opt,name=hpa_status,json=hpaStatus,proto3" json:"hpa_status,omitempty"` // HPA status: "Active", "Inactive", "Unknown"
- HpaScaleUpStabilization int32 `protobuf:"varint,206,opt,name=hpa_scale_up_stabilization,json=hpaScaleUpStabilization,proto3" json:"hpa_scale_up_stabilization,omitempty"` // Scale up stabilization window seconds
- HpaScaleDownStabilization int32 `protobuf:"varint,207,opt,name=hpa_scale_down_stabilization,json=hpaScaleDownStabilization,proto3" json:"hpa_scale_down_stabilization,omitempty"` // Scale down stabilization window seconds
- // VerticalPodAutoscaler-specific fields
- VpaUpdateMode string `protobuf:"bytes,210,opt,name=vpa_update_mode,json=vpaUpdateMode,proto3" json:"vpa_update_mode,omitempty"` // Update mode: "Off", "Initial", "Recreation", "Auto"
- VpaPoliciesCount int32 `protobuf:"varint,211,opt,name=vpa_policies_count,json=vpaPoliciesCount,proto3" json:"vpa_policies_count,omitempty"` // Number of container policies configured
- VpaRecommendationsCount int32 `protobuf:"varint,212,opt,name=vpa_recommendations_count,json=vpaRecommendationsCount,proto3" json:"vpa_recommendations_count,omitempty"` // Number of container recommendations available
- VpaCpuTarget string `protobuf:"bytes,213,opt,name=vpa_cpu_target,json=vpaCpuTarget,proto3" json:"vpa_cpu_target,omitempty"` // CPU target recommendation (e.g., "100m")
- VpaMemoryTarget string `protobuf:"bytes,214,opt,name=vpa_memory_target,json=vpaMemoryTarget,proto3" json:"vpa_memory_target,omitempty"` // Memory target recommendation (e.g., "128Mi")
- VpaStatus string `protobuf:"bytes,215,opt,name=vpa_status,json=vpaStatus,proto3" json:"vpa_status,omitempty"` // VPA status: "Active", "No Recommendations"
- // LimitRange-specific fields
- LimitRangeItemsCount int32 `protobuf:"varint,220,opt,name=limit_range_items_count,json=limitRangeItemsCount,proto3" json:"limit_range_items_count,omitempty"` // Number of limit items configured
- LimitRangeTypes []string `protobuf:"bytes,221,rep,name=limit_range_types,json=limitRangeTypes,proto3" json:"limit_range_types,omitempty"` // Types of limits: ["Container", "Pod", "PersistentVolumeClaim"]
- LimitRangeHasDefaults bool `protobuf:"varint,222,opt,name=limit_range_has_defaults,json=limitRangeHasDefaults,proto3" json:"limit_range_has_defaults,omitempty"` // Whether default limits/requests are set
- LimitRangeMaxCpu string `protobuf:"bytes,223,opt,name=limit_range_max_cpu,json=limitRangeMaxCpu,proto3" json:"limit_range_max_cpu,omitempty"` // Maximum CPU limit (e.g., "2")
- LimitRangeMaxMemory string `protobuf:"bytes,224,opt,name=limit_range_max_memory,json=limitRangeMaxMemory,proto3" json:"limit_range_max_memory,omitempty"` // Maximum memory limit (e.g., "2Gi")
- LimitRangeMinCpu string `protobuf:"bytes,225,opt,name=limit_range_min_cpu,json=limitRangeMinCpu,proto3" json:"limit_range_min_cpu,omitempty"` // Minimum CPU limit (e.g., "100m")
- LimitRangeMinMemory string `protobuf:"bytes,226,opt,name=limit_range_min_memory,json=limitRangeMinMemory,proto3" json:"limit_range_min_memory,omitempty"` // Minimum memory limit (e.g., "64Mi")
- LimitRangeDefaultCpuLimit string `protobuf:"bytes,227,opt,name=limit_range_default_cpu_limit,json=limitRangeDefaultCpuLimit,proto3" json:"limit_range_default_cpu_limit,omitempty"` // Default CPU limit (e.g., "500m")
- LimitRangeDefaultMemoryLimit string `protobuf:"bytes,228,opt,name=limit_range_default_memory_limit,json=limitRangeDefaultMemoryLimit,proto3" json:"limit_range_default_memory_limit,omitempty"` // Default memory limit (e.g., "512Mi")
- LimitRangeDefaultCpuRequest string `protobuf:"bytes,229,opt,name=limit_range_default_cpu_request,json=limitRangeDefaultCpuRequest,proto3" json:"limit_range_default_cpu_request,omitempty"` // Default CPU request (e.g., "200m")
- LimitRangeDefaultMemoryRequest string `protobuf:"bytes,230,opt,name=limit_range_default_memory_request,json=limitRangeDefaultMemoryRequest,proto3" json:"limit_range_default_memory_request,omitempty"` // Default memory request (e.g., "256Mi")
- LimitRangeStatus string `protobuf:"bytes,231,opt,name=limit_range_status,json=limitRangeStatus,proto3" json:"limit_range_status,omitempty"` // LimitRange status (always "Active")
- ResourceVersion string `protobuf:"bytes,240,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` // Service account resource version
- ApiVersion string `protobuf:"bytes,241,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version
+ CpuSavingsMillicores float64 `protobuf:"fixed64,1,opt,name=cpu_savings_millicores,json=cpuSavingsMillicores,proto3" json:"cpu_savings_millicores,omitempty"`
+ CpuHighWaterMark float64 `protobuf:"fixed64,2,opt,name=cpu_high_water_mark,json=cpuHighWaterMark,proto3" json:"cpu_high_water_mark,omitempty"`
+ ActualCpuRequest float64 `protobuf:"fixed64,3,opt,name=actual_cpu_request,json=actualCpuRequest,proto3" json:"actual_cpu_request,omitempty"`
+ CumulativeCpuSavingsMillicores float64 `protobuf:"fixed64,4,opt,name=cumulative_cpu_savings_millicores,json=cumulativeCpuSavingsMillicores,proto3" json:"cumulative_cpu_savings_millicores,omitempty"`
+ CpuCostWithoutAutoscaler float64 `protobuf:"fixed64,5,opt,name=cpu_cost_without_autoscaler,json=cpuCostWithoutAutoscaler,proto3" json:"cpu_cost_without_autoscaler,omitempty"` // hypothetical cost w/ chart-level request
+ ActualCpuCost float64 `protobuf:"fixed64,6,opt,name=actual_cpu_cost,json=actualCpuCost,proto3" json:"actual_cpu_cost,omitempty"` // what you paid
+ CpuCostSavings float64 `protobuf:"fixed64,7,opt,name=cpu_cost_savings,json=cpuCostSavings,proto3" json:"cpu_cost_savings,omitempty"` // autoscaler impact (5 - 6)
+ CpuUsageCost float64 `protobuf:"fixed64,8,opt,name=cpu_usage_cost,json=cpuUsageCost,proto3" json:"cpu_usage_cost,omitempty"` // based on actual usage
+ CpuCostWaste float64 `protobuf:"fixed64,9,opt,name=cpu_cost_waste,json=cpuCostWaste,proto3" json:"cpu_cost_waste,omitempty"` // 6 - 8
}
-func (x *ResourceDetails) Reset() {
- *x = ResourceDetails{}
+func (x *SavingsData) Reset() {
+ *x = SavingsData{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[26]
+ mi := &file_api_v1_common_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceDetails) String() string {
+func (x *SavingsData) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceDetails) ProtoMessage() {}
+func (*SavingsData) ProtoMessage() {}
-func (x *ResourceDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[26]
+func (x *SavingsData) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4449,1483 +4730,2592 @@ func (x *ResourceDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceDetails.ProtoReflect.Descriptor instead.
-func (*ResourceDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{26}
+// Deprecated: Use SavingsData.ProtoReflect.Descriptor instead.
+func (*SavingsData) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{25}
}
-func (m *ResourceDetails) GetDetails() isResourceDetails_Details {
- if m != nil {
- return m.Details
+func (x *SavingsData) GetCpuSavingsMillicores() float64 {
+ if x != nil {
+ return x.CpuSavingsMillicores
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetPodDetails() *PodDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_PodDetails); ok {
- return x.PodDetails
+func (x *SavingsData) GetCpuHighWaterMark() float64 {
+ if x != nil {
+ return x.CpuHighWaterMark
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetDeploymentDetails() *DeploymentDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_DeploymentDetails); ok {
- return x.DeploymentDetails
+func (x *SavingsData) GetActualCpuRequest() float64 {
+ if x != nil {
+ return x.ActualCpuRequest
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetStatefulSetDetails() *StatefulSetDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_StatefulSetDetails); ok {
- return x.StatefulSetDetails
+func (x *SavingsData) GetCumulativeCpuSavingsMillicores() float64 {
+ if x != nil {
+ return x.CumulativeCpuSavingsMillicores
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetDaemonSetDetails() *DaemonSetDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_DaemonSetDetails); ok {
- return x.DaemonSetDetails
+func (x *SavingsData) GetCpuCostWithoutAutoscaler() float64 {
+ if x != nil {
+ return x.CpuCostWithoutAutoscaler
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetReplicaSetDetails() *ReplicaSetDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_ReplicaSetDetails); ok {
- return x.ReplicaSetDetails
+func (x *SavingsData) GetActualCpuCost() float64 {
+ if x != nil {
+ return x.ActualCpuCost
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetJobDetails() *JobDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_JobDetails); ok {
- return x.JobDetails
+func (x *SavingsData) GetCpuCostSavings() float64 {
+ if x != nil {
+ return x.CpuCostSavings
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetCronJobDetails() *CronJobDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_CronJobDetails); ok {
- return x.CronJobDetails
+func (x *SavingsData) GetCpuUsageCost() float64 {
+ if x != nil {
+ return x.CpuUsageCost
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetServiceDetails() *ServiceDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_ServiceDetails); ok {
- return x.ServiceDetails
+func (x *SavingsData) GetCpuCostWaste() float64 {
+ if x != nil {
+ return x.CpuCostWaste
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetIngressDetails() *IngressDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_IngressDetails); ok {
- return x.IngressDetails
- }
- return nil
-}
+type SavingsDataPoint struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ResourceDetails) GetPvcDetails() *PersistentVolumeClaimDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_PvcDetails); ok {
- return x.PvcDetails
- }
- return nil
+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ SavingsData *SavingsData `protobuf:"bytes,2,opt,name=savings_data,json=savingsData,proto3" json:"savings_data,omitempty"`
}
-func (x *ResourceDetails) GetPvDetails() *PersistentVolumeDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_PvDetails); ok {
- return x.PvDetails
+func (x *SavingsDataPoint) Reset() {
+ *x = SavingsDataPoint{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *ResourceDetails) GetScDetails() *StorageClassDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_ScDetails); ok {
- return x.ScDetails
- }
- return nil
+func (x *SavingsDataPoint) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetNsDetails() *NamespaceDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_NsDetails); ok {
- return x.NsDetails
+func (*SavingsDataPoint) ProtoMessage() {}
+
+func (x *SavingsDataPoint) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetNodeDetails() *NodeDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_NodeDetails); ok {
- return x.NodeDetails
- }
- return nil
+// Deprecated: Use SavingsDataPoint.ProtoReflect.Descriptor instead.
+func (*SavingsDataPoint) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{26}
}
-func (x *ResourceDetails) GetHpaDetails() *HPADetails {
- if x, ok := x.GetDetails().(*ResourceDetails_HpaDetails); ok {
- return x.HpaDetails
+func (x *SavingsDataPoint) GetTimestamp() int64 {
+ if x != nil {
+ return x.Timestamp
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetVpaDetails() *VPADetails {
- if x, ok := x.GetDetails().(*ResourceDetails_VpaDetails); ok {
- return x.VpaDetails
+func (x *SavingsDataPoint) GetSavingsData() *SavingsData {
+ if x != nil {
+ return x.SavingsData
}
return nil
}
-func (x *ResourceDetails) GetLimitRangeDetails() *LimitRangeDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_LimitRangeDetails); ok {
- return x.LimitRangeDetails
- }
- return nil
+type SavingsTimeSeries struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SavingsDatapoints []*SavingsDataPoint `protobuf:"bytes,1,rep,name=savings_datapoints,json=savingsDatapoints,proto3" json:"savings_datapoints,omitempty"`
+ TotalCpuSavingsMillicores float64 `protobuf:"fixed64,2,opt,name=total_cpu_savings_millicores,json=totalCpuSavingsMillicores,proto3" json:"total_cpu_savings_millicores,omitempty"`
+ TotalCpuCostSavings float64 `protobuf:"fixed64,3,opt,name=total_cpu_cost_savings,json=totalCpuCostSavings,proto3" json:"total_cpu_cost_savings,omitempty"`
+ TotalCpuCostWaste float64 `protobuf:"fixed64,4,opt,name=total_cpu_cost_waste,json=totalCpuCostWaste,proto3" json:"total_cpu_cost_waste,omitempty"`
}
-func (x *ResourceDetails) GetServiceAccountDetails() *ServiceAccountDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_ServiceAccountDetails); ok {
- return x.ServiceAccountDetails
+func (x *SavingsTimeSeries) Reset() {
+ *x = SavingsTimeSeries{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *ResourceDetails) GetRoleDetails() *RoleDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_RoleDetails); ok {
- return x.RoleDetails
- }
- return nil
+func (x *SavingsTimeSeries) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetRoleBindingDetails() *RoleBindingDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_RoleBindingDetails); ok {
- return x.RoleBindingDetails
+func (*SavingsTimeSeries) ProtoMessage() {}
+
+func (x *SavingsTimeSeries) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetKedaScaledObjectDetails() *KedaScaledObjectDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_KedaScaledObjectDetails); ok {
- return x.KedaScaledObjectDetails
- }
- return nil
+// Deprecated: Use SavingsTimeSeries.ProtoReflect.Descriptor instead.
+func (*SavingsTimeSeries) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{27}
}
-func (x *ResourceDetails) GetKarpenterResourceDetails() *KarpenterResourceDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_KarpenterResourceDetails); ok {
- return x.KarpenterResourceDetails
+func (x *SavingsTimeSeries) GetSavingsDatapoints() []*SavingsDataPoint {
+ if x != nil {
+ return x.SavingsDatapoints
}
return nil
}
-func (x *ResourceDetails) GetPodDisruptionBudgetDetails() *PodDisruptionBudgetDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_PodDisruptionBudgetDetails); ok {
- return x.PodDisruptionBudgetDetails
+func (x *SavingsTimeSeries) GetTotalCpuSavingsMillicores() float64 {
+ if x != nil {
+ return x.TotalCpuSavingsMillicores
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetResourceQuotaDetails() *ResourceQuotaDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_ResourceQuotaDetails); ok {
- return x.ResourceQuotaDetails
+func (x *SavingsTimeSeries) GetTotalCpuCostSavings() float64 {
+ if x != nil {
+ return x.TotalCpuCostSavings
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetVolcanoJobDetails() *VolcanoJobDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_VolcanoJobDetails); ok {
- return x.VolcanoJobDetails
+func (x *SavingsTimeSeries) GetTotalCpuCostWaste() float64 {
+ if x != nil {
+ return x.TotalCpuCostWaste
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetSparkApplicationDetails() *SparkApplicationDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_SparkApplicationDetails); ok {
- return x.SparkApplicationDetails
- }
- return nil
+// LabelSelectorRequirement is a selector that contains values, a key, and an operator that
+// relates the key and values.
+type LabelSelectorRequirement struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // key is the label key that the selector applies to.
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ // operator represents a key's relationship to a set of values.
+ // Valid operators are In, NotIn, Exists and DoesNotExist, but the DevZero
+ // department and workload filter paths honor only In and NotIn (see the
+ // LabelSelectorOperator caveats above, PC-1452).
+ Operator LabelSelectorOperator `protobuf:"varint,2,opt,name=operator,proto3,enum=api.v1.LabelSelectorOperator" json:"operator,omitempty"`
+ // values is an array of string values. If the operator is In or NotIn,
+ // the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ // the values array must be empty. This array is replaced during a strategic
+ // merge patch.
+ Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
}
-func (x *ResourceDetails) GetScheduledSparkApplicationDetails() *ScheduledSparkApplicationDetails {
- if x, ok := x.GetDetails().(*ResourceDetails_ScheduledSparkApplicationDetails); ok {
- return x.ScheduledSparkApplicationDetails
+func (x *LabelSelectorRequirement) Reset() {
+ *x = LabelSelectorRequirement{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *ResourceDetails) GetPhase() string {
- if x != nil {
- return x.Phase
- }
- return ""
+func (x *LabelSelectorRequirement) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetPodIp() string {
- if x != nil {
- return x.PodIp
+func (*LabelSelectorRequirement) ProtoMessage() {}
+
+func (x *LabelSelectorRequirement) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetHostIp() string {
- if x != nil {
- return x.HostIp
- }
- return ""
+// Deprecated: Use LabelSelectorRequirement.ProtoReflect.Descriptor instead.
+func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{28}
}
-func (x *ResourceDetails) GetNodeName() string {
+func (x *LabelSelectorRequirement) GetKey() string {
if x != nil {
- return x.NodeName
+ return x.Key
}
return ""
}
-func (x *ResourceDetails) GetReady() bool {
+func (x *LabelSelectorRequirement) GetOperator() LabelSelectorOperator {
if x != nil {
- return x.Ready
+ return x.Operator
}
- return false
+ return LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_UNSPECIFIED
}
-func (x *ResourceDetails) GetQosClass() string {
+func (x *LabelSelectorRequirement) GetValues() []string {
if x != nil {
- return x.QosClass
+ return x.Values
}
- return ""
+ return nil
}
-func (x *ResourceDetails) GetContainerCount() int32 {
- if x != nil {
- return x.ContainerCount
- }
- return 0
-}
+type Label struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ResourceDetails) GetRestartCount() int32 {
- if x != nil {
- return x.RestartCount
- }
- return 0
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
-func (x *ResourceDetails) GetCpuRequestsMillicores() int64 {
- if x != nil {
- return x.CpuRequestsMillicores
+func (x *Label) Reset() {
+ *x = Label{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *ResourceDetails) GetMemoryRequestsBytes() int64 {
- if x != nil {
- return x.MemoryRequestsBytes
- }
- return 0
+func (x *Label) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetCpuLimitsMillicores() int64 {
- if x != nil {
- return x.CpuLimitsMillicores
+func (*Label) ProtoMessage() {}
+
+func (x *Label) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetMemoryLimitsBytes() int64 {
- if x != nil {
- return x.MemoryLimitsBytes
- }
- return 0
+// Deprecated: Use Label.ProtoReflect.Descriptor instead.
+func (*Label) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{29}
}
-func (x *ResourceDetails) GetStatusReason() string {
+func (x *Label) GetKey() string {
if x != nil {
- return x.StatusReason
+ return x.Key
}
return ""
}
-func (x *ResourceDetails) GetControlledBy() string {
- if x != nil {
- return x.ControlledBy
- }
- return ""
-}
-
-func (x *ResourceDetails) GetAge() string {
+func (x *Label) GetValue() string {
if x != nil {
- return x.Age
+ return x.Value
}
return ""
}
-func (x *ResourceDetails) GetReplicasDesired() int32 {
- if x != nil {
- return x.ReplicasDesired
- }
- return 0
-}
-
-func (x *ResourceDetails) GetReplicasReady() int32 {
- if x != nil {
- return x.ReplicasReady
- }
- return 0
-}
+// LabelSelector is a label query over a set of resources. The result of matchLabels and
+// matchExpressions are ANDed. An empty label selector matches all objects. A null
+// label selector matches no objects.
+type LabelSelector struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ResourceDetails) GetReplicasAvailable() int32 {
- if x != nil {
- return x.ReplicasAvailable
- }
- return 0
+ // Department-style labels for backwards compatibility
+ //
+ // Deprecated: Marked as deprecated in api/v1/common.proto.
+ Labels []*Label `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty"` // Deprecated: Label is still used for departments but we will soon migrate to match_label and match_expressions
+ // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ // map is equivalent to an element of matchExpressions, whose key field is "key", the
+ // operator is "In", and the values array contains only "value". The requirements are ANDed.
+ MatchLabels map[string]string `protobuf:"bytes,2,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // matchExpressions is a list of label selector requirements. The requirements are ANDed.
+ MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,3,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"`
}
-func (x *ResourceDetails) GetReplicasUpdated() int32 {
- if x != nil {
- return x.ReplicasUpdated
+func (x *LabelSelector) Reset() {
+ *x = LabelSelector{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *ResourceDetails) GetStrategyType() string {
- if x != nil {
- return x.StrategyType
- }
- return ""
+func (x *LabelSelector) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetAvailable() bool {
- if x != nil {
- return x.Available
- }
- return false
-}
+func (*LabelSelector) ProtoMessage() {}
-func (x *ResourceDetails) GetProgressing() bool {
- if x != nil {
- return x.Progressing
+func (x *LabelSelector) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return false
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetDeploymentStatus() string {
- if x != nil {
- return x.DeploymentStatus
- }
- return ""
+// Deprecated: Use LabelSelector.ProtoReflect.Descriptor instead.
+func (*LabelSelector) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{30}
}
-func (x *ResourceDetails) GetImages() []string {
+// Deprecated: Marked as deprecated in api/v1/common.proto.
+func (x *LabelSelector) GetLabels() []*Label {
if x != nil {
- return x.Images
+ return x.Labels
}
return nil
}
-func (x *ResourceDetails) GetServiceName() string {
- if x != nil {
- return x.ServiceName
- }
- return ""
-}
-
-func (x *ResourceDetails) GetPodManagementPolicy() string {
- if x != nil {
- return x.PodManagementPolicy
- }
- return ""
-}
-
-func (x *ResourceDetails) GetUpdateStrategyType() string {
- if x != nil {
- return x.UpdateStrategyType
- }
- return ""
-}
-
-func (x *ResourceDetails) GetVolumeClaimTemplateCount() int32 {
- if x != nil {
- return x.VolumeClaimTemplateCount
- }
- return 0
-}
-
-func (x *ResourceDetails) GetPvcRetentionPolicy() string {
- if x != nil {
- return x.PvcRetentionPolicy
- }
- return ""
-}
-
-func (x *ResourceDetails) GetCurrentRevision() string {
+func (x *LabelSelector) GetMatchLabels() map[string]string {
if x != nil {
- return x.CurrentRevision
+ return x.MatchLabels
}
- return ""
+ return nil
}
-func (x *ResourceDetails) GetUpdateRevision() string {
+func (x *LabelSelector) GetMatchExpressions() []*LabelSelectorRequirement {
if x != nil {
- return x.UpdateRevision
+ return x.MatchExpressions
}
- return ""
+ return nil
}
-func (x *ResourceDetails) GetNodesDesired() int32 {
- if x != nil {
- return x.NodesDesired
- }
- return 0
-}
+// RegexPattern represents a regex pattern with optional flags
+type RegexPattern struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ResourceDetails) GetNodesReady() int32 {
- if x != nil {
- return x.NodesReady
- }
- return 0
+ Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"`
+ Flags string `protobuf:"bytes,2,opt,name=flags,proto3" json:"flags,omitempty"` // case-insensitive, etc. (optional)
}
-func (x *ResourceDetails) GetNodesAvailable() int32 {
- if x != nil {
- return x.NodesAvailable
+func (x *RegexPattern) Reset() {
+ *x = RegexPattern{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *ResourceDetails) GetNodesCurrent() int32 {
- if x != nil {
- return x.NodesCurrent
- }
- return 0
+func (x *RegexPattern) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetNodesUpdated() int32 {
- if x != nil {
- return x.NodesUpdated
- }
- return 0
-}
+func (*RegexPattern) ProtoMessage() {}
-func (x *ResourceDetails) GetNodesMisscheduled() int32 {
- if x != nil {
- return x.NodesMisscheduled
+func (x *RegexPattern) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetMaxUnavailable() string {
- if x != nil {
- return x.MaxUnavailable
- }
- return ""
+// Deprecated: Use RegexPattern.ProtoReflect.Descriptor instead.
+func (*RegexPattern) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{31}
}
-func (x *ResourceDetails) GetPriorityClass() string {
+func (x *RegexPattern) GetPattern() string {
if x != nil {
- return x.PriorityClass
+ return x.Pattern
}
return ""
}
-func (x *ResourceDetails) GetJobCompletionsDesired() int32 {
- if x != nil {
- return x.JobCompletionsDesired
- }
- return 0
-}
-
-func (x *ResourceDetails) GetJobCompletionsSucceeded() int32 {
- if x != nil {
- return x.JobCompletionsSucceeded
- }
- return 0
-}
-
-func (x *ResourceDetails) GetJobParallelism() int32 {
- if x != nil {
- return x.JobParallelism
- }
- return 0
-}
-
-func (x *ResourceDetails) GetJobBackoffLimit() int32 {
- if x != nil {
- return x.JobBackoffLimit
- }
- return 0
-}
-
-func (x *ResourceDetails) GetJobCompletionMode() string {
+func (x *RegexPattern) GetFlags() string {
if x != nil {
- return x.JobCompletionMode
+ return x.Flags
}
return ""
}
-func (x *ResourceDetails) GetJobSuspended() bool {
- if x != nil {
- return x.JobSuspended
- }
- return false
-}
+// ResourceDetails contains resource-specific information flattened for easy frontend access
+type ResourceDetails struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ResourceDetails) GetJobDuration() string {
- if x != nil {
- return x.JobDuration
+ // Types that are assignable to Details:
+ //
+ // *ResourceDetails_PodDetails
+ // *ResourceDetails_DeploymentDetails
+ // *ResourceDetails_StatefulSetDetails
+ // *ResourceDetails_DaemonSetDetails
+ // *ResourceDetails_ReplicaSetDetails
+ // *ResourceDetails_JobDetails
+ // *ResourceDetails_CronJobDetails
+ // *ResourceDetails_ServiceDetails
+ // *ResourceDetails_IngressDetails
+ // *ResourceDetails_PvcDetails
+ // *ResourceDetails_PvDetails
+ // *ResourceDetails_ScDetails
+ // *ResourceDetails_NsDetails
+ // *ResourceDetails_NodeDetails
+ // *ResourceDetails_HpaDetails
+ // *ResourceDetails_VpaDetails
+ // *ResourceDetails_LimitRangeDetails
+ // *ResourceDetails_ServiceAccountDetails
+ // *ResourceDetails_RoleDetails
+ // *ResourceDetails_RoleBindingDetails
+ // *ResourceDetails_KedaScaledObjectDetails
+ // *ResourceDetails_KarpenterResourceDetails
+ // *ResourceDetails_PodDisruptionBudgetDetails
+ // *ResourceDetails_ResourceQuotaDetails
+ // *ResourceDetails_VolcanoJobDetails
+ // *ResourceDetails_SparkApplicationDetails
+ // *ResourceDetails_ScheduledSparkApplicationDetails
+ // *ResourceDetails_KyvernoPolicyDetails
+ // *ResourceDetails_KyvernoPolicyReportDetails
+ // *ResourceDetails_GatekeeperConstraintTemplateDetails
+ // *ResourceDetails_GatekeeperConstraintDetails
+ Details isResourceDetails_Details `protobuf_oneof:"details"`
+ // Common fields that can be flattened at this level for easier access
+ // These are populated based on the resource type
+ Phase string `protobuf:"bytes,10,opt,name=phase,proto3" json:"phase,omitempty"` // Pod phase: "Running", "Pending", "Succeeded", "Failed", "Unknown"
+ PodIp string `protobuf:"bytes,11,opt,name=pod_ip,json=podIp,proto3" json:"pod_ip,omitempty"` // Pod IP from status.podIP
+ HostIp string `protobuf:"bytes,12,opt,name=host_ip,json=hostIp,proto3" json:"host_ip,omitempty"` // Host IP from status.hostIP
+ NodeName string `protobuf:"bytes,13,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` // Node name where pod is scheduled
+ Ready bool `protobuf:"varint,14,opt,name=ready,proto3" json:"ready,omitempty"` // Pod ready status from conditions
+ QosClass string `protobuf:"bytes,15,opt,name=qos_class,json=qosClass,proto3" json:"qos_class,omitempty"` // Pod QoS class: "Guaranteed", "Burstable", "BestEffort"
+ ContainerCount int32 `protobuf:"varint,16,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` // Number of containers in the pod
+ RestartCount int32 `protobuf:"varint,17,opt,name=restart_count,json=restartCount,proto3" json:"restart_count,omitempty"` // Sum of all container restart counts
+ // Resource requests/limits from Pod spec (static declarations)
+ CpuRequestsMillicores int64 `protobuf:"varint,20,opt,name=cpu_requests_millicores,json=cpuRequestsMillicores,proto3" json:"cpu_requests_millicores,omitempty"` // Sum of all container CPU requests in millicores
+ MemoryRequestsBytes int64 `protobuf:"varint,21,opt,name=memory_requests_bytes,json=memoryRequestsBytes,proto3" json:"memory_requests_bytes,omitempty"` // Sum of all container memory requests in bytes
+ CpuLimitsMillicores int64 `protobuf:"varint,22,opt,name=cpu_limits_millicores,json=cpuLimitsMillicores,proto3" json:"cpu_limits_millicores,omitempty"` // Sum of all container CPU limits in millicores
+ MemoryLimitsBytes int64 `protobuf:"varint,23,opt,name=memory_limits_bytes,json=memoryLimitsBytes,proto3" json:"memory_limits_bytes,omitempty"` // Sum of all container memory limits in bytes
+ StatusReason string `protobuf:"bytes,30,opt,name=status_reason,json=statusReason,proto3" json:"status_reason,omitempty"` // Reason for current status (e.g., "ImagePullBackOff", "Completed")
+ ControlledBy string `protobuf:"bytes,31,opt,name=controlled_by,json=controlledBy,proto3" json:"controlled_by,omitempty"` // Friendly owner name (e.g., "deployment/my-app", "daemonset/logs")
+ Age string `protobuf:"bytes,32,opt,name=age,proto3" json:"age,omitempty"` // Human-readable age since creation (e.g., "2h", "5m", "10d")
+ // Deployment-specific fields (flattened for easy access)
+ ReplicasDesired int32 `protobuf:"varint,40,opt,name=replicas_desired,json=replicasDesired,proto3" json:"replicas_desired,omitempty"` // Desired replicas from spec.replicas
+ ReplicasReady int32 `protobuf:"varint,41,opt,name=replicas_ready,json=replicasReady,proto3" json:"replicas_ready,omitempty"` // Ready replicas from status.readyReplicas
+ ReplicasAvailable int32 `protobuf:"varint,42,opt,name=replicas_available,json=replicasAvailable,proto3" json:"replicas_available,omitempty"` // Available replicas from status.availableReplicas
+ ReplicasUpdated int32 `protobuf:"varint,43,opt,name=replicas_updated,json=replicasUpdated,proto3" json:"replicas_updated,omitempty"` // Updated replicas from status.updatedReplicas
+ StrategyType string `protobuf:"bytes,44,opt,name=strategy_type,json=strategyType,proto3" json:"strategy_type,omitempty"` // Deployment strategy: "RollingUpdate", "Recreate"
+ Available bool `protobuf:"varint,45,opt,name=available,proto3" json:"available,omitempty"` // Deployment Available condition status
+ Progressing bool `protobuf:"varint,46,opt,name=progressing,proto3" json:"progressing,omitempty"` // Deployment Progressing condition status
+ DeploymentStatus string `protobuf:"bytes,47,opt,name=deployment_status,json=deploymentStatus,proto3" json:"deployment_status,omitempty"` // Overall status: "Available", "Progressing", "Failed"
+ Images []string `protobuf:"bytes,48,rep,name=images,proto3" json:"images,omitempty"` // Unique container images used
+ // StatefulSet-specific fields (reuses deployment replica fields 40-43)
+ ServiceName string `protobuf:"bytes,60,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // Headless service name for StatefulSet
+ PodManagementPolicy string `protobuf:"bytes,61,opt,name=pod_management_policy,json=podManagementPolicy,proto3" json:"pod_management_policy,omitempty"` // "OrderedReady" or "Parallel"
+ UpdateStrategyType string `protobuf:"bytes,62,opt,name=update_strategy_type,json=updateStrategyType,proto3" json:"update_strategy_type,omitempty"` // "RollingUpdate" (StatefulSet strategy)
+ VolumeClaimTemplateCount int32 `protobuf:"varint,63,opt,name=volume_claim_template_count,json=volumeClaimTemplateCount,proto3" json:"volume_claim_template_count,omitempty"` // Number of persistent volume claim templates
+ PvcRetentionPolicy string `protobuf:"bytes,64,opt,name=pvc_retention_policy,json=pvcRetentionPolicy,proto3" json:"pvc_retention_policy,omitempty"` // "Retain" or "Delete" for PVC retention
+ CurrentRevision string `protobuf:"bytes,65,opt,name=current_revision,json=currentRevision,proto3" json:"current_revision,omitempty"` // Current StatefulSet revision
+ UpdateRevision string `protobuf:"bytes,66,opt,name=update_revision,json=updateRevision,proto3" json:"update_revision,omitempty"` // Update StatefulSet revision
+ // DaemonSet-specific fields (nodes instead of replicas)
+ NodesDesired int32 `protobuf:"varint,70,opt,name=nodes_desired,json=nodesDesired,proto3" json:"nodes_desired,omitempty"` // Desired nodes to schedule on (desiredNumberScheduled)
+ NodesReady int32 `protobuf:"varint,71,opt,name=nodes_ready,json=nodesReady,proto3" json:"nodes_ready,omitempty"` // Ready nodes (numberReady)
+ NodesAvailable int32 `protobuf:"varint,72,opt,name=nodes_available,json=nodesAvailable,proto3" json:"nodes_available,omitempty"` // Available nodes (numberAvailable)
+ NodesCurrent int32 `protobuf:"varint,73,opt,name=nodes_current,json=nodesCurrent,proto3" json:"nodes_current,omitempty"` // Currently scheduled nodes (currentNumberScheduled)
+ NodesUpdated int32 `protobuf:"varint,74,opt,name=nodes_updated,json=nodesUpdated,proto3" json:"nodes_updated,omitempty"` // Updated nodes (updatedNumberScheduled)
+ NodesMisscheduled int32 `protobuf:"varint,75,opt,name=nodes_misscheduled,json=nodesMisscheduled,proto3" json:"nodes_misscheduled,omitempty"` // Misscheduled nodes (numberMisscheduled)
+ MaxUnavailable string `protobuf:"bytes,76,opt,name=max_unavailable,json=maxUnavailable,proto3" json:"max_unavailable,omitempty"` // RollingUpdate maxUnavailable setting
+ PriorityClass string `protobuf:"bytes,77,opt,name=priority_class,json=priorityClass,proto3" json:"priority_class,omitempty"` // Priority class name
+ // Job-specific fields
+ JobCompletionsDesired int32 `protobuf:"varint,80,opt,name=job_completions_desired,json=jobCompletionsDesired,proto3" json:"job_completions_desired,omitempty"` // Desired number of completions from spec.completions
+ JobCompletionsSucceeded int32 `protobuf:"varint,81,opt,name=job_completions_succeeded,json=jobCompletionsSucceeded,proto3" json:"job_completions_succeeded,omitempty"` // Number of succeeded pods from status.succeeded
+ JobParallelism int32 `protobuf:"varint,82,opt,name=job_parallelism,json=jobParallelism,proto3" json:"job_parallelism,omitempty"` // Maximum number of pods that can run in parallel
+ JobBackoffLimit int32 `protobuf:"varint,83,opt,name=job_backoff_limit,json=jobBackoffLimit,proto3" json:"job_backoff_limit,omitempty"` // Number of retries before marking job as failed
+ JobCompletionMode string `protobuf:"bytes,84,opt,name=job_completion_mode,json=jobCompletionMode,proto3" json:"job_completion_mode,omitempty"` // "NonIndexed" or "Indexed"
+ JobSuspended bool `protobuf:"varint,85,opt,name=job_suspended,json=jobSuspended,proto3" json:"job_suspended,omitempty"` // Whether the job is suspended
+ JobDuration string `protobuf:"bytes,86,opt,name=job_duration,json=jobDuration,proto3" json:"job_duration,omitempty"` // Duration from start to completion (or current time)
+ JobStatus string `protobuf:"bytes,87,opt,name=job_status,json=jobStatus,proto3" json:"job_status,omitempty"` // Overall job status: "Complete", "Failed", "Running", "Suspended"
+ JobActivePods int32 `protobuf:"varint,88,opt,name=job_active_pods,json=jobActivePods,proto3" json:"job_active_pods,omitempty"` // Number of actively running pods
+ JobFailedPods int32 `protobuf:"varint,89,opt,name=job_failed_pods,json=jobFailedPods,proto3" json:"job_failed_pods,omitempty"` // Number of failed pods
+ // CronJob-specific fields
+ CronSchedule string `protobuf:"bytes,90,opt,name=cron_schedule,json=cronSchedule,proto3" json:"cron_schedule,omitempty"` // Cron schedule expression (e.g., "0 */6 * * *")
+ CronSuspended bool `protobuf:"varint,91,opt,name=cron_suspended,json=cronSuspended,proto3" json:"cron_suspended,omitempty"` // Whether the cron job is suspended
+ CronActiveJobs int32 `protobuf:"varint,92,opt,name=cron_active_jobs,json=cronActiveJobs,proto3" json:"cron_active_jobs,omitempty"` // Number of currently active jobs
+ CronLastScheduleTime string `protobuf:"bytes,93,opt,name=cron_last_schedule_time,json=cronLastScheduleTime,proto3" json:"cron_last_schedule_time,omitempty"` // Last time the job was scheduled (RFC3339 format)
+ CronNextScheduleTime string `protobuf:"bytes,94,opt,name=cron_next_schedule_time,json=cronNextScheduleTime,proto3" json:"cron_next_schedule_time,omitempty"` // Next scheduled time (calculated, RFC3339 format)
+ CronConcurrencyPolicy string `protobuf:"bytes,95,opt,name=cron_concurrency_policy,json=cronConcurrencyPolicy,proto3" json:"cron_concurrency_policy,omitempty"` // "Allow", "Forbid", "Replace"
+ CronSuccessfulJobsLimit int32 `protobuf:"varint,96,opt,name=cron_successful_jobs_limit,json=cronSuccessfulJobsLimit,proto3" json:"cron_successful_jobs_limit,omitempty"` // Number of successful job history to retain
+ CronFailedJobsLimit int32 `protobuf:"varint,97,opt,name=cron_failed_jobs_limit,json=cronFailedJobsLimit,proto3" json:"cron_failed_jobs_limit,omitempty"` // Number of failed job history to retain
+ CronStartingDeadlineSeconds int32 `protobuf:"varint,98,opt,name=cron_starting_deadline_seconds,json=cronStartingDeadlineSeconds,proto3" json:"cron_starting_deadline_seconds,omitempty"` // Optional deadline in seconds for starting the job
+ // Service-specific fields
+ ServiceType string `protobuf:"bytes,100,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"` // Service type: "ClusterIP", "NodePort", "LoadBalancer", "ExternalName"
+ ServiceClusterIp string `protobuf:"bytes,101,opt,name=service_cluster_ip,json=serviceClusterIp,proto3" json:"service_cluster_ip,omitempty"` // Cluster IP address
+ ServiceExternalIps []string `protobuf:"bytes,102,rep,name=service_external_ips,json=serviceExternalIps,proto3" json:"service_external_ips,omitempty"` // External IP addresses (from spec or loadbalancer status)
+ ServicePorts []*ServicePort `protobuf:"bytes,103,rep,name=service_ports,json=servicePorts,proto3" json:"service_ports,omitempty"` // Service ports information
+ ServiceSelector map[string]string `protobuf:"bytes,104,rep,name=service_selector,json=serviceSelector,proto3" json:"service_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Service selector labels
+ ServiceSessionAffinity string `protobuf:"bytes,105,opt,name=service_session_affinity,json=serviceSessionAffinity,proto3" json:"service_session_affinity,omitempty"` // Session affinity: "None" or "ClientIP"
+ ServiceExternalTrafficPolicy string `protobuf:"bytes,106,opt,name=service_external_traffic_policy,json=serviceExternalTrafficPolicy,proto3" json:"service_external_traffic_policy,omitempty"` // "Cluster" or "Local"
+ ServiceInternalTrafficPolicy string `protobuf:"bytes,107,opt,name=service_internal_traffic_policy,json=serviceInternalTrafficPolicy,proto3" json:"service_internal_traffic_policy,omitempty"` // "Cluster" or "Local"
+ ServiceLoadBalancerSourceRanges []string `protobuf:"bytes,108,rep,name=service_load_balancer_source_ranges,json=serviceLoadBalancerSourceRanges,proto3" json:"service_load_balancer_source_ranges,omitempty"` // LoadBalancer source ranges
+ ServiceLoadBalancerClass string `protobuf:"bytes,109,opt,name=service_load_balancer_class,json=serviceLoadBalancerClass,proto3" json:"service_load_balancer_class,omitempty"` // LoadBalancer class
+ ServiceIpFamilies []string `protobuf:"bytes,110,rep,name=service_ip_families,json=serviceIpFamilies,proto3" json:"service_ip_families,omitempty"` // IP families: ["IPv4"], ["IPv6"], or ["IPv4", "IPv6"]
+ ServiceIpFamilyPolicy string `protobuf:"bytes,111,opt,name=service_ip_family_policy,json=serviceIpFamilyPolicy,proto3" json:"service_ip_family_policy,omitempty"` // "SingleStack", "PreferDualStack", "RequireDualStack"
+ // Ingress-specific fields
+ IngressClassName string `protobuf:"bytes,120,opt,name=ingress_class_name,json=ingressClassName,proto3" json:"ingress_class_name,omitempty"` // Ingress class name (e.g., "nginx", "traefik")
+ IngressHosts []string `protobuf:"bytes,121,rep,name=ingress_hosts,json=ingressHosts,proto3" json:"ingress_hosts,omitempty"` // List of hosts served by this ingress
+ IngressPaths []string `protobuf:"bytes,122,rep,name=ingress_paths,json=ingressPaths,proto3" json:"ingress_paths,omitempty"` // List of paths served by this ingress
+ IngressBackends []string `protobuf:"bytes,123,rep,name=ingress_backends,json=ingressBackends,proto3" json:"ingress_backends,omitempty"` // List of backend services
+ IngressTlsHosts []string `protobuf:"bytes,124,rep,name=ingress_tls_hosts,json=ingressTlsHosts,proto3" json:"ingress_tls_hosts,omitempty"` // Hosts covered by TLS
+ IngressTlsSecrets []string `protobuf:"bytes,125,rep,name=ingress_tls_secrets,json=ingressTlsSecrets,proto3" json:"ingress_tls_secrets,omitempty"` // TLS secret names
+ IngressLoadBalancerIps []string `protobuf:"bytes,126,rep,name=ingress_load_balancer_ips,json=ingressLoadBalancerIps,proto3" json:"ingress_load_balancer_ips,omitempty"` // Load balancer IPs/hostnames from status
+ IngressRulesCount int32 `protobuf:"varint,127,opt,name=ingress_rules_count,json=ingressRulesCount,proto3" json:"ingress_rules_count,omitempty"` // Number of ingress rules
+ IngressTlsCount int32 `protobuf:"varint,128,opt,name=ingress_tls_count,json=ingressTlsCount,proto3" json:"ingress_tls_count,omitempty"` // Number of TLS configurations
+ IngressHasDefaultBackend bool `protobuf:"varint,129,opt,name=ingress_has_default_backend,json=ingressHasDefaultBackend,proto3" json:"ingress_has_default_backend,omitempty"` // Whether ingress has a default backend
+ // PersistentVolumeClaim-specific fields
+ PvcStorageClassName string `protobuf:"bytes,130,opt,name=pvc_storage_class_name,json=pvcStorageClassName,proto3" json:"pvc_storage_class_name,omitempty"` // Storage class name (e.g., "gp2", "fast-ssd")
+ PvcRequestedCapacity string `protobuf:"bytes,131,opt,name=pvc_requested_capacity,json=pvcRequestedCapacity,proto3" json:"pvc_requested_capacity,omitempty"` // Requested storage capacity (e.g., "50Gi")
+ PvcActualCapacity string `protobuf:"bytes,132,opt,name=pvc_actual_capacity,json=pvcActualCapacity,proto3" json:"pvc_actual_capacity,omitempty"` // Actual allocated capacity from status (e.g., "100Gi")
+ PvcAccessModes []string `protobuf:"bytes,133,rep,name=pvc_access_modes,json=pvcAccessModes,proto3" json:"pvc_access_modes,omitempty"` // Access modes: ["ReadWriteOnce", "ReadOnlyMany", "ReadWriteMany"]
+ PvcVolumeMode string `protobuf:"bytes,134,opt,name=pvc_volume_mode,json=pvcVolumeMode,proto3" json:"pvc_volume_mode,omitempty"` // Volume mode: "Filesystem" or "Block"
+ PvcVolumeName string `protobuf:"bytes,135,opt,name=pvc_volume_name,json=pvcVolumeName,proto3" json:"pvc_volume_name,omitempty"` // Bound persistent volume name
+ PvcStatus string `protobuf:"bytes,136,opt,name=pvc_status,json=pvcStatus,proto3" json:"pvc_status,omitempty"` // PVC status: "Pending", "Bound", "Lost"
+ PvcIsBound bool `protobuf:"varint,137,opt,name=pvc_is_bound,json=pvcIsBound,proto3" json:"pvc_is_bound,omitempty"` // Whether PVC is bound to a PV
+ PvcSelectorMatchLabels string `protobuf:"bytes,138,opt,name=pvc_selector_match_labels,json=pvcSelectorMatchLabels,proto3" json:"pvc_selector_match_labels,omitempty"` // Selector labels for PV binding (JSON string)
+ PvcAllowedTopologies []string `protobuf:"bytes,139,rep,name=pvc_allowed_topologies,json=pvcAllowedTopologies,proto3" json:"pvc_allowed_topologies,omitempty"` // Allowed node topologies
+ // PersistentVolume-specific fields
+ PvStorageClassName string `protobuf:"bytes,150,opt,name=pv_storage_class_name,json=pvStorageClassName,proto3" json:"pv_storage_class_name,omitempty"` // Storage class name (e.g., "standard-rwo", "fast-ssd")
+ PvCapacity string `protobuf:"bytes,151,opt,name=pv_capacity,json=pvCapacity,proto3" json:"pv_capacity,omitempty"` // Storage capacity (e.g., "5Gi")
+ PvAccessModes []string `protobuf:"bytes,152,rep,name=pv_access_modes,json=pvAccessModes,proto3" json:"pv_access_modes,omitempty"` // Access modes: ["ReadWriteOnce", "ReadOnlyMany", "ReadWriteMany"]
+ PvReclaimPolicy string `protobuf:"bytes,153,opt,name=pv_reclaim_policy,json=pvReclaimPolicy,proto3" json:"pv_reclaim_policy,omitempty"` // Reclaim policy: "Retain", "Delete", "Recycle"
+ PvClaimRefName string `protobuf:"bytes,154,opt,name=pv_claim_ref_name,json=pvClaimRefName,proto3" json:"pv_claim_ref_name,omitempty"` // Referenced PVC name
+ PvClaimRefNamespace string `protobuf:"bytes,155,opt,name=pv_claim_ref_namespace,json=pvClaimRefNamespace,proto3" json:"pv_claim_ref_namespace,omitempty"` // Referenced PVC namespace
+ PvStatus string `protobuf:"bytes,156,opt,name=pv_status,json=pvStatus,proto3" json:"pv_status,omitempty"` // PV status: "Available", "Bound", "Released", "Failed"
+ PvIsBound bool `protobuf:"varint,157,opt,name=pv_is_bound,json=pvIsBound,proto3" json:"pv_is_bound,omitempty"` // Whether PV is bound to a PVC
+ PvVolumeMode string `protobuf:"bytes,158,opt,name=pv_volume_mode,json=pvVolumeMode,proto3" json:"pv_volume_mode,omitempty"` // Volume mode: "Filesystem" or "Block"
+ PvCsiDriver string `protobuf:"bytes,159,opt,name=pv_csi_driver,json=pvCsiDriver,proto3" json:"pv_csi_driver,omitempty"` // CSI driver name (if using CSI)
+ PvVolumeSourceType string `protobuf:"bytes,160,opt,name=pv_volume_source_type,json=pvVolumeSourceType,proto3" json:"pv_volume_source_type,omitempty"` // Volume source type: "CSI", "HostPath", "NFS", "AWS EBS", etc.
+ PvNodeAffinityZones []string `protobuf:"bytes,161,rep,name=pv_node_affinity_zones,json=pvNodeAffinityZones,proto3" json:"pv_node_affinity_zones,omitempty"` // Node affinity zones/regions
+ // StorageClass-specific fields
+ ScProvisioner string `protobuf:"bytes,170,opt,name=sc_provisioner,json=scProvisioner,proto3" json:"sc_provisioner,omitempty"` // Storage provisioner (e.g., "kubernetes.io/aws-ebs", "pd.csi.storage.gke.io")
+ ScReclaimPolicy string `protobuf:"bytes,171,opt,name=sc_reclaim_policy,json=scReclaimPolicy,proto3" json:"sc_reclaim_policy,omitempty"` // Default reclaim policy: "Retain", "Delete"
+ ScVolumeBindingMode string `protobuf:"bytes,172,opt,name=sc_volume_binding_mode,json=scVolumeBindingMode,proto3" json:"sc_volume_binding_mode,omitempty"` // Volume binding mode: "Immediate", "WaitForFirstConsumer"
+ ScAllowVolumeExpansion bool `protobuf:"varint,173,opt,name=sc_allow_volume_expansion,json=scAllowVolumeExpansion,proto3" json:"sc_allow_volume_expansion,omitempty"` // Whether volume expansion is allowed
+ ScParameters map[string]string `protobuf:"bytes,174,rep,name=sc_parameters,json=scParameters,proto3" json:"sc_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Storage class parameters (type, encrypted, etc.)
+ ScAllowedTopologies []string `protobuf:"bytes,175,rep,name=sc_allowed_topologies,json=scAllowedTopologies,proto3" json:"sc_allowed_topologies,omitempty"` // Allowed topologies for volumes
+ ScMountOptions []string `protobuf:"bytes,176,rep,name=sc_mount_options,json=scMountOptions,proto3" json:"sc_mount_options,omitempty"` // Default mount options
+ // Namespace fields (name|status|age + additional)
+ NsStatus string `protobuf:"bytes,177,opt,name=ns_status,json=nsStatus,proto3" json:"ns_status,omitempty"` // Namespace status/phase: "Active", "Terminating"
+ NsFinalizers []string `protobuf:"bytes,178,rep,name=ns_finalizers,json=nsFinalizers,proto3" json:"ns_finalizers,omitempty"` // Finalizers preventing deletion
+ // Node fields (name|cpu|memory|ready|taints|roles|internal IP|external IP|version|age + additional)
+ NodeCpuCapacity string `protobuf:"bytes,179,opt,name=node_cpu_capacity,json=nodeCpuCapacity,proto3" json:"node_cpu_capacity,omitempty"` // CPU capacity (e.g., "16", "15890m")
+ NodeMemoryCapacity string `protobuf:"bytes,180,opt,name=node_memory_capacity,json=nodeMemoryCapacity,proto3" json:"node_memory_capacity,omitempty"` // Memory capacity (e.g., "64422188Ki")
+ NodeReady bool `protobuf:"varint,181,opt,name=node_ready,json=nodeReady,proto3" json:"node_ready,omitempty"` // Node ready status
+ NodeTaints []*NodeTaint `protobuf:"bytes,182,rep,name=node_taints,json=nodeTaints,proto3" json:"node_taints,omitempty"` // Node taints affecting scheduling
+ NodeRoles []string `protobuf:"bytes,183,rep,name=node_roles,json=nodeRoles,proto3" json:"node_roles,omitempty"` // Node roles (master, worker, etc.)
+ NodeInternalIp string `protobuf:"bytes,184,opt,name=node_internal_ip,json=nodeInternalIp,proto3" json:"node_internal_ip,omitempty"` // Internal IP address
+ NodeExternalIp string `protobuf:"bytes,185,opt,name=node_external_ip,json=nodeExternalIp,proto3" json:"node_external_ip,omitempty"` // External IP address (if any)
+ NodeVersion string `protobuf:"bytes,186,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` // Kubelet version
+ NodeInstanceType string `protobuf:"bytes,187,opt,name=node_instance_type,json=nodeInstanceType,proto3" json:"node_instance_type,omitempty"` // Cloud instance type (e.g., "m5.xlarge")
+ NodeOs string `protobuf:"bytes,188,opt,name=node_os,json=nodeOs,proto3" json:"node_os,omitempty"` // Operating system
+ NodeContainerRuntime string `protobuf:"bytes,189,opt,name=node_container_runtime,json=nodeContainerRuntime,proto3" json:"node_container_runtime,omitempty"` // Container runtime version
+ NodeImageCount int32 `protobuf:"varint,190,opt,name=node_image_count,json=nodeImageCount,proto3" json:"node_image_count,omitempty"` // Number of container images
+ // HorizontalPodAutoscaler-specific fields
+ HpaMinReplicas int32 `protobuf:"varint,200,opt,name=hpa_min_replicas,json=hpaMinReplicas,proto3" json:"hpa_min_replicas,omitempty"` // Minimum replicas from spec.minReplicas
+ HpaMaxReplicas int32 `protobuf:"varint,201,opt,name=hpa_max_replicas,json=hpaMaxReplicas,proto3" json:"hpa_max_replicas,omitempty"` // Maximum replicas from spec.maxReplicas
+ HpaCurrentReplicas int32 `protobuf:"varint,202,opt,name=hpa_current_replicas,json=hpaCurrentReplicas,proto3" json:"hpa_current_replicas,omitempty"` // Current replicas from status.currentReplicas
+ HpaDesiredReplicas int32 `protobuf:"varint,203,opt,name=hpa_desired_replicas,json=hpaDesiredReplicas,proto3" json:"hpa_desired_replicas,omitempty"` // Desired replicas from status.desiredReplicas
+ HpaMetricsCount int32 `protobuf:"varint,204,opt,name=hpa_metrics_count,json=hpaMetricsCount,proto3" json:"hpa_metrics_count,omitempty"` // Number of metrics configured
+ HpaStatus string `protobuf:"bytes,205,opt,name=hpa_status,json=hpaStatus,proto3" json:"hpa_status,omitempty"` // HPA status: "Active", "Inactive", "Unknown"
+ HpaScaleUpStabilization int32 `protobuf:"varint,206,opt,name=hpa_scale_up_stabilization,json=hpaScaleUpStabilization,proto3" json:"hpa_scale_up_stabilization,omitempty"` // Scale up stabilization window seconds
+ HpaScaleDownStabilization int32 `protobuf:"varint,207,opt,name=hpa_scale_down_stabilization,json=hpaScaleDownStabilization,proto3" json:"hpa_scale_down_stabilization,omitempty"` // Scale down stabilization window seconds
+ // VerticalPodAutoscaler-specific fields
+ VpaUpdateMode string `protobuf:"bytes,210,opt,name=vpa_update_mode,json=vpaUpdateMode,proto3" json:"vpa_update_mode,omitempty"` // Update mode: "Off", "Initial", "Recreation", "Auto"
+ VpaPoliciesCount int32 `protobuf:"varint,211,opt,name=vpa_policies_count,json=vpaPoliciesCount,proto3" json:"vpa_policies_count,omitempty"` // Number of container policies configured
+ VpaRecommendationsCount int32 `protobuf:"varint,212,opt,name=vpa_recommendations_count,json=vpaRecommendationsCount,proto3" json:"vpa_recommendations_count,omitempty"` // Number of container recommendations available
+ VpaCpuTarget string `protobuf:"bytes,213,opt,name=vpa_cpu_target,json=vpaCpuTarget,proto3" json:"vpa_cpu_target,omitempty"` // CPU target recommendation (e.g., "100m")
+ VpaMemoryTarget string `protobuf:"bytes,214,opt,name=vpa_memory_target,json=vpaMemoryTarget,proto3" json:"vpa_memory_target,omitempty"` // Memory target recommendation (e.g., "128Mi")
+ VpaStatus string `protobuf:"bytes,215,opt,name=vpa_status,json=vpaStatus,proto3" json:"vpa_status,omitempty"` // VPA status: "Active", "No Recommendations"
+ // LimitRange-specific fields
+ LimitRangeItemsCount int32 `protobuf:"varint,220,opt,name=limit_range_items_count,json=limitRangeItemsCount,proto3" json:"limit_range_items_count,omitempty"` // Number of limit items configured
+ LimitRangeTypes []string `protobuf:"bytes,221,rep,name=limit_range_types,json=limitRangeTypes,proto3" json:"limit_range_types,omitempty"` // Types of limits: ["Container", "Pod", "PersistentVolumeClaim"]
+ LimitRangeHasDefaults bool `protobuf:"varint,222,opt,name=limit_range_has_defaults,json=limitRangeHasDefaults,proto3" json:"limit_range_has_defaults,omitempty"` // Whether default limits/requests are set
+ LimitRangeMaxCpu string `protobuf:"bytes,223,opt,name=limit_range_max_cpu,json=limitRangeMaxCpu,proto3" json:"limit_range_max_cpu,omitempty"` // Maximum CPU limit (e.g., "2")
+ LimitRangeMaxMemory string `protobuf:"bytes,224,opt,name=limit_range_max_memory,json=limitRangeMaxMemory,proto3" json:"limit_range_max_memory,omitempty"` // Maximum memory limit (e.g., "2Gi")
+ LimitRangeMinCpu string `protobuf:"bytes,225,opt,name=limit_range_min_cpu,json=limitRangeMinCpu,proto3" json:"limit_range_min_cpu,omitempty"` // Minimum CPU limit (e.g., "100m")
+ LimitRangeMinMemory string `protobuf:"bytes,226,opt,name=limit_range_min_memory,json=limitRangeMinMemory,proto3" json:"limit_range_min_memory,omitempty"` // Minimum memory limit (e.g., "64Mi")
+ LimitRangeDefaultCpuLimit string `protobuf:"bytes,227,opt,name=limit_range_default_cpu_limit,json=limitRangeDefaultCpuLimit,proto3" json:"limit_range_default_cpu_limit,omitempty"` // Default CPU limit (e.g., "500m")
+ LimitRangeDefaultMemoryLimit string `protobuf:"bytes,228,opt,name=limit_range_default_memory_limit,json=limitRangeDefaultMemoryLimit,proto3" json:"limit_range_default_memory_limit,omitempty"` // Default memory limit (e.g., "512Mi")
+ LimitRangeDefaultCpuRequest string `protobuf:"bytes,229,opt,name=limit_range_default_cpu_request,json=limitRangeDefaultCpuRequest,proto3" json:"limit_range_default_cpu_request,omitempty"` // Default CPU request (e.g., "200m")
+ LimitRangeDefaultMemoryRequest string `protobuf:"bytes,230,opt,name=limit_range_default_memory_request,json=limitRangeDefaultMemoryRequest,proto3" json:"limit_range_default_memory_request,omitempty"` // Default memory request (e.g., "256Mi")
+ LimitRangeStatus string `protobuf:"bytes,231,opt,name=limit_range_status,json=limitRangeStatus,proto3" json:"limit_range_status,omitempty"` // LimitRange status (always "Active")
+ ResourceVersion string `protobuf:"bytes,240,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` // Service account resource version
+ ApiVersion string `protobuf:"bytes,241,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version
+}
+
+func (x *ResourceDetails) Reset() {
+ *x = ResourceDetails{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ResourceDetails) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResourceDetails) ProtoMessage() {}
+
+func (x *ResourceDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[32]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResourceDetails.ProtoReflect.Descriptor instead.
+func (*ResourceDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{32}
+}
+
+func (m *ResourceDetails) GetDetails() isResourceDetails_Details {
+ if m != nil {
+ return m.Details
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetPodDetails() *PodDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_PodDetails); ok {
+ return x.PodDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetDeploymentDetails() *DeploymentDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_DeploymentDetails); ok {
+ return x.DeploymentDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetStatefulSetDetails() *StatefulSetDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_StatefulSetDetails); ok {
+ return x.StatefulSetDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetDaemonSetDetails() *DaemonSetDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_DaemonSetDetails); ok {
+ return x.DaemonSetDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetReplicaSetDetails() *ReplicaSetDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_ReplicaSetDetails); ok {
+ return x.ReplicaSetDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetJobDetails() *JobDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_JobDetails); ok {
+ return x.JobDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetCronJobDetails() *CronJobDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_CronJobDetails); ok {
+ return x.CronJobDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceDetails() *ServiceDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_ServiceDetails); ok {
+ return x.ServiceDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressDetails() *IngressDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_IngressDetails); ok {
+ return x.IngressDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetPvcDetails() *PersistentVolumeClaimDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_PvcDetails); ok {
+ return x.PvcDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetPvDetails() *PersistentVolumeDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_PvDetails); ok {
+ return x.PvDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetScDetails() *StorageClassDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_ScDetails); ok {
+ return x.ScDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetNsDetails() *NamespaceDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_NsDetails); ok {
+ return x.NsDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetNodeDetails() *NodeDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_NodeDetails); ok {
+ return x.NodeDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetHpaDetails() *HPADetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_HpaDetails); ok {
+ return x.HpaDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetVpaDetails() *VPADetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_VpaDetails); ok {
+ return x.VpaDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetLimitRangeDetails() *LimitRangeDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_LimitRangeDetails); ok {
+ return x.LimitRangeDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceAccountDetails() *ServiceAccountDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_ServiceAccountDetails); ok {
+ return x.ServiceAccountDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetRoleDetails() *RoleDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_RoleDetails); ok {
+ return x.RoleDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetRoleBindingDetails() *RoleBindingDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_RoleBindingDetails); ok {
+ return x.RoleBindingDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetKedaScaledObjectDetails() *KedaScaledObjectDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_KedaScaledObjectDetails); ok {
+ return x.KedaScaledObjectDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetKarpenterResourceDetails() *KarpenterResourceDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_KarpenterResourceDetails); ok {
+ return x.KarpenterResourceDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetPodDisruptionBudgetDetails() *PodDisruptionBudgetDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_PodDisruptionBudgetDetails); ok {
+ return x.PodDisruptionBudgetDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetResourceQuotaDetails() *ResourceQuotaDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_ResourceQuotaDetails); ok {
+ return x.ResourceQuotaDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetVolcanoJobDetails() *VolcanoJobDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_VolcanoJobDetails); ok {
+ return x.VolcanoJobDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetSparkApplicationDetails() *SparkApplicationDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_SparkApplicationDetails); ok {
+ return x.SparkApplicationDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetScheduledSparkApplicationDetails() *ScheduledSparkApplicationDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_ScheduledSparkApplicationDetails); ok {
+ return x.ScheduledSparkApplicationDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetKyvernoPolicyDetails() *KyvernoPolicyDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_KyvernoPolicyDetails); ok {
+ return x.KyvernoPolicyDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetKyvernoPolicyReportDetails() *KyvernoPolicyReportDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_KyvernoPolicyReportDetails); ok {
+ return x.KyvernoPolicyReportDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetGatekeeperConstraintTemplateDetails() *GatekeeperConstraintTemplateDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_GatekeeperConstraintTemplateDetails); ok {
+ return x.GatekeeperConstraintTemplateDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetGatekeeperConstraintDetails() *GatekeeperConstraintDetails {
+ if x, ok := x.GetDetails().(*ResourceDetails_GatekeeperConstraintDetails); ok {
+ return x.GatekeeperConstraintDetails
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetPhase() string {
+ if x != nil {
+ return x.Phase
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetPodIp() string {
+ if x != nil {
+ return x.PodIp
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetHostIp() string {
+ if x != nil {
+ return x.HostIp
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetNodeName() string {
+ if x != nil {
+ return x.NodeName
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetReady() bool {
+ if x != nil {
+ return x.Ready
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetQosClass() string {
+ if x != nil {
+ return x.QosClass
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetContainerCount() int32 {
+ if x != nil {
+ return x.ContainerCount
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetRestartCount() int32 {
+ if x != nil {
+ return x.RestartCount
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetCpuRequestsMillicores() int64 {
+ if x != nil {
+ return x.CpuRequestsMillicores
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetMemoryRequestsBytes() int64 {
+ if x != nil {
+ return x.MemoryRequestsBytes
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetCpuLimitsMillicores() int64 {
+ if x != nil {
+ return x.CpuLimitsMillicores
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetMemoryLimitsBytes() int64 {
+ if x != nil {
+ return x.MemoryLimitsBytes
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetStatusReason() string {
+ if x != nil {
+ return x.StatusReason
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetControlledBy() string {
+ if x != nil {
+ return x.ControlledBy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetAge() string {
+ if x != nil {
+ return x.Age
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetReplicasDesired() int32 {
+ if x != nil {
+ return x.ReplicasDesired
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetReplicasReady() int32 {
+ if x != nil {
+ return x.ReplicasReady
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetReplicasAvailable() int32 {
+ if x != nil {
+ return x.ReplicasAvailable
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetReplicasUpdated() int32 {
+ if x != nil {
+ return x.ReplicasUpdated
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetStrategyType() string {
+ if x != nil {
+ return x.StrategyType
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetAvailable() bool {
+ if x != nil {
+ return x.Available
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetProgressing() bool {
+ if x != nil {
+ return x.Progressing
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetDeploymentStatus() string {
+ if x != nil {
+ return x.DeploymentStatus
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetImages() []string {
+ if x != nil {
+ return x.Images
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceName() string {
+ if x != nil {
+ return x.ServiceName
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetPodManagementPolicy() string {
+ if x != nil {
+ return x.PodManagementPolicy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetUpdateStrategyType() string {
+ if x != nil {
+ return x.UpdateStrategyType
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetVolumeClaimTemplateCount() int32 {
+ if x != nil {
+ return x.VolumeClaimTemplateCount
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetPvcRetentionPolicy() string {
+ if x != nil {
+ return x.PvcRetentionPolicy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetCurrentRevision() string {
+ if x != nil {
+ return x.CurrentRevision
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetUpdateRevision() string {
+ if x != nil {
+ return x.UpdateRevision
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetNodesDesired() int32 {
+ if x != nil {
+ return x.NodesDesired
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetNodesReady() int32 {
+ if x != nil {
+ return x.NodesReady
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetNodesAvailable() int32 {
+ if x != nil {
+ return x.NodesAvailable
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetNodesCurrent() int32 {
+ if x != nil {
+ return x.NodesCurrent
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetNodesUpdated() int32 {
+ if x != nil {
+ return x.NodesUpdated
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetNodesMisscheduled() int32 {
+ if x != nil {
+ return x.NodesMisscheduled
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetMaxUnavailable() string {
+ if x != nil {
+ return x.MaxUnavailable
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetPriorityClass() string {
+ if x != nil {
+ return x.PriorityClass
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetJobCompletionsDesired() int32 {
+ if x != nil {
+ return x.JobCompletionsDesired
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetJobCompletionsSucceeded() int32 {
+ if x != nil {
+ return x.JobCompletionsSucceeded
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetJobParallelism() int32 {
+ if x != nil {
+ return x.JobParallelism
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetJobBackoffLimit() int32 {
+ if x != nil {
+ return x.JobBackoffLimit
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetJobCompletionMode() string {
+ if x != nil {
+ return x.JobCompletionMode
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetJobSuspended() bool {
+ if x != nil {
+ return x.JobSuspended
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetJobDuration() string {
+ if x != nil {
+ return x.JobDuration
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetJobStatus() string {
+ if x != nil {
+ return x.JobStatus
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetJobActivePods() int32 {
+ if x != nil {
+ return x.JobActivePods
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetJobFailedPods() int32 {
+ if x != nil {
+ return x.JobFailedPods
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetCronSchedule() string {
+ if x != nil {
+ return x.CronSchedule
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetCronSuspended() bool {
+ if x != nil {
+ return x.CronSuspended
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetCronActiveJobs() int32 {
+ if x != nil {
+ return x.CronActiveJobs
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetCronLastScheduleTime() string {
+ if x != nil {
+ return x.CronLastScheduleTime
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetCronNextScheduleTime() string {
+ if x != nil {
+ return x.CronNextScheduleTime
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetCronConcurrencyPolicy() string {
+ if x != nil {
+ return x.CronConcurrencyPolicy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetCronSuccessfulJobsLimit() int32 {
+ if x != nil {
+ return x.CronSuccessfulJobsLimit
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetCronFailedJobsLimit() int32 {
+ if x != nil {
+ return x.CronFailedJobsLimit
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetCronStartingDeadlineSeconds() int32 {
+ if x != nil {
+ return x.CronStartingDeadlineSeconds
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetServiceType() string {
+ if x != nil {
+ return x.ServiceType
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetServiceClusterIp() string {
+ if x != nil {
+ return x.ServiceClusterIp
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetServiceExternalIps() []string {
+ if x != nil {
+ return x.ServiceExternalIps
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServicePorts() []*ServicePort {
+ if x != nil {
+ return x.ServicePorts
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceSelector() map[string]string {
+ if x != nil {
+ return x.ServiceSelector
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceSessionAffinity() string {
+ if x != nil {
+ return x.ServiceSessionAffinity
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetServiceExternalTrafficPolicy() string {
+ if x != nil {
+ return x.ServiceExternalTrafficPolicy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetServiceInternalTrafficPolicy() string {
+ if x != nil {
+ return x.ServiceInternalTrafficPolicy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetServiceLoadBalancerSourceRanges() []string {
+ if x != nil {
+ return x.ServiceLoadBalancerSourceRanges
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceLoadBalancerClass() string {
+ if x != nil {
+ return x.ServiceLoadBalancerClass
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetServiceIpFamilies() []string {
+ if x != nil {
+ return x.ServiceIpFamilies
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetServiceIpFamilyPolicy() string {
+ if x != nil {
+ return x.ServiceIpFamilyPolicy
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetIngressClassName() string {
+ if x != nil {
+ return x.IngressClassName
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetIngressHosts() []string {
+ if x != nil {
+ return x.IngressHosts
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressPaths() []string {
+ if x != nil {
+ return x.IngressPaths
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressBackends() []string {
+ if x != nil {
+ return x.IngressBackends
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressTlsHosts() []string {
+ if x != nil {
+ return x.IngressTlsHosts
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressTlsSecrets() []string {
+ if x != nil {
+ return x.IngressTlsSecrets
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressLoadBalancerIps() []string {
+ if x != nil {
+ return x.IngressLoadBalancerIps
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetIngressRulesCount() int32 {
+ if x != nil {
+ return x.IngressRulesCount
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetIngressTlsCount() int32 {
+ if x != nil {
+ return x.IngressTlsCount
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetIngressHasDefaultBackend() bool {
+ if x != nil {
+ return x.IngressHasDefaultBackend
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetPvcStorageClassName() string {
+ if x != nil {
+ return x.PvcStorageClassName
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetPvcRequestedCapacity() string {
+ if x != nil {
+ return x.PvcRequestedCapacity
}
return ""
}
-func (x *ResourceDetails) GetJobStatus() string {
+func (x *ResourceDetails) GetPvcActualCapacity() string {
if x != nil {
- return x.JobStatus
+ return x.PvcActualCapacity
}
return ""
}
-func (x *ResourceDetails) GetJobActivePods() int32 {
+func (x *ResourceDetails) GetPvcAccessModes() []string {
if x != nil {
- return x.JobActivePods
+ return x.PvcAccessModes
}
- return 0
+ return nil
}
-func (x *ResourceDetails) GetJobFailedPods() int32 {
+func (x *ResourceDetails) GetPvcVolumeMode() string {
if x != nil {
- return x.JobFailedPods
+ return x.PvcVolumeMode
}
- return 0
+ return ""
}
-func (x *ResourceDetails) GetCronSchedule() string {
+func (x *ResourceDetails) GetPvcVolumeName() string {
if x != nil {
- return x.CronSchedule
+ return x.PvcVolumeName
}
return ""
}
-func (x *ResourceDetails) GetCronSuspended() bool {
+func (x *ResourceDetails) GetPvcStatus() string {
if x != nil {
- return x.CronSuspended
+ return x.PvcStatus
}
- return false
+ return ""
}
-func (x *ResourceDetails) GetCronActiveJobs() int32 {
+func (x *ResourceDetails) GetPvcIsBound() bool {
if x != nil {
- return x.CronActiveJobs
+ return x.PvcIsBound
}
- return 0
+ return false
}
-func (x *ResourceDetails) GetCronLastScheduleTime() string {
+func (x *ResourceDetails) GetPvcSelectorMatchLabels() string {
if x != nil {
- return x.CronLastScheduleTime
+ return x.PvcSelectorMatchLabels
}
return ""
}
-func (x *ResourceDetails) GetCronNextScheduleTime() string {
+func (x *ResourceDetails) GetPvcAllowedTopologies() []string {
if x != nil {
- return x.CronNextScheduleTime
+ return x.PvcAllowedTopologies
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetPvStorageClassName() string {
+ if x != nil {
+ return x.PvStorageClassName
}
return ""
}
-func (x *ResourceDetails) GetCronConcurrencyPolicy() string {
+func (x *ResourceDetails) GetPvCapacity() string {
if x != nil {
- return x.CronConcurrencyPolicy
+ return x.PvCapacity
}
return ""
}
-func (x *ResourceDetails) GetCronSuccessfulJobsLimit() int32 {
+func (x *ResourceDetails) GetPvAccessModes() []string {
if x != nil {
- return x.CronSuccessfulJobsLimit
+ return x.PvAccessModes
}
- return 0
+ return nil
}
-func (x *ResourceDetails) GetCronFailedJobsLimit() int32 {
+func (x *ResourceDetails) GetPvReclaimPolicy() string {
if x != nil {
- return x.CronFailedJobsLimit
+ return x.PvReclaimPolicy
}
- return 0
+ return ""
}
-func (x *ResourceDetails) GetCronStartingDeadlineSeconds() int32 {
+func (x *ResourceDetails) GetPvClaimRefName() string {
if x != nil {
- return x.CronStartingDeadlineSeconds
+ return x.PvClaimRefName
}
- return 0
+ return ""
}
-func (x *ResourceDetails) GetServiceType() string {
+func (x *ResourceDetails) GetPvClaimRefNamespace() string {
if x != nil {
- return x.ServiceType
+ return x.PvClaimRefNamespace
}
return ""
}
-func (x *ResourceDetails) GetServiceClusterIp() string {
+func (x *ResourceDetails) GetPvStatus() string {
if x != nil {
- return x.ServiceClusterIp
+ return x.PvStatus
}
return ""
}
-func (x *ResourceDetails) GetServiceExternalIps() []string {
+func (x *ResourceDetails) GetPvIsBound() bool {
if x != nil {
- return x.ServiceExternalIps
+ return x.PvIsBound
}
- return nil
+ return false
}
-func (x *ResourceDetails) GetServicePorts() []*ServicePort {
+func (x *ResourceDetails) GetPvVolumeMode() string {
if x != nil {
- return x.ServicePorts
+ return x.PvVolumeMode
}
- return nil
+ return ""
}
-func (x *ResourceDetails) GetServiceSelector() map[string]string {
+func (x *ResourceDetails) GetPvCsiDriver() string {
if x != nil {
- return x.ServiceSelector
+ return x.PvCsiDriver
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetPvVolumeSourceType() string {
+ if x != nil {
+ return x.PvVolumeSourceType
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetPvNodeAffinityZones() []string {
+ if x != nil {
+ return x.PvNodeAffinityZones
}
return nil
}
-func (x *ResourceDetails) GetServiceSessionAffinity() string {
+func (x *ResourceDetails) GetScProvisioner() string {
if x != nil {
- return x.ServiceSessionAffinity
+ return x.ScProvisioner
}
return ""
}
-func (x *ResourceDetails) GetServiceExternalTrafficPolicy() string {
+func (x *ResourceDetails) GetScReclaimPolicy() string {
if x != nil {
- return x.ServiceExternalTrafficPolicy
+ return x.ScReclaimPolicy
}
return ""
}
-func (x *ResourceDetails) GetServiceInternalTrafficPolicy() string {
+func (x *ResourceDetails) GetScVolumeBindingMode() string {
if x != nil {
- return x.ServiceInternalTrafficPolicy
+ return x.ScVolumeBindingMode
}
return ""
}
-func (x *ResourceDetails) GetServiceLoadBalancerSourceRanges() []string {
+func (x *ResourceDetails) GetScAllowVolumeExpansion() bool {
if x != nil {
- return x.ServiceLoadBalancerSourceRanges
+ return x.ScAllowVolumeExpansion
+ }
+ return false
+}
+
+func (x *ResourceDetails) GetScParameters() map[string]string {
+ if x != nil {
+ return x.ScParameters
}
return nil
}
-func (x *ResourceDetails) GetServiceLoadBalancerClass() string {
+func (x *ResourceDetails) GetScAllowedTopologies() []string {
if x != nil {
- return x.ServiceLoadBalancerClass
+ return x.ScAllowedTopologies
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetScMountOptions() []string {
+ if x != nil {
+ return x.ScMountOptions
+ }
+ return nil
+}
+
+func (x *ResourceDetails) GetNsStatus() string {
+ if x != nil {
+ return x.NsStatus
}
return ""
}
-func (x *ResourceDetails) GetServiceIpFamilies() []string {
+func (x *ResourceDetails) GetNsFinalizers() []string {
if x != nil {
- return x.ServiceIpFamilies
+ return x.NsFinalizers
}
return nil
}
-func (x *ResourceDetails) GetServiceIpFamilyPolicy() string {
+func (x *ResourceDetails) GetNodeCpuCapacity() string {
if x != nil {
- return x.ServiceIpFamilyPolicy
+ return x.NodeCpuCapacity
}
return ""
}
-func (x *ResourceDetails) GetIngressClassName() string {
+func (x *ResourceDetails) GetNodeMemoryCapacity() string {
if x != nil {
- return x.IngressClassName
+ return x.NodeMemoryCapacity
}
return ""
}
-func (x *ResourceDetails) GetIngressHosts() []string {
+func (x *ResourceDetails) GetNodeReady() bool {
if x != nil {
- return x.IngressHosts
+ return x.NodeReady
}
- return nil
+ return false
}
-func (x *ResourceDetails) GetIngressPaths() []string {
+func (x *ResourceDetails) GetNodeTaints() []*NodeTaint {
if x != nil {
- return x.IngressPaths
+ return x.NodeTaints
}
return nil
}
-func (x *ResourceDetails) GetIngressBackends() []string {
+func (x *ResourceDetails) GetNodeRoles() []string {
if x != nil {
- return x.IngressBackends
+ return x.NodeRoles
}
return nil
}
-func (x *ResourceDetails) GetIngressTlsHosts() []string {
+func (x *ResourceDetails) GetNodeInternalIp() string {
if x != nil {
- return x.IngressTlsHosts
+ return x.NodeInternalIp
}
- return nil
+ return ""
}
-func (x *ResourceDetails) GetIngressTlsSecrets() []string {
+func (x *ResourceDetails) GetNodeExternalIp() string {
if x != nil {
- return x.IngressTlsSecrets
+ return x.NodeExternalIp
}
- return nil
+ return ""
}
-func (x *ResourceDetails) GetIngressLoadBalancerIps() []string {
+func (x *ResourceDetails) GetNodeVersion() string {
if x != nil {
- return x.IngressLoadBalancerIps
+ return x.NodeVersion
}
- return nil
+ return ""
}
-func (x *ResourceDetails) GetIngressRulesCount() int32 {
+func (x *ResourceDetails) GetNodeInstanceType() string {
if x != nil {
- return x.IngressRulesCount
+ return x.NodeInstanceType
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetNodeOs() string {
+ if x != nil {
+ return x.NodeOs
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetNodeContainerRuntime() string {
+ if x != nil {
+ return x.NodeContainerRuntime
+ }
+ return ""
+}
+
+func (x *ResourceDetails) GetNodeImageCount() int32 {
+ if x != nil {
+ return x.NodeImageCount
}
return 0
}
-func (x *ResourceDetails) GetIngressTlsCount() int32 {
+func (x *ResourceDetails) GetHpaMinReplicas() int32 {
if x != nil {
- return x.IngressTlsCount
+ return x.HpaMinReplicas
}
return 0
}
-func (x *ResourceDetails) GetIngressHasDefaultBackend() bool {
+func (x *ResourceDetails) GetHpaMaxReplicas() int32 {
if x != nil {
- return x.IngressHasDefaultBackend
+ return x.HpaMaxReplicas
}
- return false
+ return 0
}
-func (x *ResourceDetails) GetPvcStorageClassName() string {
+func (x *ResourceDetails) GetHpaCurrentReplicas() int32 {
if x != nil {
- return x.PvcStorageClassName
+ return x.HpaCurrentReplicas
}
- return ""
+ return 0
}
-func (x *ResourceDetails) GetPvcRequestedCapacity() string {
+func (x *ResourceDetails) GetHpaDesiredReplicas() int32 {
if x != nil {
- return x.PvcRequestedCapacity
+ return x.HpaDesiredReplicas
}
- return ""
+ return 0
}
-func (x *ResourceDetails) GetPvcActualCapacity() string {
+func (x *ResourceDetails) GetHpaMetricsCount() int32 {
if x != nil {
- return x.PvcActualCapacity
+ return x.HpaMetricsCount
+ }
+ return 0
+}
+
+func (x *ResourceDetails) GetHpaStatus() string {
+ if x != nil {
+ return x.HpaStatus
}
return ""
}
-func (x *ResourceDetails) GetPvcAccessModes() []string {
+func (x *ResourceDetails) GetHpaScaleUpStabilization() int32 {
if x != nil {
- return x.PvcAccessModes
+ return x.HpaScaleUpStabilization
}
- return nil
+ return 0
}
-func (x *ResourceDetails) GetPvcVolumeMode() string {
+func (x *ResourceDetails) GetHpaScaleDownStabilization() int32 {
if x != nil {
- return x.PvcVolumeMode
+ return x.HpaScaleDownStabilization
}
- return ""
+ return 0
}
-func (x *ResourceDetails) GetPvcVolumeName() string {
+func (x *ResourceDetails) GetVpaUpdateMode() string {
if x != nil {
- return x.PvcVolumeName
+ return x.VpaUpdateMode
}
return ""
}
-func (x *ResourceDetails) GetPvcStatus() string {
+func (x *ResourceDetails) GetVpaPoliciesCount() int32 {
if x != nil {
- return x.PvcStatus
+ return x.VpaPoliciesCount
}
- return ""
+ return 0
}
-func (x *ResourceDetails) GetPvcIsBound() bool {
+func (x *ResourceDetails) GetVpaRecommendationsCount() int32 {
if x != nil {
- return x.PvcIsBound
+ return x.VpaRecommendationsCount
}
- return false
+ return 0
}
-func (x *ResourceDetails) GetPvcSelectorMatchLabels() string {
+func (x *ResourceDetails) GetVpaCpuTarget() string {
if x != nil {
- return x.PvcSelectorMatchLabels
+ return x.VpaCpuTarget
}
return ""
}
-func (x *ResourceDetails) GetPvcAllowedTopologies() []string {
+func (x *ResourceDetails) GetVpaMemoryTarget() string {
if x != nil {
- return x.PvcAllowedTopologies
+ return x.VpaMemoryTarget
}
- return nil
+ return ""
}
-func (x *ResourceDetails) GetPvStorageClassName() string {
+func (x *ResourceDetails) GetVpaStatus() string {
if x != nil {
- return x.PvStorageClassName
+ return x.VpaStatus
}
return ""
}
-func (x *ResourceDetails) GetPvCapacity() string {
+func (x *ResourceDetails) GetLimitRangeItemsCount() int32 {
if x != nil {
- return x.PvCapacity
+ return x.LimitRangeItemsCount
}
- return ""
+ return 0
}
-func (x *ResourceDetails) GetPvAccessModes() []string {
+func (x *ResourceDetails) GetLimitRangeTypes() []string {
if x != nil {
- return x.PvAccessModes
+ return x.LimitRangeTypes
}
return nil
}
-func (x *ResourceDetails) GetPvReclaimPolicy() string {
+func (x *ResourceDetails) GetLimitRangeHasDefaults() bool {
if x != nil {
- return x.PvReclaimPolicy
+ return x.LimitRangeHasDefaults
}
- return ""
+ return false
}
-func (x *ResourceDetails) GetPvClaimRefName() string {
+func (x *ResourceDetails) GetLimitRangeMaxCpu() string {
if x != nil {
- return x.PvClaimRefName
+ return x.LimitRangeMaxCpu
}
return ""
}
-func (x *ResourceDetails) GetPvClaimRefNamespace() string {
+func (x *ResourceDetails) GetLimitRangeMaxMemory() string {
if x != nil {
- return x.PvClaimRefNamespace
+ return x.LimitRangeMaxMemory
}
return ""
}
-func (x *ResourceDetails) GetPvStatus() string {
+func (x *ResourceDetails) GetLimitRangeMinCpu() string {
if x != nil {
- return x.PvStatus
+ return x.LimitRangeMinCpu
}
return ""
}
-func (x *ResourceDetails) GetPvIsBound() bool {
+func (x *ResourceDetails) GetLimitRangeMinMemory() string {
if x != nil {
- return x.PvIsBound
+ return x.LimitRangeMinMemory
}
- return false
+ return ""
}
-func (x *ResourceDetails) GetPvVolumeMode() string {
+func (x *ResourceDetails) GetLimitRangeDefaultCpuLimit() string {
if x != nil {
- return x.PvVolumeMode
+ return x.LimitRangeDefaultCpuLimit
}
return ""
}
-func (x *ResourceDetails) GetPvCsiDriver() string {
+func (x *ResourceDetails) GetLimitRangeDefaultMemoryLimit() string {
if x != nil {
- return x.PvCsiDriver
+ return x.LimitRangeDefaultMemoryLimit
}
return ""
}
-func (x *ResourceDetails) GetPvVolumeSourceType() string {
+func (x *ResourceDetails) GetLimitRangeDefaultCpuRequest() string {
if x != nil {
- return x.PvVolumeSourceType
+ return x.LimitRangeDefaultCpuRequest
}
return ""
}
-func (x *ResourceDetails) GetPvNodeAffinityZones() []string {
+func (x *ResourceDetails) GetLimitRangeDefaultMemoryRequest() string {
if x != nil {
- return x.PvNodeAffinityZones
+ return x.LimitRangeDefaultMemoryRequest
}
- return nil
+ return ""
}
-func (x *ResourceDetails) GetScProvisioner() string {
+func (x *ResourceDetails) GetLimitRangeStatus() string {
if x != nil {
- return x.ScProvisioner
+ return x.LimitRangeStatus
}
return ""
}
-func (x *ResourceDetails) GetScReclaimPolicy() string {
+func (x *ResourceDetails) GetResourceVersion() string {
if x != nil {
- return x.ScReclaimPolicy
+ return x.ResourceVersion
}
return ""
}
-func (x *ResourceDetails) GetScVolumeBindingMode() string {
+func (x *ResourceDetails) GetApiVersion() string {
if x != nil {
- return x.ScVolumeBindingMode
+ return x.ApiVersion
}
return ""
}
-func (x *ResourceDetails) GetScAllowVolumeExpansion() bool {
- if x != nil {
- return x.ScAllowVolumeExpansion
- }
- return false
+type isResourceDetails_Details interface {
+ isResourceDetails_Details()
}
-func (x *ResourceDetails) GetScParameters() map[string]string {
- if x != nil {
- return x.ScParameters
- }
- return nil
+type ResourceDetails_PodDetails struct {
+ // Pod-specific fields
+ PodDetails *PodDetails `protobuf:"bytes,1,opt,name=pod_details,json=podDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetScAllowedTopologies() []string {
- if x != nil {
- return x.ScAllowedTopologies
- }
- return nil
+type ResourceDetails_DeploymentDetails struct {
+ // Deployment-specific fields
+ DeploymentDetails *DeploymentDetails `protobuf:"bytes,2,opt,name=deployment_details,json=deploymentDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetScMountOptions() []string {
- if x != nil {
- return x.ScMountOptions
- }
- return nil
+type ResourceDetails_StatefulSetDetails struct {
+ // StatefulSet-specific fields
+ StatefulSetDetails *StatefulSetDetails `protobuf:"bytes,3,opt,name=stateful_set_details,json=statefulSetDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNsStatus() string {
- if x != nil {
- return x.NsStatus
- }
- return ""
+type ResourceDetails_DaemonSetDetails struct {
+ // DaemonSet-specific fields
+ DaemonSetDetails *DaemonSetDetails `protobuf:"bytes,4,opt,name=daemon_set_details,json=daemonSetDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNsFinalizers() []string {
- if x != nil {
- return x.NsFinalizers
- }
- return nil
+type ResourceDetails_ReplicaSetDetails struct {
+ // ReplicaSet-specific fields
+ ReplicaSetDetails *ReplicaSetDetails `protobuf:"bytes,5,opt,name=replica_set_details,json=replicaSetDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeCpuCapacity() string {
- if x != nil {
- return x.NodeCpuCapacity
- }
- return ""
+type ResourceDetails_JobDetails struct {
+ // Job-specific fields
+ JobDetails *JobDetails `protobuf:"bytes,6,opt,name=job_details,json=jobDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeMemoryCapacity() string {
- if x != nil {
- return x.NodeMemoryCapacity
- }
- return ""
+type ResourceDetails_CronJobDetails struct {
+ // CronJob-specific fields
+ CronJobDetails *CronJobDetails `protobuf:"bytes,7,opt,name=cron_job_details,json=cronJobDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeReady() bool {
- if x != nil {
- return x.NodeReady
- }
- return false
+type ResourceDetails_ServiceDetails struct {
+ // Service-specific fields
+ ServiceDetails *ServiceDetails `protobuf:"bytes,8,opt,name=service_details,json=serviceDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeTaints() []*NodeTaint {
- if x != nil {
- return x.NodeTaints
- }
- return nil
+type ResourceDetails_IngressDetails struct {
+ // Ingress-specific fields
+ IngressDetails *IngressDetails `protobuf:"bytes,9,opt,name=ingress_details,json=ingressDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeRoles() []string {
- if x != nil {
- return x.NodeRoles
- }
- return nil
+type ResourceDetails_PvcDetails struct {
+ // PersistentVolumeClaim-specific fields
+ PvcDetails *PersistentVolumeClaimDetails `protobuf:"bytes,140,opt,name=pvc_details,json=pvcDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeInternalIp() string {
- if x != nil {
- return x.NodeInternalIp
- }
- return ""
+type ResourceDetails_PvDetails struct {
+ // PersistentVolume-specific fields
+ PvDetails *PersistentVolumeDetails `protobuf:"bytes,141,opt,name=pv_details,json=pvDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeExternalIp() string {
- if x != nil {
- return x.NodeExternalIp
- }
- return ""
+type ResourceDetails_ScDetails struct {
+ // StorageClass-specific fields
+ ScDetails *StorageClassDetails `protobuf:"bytes,142,opt,name=sc_details,json=scDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeVersion() string {
- if x != nil {
- return x.NodeVersion
- }
- return ""
+type ResourceDetails_NsDetails struct {
+ // Namespace-specific fields
+ NsDetails *NamespaceDetails `protobuf:"bytes,143,opt,name=ns_details,json=nsDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeInstanceType() string {
- if x != nil {
- return x.NodeInstanceType
- }
- return ""
+type ResourceDetails_NodeDetails struct {
+ // Node-specific fields
+ NodeDetails *NodeDetails `protobuf:"bytes,144,opt,name=node_details,json=nodeDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeOs() string {
- if x != nil {
- return x.NodeOs
- }
- return ""
+type ResourceDetails_HpaDetails struct {
+ // HorizontalPodAutoscaler-specific fields
+ HpaDetails *HPADetails `protobuf:"bytes,145,opt,name=hpa_details,json=hpaDetails,proto3,oneof"`
+}
+
+type ResourceDetails_VpaDetails struct {
+ // VerticalPodAutoscaler-specific fields
+ VpaDetails *VPADetails `protobuf:"bytes,146,opt,name=vpa_details,json=vpaDetails,proto3,oneof"`
+}
+
+type ResourceDetails_LimitRangeDetails struct {
+ // LimitRange-specific fields
+ LimitRangeDetails *LimitRangeDetails `protobuf:"bytes,147,opt,name=limit_range_details,json=limitRangeDetails,proto3,oneof"`
+}
+
+type ResourceDetails_ServiceAccountDetails struct {
+ // ServiceAccount-specific fields
+ ServiceAccountDetails *ServiceAccountDetails `protobuf:"bytes,232,opt,name=service_account_details,json=serviceAccountDetails,proto3,oneof"`
+}
+
+type ResourceDetails_RoleDetails struct {
+ // Role-specific fields
+ RoleDetails *RoleDetails `protobuf:"bytes,233,opt,name=role_details,json=roleDetails,proto3,oneof"`
+}
+
+type ResourceDetails_RoleBindingDetails struct {
+ // RoleBinding-specific fields
+ RoleBindingDetails *RoleBindingDetails `protobuf:"bytes,234,opt,name=role_binding_details,json=roleBindingDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeContainerRuntime() string {
- if x != nil {
- return x.NodeContainerRuntime
- }
- return ""
+type ResourceDetails_KedaScaledObjectDetails struct {
+ // KedaScaledObject-specific fields
+ KedaScaledObjectDetails *KedaScaledObjectDetails `protobuf:"bytes,235,opt,name=keda_scaled_object_details,json=kedaScaledObjectDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetNodeImageCount() int32 {
- if x != nil {
- return x.NodeImageCount
- }
- return 0
+type ResourceDetails_KarpenterResourceDetails struct {
+ // KarpenterResource-specific fields
+ KarpenterResourceDetails *KarpenterResourceDetails `protobuf:"bytes,236,opt,name=karpenter_resource_details,json=karpenterResourceDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaMinReplicas() int32 {
- if x != nil {
- return x.HpaMinReplicas
- }
- return 0
+type ResourceDetails_PodDisruptionBudgetDetails struct {
+ // PodDisruptionBudget-specific fields
+ PodDisruptionBudgetDetails *PodDisruptionBudgetDetails `protobuf:"bytes,237,opt,name=pod_disruption_budget_details,json=podDisruptionBudgetDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaMaxReplicas() int32 {
- if x != nil {
- return x.HpaMaxReplicas
- }
- return 0
+type ResourceDetails_ResourceQuotaDetails struct {
+ // ResourceQuota-specific fields
+ ResourceQuotaDetails *ResourceQuotaDetails `protobuf:"bytes,238,opt,name=resource_quota_details,json=resourceQuotaDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaCurrentReplicas() int32 {
- if x != nil {
- return x.HpaCurrentReplicas
- }
- return 0
+type ResourceDetails_VolcanoJobDetails struct {
+ // VolcanoJob-specific fields
+ VolcanoJobDetails *VolcanoJobDetails `protobuf:"bytes,239,opt,name=volcano_job_details,json=volcanoJobDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaDesiredReplicas() int32 {
- if x != nil {
- return x.HpaDesiredReplicas
- }
- return 0
+type ResourceDetails_SparkApplicationDetails struct {
+ // SparkApplication-specific fields
+ SparkApplicationDetails *SparkApplicationDetails `protobuf:"bytes,242,opt,name=spark_application_details,json=sparkApplicationDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaMetricsCount() int32 {
- if x != nil {
- return x.HpaMetricsCount
- }
- return 0
+type ResourceDetails_ScheduledSparkApplicationDetails struct {
+ // ScheduledSparkApplication-specific fields
+ ScheduledSparkApplicationDetails *ScheduledSparkApplicationDetails `protobuf:"bytes,243,opt,name=scheduled_spark_application_details,json=scheduledSparkApplicationDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaStatus() string {
- if x != nil {
- return x.HpaStatus
- }
- return ""
+type ResourceDetails_KyvernoPolicyDetails struct {
+ // KyvernoPolicy-specific fields
+ KyvernoPolicyDetails *KyvernoPolicyDetails `protobuf:"bytes,244,opt,name=kyverno_policy_details,json=kyvernoPolicyDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaScaleUpStabilization() int32 {
- if x != nil {
- return x.HpaScaleUpStabilization
- }
- return 0
+type ResourceDetails_KyvernoPolicyReportDetails struct {
+ // KyvernoPolicyReport-specific fields
+ KyvernoPolicyReportDetails *KyvernoPolicyReportDetails `protobuf:"bytes,245,opt,name=kyverno_policy_report_details,json=kyvernoPolicyReportDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetHpaScaleDownStabilization() int32 {
- if x != nil {
- return x.HpaScaleDownStabilization
- }
- return 0
+type ResourceDetails_GatekeeperConstraintTemplateDetails struct {
+ // GatekeeperConstraintTemplate-specific fields
+ GatekeeperConstraintTemplateDetails *GatekeeperConstraintTemplateDetails `protobuf:"bytes,246,opt,name=gatekeeper_constraint_template_details,json=gatekeeperConstraintTemplateDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetVpaUpdateMode() string {
- if x != nil {
- return x.VpaUpdateMode
- }
- return ""
+type ResourceDetails_GatekeeperConstraintDetails struct {
+ // GatekeeperConstraint-specific fields
+ GatekeeperConstraintDetails *GatekeeperConstraintDetails `protobuf:"bytes,247,opt,name=gatekeeper_constraint_details,json=gatekeeperConstraintDetails,proto3,oneof"`
}
-func (x *ResourceDetails) GetVpaPoliciesCount() int32 {
- if x != nil {
- return x.VpaPoliciesCount
- }
- return 0
-}
+func (*ResourceDetails_PodDetails) isResourceDetails_Details() {}
-func (x *ResourceDetails) GetVpaRecommendationsCount() int32 {
- if x != nil {
- return x.VpaRecommendationsCount
- }
- return 0
+func (*ResourceDetails_DeploymentDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_StatefulSetDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_DaemonSetDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_ReplicaSetDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_JobDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_CronJobDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_ServiceDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_IngressDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_PvcDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_PvDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_ScDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_NsDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_NodeDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_HpaDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_VpaDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_LimitRangeDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_ServiceAccountDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_RoleDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_RoleBindingDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_KedaScaledObjectDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_KarpenterResourceDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_PodDisruptionBudgetDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_ResourceQuotaDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_VolcanoJobDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_SparkApplicationDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_ScheduledSparkApplicationDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_KyvernoPolicyDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_KyvernoPolicyReportDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_GatekeeperConstraintTemplateDetails) isResourceDetails_Details() {}
+
+func (*ResourceDetails_GatekeeperConstraintDetails) isResourceDetails_Details() {}
+
+// PodDetails contains detailed Pod information (for the oneof, if we need nested data later)
+type PodDetails struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Containers []*ContainerSummary `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container details for debugging
}
-func (x *ResourceDetails) GetVpaCpuTarget() string {
- if x != nil {
- return x.VpaCpuTarget
+func (x *PodDetails) Reset() {
+ *x = PodDetails{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *ResourceDetails) GetVpaMemoryTarget() string {
- if x != nil {
- return x.VpaMemoryTarget
- }
- return ""
+func (x *PodDetails) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetVpaStatus() string {
- if x != nil {
- return x.VpaStatus
+func (*PodDetails) ProtoMessage() {}
+
+func (x *PodDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[33]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetLimitRangeItemsCount() int32 {
- if x != nil {
- return x.LimitRangeItemsCount
- }
- return 0
+// Deprecated: Use PodDetails.ProtoReflect.Descriptor instead.
+func (*PodDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{33}
}
-func (x *ResourceDetails) GetLimitRangeTypes() []string {
+func (x *PodDetails) GetContainers() []*ContainerSummary {
if x != nil {
- return x.LimitRangeTypes
+ return x.Containers
}
return nil
}
-func (x *ResourceDetails) GetLimitRangeHasDefaults() bool {
- if x != nil {
- return x.LimitRangeHasDefaults
- }
- return false
-}
+// ContainerSummary provides essential container information
+type ContainerSummary struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ResourceDetails) GetLimitRangeMaxCpu() string {
- if x != nil {
- return x.LimitRangeMaxCpu
- }
- return ""
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Container name
+ Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` // Container image
+ Ready bool `protobuf:"varint,3,opt,name=ready,proto3" json:"ready,omitempty"` // Container ready status
+ RestartCount int32 `protobuf:"varint,4,opt,name=restart_count,json=restartCount,proto3" json:"restart_count,omitempty"` // Container restart count
+ State string `protobuf:"bytes,5,opt,name=state,proto3" json:"state,omitempty"` // "running", "waiting", "terminated"
+ StateReason string `protobuf:"bytes,6,opt,name=state_reason,json=stateReason,proto3" json:"state_reason,omitempty"` // Reason for current state (if not running)
}
-func (x *ResourceDetails) GetLimitRangeMaxMemory() string {
- if x != nil {
- return x.LimitRangeMaxMemory
+func (x *ContainerSummary) Reset() {
+ *x = ContainerSummary{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[34]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *ResourceDetails) GetLimitRangeMinCpu() string {
- if x != nil {
- return x.LimitRangeMinCpu
- }
- return ""
+func (x *ContainerSummary) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *ResourceDetails) GetLimitRangeMinMemory() string {
- if x != nil {
- return x.LimitRangeMinMemory
- }
- return ""
-}
+func (*ContainerSummary) ProtoMessage() {}
-func (x *ResourceDetails) GetLimitRangeDefaultCpuLimit() string {
- if x != nil {
- return x.LimitRangeDefaultCpuLimit
+func (x *ContainerSummary) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[34]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *ResourceDetails) GetLimitRangeDefaultMemoryLimit() string {
+// Deprecated: Use ContainerSummary.ProtoReflect.Descriptor instead.
+func (*ContainerSummary) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *ContainerSummary) GetName() string {
if x != nil {
- return x.LimitRangeDefaultMemoryLimit
+ return x.Name
}
return ""
}
-func (x *ResourceDetails) GetLimitRangeDefaultCpuRequest() string {
+func (x *ContainerSummary) GetImage() string {
if x != nil {
- return x.LimitRangeDefaultCpuRequest
+ return x.Image
}
return ""
}
-func (x *ResourceDetails) GetLimitRangeDefaultMemoryRequest() string {
+func (x *ContainerSummary) GetReady() bool {
if x != nil {
- return x.LimitRangeDefaultMemoryRequest
+ return x.Ready
}
- return ""
+ return false
}
-func (x *ResourceDetails) GetLimitRangeStatus() string {
+func (x *ContainerSummary) GetRestartCount() int32 {
if x != nil {
- return x.LimitRangeStatus
+ return x.RestartCount
}
- return ""
+ return 0
}
-func (x *ResourceDetails) GetResourceVersion() string {
+func (x *ContainerSummary) GetState() string {
if x != nil {
- return x.ResourceVersion
+ return x.State
}
return ""
}
-func (x *ResourceDetails) GetApiVersion() string {
+func (x *ContainerSummary) GetStateReason() string {
if x != nil {
- return x.ApiVersion
+ return x.StateReason
}
return ""
}
-type isResourceDetails_Details interface {
- isResourceDetails_Details()
-}
-
-type ResourceDetails_PodDetails struct {
- // Pod-specific fields
- PodDetails *PodDetails `protobuf:"bytes,1,opt,name=pod_details,json=podDetails,proto3,oneof"`
-}
-
-type ResourceDetails_DeploymentDetails struct {
- // Deployment-specific fields
- DeploymentDetails *DeploymentDetails `protobuf:"bytes,2,opt,name=deployment_details,json=deploymentDetails,proto3,oneof"`
-}
-
-type ResourceDetails_StatefulSetDetails struct {
- // StatefulSet-specific fields
- StatefulSetDetails *StatefulSetDetails `protobuf:"bytes,3,opt,name=stateful_set_details,json=statefulSetDetails,proto3,oneof"`
-}
-
-type ResourceDetails_DaemonSetDetails struct {
- // DaemonSet-specific fields
- DaemonSetDetails *DaemonSetDetails `protobuf:"bytes,4,opt,name=daemon_set_details,json=daemonSetDetails,proto3,oneof"`
-}
-
-type ResourceDetails_ReplicaSetDetails struct {
- // ReplicaSet-specific fields
- ReplicaSetDetails *ReplicaSetDetails `protobuf:"bytes,5,opt,name=replica_set_details,json=replicaSetDetails,proto3,oneof"`
-}
-
-type ResourceDetails_JobDetails struct {
- // Job-specific fields
- JobDetails *JobDetails `protobuf:"bytes,6,opt,name=job_details,json=jobDetails,proto3,oneof"`
-}
-
-type ResourceDetails_CronJobDetails struct {
- // CronJob-specific fields
- CronJobDetails *CronJobDetails `protobuf:"bytes,7,opt,name=cron_job_details,json=cronJobDetails,proto3,oneof"`
-}
-
-type ResourceDetails_ServiceDetails struct {
- // Service-specific fields
- ServiceDetails *ServiceDetails `protobuf:"bytes,8,opt,name=service_details,json=serviceDetails,proto3,oneof"`
-}
-
-type ResourceDetails_IngressDetails struct {
- // Ingress-specific fields
- IngressDetails *IngressDetails `protobuf:"bytes,9,opt,name=ingress_details,json=ingressDetails,proto3,oneof"`
-}
+// DeploymentDetails contains detailed Deployment information for drill-down
+type DeploymentDetails struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-type ResourceDetails_PvcDetails struct {
- // PersistentVolumeClaim-specific fields
- PvcDetails *PersistentVolumeClaimDetails `protobuf:"bytes,140,opt,name=pvc_details,json=pvcDetails,proto3,oneof"`
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
+ Conditions []*DeploymentCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // Deployment conditions for debugging
}
-type ResourceDetails_PvDetails struct {
- // PersistentVolume-specific fields
- PvDetails *PersistentVolumeDetails `protobuf:"bytes,141,opt,name=pv_details,json=pvDetails,proto3,oneof"`
+func (x *DeploymentDetails) Reset() {
+ *x = DeploymentDetails{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[35]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-type ResourceDetails_ScDetails struct {
- // StorageClass-specific fields
- ScDetails *StorageClassDetails `protobuf:"bytes,142,opt,name=sc_details,json=scDetails,proto3,oneof"`
+func (x *DeploymentDetails) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-type ResourceDetails_NsDetails struct {
- // Namespace-specific fields
- NsDetails *NamespaceDetails `protobuf:"bytes,143,opt,name=ns_details,json=nsDetails,proto3,oneof"`
-}
+func (*DeploymentDetails) ProtoMessage() {}
-type ResourceDetails_NodeDetails struct {
- // Node-specific fields
- NodeDetails *NodeDetails `protobuf:"bytes,144,opt,name=node_details,json=nodeDetails,proto3,oneof"`
+func (x *DeploymentDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[35]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-type ResourceDetails_HpaDetails struct {
- // HorizontalPodAutoscaler-specific fields
- HpaDetails *HPADetails `protobuf:"bytes,145,opt,name=hpa_details,json=hpaDetails,proto3,oneof"`
+// Deprecated: Use DeploymentDetails.ProtoReflect.Descriptor instead.
+func (*DeploymentDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{35}
}
-type ResourceDetails_VpaDetails struct {
- // VerticalPodAutoscaler-specific fields
- VpaDetails *VPADetails `protobuf:"bytes,146,opt,name=vpa_details,json=vpaDetails,proto3,oneof"`
+func (x *DeploymentDetails) GetContainers() []*ContainerTemplate {
+ if x != nil {
+ return x.Containers
+ }
+ return nil
}
-type ResourceDetails_LimitRangeDetails struct {
- // LimitRange-specific fields
- LimitRangeDetails *LimitRangeDetails `protobuf:"bytes,147,opt,name=limit_range_details,json=limitRangeDetails,proto3,oneof"`
+func (x *DeploymentDetails) GetConditions() []*DeploymentCondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
}
-type ResourceDetails_ServiceAccountDetails struct {
- // ServiceAccount-specific fields
- ServiceAccountDetails *ServiceAccountDetails `protobuf:"bytes,232,opt,name=service_account_details,json=serviceAccountDetails,proto3,oneof"`
-}
+// ContainerTemplate represents a container template in a deployment
+type ContainerTemplate struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-type ResourceDetails_RoleDetails struct {
- // Role-specific fields
- RoleDetails *RoleDetails `protobuf:"bytes,233,opt,name=role_details,json=roleDetails,proto3,oneof"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Container name
+ Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` // Container image
+ CpuRequestsMillicores int64 `protobuf:"varint,3,opt,name=cpu_requests_millicores,json=cpuRequestsMillicores,proto3" json:"cpu_requests_millicores,omitempty"` // CPU requests in millicores
+ MemoryRequestsBytes int64 `protobuf:"varint,4,opt,name=memory_requests_bytes,json=memoryRequestsBytes,proto3" json:"memory_requests_bytes,omitempty"` // Memory requests in bytes
+ CpuLimitsMillicores int64 `protobuf:"varint,5,opt,name=cpu_limits_millicores,json=cpuLimitsMillicores,proto3" json:"cpu_limits_millicores,omitempty"` // CPU limits in millicores
+ MemoryLimitsBytes int64 `protobuf:"varint,6,opt,name=memory_limits_bytes,json=memoryLimitsBytes,proto3" json:"memory_limits_bytes,omitempty"` // Memory limits in bytes
}
-type ResourceDetails_RoleBindingDetails struct {
- // RoleBinding-specific fields
- RoleBindingDetails *RoleBindingDetails `protobuf:"bytes,234,opt,name=role_binding_details,json=roleBindingDetails,proto3,oneof"`
+func (x *ContainerTemplate) Reset() {
+ *x = ContainerTemplate{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[36]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-type ResourceDetails_KedaScaledObjectDetails struct {
- // KedaScaledObject-specific fields
- KedaScaledObjectDetails *KedaScaledObjectDetails `protobuf:"bytes,235,opt,name=keda_scaled_object_details,json=kedaScaledObjectDetails,proto3,oneof"`
+func (x *ContainerTemplate) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-type ResourceDetails_KarpenterResourceDetails struct {
- // KarpenterResource-specific fields
- KarpenterResourceDetails *KarpenterResourceDetails `protobuf:"bytes,236,opt,name=karpenter_resource_details,json=karpenterResourceDetails,proto3,oneof"`
-}
+func (*ContainerTemplate) ProtoMessage() {}
-type ResourceDetails_PodDisruptionBudgetDetails struct {
- // PodDisruptionBudget-specific fields
- PodDisruptionBudgetDetails *PodDisruptionBudgetDetails `protobuf:"bytes,237,opt,name=pod_disruption_budget_details,json=podDisruptionBudgetDetails,proto3,oneof"`
+func (x *ContainerTemplate) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[36]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-type ResourceDetails_ResourceQuotaDetails struct {
- // ResourceQuota-specific fields
- ResourceQuotaDetails *ResourceQuotaDetails `protobuf:"bytes,238,opt,name=resource_quota_details,json=resourceQuotaDetails,proto3,oneof"`
+// Deprecated: Use ContainerTemplate.ProtoReflect.Descriptor instead.
+func (*ContainerTemplate) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{36}
}
-type ResourceDetails_VolcanoJobDetails struct {
- // VolcanoJob-specific fields
- VolcanoJobDetails *VolcanoJobDetails `protobuf:"bytes,239,opt,name=volcano_job_details,json=volcanoJobDetails,proto3,oneof"`
+func (x *ContainerTemplate) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
}
-type ResourceDetails_SparkApplicationDetails struct {
- // SparkApplication-specific fields
- SparkApplicationDetails *SparkApplicationDetails `protobuf:"bytes,242,opt,name=spark_application_details,json=sparkApplicationDetails,proto3,oneof"`
+func (x *ContainerTemplate) GetImage() string {
+ if x != nil {
+ return x.Image
+ }
+ return ""
}
-type ResourceDetails_ScheduledSparkApplicationDetails struct {
- // ScheduledSparkApplication-specific fields
- ScheduledSparkApplicationDetails *ScheduledSparkApplicationDetails `protobuf:"bytes,243,opt,name=scheduled_spark_application_details,json=scheduledSparkApplicationDetails,proto3,oneof"`
+func (x *ContainerTemplate) GetCpuRequestsMillicores() int64 {
+ if x != nil {
+ return x.CpuRequestsMillicores
+ }
+ return 0
}
-func (*ResourceDetails_PodDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_DeploymentDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_StatefulSetDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_DaemonSetDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_ReplicaSetDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_JobDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_CronJobDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_ServiceDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_IngressDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_PvcDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_PvDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_ScDetails) isResourceDetails_Details() {}
-
-func (*ResourceDetails_NsDetails) isResourceDetails_Details() {}
+func (x *ContainerTemplate) GetMemoryRequestsBytes() int64 {
+ if x != nil {
+ return x.MemoryRequestsBytes
+ }
+ return 0
+}
-func (*ResourceDetails_NodeDetails) isResourceDetails_Details() {}
+func (x *ContainerTemplate) GetCpuLimitsMillicores() int64 {
+ if x != nil {
+ return x.CpuLimitsMillicores
+ }
+ return 0
+}
-func (*ResourceDetails_HpaDetails) isResourceDetails_Details() {}
+func (x *ContainerTemplate) GetMemoryLimitsBytes() int64 {
+ if x != nil {
+ return x.MemoryLimitsBytes
+ }
+ return 0
+}
-func (*ResourceDetails_VpaDetails) isResourceDetails_Details() {}
+// DeploymentCondition represents a deployment condition
+type DeploymentCondition struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (*ResourceDetails_LimitRangeDetails) isResourceDetails_Details() {}
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "Available", "Progressing", etc.
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastUpdateTime int64 `protobuf:"varint,5,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"` // Last time condition was updated
+}
-func (*ResourceDetails_ServiceAccountDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) Reset() {
+ *x = DeploymentCondition{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[37]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
-func (*ResourceDetails_RoleDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
-func (*ResourceDetails_RoleBindingDetails) isResourceDetails_Details() {}
+func (*DeploymentCondition) ProtoMessage() {}
-func (*ResourceDetails_KedaScaledObjectDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[37]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
-func (*ResourceDetails_KarpenterResourceDetails) isResourceDetails_Details() {}
+// Deprecated: Use DeploymentCondition.ProtoReflect.Descriptor instead.
+func (*DeploymentCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{37}
+}
-func (*ResourceDetails_PodDisruptionBudgetDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
-func (*ResourceDetails_ResourceQuotaDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
-func (*ResourceDetails_VolcanoJobDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
-func (*ResourceDetails_SparkApplicationDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
-func (*ResourceDetails_ScheduledSparkApplicationDetails) isResourceDetails_Details() {}
+func (x *DeploymentCondition) GetLastUpdateTime() int64 {
+ if x != nil {
+ return x.LastUpdateTime
+ }
+ return 0
+}
-// PodDetails contains detailed Pod information (for the oneof, if we need nested data later)
-type PodDetails struct {
+// StatefulSetDetails contains detailed StatefulSet information for drill-down
+type StatefulSetDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerSummary `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container details for debugging
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
+ VolumeClaimTemplates []*VolumeClaimTemplate `protobuf:"bytes,2,rep,name=volume_claim_templates,json=volumeClaimTemplates,proto3" json:"volume_claim_templates,omitempty"` // PVC templates
+ Partition int32 `protobuf:"varint,3,opt,name=partition,proto3" json:"partition,omitempty"` // Update strategy partition (for canary updates)
}
-func (x *PodDetails) Reset() {
- *x = PodDetails{}
+func (x *StatefulSetDetails) Reset() {
+ *x = StatefulSetDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[27]
+ mi := &file_api_v1_common_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PodDetails) String() string {
+func (x *StatefulSetDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PodDetails) ProtoMessage() {}
+func (*StatefulSetDetails) ProtoMessage() {}
-func (x *PodDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[27]
+func (x *StatefulSetDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5936,49 +7326,62 @@ func (x *PodDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PodDetails.ProtoReflect.Descriptor instead.
-func (*PodDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{27}
+// Deprecated: Use StatefulSetDetails.ProtoReflect.Descriptor instead.
+func (*StatefulSetDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{38}
}
-func (x *PodDetails) GetContainers() []*ContainerSummary {
+func (x *StatefulSetDetails) GetContainers() []*ContainerTemplate {
if x != nil {
return x.Containers
}
return nil
}
-// ContainerSummary provides essential container information
-type ContainerSummary struct {
+func (x *StatefulSetDetails) GetVolumeClaimTemplates() []*VolumeClaimTemplate {
+ if x != nil {
+ return x.VolumeClaimTemplates
+ }
+ return nil
+}
+
+func (x *StatefulSetDetails) GetPartition() int32 {
+ if x != nil {
+ return x.Partition
+ }
+ return 0
+}
+
+// VolumeClaimTemplate represents a volume claim template in a StatefulSet
+type VolumeClaimTemplate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Container name
- Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` // Container image
- Ready bool `protobuf:"varint,3,opt,name=ready,proto3" json:"ready,omitempty"` // Container ready status
- RestartCount int32 `protobuf:"varint,4,opt,name=restart_count,json=restartCount,proto3" json:"restart_count,omitempty"` // Container restart count
- State string `protobuf:"bytes,5,opt,name=state,proto3" json:"state,omitempty"` // "running", "waiting", "terminated"
- StateReason string `protobuf:"bytes,6,opt,name=state_reason,json=stateReason,proto3" json:"state_reason,omitempty"` // Reason for current state (if not running)
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // PVC template name
+ AccessModes []string `protobuf:"bytes,2,rep,name=access_modes,json=accessModes,proto3" json:"access_modes,omitempty"` // "ReadWriteOnce", etc.
+ VolumeMode string `protobuf:"bytes,3,opt,name=volume_mode,json=volumeMode,proto3" json:"volume_mode,omitempty"` // "Filesystem" or "Block"
+ StorageRequests int64 `protobuf:"varint,4,opt,name=storage_requests,json=storageRequests,proto3" json:"storage_requests,omitempty"` // Storage size requested in bytes
+ StorageClass string `protobuf:"bytes,5,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` // Storage class name (optional)
}
-func (x *ContainerSummary) Reset() {
- *x = ContainerSummary{}
+func (x *VolumeClaimTemplate) Reset() {
+ *x = VolumeClaimTemplate{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[28]
+ mi := &file_api_v1_common_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ContainerSummary) String() string {
+func (x *VolumeClaimTemplate) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ContainerSummary) ProtoMessage() {}
+func (*VolumeClaimTemplate) ProtoMessage() {}
-func (x *ContainerSummary) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[28]
+func (x *VolumeClaimTemplate) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[39]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5989,80 +7392,137 @@ func (x *ContainerSummary) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ContainerSummary.ProtoReflect.Descriptor instead.
-func (*ContainerSummary) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{28}
+// Deprecated: Use VolumeClaimTemplate.ProtoReflect.Descriptor instead.
+func (*VolumeClaimTemplate) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{39}
}
-func (x *ContainerSummary) GetName() string {
+func (x *VolumeClaimTemplate) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *ContainerSummary) GetImage() string {
+func (x *VolumeClaimTemplate) GetAccessModes() []string {
if x != nil {
- return x.Image
+ return x.AccessModes
}
- return ""
+ return nil
}
-func (x *ContainerSummary) GetReady() bool {
+func (x *VolumeClaimTemplate) GetVolumeMode() string {
if x != nil {
- return x.Ready
+ return x.VolumeMode
}
- return false
+ return ""
}
-func (x *ContainerSummary) GetRestartCount() int32 {
+func (x *VolumeClaimTemplate) GetStorageRequests() int64 {
if x != nil {
- return x.RestartCount
+ return x.StorageRequests
}
return 0
}
-func (x *ContainerSummary) GetState() string {
+func (x *VolumeClaimTemplate) GetStorageClass() string {
if x != nil {
- return x.State
+ return x.StorageClass
}
return ""
}
-func (x *ContainerSummary) GetStateReason() string {
+// DaemonSetDetails contains detailed DaemonSet information for drill-down
+type DaemonSetDetails struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
+ Tolerations []*TolerationInfo `protobuf:"bytes,2,rep,name=tolerations,proto3" json:"tolerations,omitempty"` // Tolerations for node scheduling
+ NodeSelector *NodeSelector `protobuf:"bytes,3,opt,name=node_selector,json=nodeSelector,proto3" json:"node_selector,omitempty"` // Node selector requirements (optional)
+}
+
+func (x *DaemonSetDetails) Reset() {
+ *x = DaemonSetDetails{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[40]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DaemonSetDetails) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DaemonSetDetails) ProtoMessage() {}
+
+func (x *DaemonSetDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[40]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DaemonSetDetails.ProtoReflect.Descriptor instead.
+func (*DaemonSetDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *DaemonSetDetails) GetContainers() []*ContainerTemplate {
+ if x != nil {
+ return x.Containers
+ }
+ return nil
+}
+
+func (x *DaemonSetDetails) GetTolerations() []*TolerationInfo {
+ if x != nil {
+ return x.Tolerations
+ }
+ return nil
+}
+
+func (x *DaemonSetDetails) GetNodeSelector() *NodeSelector {
if x != nil {
- return x.StateReason
+ return x.NodeSelector
}
- return ""
+ return nil
}
-// DeploymentDetails contains detailed Deployment information for drill-down
-type DeploymentDetails struct {
+// ReplicaSetDetails contains detailed ReplicaSet information for drill-down
+type ReplicaSetDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
- Conditions []*DeploymentCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // Deployment conditions for debugging
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
+ Selector *LabelSelector `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` // Pod selector for replica set
}
-func (x *DeploymentDetails) Reset() {
- *x = DeploymentDetails{}
+func (x *ReplicaSetDetails) Reset() {
+ *x = ReplicaSetDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[29]
+ mi := &file_api_v1_common_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeploymentDetails) String() string {
+func (x *ReplicaSetDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeploymentDetails) ProtoMessage() {}
+func (*ReplicaSetDetails) ProtoMessage() {}
-func (x *DeploymentDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[29]
+func (x *ReplicaSetDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[41]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6073,56 +7533,53 @@ func (x *DeploymentDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeploymentDetails.ProtoReflect.Descriptor instead.
-func (*DeploymentDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{29}
+// Deprecated: Use ReplicaSetDetails.ProtoReflect.Descriptor instead.
+func (*ReplicaSetDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{41}
}
-func (x *DeploymentDetails) GetContainers() []*ContainerTemplate {
+func (x *ReplicaSetDetails) GetContainers() []*ContainerTemplate {
if x != nil {
return x.Containers
}
return nil
}
-func (x *DeploymentDetails) GetConditions() []*DeploymentCondition {
+func (x *ReplicaSetDetails) GetSelector() *LabelSelector {
if x != nil {
- return x.Conditions
+ return x.Selector
}
return nil
}
-// ContainerTemplate represents a container template in a deployment
-type ContainerTemplate struct {
+// JobDetails contains detailed Job information for drill-down
+type JobDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Container name
- Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` // Container image
- CpuRequestsMillicores int64 `protobuf:"varint,3,opt,name=cpu_requests_millicores,json=cpuRequestsMillicores,proto3" json:"cpu_requests_millicores,omitempty"` // CPU requests in millicores
- MemoryRequestsBytes int64 `protobuf:"varint,4,opt,name=memory_requests_bytes,json=memoryRequestsBytes,proto3" json:"memory_requests_bytes,omitempty"` // Memory requests in bytes
- CpuLimitsMillicores int64 `protobuf:"varint,5,opt,name=cpu_limits_millicores,json=cpuLimitsMillicores,proto3" json:"cpu_limits_millicores,omitempty"` // CPU limits in millicores
- MemoryLimitsBytes int64 `protobuf:"varint,6,opt,name=memory_limits_bytes,json=memoryLimitsBytes,proto3" json:"memory_limits_bytes,omitempty"` // Memory limits in bytes
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
+ Conditions []*JobCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // Job conditions for debugging
+ Selector *LabelSelector `protobuf:"bytes,3,opt,name=selector,proto3" json:"selector,omitempty"` // Pod selector for job
}
-func (x *ContainerTemplate) Reset() {
- *x = ContainerTemplate{}
+func (x *JobDetails) Reset() {
+ *x = JobDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[30]
+ mi := &file_api_v1_common_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ContainerTemplate) String() string {
+func (x *JobDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ContainerTemplate) ProtoMessage() {}
+func (*JobDetails) ProtoMessage() {}
-func (x *ContainerTemplate) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[30]
+func (x *JobDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[42]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6133,83 +7590,63 @@ func (x *ContainerTemplate) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ContainerTemplate.ProtoReflect.Descriptor instead.
-func (*ContainerTemplate) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *ContainerTemplate) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *ContainerTemplate) GetImage() string {
- if x != nil {
- return x.Image
- }
- return ""
-}
-
-func (x *ContainerTemplate) GetCpuRequestsMillicores() int64 {
- if x != nil {
- return x.CpuRequestsMillicores
- }
- return 0
+// Deprecated: Use JobDetails.ProtoReflect.Descriptor instead.
+func (*JobDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{42}
}
-func (x *ContainerTemplate) GetMemoryRequestsBytes() int64 {
+func (x *JobDetails) GetContainers() []*ContainerTemplate {
if x != nil {
- return x.MemoryRequestsBytes
+ return x.Containers
}
- return 0
+ return nil
}
-func (x *ContainerTemplate) GetCpuLimitsMillicores() int64 {
+func (x *JobDetails) GetConditions() []*JobCondition {
if x != nil {
- return x.CpuLimitsMillicores
+ return x.Conditions
}
- return 0
+ return nil
}
-func (x *ContainerTemplate) GetMemoryLimitsBytes() int64 {
+func (x *JobDetails) GetSelector() *LabelSelector {
if x != nil {
- return x.MemoryLimitsBytes
+ return x.Selector
}
- return 0
+ return nil
}
-// DeploymentCondition represents a deployment condition
-type DeploymentCondition struct {
+// JobCondition represents a job condition
+type JobCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "Available", "Progressing", etc.
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastUpdateTime int64 `protobuf:"varint,5,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"` // Last time condition was updated
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "Complete", "Failed", "SuccessCriteriaMet", etc.
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastProbeTime int64 `protobuf:"varint,5,opt,name=last_probe_time,json=lastProbeTime,proto3" json:"last_probe_time,omitempty"` // Last time condition was probed
+ LastTransitionTime int64 `protobuf:"varint,6,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last time condition transitioned
}
-func (x *DeploymentCondition) Reset() {
- *x = DeploymentCondition{}
+func (x *JobCondition) Reset() {
+ *x = JobCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[31]
+ mi := &file_api_v1_common_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeploymentCondition) String() string {
+func (x *JobCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeploymentCondition) ProtoMessage() {}
+func (*JobCondition) ProtoMessage() {}
-func (x *DeploymentCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[31]
+func (x *JobCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[43]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6220,140 +7657,81 @@ func (x *DeploymentCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeploymentCondition.ProtoReflect.Descriptor instead.
-func (*DeploymentCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{31}
+// Deprecated: Use JobCondition.ProtoReflect.Descriptor instead.
+func (*JobCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{43}
}
-func (x *DeploymentCondition) GetType() string {
+func (x *JobCondition) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *DeploymentCondition) GetStatus() string {
+func (x *JobCondition) GetStatus() string {
if x != nil {
return x.Status
}
return ""
}
-func (x *DeploymentCondition) GetReason() string {
+func (x *JobCondition) GetReason() string {
if x != nil {
return x.Reason
}
return ""
}
-func (x *DeploymentCondition) GetMessage() string {
+func (x *JobCondition) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
-func (x *DeploymentCondition) GetLastUpdateTime() int64 {
+func (x *JobCondition) GetLastProbeTime() int64 {
if x != nil {
- return x.LastUpdateTime
+ return x.LastProbeTime
}
return 0
}
-// StatefulSetDetails contains detailed StatefulSet information for drill-down
-type StatefulSetDetails struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
- VolumeClaimTemplates []*VolumeClaimTemplate `protobuf:"bytes,2,rep,name=volume_claim_templates,json=volumeClaimTemplates,proto3" json:"volume_claim_templates,omitempty"` // PVC templates
- Partition int32 `protobuf:"varint,3,opt,name=partition,proto3" json:"partition,omitempty"` // Update strategy partition (for canary updates)
-}
-
-func (x *StatefulSetDetails) Reset() {
- *x = StatefulSetDetails{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[32]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StatefulSetDetails) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StatefulSetDetails) ProtoMessage() {}
-
-func (x *StatefulSetDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[32]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StatefulSetDetails.ProtoReflect.Descriptor instead.
-func (*StatefulSetDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *StatefulSetDetails) GetContainers() []*ContainerTemplate {
- if x != nil {
- return x.Containers
- }
- return nil
-}
-
-func (x *StatefulSetDetails) GetVolumeClaimTemplates() []*VolumeClaimTemplate {
- if x != nil {
- return x.VolumeClaimTemplates
- }
- return nil
-}
-
-func (x *StatefulSetDetails) GetPartition() int32 {
+func (x *JobCondition) GetLastTransitionTime() int64 {
if x != nil {
- return x.Partition
+ return x.LastTransitionTime
}
return 0
}
-// VolumeClaimTemplate represents a volume claim template in a StatefulSet
-type VolumeClaimTemplate struct {
+// CronJobDetails contains detailed CronJob information for drill-down
+type CronJobDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // PVC template name
- AccessModes []string `protobuf:"bytes,2,rep,name=access_modes,json=accessModes,proto3" json:"access_modes,omitempty"` // "ReadWriteOnce", etc.
- VolumeMode string `protobuf:"bytes,3,opt,name=volume_mode,json=volumeMode,proto3" json:"volume_mode,omitempty"` // "Filesystem" or "Block"
- StorageRequests int64 `protobuf:"varint,4,opt,name=storage_requests,json=storageRequests,proto3" json:"storage_requests,omitempty"` // Storage size requested in bytes
- StorageClass string `protobuf:"bytes,5,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` // Storage class name (optional)
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from job template pod spec
+ ActiveJobs []*ActiveJobReference `protobuf:"bytes,2,rep,name=active_jobs,json=activeJobs,proto3" json:"active_jobs,omitempty"` // Currently active jobs
+ JobTemplate *JobTemplate `protobuf:"bytes,3,opt,name=job_template,json=jobTemplate,proto3" json:"job_template,omitempty"` // Job template specification
}
-func (x *VolumeClaimTemplate) Reset() {
- *x = VolumeClaimTemplate{}
+func (x *CronJobDetails) Reset() {
+ *x = CronJobDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[33]
+ mi := &file_api_v1_common_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VolumeClaimTemplate) String() string {
+func (x *CronJobDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VolumeClaimTemplate) ProtoMessage() {}
+func (*CronJobDetails) ProtoMessage() {}
-func (x *VolumeClaimTemplate) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[33]
+func (x *CronJobDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[44]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6364,74 +7742,61 @@ func (x *VolumeClaimTemplate) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VolumeClaimTemplate.ProtoReflect.Descriptor instead.
-func (*VolumeClaimTemplate) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *VolumeClaimTemplate) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
+// Deprecated: Use CronJobDetails.ProtoReflect.Descriptor instead.
+func (*CronJobDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{44}
}
-func (x *VolumeClaimTemplate) GetAccessModes() []string {
+func (x *CronJobDetails) GetContainers() []*ContainerTemplate {
if x != nil {
- return x.AccessModes
+ return x.Containers
}
return nil
}
-func (x *VolumeClaimTemplate) GetVolumeMode() string {
- if x != nil {
- return x.VolumeMode
- }
- return ""
-}
-
-func (x *VolumeClaimTemplate) GetStorageRequests() int64 {
+func (x *CronJobDetails) GetActiveJobs() []*ActiveJobReference {
if x != nil {
- return x.StorageRequests
+ return x.ActiveJobs
}
- return 0
+ return nil
}
-func (x *VolumeClaimTemplate) GetStorageClass() string {
+func (x *CronJobDetails) GetJobTemplate() *JobTemplate {
if x != nil {
- return x.StorageClass
+ return x.JobTemplate
}
- return ""
+ return nil
}
-// DaemonSetDetails contains detailed DaemonSet information for drill-down
-type DaemonSetDetails struct {
+// ActiveJobReference represents an active job created by a CronJob
+type ActiveJobReference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
- Tolerations []*TolerationInfo `protobuf:"bytes,2,rep,name=tolerations,proto3" json:"tolerations,omitempty"` // Tolerations for node scheduling
- NodeSelector *NodeSelector `protobuf:"bytes,3,opt,name=node_selector,json=nodeSelector,proto3" json:"node_selector,omitempty"` // Node selector requirements (optional)
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Job name
+ Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` // Job UID
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` // Job namespace
+ CreationTime int64 `protobuf:"varint,4,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` // Job creation timestamp
}
-func (x *DaemonSetDetails) Reset() {
- *x = DaemonSetDetails{}
+func (x *ActiveJobReference) Reset() {
+ *x = ActiveJobReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[34]
+ mi := &file_api_v1_common_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DaemonSetDetails) String() string {
+func (x *ActiveJobReference) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DaemonSetDetails) ProtoMessage() {}
+func (*ActiveJobReference) ProtoMessage() {}
-func (x *DaemonSetDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[34]
+func (x *ActiveJobReference) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[45]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6442,59 +7807,69 @@ func (x *DaemonSetDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DaemonSetDetails.ProtoReflect.Descriptor instead.
-func (*DaemonSetDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{34}
+// Deprecated: Use ActiveJobReference.ProtoReflect.Descriptor instead.
+func (*ActiveJobReference) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{45}
}
-func (x *DaemonSetDetails) GetContainers() []*ContainerTemplate {
+func (x *ActiveJobReference) GetName() string {
if x != nil {
- return x.Containers
+ return x.Name
}
- return nil
+ return ""
}
-func (x *DaemonSetDetails) GetTolerations() []*TolerationInfo {
+func (x *ActiveJobReference) GetUid() string {
if x != nil {
- return x.Tolerations
+ return x.Uid
}
- return nil
+ return ""
}
-func (x *DaemonSetDetails) GetNodeSelector() *NodeSelector {
+func (x *ActiveJobReference) GetNamespace() string {
if x != nil {
- return x.NodeSelector
+ return x.Namespace
}
- return nil
+ return ""
}
-// ReplicaSetDetails contains detailed ReplicaSet information for drill-down
-type ReplicaSetDetails struct {
+func (x *ActiveJobReference) GetCreationTime() int64 {
+ if x != nil {
+ return x.CreationTime
+ }
+ return 0
+}
+
+// JobTemplate represents the job template in a CronJob
+type JobTemplate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
- Selector *LabelSelector `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` // Pod selector for replica set
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates
+ BackoffLimit int32 `protobuf:"varint,2,opt,name=backoff_limit,json=backoffLimit,proto3" json:"backoff_limit,omitempty"` // Backoff limit from job template
+ Completions int32 `protobuf:"varint,3,opt,name=completions,proto3" json:"completions,omitempty"` // Desired completions
+ Parallelism int32 `protobuf:"varint,4,opt,name=parallelism,proto3" json:"parallelism,omitempty"` // Parallelism setting
+ CompletionMode string `protobuf:"bytes,5,opt,name=completion_mode,json=completionMode,proto3" json:"completion_mode,omitempty"` // Completion mode
}
-func (x *ReplicaSetDetails) Reset() {
- *x = ReplicaSetDetails{}
+func (x *JobTemplate) Reset() {
+ *x = JobTemplate{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[35]
+ mi := &file_api_v1_common_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ReplicaSetDetails) String() string {
+func (x *JobTemplate) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ReplicaSetDetails) ProtoMessage() {}
+func (*JobTemplate) ProtoMessage() {}
-func (x *ReplicaSetDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[35]
+func (x *JobTemplate) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[46]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6505,53 +7880,75 @@ func (x *ReplicaSetDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ReplicaSetDetails.ProtoReflect.Descriptor instead.
-func (*ReplicaSetDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{35}
+// Deprecated: Use JobTemplate.ProtoReflect.Descriptor instead.
+func (*JobTemplate) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{46}
}
-func (x *ReplicaSetDetails) GetContainers() []*ContainerTemplate {
+func (x *JobTemplate) GetContainers() []*ContainerTemplate {
if x != nil {
return x.Containers
}
return nil
}
-func (x *ReplicaSetDetails) GetSelector() *LabelSelector {
+func (x *JobTemplate) GetBackoffLimit() int32 {
if x != nil {
- return x.Selector
+ return x.BackoffLimit
}
- return nil
+ return 0
}
-// JobDetails contains detailed Job information for drill-down
-type JobDetails struct {
+func (x *JobTemplate) GetCompletions() int32 {
+ if x != nil {
+ return x.Completions
+ }
+ return 0
+}
+
+func (x *JobTemplate) GetParallelism() int32 {
+ if x != nil {
+ return x.Parallelism
+ }
+ return 0
+}
+
+func (x *JobTemplate) GetCompletionMode() string {
+ if x != nil {
+ return x.CompletionMode
+ }
+ return ""
+}
+
+// ServiceDetails contains detailed Service information for drill-down
+type ServiceDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
- Conditions []*JobCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // Job conditions for debugging
- Selector *LabelSelector `protobuf:"bytes,3,opt,name=selector,proto3" json:"selector,omitempty"` // Pod selector for job
+ Ports []*ServicePort `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"` // Detailed port information
+ Selector map[string]string `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Service selector
+ LoadBalancerIngress []*LoadBalancerIngress `protobuf:"bytes,3,rep,name=load_balancer_ingress,json=loadBalancerIngress,proto3" json:"load_balancer_ingress,omitempty"` // LoadBalancer ingress points
+ EndpointAddresses []string `protobuf:"bytes,4,rep,name=endpoint_addresses,json=endpointAddresses,proto3" json:"endpoint_addresses,omitempty"` // Endpoint addresses (if available)
}
-func (x *JobDetails) Reset() {
- *x = JobDetails{}
+func (x *ServiceDetails) Reset() {
+ *x = ServiceDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[36]
+ mi := &file_api_v1_common_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *JobDetails) String() string {
+func (x *ServiceDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*JobDetails) ProtoMessage() {}
+func (*ServiceDetails) ProtoMessage() {}
-func (x *JobDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[36]
+func (x *ServiceDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[47]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6562,63 +7959,71 @@ func (x *JobDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use JobDetails.ProtoReflect.Descriptor instead.
-func (*JobDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{36}
+// Deprecated: Use ServiceDetails.ProtoReflect.Descriptor instead.
+func (*ServiceDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{47}
}
-func (x *JobDetails) GetContainers() []*ContainerTemplate {
+func (x *ServiceDetails) GetPorts() []*ServicePort {
if x != nil {
- return x.Containers
+ return x.Ports
}
return nil
}
-func (x *JobDetails) GetConditions() []*JobCondition {
+func (x *ServiceDetails) GetSelector() map[string]string {
if x != nil {
- return x.Conditions
+ return x.Selector
}
return nil
}
-func (x *JobDetails) GetSelector() *LabelSelector {
+func (x *ServiceDetails) GetLoadBalancerIngress() []*LoadBalancerIngress {
if x != nil {
- return x.Selector
+ return x.LoadBalancerIngress
}
return nil
}
-// JobCondition represents a job condition
-type JobCondition struct {
+func (x *ServiceDetails) GetEndpointAddresses() []string {
+ if x != nil {
+ return x.EndpointAddresses
+ }
+ return nil
+}
+
+// ServicePort represents a port exposed by a service
+type ServicePort struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "Complete", "Failed", "SuccessCriteriaMet", etc.
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastProbeTime int64 `protobuf:"varint,5,opt,name=last_probe_time,json=lastProbeTime,proto3" json:"last_probe_time,omitempty"` // Last time condition was probed
- LastTransitionTime int64 `protobuf:"varint,6,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last time condition transitioned
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Port name (optional)
+ Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` // Service port number
+ TargetPort int32 `protobuf:"varint,3,opt,name=target_port,json=targetPort,proto3" json:"target_port,omitempty"` // Target port on pods (could be port number or name)
+ TargetPortName string `protobuf:"bytes,4,opt,name=target_port_name,json=targetPortName,proto3" json:"target_port_name,omitempty"` // Target port name if it's a named port
+ Protocol string `protobuf:"bytes,5,opt,name=protocol,proto3" json:"protocol,omitempty"` // Protocol: "TCP", "UDP", "SCTP"
+ NodePort int32 `protobuf:"varint,6,opt,name=node_port,json=nodePort,proto3" json:"node_port,omitempty"` // NodePort (for NodePort and LoadBalancer services)
+ AppProtocol string `protobuf:"bytes,7,opt,name=app_protocol,json=appProtocol,proto3" json:"app_protocol,omitempty"` // Application protocol (optional, e.g., "HTTP", "HTTPS")
}
-func (x *JobCondition) Reset() {
- *x = JobCondition{}
+func (x *ServicePort) Reset() {
+ *x = ServicePort{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[37]
+ mi := &file_api_v1_common_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *JobCondition) String() string {
+func (x *ServicePort) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*JobCondition) ProtoMessage() {}
+func (*ServicePort) ProtoMessage() {}
-func (x *JobCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[37]
+func (x *ServicePort) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[48]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6629,81 +8034,89 @@ func (x *JobCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use JobCondition.ProtoReflect.Descriptor instead.
-func (*JobCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{37}
+// Deprecated: Use ServicePort.ProtoReflect.Descriptor instead.
+func (*ServicePort) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{48}
}
-func (x *JobCondition) GetType() string {
+func (x *ServicePort) GetName() string {
if x != nil {
- return x.Type
+ return x.Name
}
return ""
}
-func (x *JobCondition) GetStatus() string {
+func (x *ServicePort) GetPort() int32 {
if x != nil {
- return x.Status
+ return x.Port
}
- return ""
+ return 0
}
-func (x *JobCondition) GetReason() string {
+func (x *ServicePort) GetTargetPort() int32 {
if x != nil {
- return x.Reason
+ return x.TargetPort
+ }
+ return 0
+}
+
+func (x *ServicePort) GetTargetPortName() string {
+ if x != nil {
+ return x.TargetPortName
}
return ""
}
-func (x *JobCondition) GetMessage() string {
+func (x *ServicePort) GetProtocol() string {
if x != nil {
- return x.Message
+ return x.Protocol
}
return ""
}
-func (x *JobCondition) GetLastProbeTime() int64 {
+func (x *ServicePort) GetNodePort() int32 {
if x != nil {
- return x.LastProbeTime
+ return x.NodePort
}
return 0
}
-func (x *JobCondition) GetLastTransitionTime() int64 {
+func (x *ServicePort) GetAppProtocol() string {
if x != nil {
- return x.LastTransitionTime
+ return x.AppProtocol
}
- return 0
+ return ""
}
-// CronJobDetails contains detailed CronJob information for drill-down
-type CronJobDetails struct {
+// LoadBalancerIngress represents a load balancer ingress point
+type LoadBalancerIngress struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from job template pod spec
- ActiveJobs []*ActiveJobReference `protobuf:"bytes,2,rep,name=active_jobs,json=activeJobs,proto3" json:"active_jobs,omitempty"` // Currently active jobs
- JobTemplate *JobTemplate `protobuf:"bytes,3,opt,name=job_template,json=jobTemplate,proto3" json:"job_template,omitempty"` // Job template specification
+ Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` // IP address
+ Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"` // Hostname (alternative to IP)
+ Ports []string `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"` // Ports information from ingress
+ IpMode string `protobuf:"bytes,4,opt,name=ip_mode,json=ipMode,proto3" json:"ip_mode,omitempty"` // IP mode: "VIP" or "Proxy"
}
-func (x *CronJobDetails) Reset() {
- *x = CronJobDetails{}
+func (x *LoadBalancerIngress) Reset() {
+ *x = LoadBalancerIngress{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[38]
+ mi := &file_api_v1_common_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CronJobDetails) String() string {
+func (x *LoadBalancerIngress) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CronJobDetails) ProtoMessage() {}
+func (*LoadBalancerIngress) ProtoMessage() {}
-func (x *CronJobDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[38]
+func (x *LoadBalancerIngress) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6714,61 +8127,68 @@ func (x *CronJobDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CronJobDetails.ProtoReflect.Descriptor instead.
-func (*CronJobDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{38}
+// Deprecated: Use LoadBalancerIngress.ProtoReflect.Descriptor instead.
+func (*LoadBalancerIngress) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{49}
}
-func (x *CronJobDetails) GetContainers() []*ContainerTemplate {
+func (x *LoadBalancerIngress) GetIp() string {
if x != nil {
- return x.Containers
+ return x.Ip
}
- return nil
+ return ""
}
-func (x *CronJobDetails) GetActiveJobs() []*ActiveJobReference {
+func (x *LoadBalancerIngress) GetHostname() string {
if x != nil {
- return x.ActiveJobs
+ return x.Hostname
}
- return nil
+ return ""
}
-func (x *CronJobDetails) GetJobTemplate() *JobTemplate {
+func (x *LoadBalancerIngress) GetPorts() []string {
if x != nil {
- return x.JobTemplate
+ return x.Ports
}
return nil
}
-// ActiveJobReference represents an active job created by a CronJob
-type ActiveJobReference struct {
+func (x *LoadBalancerIngress) GetIpMode() string {
+ if x != nil {
+ return x.IpMode
+ }
+ return ""
+}
+
+// IngressDetails contains detailed Ingress information for drill-down
+type IngressDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Job name
- Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` // Job UID
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` // Job namespace
- CreationTime int64 `protobuf:"varint,4,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` // Job creation timestamp
+ Rules []*IngressRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` // Ingress rules
+ Tls []*IngressTLS `protobuf:"bytes,2,rep,name=tls,proto3" json:"tls,omitempty"` // TLS configurations
+ DefaultBackend *IngressBackend `protobuf:"bytes,3,opt,name=default_backend,json=defaultBackend,proto3" json:"default_backend,omitempty"` // Default backend (optional)
+ LoadBalancerIngress []*LoadBalancerIngress `protobuf:"bytes,4,rep,name=load_balancer_ingress,json=loadBalancerIngress,proto3" json:"load_balancer_ingress,omitempty"` // Load balancer status
}
-func (x *ActiveJobReference) Reset() {
- *x = ActiveJobReference{}
+func (x *IngressDetails) Reset() {
+ *x = IngressDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[39]
+ mi := &file_api_v1_common_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ActiveJobReference) String() string {
+func (x *IngressDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ActiveJobReference) ProtoMessage() {}
+func (*IngressDetails) ProtoMessage() {}
-func (x *ActiveJobReference) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[39]
+func (x *IngressDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[50]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6779,69 +8199,66 @@ func (x *ActiveJobReference) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ActiveJobReference.ProtoReflect.Descriptor instead.
-func (*ActiveJobReference) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{39}
+// Deprecated: Use IngressDetails.ProtoReflect.Descriptor instead.
+func (*IngressDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{50}
}
-func (x *ActiveJobReference) GetName() string {
+func (x *IngressDetails) GetRules() []*IngressRule {
if x != nil {
- return x.Name
+ return x.Rules
}
- return ""
+ return nil
}
-func (x *ActiveJobReference) GetUid() string {
+func (x *IngressDetails) GetTls() []*IngressTLS {
if x != nil {
- return x.Uid
+ return x.Tls
}
- return ""
+ return nil
}
-func (x *ActiveJobReference) GetNamespace() string {
+func (x *IngressDetails) GetDefaultBackend() *IngressBackend {
if x != nil {
- return x.Namespace
+ return x.DefaultBackend
}
- return ""
+ return nil
}
-func (x *ActiveJobReference) GetCreationTime() int64 {
+func (x *IngressDetails) GetLoadBalancerIngress() []*LoadBalancerIngress {
if x != nil {
- return x.CreationTime
+ return x.LoadBalancerIngress
}
- return 0
+ return nil
}
-// JobTemplate represents the job template in a CronJob
-type JobTemplate struct {
+// IngressRule represents an ingress rule
+type IngressRule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates
- BackoffLimit int32 `protobuf:"varint,2,opt,name=backoff_limit,json=backoffLimit,proto3" json:"backoff_limit,omitempty"` // Backoff limit from job template
- Completions int32 `protobuf:"varint,3,opt,name=completions,proto3" json:"completions,omitempty"` // Desired completions
- Parallelism int32 `protobuf:"varint,4,opt,name=parallelism,proto3" json:"parallelism,omitempty"` // Parallelism setting
- CompletionMode string `protobuf:"bytes,5,opt,name=completion_mode,json=completionMode,proto3" json:"completion_mode,omitempty"` // Completion mode
+ Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // Host name (optional, empty means all hosts)
+ Paths []*IngressPath `protobuf:"bytes,2,rep,name=paths,proto3" json:"paths,omitempty"` // HTTP paths
}
-func (x *JobTemplate) Reset() {
- *x = JobTemplate{}
+func (x *IngressRule) Reset() {
+ *x = IngressRule{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[40]
+ mi := &file_api_v1_common_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *JobTemplate) String() string {
+func (x *IngressRule) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*JobTemplate) ProtoMessage() {}
+func (*IngressRule) ProtoMessage() {}
-func (x *JobTemplate) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[40]
+func (x *IngressRule) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[51]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6852,75 +8269,53 @@ func (x *JobTemplate) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use JobTemplate.ProtoReflect.Descriptor instead.
-func (*JobTemplate) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{40}
-}
-
-func (x *JobTemplate) GetContainers() []*ContainerTemplate {
- if x != nil {
- return x.Containers
- }
- return nil
-}
-
-func (x *JobTemplate) GetBackoffLimit() int32 {
- if x != nil {
- return x.BackoffLimit
- }
- return 0
-}
-
-func (x *JobTemplate) GetCompletions() int32 {
- if x != nil {
- return x.Completions
- }
- return 0
+// Deprecated: Use IngressRule.ProtoReflect.Descriptor instead.
+func (*IngressRule) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{51}
}
-func (x *JobTemplate) GetParallelism() int32 {
+func (x *IngressRule) GetHost() string {
if x != nil {
- return x.Parallelism
+ return x.Host
}
- return 0
+ return ""
}
-func (x *JobTemplate) GetCompletionMode() string {
+func (x *IngressRule) GetPaths() []*IngressPath {
if x != nil {
- return x.CompletionMode
+ return x.Paths
}
- return ""
+ return nil
}
-// ServiceDetails contains detailed Service information for drill-down
-type ServiceDetails struct {
+// IngressPath represents a path rule within an ingress
+type IngressPath struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Ports []*ServicePort `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"` // Detailed port information
- Selector map[string]string `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Service selector
- LoadBalancerIngress []*LoadBalancerIngress `protobuf:"bytes,3,rep,name=load_balancer_ingress,json=loadBalancerIngress,proto3" json:"load_balancer_ingress,omitempty"` // LoadBalancer ingress points
- EndpointAddresses []string `protobuf:"bytes,4,rep,name=endpoint_addresses,json=endpointAddresses,proto3" json:"endpoint_addresses,omitempty"` // Endpoint addresses (if available)
+ Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // URL path
+ PathType string `protobuf:"bytes,2,opt,name=path_type,json=pathType,proto3" json:"path_type,omitempty"` // Path type: "Exact", "Prefix", "ImplementationSpecific"
+ Backend *IngressBackend `protobuf:"bytes,3,opt,name=backend,proto3" json:"backend,omitempty"` // Backend service
}
-func (x *ServiceDetails) Reset() {
- *x = ServiceDetails{}
+func (x *IngressPath) Reset() {
+ *x = IngressPath{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[41]
+ mi := &file_api_v1_common_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ServiceDetails) String() string {
+func (x *IngressPath) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ServiceDetails) ProtoMessage() {}
+func (*IngressPath) ProtoMessage() {}
-func (x *ServiceDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[41]
+func (x *IngressPath) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[52]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6931,71 +8326,63 @@ func (x *ServiceDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ServiceDetails.ProtoReflect.Descriptor instead.
-func (*ServiceDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{41}
-}
-
-func (x *ServiceDetails) GetPorts() []*ServicePort {
- if x != nil {
- return x.Ports
- }
- return nil
+// Deprecated: Use IngressPath.ProtoReflect.Descriptor instead.
+func (*IngressPath) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{52}
}
-func (x *ServiceDetails) GetSelector() map[string]string {
+func (x *IngressPath) GetPath() string {
if x != nil {
- return x.Selector
+ return x.Path
}
- return nil
+ return ""
}
-func (x *ServiceDetails) GetLoadBalancerIngress() []*LoadBalancerIngress {
+func (x *IngressPath) GetPathType() string {
if x != nil {
- return x.LoadBalancerIngress
+ return x.PathType
}
- return nil
+ return ""
}
-func (x *ServiceDetails) GetEndpointAddresses() []string {
+func (x *IngressPath) GetBackend() *IngressBackend {
if x != nil {
- return x.EndpointAddresses
+ return x.Backend
}
return nil
}
-// ServicePort represents a port exposed by a service
-type ServicePort struct {
+// IngressBackend represents a backend referenced by an ingress
+type IngressBackend struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Port name (optional)
- Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` // Service port number
- TargetPort int32 `protobuf:"varint,3,opt,name=target_port,json=targetPort,proto3" json:"target_port,omitempty"` // Target port on pods (could be port number or name)
- TargetPortName string `protobuf:"bytes,4,opt,name=target_port_name,json=targetPortName,proto3" json:"target_port_name,omitempty"` // Target port name if it's a named port
- Protocol string `protobuf:"bytes,5,opt,name=protocol,proto3" json:"protocol,omitempty"` // Protocol: "TCP", "UDP", "SCTP"
- NodePort int32 `protobuf:"varint,6,opt,name=node_port,json=nodePort,proto3" json:"node_port,omitempty"` // NodePort (for NodePort and LoadBalancer services)
- AppProtocol string `protobuf:"bytes,7,opt,name=app_protocol,json=appProtocol,proto3" json:"app_protocol,omitempty"` // Application protocol (optional, e.g., "HTTP", "HTTPS")
+ ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // Service name
+ ServicePort int32 `protobuf:"varint,2,opt,name=service_port,json=servicePort,proto3" json:"service_port,omitempty"` // Service port number
+ ServicePortName string `protobuf:"bytes,3,opt,name=service_port_name,json=servicePortName,proto3" json:"service_port_name,omitempty"` // Service port name (alternative to number)
+ ResourceApiVersion string `protobuf:"bytes,4,opt,name=resource_api_version,json=resourceApiVersion,proto3" json:"resource_api_version,omitempty"` // Resource API version (for non-service backends)
+ ResourceKind string `protobuf:"bytes,5,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` // Resource kind (for non-service backends)
+ ResourceName string `protobuf:"bytes,6,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` // Resource name (for non-service backends)
}
-func (x *ServicePort) Reset() {
- *x = ServicePort{}
+func (x *IngressBackend) Reset() {
+ *x = IngressBackend{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[42]
+ mi := &file_api_v1_common_proto_msgTypes[53]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ServicePort) String() string {
+func (x *IngressBackend) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ServicePort) ProtoMessage() {}
+func (*IngressBackend) ProtoMessage() {}
-func (x *ServicePort) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[42]
+func (x *IngressBackend) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[53]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7006,89 +8393,139 @@ func (x *ServicePort) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ServicePort.ProtoReflect.Descriptor instead.
-func (*ServicePort) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{42}
+// Deprecated: Use IngressBackend.ProtoReflect.Descriptor instead.
+func (*IngressBackend) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{53}
}
-func (x *ServicePort) GetName() string {
+func (x *IngressBackend) GetServiceName() string {
if x != nil {
- return x.Name
+ return x.ServiceName
}
return ""
}
-func (x *ServicePort) GetPort() int32 {
+func (x *IngressBackend) GetServicePort() int32 {
if x != nil {
- return x.Port
+ return x.ServicePort
}
return 0
}
-func (x *ServicePort) GetTargetPort() int32 {
+func (x *IngressBackend) GetServicePortName() string {
if x != nil {
- return x.TargetPort
+ return x.ServicePortName
}
- return 0
+ return ""
}
-func (x *ServicePort) GetTargetPortName() string {
+func (x *IngressBackend) GetResourceApiVersion() string {
if x != nil {
- return x.TargetPortName
+ return x.ResourceApiVersion
}
return ""
}
-func (x *ServicePort) GetProtocol() string {
+func (x *IngressBackend) GetResourceKind() string {
if x != nil {
- return x.Protocol
+ return x.ResourceKind
}
return ""
}
-func (x *ServicePort) GetNodePort() int32 {
+func (x *IngressBackend) GetResourceName() string {
if x != nil {
- return x.NodePort
+ return x.ResourceName
}
- return 0
+ return ""
}
-func (x *ServicePort) GetAppProtocol() string {
+// IngressTLS represents TLS configuration for an ingress
+type IngressTLS struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Hosts []string `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` // Hosts covered by this TLS config
+ SecretName string `protobuf:"bytes,2,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` // Secret containing the TLS certificate
+}
+
+func (x *IngressTLS) Reset() {
+ *x = IngressTLS{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[54]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IngressTLS) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IngressTLS) ProtoMessage() {}
+
+func (x *IngressTLS) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[54]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IngressTLS.ProtoReflect.Descriptor instead.
+func (*IngressTLS) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *IngressTLS) GetHosts() []string {
if x != nil {
- return x.AppProtocol
+ return x.Hosts
+ }
+ return nil
+}
+
+func (x *IngressTLS) GetSecretName() string {
+ if x != nil {
+ return x.SecretName
}
return ""
}
-// LoadBalancerIngress represents a load balancer ingress point
-type LoadBalancerIngress struct {
+// PersistentVolumeClaimDetails contains detailed PVC information for drill-down
+type PersistentVolumeClaimDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` // IP address
- Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"` // Hostname (alternative to IP)
- Ports []string `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"` // Ports information from ingress
- IpMode string `protobuf:"bytes,4,opt,name=ip_mode,json=ipMode,proto3" json:"ip_mode,omitempty"` // IP mode: "VIP" or "Proxy"
+ ResourceRequirements *ResourceRequirements `protobuf:"bytes,1,opt,name=resource_requirements,json=resourceRequirements,proto3" json:"resource_requirements,omitempty"` // Storage resource requirements
+ Selector *LabelSelector `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` // Label selector for PV binding
+ VolumeNodeAffinity []*VolumeNodeAffinity `protobuf:"bytes,3,rep,name=volume_node_affinity,json=volumeNodeAffinity,proto3" json:"volume_node_affinity,omitempty"` // Node affinity constraints
+ Conditions []*PVCCondition `protobuf:"bytes,4,rep,name=conditions,proto3" json:"conditions,omitempty"` // PVC conditions
+ MountedByPods []string `protobuf:"bytes,5,rep,name=mounted_by_pods,json=mountedByPods,proto3" json:"mounted_by_pods,omitempty"` // Pods currently using this PVC
}
-func (x *LoadBalancerIngress) Reset() {
- *x = LoadBalancerIngress{}
+func (x *PersistentVolumeClaimDetails) Reset() {
+ *x = PersistentVolumeClaimDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[43]
+ mi := &file_api_v1_common_proto_msgTypes[55]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *LoadBalancerIngress) String() string {
+func (x *PersistentVolumeClaimDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*LoadBalancerIngress) ProtoMessage() {}
+func (*PersistentVolumeClaimDetails) ProtoMessage() {}
-func (x *LoadBalancerIngress) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[43]
+func (x *PersistentVolumeClaimDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[55]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7099,68 +8536,73 @@ func (x *LoadBalancerIngress) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use LoadBalancerIngress.ProtoReflect.Descriptor instead.
-func (*LoadBalancerIngress) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{43}
+// Deprecated: Use PersistentVolumeClaimDetails.ProtoReflect.Descriptor instead.
+func (*PersistentVolumeClaimDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{55}
}
-func (x *LoadBalancerIngress) GetIp() string {
+func (x *PersistentVolumeClaimDetails) GetResourceRequirements() *ResourceRequirements {
if x != nil {
- return x.Ip
+ return x.ResourceRequirements
}
- return ""
+ return nil
}
-func (x *LoadBalancerIngress) GetHostname() string {
+func (x *PersistentVolumeClaimDetails) GetSelector() *LabelSelector {
if x != nil {
- return x.Hostname
+ return x.Selector
}
- return ""
+ return nil
}
-func (x *LoadBalancerIngress) GetPorts() []string {
+func (x *PersistentVolumeClaimDetails) GetVolumeNodeAffinity() []*VolumeNodeAffinity {
if x != nil {
- return x.Ports
+ return x.VolumeNodeAffinity
}
return nil
}
-func (x *LoadBalancerIngress) GetIpMode() string {
+func (x *PersistentVolumeClaimDetails) GetConditions() []*PVCCondition {
if x != nil {
- return x.IpMode
+ return x.Conditions
}
- return ""
+ return nil
}
-// IngressDetails contains detailed Ingress information for drill-down
-type IngressDetails struct {
+func (x *PersistentVolumeClaimDetails) GetMountedByPods() []string {
+ if x != nil {
+ return x.MountedByPods
+ }
+ return nil
+}
+
+// ResourceRequirements represents storage resource requirements
+type ResourceRequirements struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Rules []*IngressRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` // Ingress rules
- Tls []*IngressTLS `protobuf:"bytes,2,rep,name=tls,proto3" json:"tls,omitempty"` // TLS configurations
- DefaultBackend *IngressBackend `protobuf:"bytes,3,opt,name=default_backend,json=defaultBackend,proto3" json:"default_backend,omitempty"` // Default backend (optional)
- LoadBalancerIngress []*LoadBalancerIngress `protobuf:"bytes,4,rep,name=load_balancer_ingress,json=loadBalancerIngress,proto3" json:"load_balancer_ingress,omitempty"` // Load balancer status
+ Requests map[string]string `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource requests (e.g., "storage": "50Gi")
+ Limits map[string]string `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource limits (optional for PVCs)
}
-func (x *IngressDetails) Reset() {
- *x = IngressDetails{}
+func (x *ResourceRequirements) Reset() {
+ *x = ResourceRequirements{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[44]
+ mi := &file_api_v1_common_proto_msgTypes[56]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *IngressDetails) String() string {
+func (x *ResourceRequirements) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*IngressDetails) ProtoMessage() {}
+func (*ResourceRequirements) ProtoMessage() {}
-func (x *IngressDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[44]
+func (x *ResourceRequirements) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[56]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7171,66 +8613,52 @@ func (x *IngressDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use IngressDetails.ProtoReflect.Descriptor instead.
-func (*IngressDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{44}
-}
-
-func (x *IngressDetails) GetRules() []*IngressRule {
- if x != nil {
- return x.Rules
- }
- return nil
-}
-
-func (x *IngressDetails) GetTls() []*IngressTLS {
- if x != nil {
- return x.Tls
- }
- return nil
+// Deprecated: Use ResourceRequirements.ProtoReflect.Descriptor instead.
+func (*ResourceRequirements) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{56}
}
-func (x *IngressDetails) GetDefaultBackend() *IngressBackend {
+func (x *ResourceRequirements) GetRequests() map[string]string {
if x != nil {
- return x.DefaultBackend
+ return x.Requests
}
return nil
}
-func (x *IngressDetails) GetLoadBalancerIngress() []*LoadBalancerIngress {
+func (x *ResourceRequirements) GetLimits() map[string]string {
if x != nil {
- return x.LoadBalancerIngress
+ return x.Limits
}
return nil
}
-// IngressRule represents an ingress rule
-type IngressRule struct {
+// VolumeNodeAffinity represents node affinity constraints for volumes
+type VolumeNodeAffinity struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // Host name (optional, empty means all hosts)
- Paths []*IngressPath `protobuf:"bytes,2,rep,name=paths,proto3" json:"paths,omitempty"` // HTTP paths
+ Required []*NodeSelectorRequirement `protobuf:"bytes,1,rep,name=required,proto3" json:"required,omitempty"` // Required node selector terms
+ Preferred []*NodeSelectorRequirement `protobuf:"bytes,2,rep,name=preferred,proto3" json:"preferred,omitempty"` // Preferred node selector terms
}
-func (x *IngressRule) Reset() {
- *x = IngressRule{}
+func (x *VolumeNodeAffinity) Reset() {
+ *x = VolumeNodeAffinity{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[45]
+ mi := &file_api_v1_common_proto_msgTypes[57]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *IngressRule) String() string {
+func (x *VolumeNodeAffinity) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*IngressRule) ProtoMessage() {}
+func (*VolumeNodeAffinity) ProtoMessage() {}
-func (x *IngressRule) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[45]
+func (x *VolumeNodeAffinity) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[57]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7241,53 +8669,56 @@ func (x *IngressRule) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use IngressRule.ProtoReflect.Descriptor instead.
-func (*IngressRule) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{45}
+// Deprecated: Use VolumeNodeAffinity.ProtoReflect.Descriptor instead.
+func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{57}
}
-func (x *IngressRule) GetHost() string {
+func (x *VolumeNodeAffinity) GetRequired() []*NodeSelectorRequirement {
if x != nil {
- return x.Host
+ return x.Required
}
- return ""
+ return nil
}
-func (x *IngressRule) GetPaths() []*IngressPath {
+func (x *VolumeNodeAffinity) GetPreferred() []*NodeSelectorRequirement {
if x != nil {
- return x.Paths
+ return x.Preferred
}
return nil
}
-// IngressPath represents a path rule within an ingress
-type IngressPath struct {
+// PVCCondition represents a condition of a PVC
+type PVCCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // URL path
- PathType string `protobuf:"bytes,2,opt,name=path_type,json=pathType,proto3" json:"path_type,omitempty"` // Path type: "Exact", "Prefix", "ImplementationSpecific"
- Backend *IngressBackend `protobuf:"bytes,3,opt,name=backend,proto3" json:"backend,omitempty"` // Backend service
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "Resizing")
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastProbeTime int64 `protobuf:"varint,5,opt,name=last_probe_time,json=lastProbeTime,proto3" json:"last_probe_time,omitempty"` // Last time condition was probed
+ LastTransitionTime int64 `protobuf:"varint,6,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last time condition transitioned
}
-func (x *IngressPath) Reset() {
- *x = IngressPath{}
+func (x *PVCCondition) Reset() {
+ *x = PVCCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[46]
+ mi := &file_api_v1_common_proto_msgTypes[58]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *IngressPath) String() string {
+func (x *PVCCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*IngressPath) ProtoMessage() {}
+func (*PVCCondition) ProtoMessage() {}
-func (x *IngressPath) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[46]
+func (x *PVCCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[58]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7298,63 +8729,83 @@ func (x *IngressPath) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use IngressPath.ProtoReflect.Descriptor instead.
-func (*IngressPath) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{46}
+// Deprecated: Use PVCCondition.ProtoReflect.Descriptor instead.
+func (*PVCCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{58}
}
-func (x *IngressPath) GetPath() string {
+func (x *PVCCondition) GetType() string {
if x != nil {
- return x.Path
+ return x.Type
}
return ""
}
-func (x *IngressPath) GetPathType() string {
+func (x *PVCCondition) GetStatus() string {
if x != nil {
- return x.PathType
+ return x.Status
}
return ""
}
-func (x *IngressPath) GetBackend() *IngressBackend {
+func (x *PVCCondition) GetReason() string {
if x != nil {
- return x.Backend
+ return x.Reason
}
- return nil
+ return ""
}
-// IngressBackend represents a backend referenced by an ingress
-type IngressBackend struct {
+func (x *PVCCondition) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *PVCCondition) GetLastProbeTime() int64 {
+ if x != nil {
+ return x.LastProbeTime
+ }
+ return 0
+}
+
+func (x *PVCCondition) GetLastTransitionTime() int64 {
+ if x != nil {
+ return x.LastTransitionTime
+ }
+ return 0
+}
+
+// PersistentVolumeDetails contains detailed PV information for drill-down
+type PersistentVolumeDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // Service name
- ServicePort int32 `protobuf:"varint,2,opt,name=service_port,json=servicePort,proto3" json:"service_port,omitempty"` // Service port number
- ServicePortName string `protobuf:"bytes,3,opt,name=service_port_name,json=servicePortName,proto3" json:"service_port_name,omitempty"` // Service port name (alternative to number)
- ResourceApiVersion string `protobuf:"bytes,4,opt,name=resource_api_version,json=resourceApiVersion,proto3" json:"resource_api_version,omitempty"` // Resource API version (for non-service backends)
- ResourceKind string `protobuf:"bytes,5,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` // Resource kind (for non-service backends)
- ResourceName string `protobuf:"bytes,6,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` // Resource name (for non-service backends)
+ Capacity map[string]string `protobuf:"bytes,1,rep,name=capacity,proto3" json:"capacity,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Storage capacity resources
+ ClaimRef *PVClaimReference `protobuf:"bytes,2,opt,name=claim_ref,json=claimRef,proto3" json:"claim_ref,omitempty"` // Reference to bound PVC
+ VolumeSource *PVVolumeSource `protobuf:"bytes,3,opt,name=volume_source,json=volumeSource,proto3" json:"volume_source,omitempty"` // Volume source (CSI, HostPath, etc.)
+ NodeAffinity *NodeSelector `protobuf:"bytes,4,opt,name=node_affinity,json=nodeAffinity,proto3" json:"node_affinity,omitempty"` // Node affinity constraints
+ MountOptions []string `protobuf:"bytes,5,rep,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` // Mount options for the volume
}
-func (x *IngressBackend) Reset() {
- *x = IngressBackend{}
+func (x *PersistentVolumeDetails) Reset() {
+ *x = PersistentVolumeDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[47]
+ mi := &file_api_v1_common_proto_msgTypes[59]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *IngressBackend) String() string {
+func (x *PersistentVolumeDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*IngressBackend) ProtoMessage() {}
+func (*PersistentVolumeDetails) ProtoMessage() {}
-func (x *IngressBackend) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[47]
+func (x *PersistentVolumeDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[59]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7365,80 +8816,76 @@ func (x *IngressBackend) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use IngressBackend.ProtoReflect.Descriptor instead.
-func (*IngressBackend) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{47}
-}
-
-func (x *IngressBackend) GetServiceName() string {
- if x != nil {
- return x.ServiceName
- }
- return ""
+// Deprecated: Use PersistentVolumeDetails.ProtoReflect.Descriptor instead.
+func (*PersistentVolumeDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{59}
}
-func (x *IngressBackend) GetServicePort() int32 {
+func (x *PersistentVolumeDetails) GetCapacity() map[string]string {
if x != nil {
- return x.ServicePort
+ return x.Capacity
}
- return 0
+ return nil
}
-func (x *IngressBackend) GetServicePortName() string {
+func (x *PersistentVolumeDetails) GetClaimRef() *PVClaimReference {
if x != nil {
- return x.ServicePortName
+ return x.ClaimRef
}
- return ""
+ return nil
}
-func (x *IngressBackend) GetResourceApiVersion() string {
+func (x *PersistentVolumeDetails) GetVolumeSource() *PVVolumeSource {
if x != nil {
- return x.ResourceApiVersion
+ return x.VolumeSource
}
- return ""
+ return nil
}
-func (x *IngressBackend) GetResourceKind() string {
+func (x *PersistentVolumeDetails) GetNodeAffinity() *NodeSelector {
if x != nil {
- return x.ResourceKind
+ return x.NodeAffinity
}
- return ""
+ return nil
}
-func (x *IngressBackend) GetResourceName() string {
+func (x *PersistentVolumeDetails) GetMountOptions() []string {
if x != nil {
- return x.ResourceName
+ return x.MountOptions
}
- return ""
+ return nil
}
-// IngressTLS represents TLS configuration for an ingress
-type IngressTLS struct {
+// PVClaimReference represents a reference to a PVC
+type PVClaimReference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Hosts []string `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` // Hosts covered by this TLS config
- SecretName string `protobuf:"bytes,2,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` // Secret containing the TLS certificate
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // PVC name
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` // PVC namespace
+ Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"` // PVC UID
+ ApiVersion string `protobuf:"bytes,4,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version
+ ResourceVersion string `protobuf:"bytes,5,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` // Resource version
}
-func (x *IngressTLS) Reset() {
- *x = IngressTLS{}
+func (x *PVClaimReference) Reset() {
+ *x = PVClaimReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[48]
+ mi := &file_api_v1_common_proto_msgTypes[60]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *IngressTLS) String() string {
+func (x *PVClaimReference) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*IngressTLS) ProtoMessage() {}
+func (*PVClaimReference) ProtoMessage() {}
-func (x *IngressTLS) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[48]
+func (x *PVClaimReference) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[60]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7449,55 +8896,76 @@ func (x *IngressTLS) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use IngressTLS.ProtoReflect.Descriptor instead.
-func (*IngressTLS) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{48}
+// Deprecated: Use PVClaimReference.ProtoReflect.Descriptor instead.
+func (*PVClaimReference) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{60}
}
-func (x *IngressTLS) GetHosts() []string {
+func (x *PVClaimReference) GetName() string {
if x != nil {
- return x.Hosts
+ return x.Name
}
- return nil
+ return ""
}
-func (x *IngressTLS) GetSecretName() string {
+func (x *PVClaimReference) GetNamespace() string {
if x != nil {
- return x.SecretName
+ return x.Namespace
}
return ""
}
-// PersistentVolumeClaimDetails contains detailed PVC information for drill-down
-type PersistentVolumeClaimDetails struct {
+func (x *PVClaimReference) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *PVClaimReference) GetApiVersion() string {
+ if x != nil {
+ return x.ApiVersion
+ }
+ return ""
+}
+
+func (x *PVClaimReference) GetResourceVersion() string {
+ if x != nil {
+ return x.ResourceVersion
+ }
+ return ""
+}
+
+// PVVolumeSource represents the source of a persistent volume
+type PVVolumeSource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ResourceRequirements *ResourceRequirements `protobuf:"bytes,1,opt,name=resource_requirements,json=resourceRequirements,proto3" json:"resource_requirements,omitempty"` // Storage resource requirements
- Selector *LabelSelector `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` // Label selector for PV binding
- VolumeNodeAffinity []*VolumeNodeAffinity `protobuf:"bytes,3,rep,name=volume_node_affinity,json=volumeNodeAffinity,proto3" json:"volume_node_affinity,omitempty"` // Node affinity constraints
- Conditions []*PVCCondition `protobuf:"bytes,4,rep,name=conditions,proto3" json:"conditions,omitempty"` // PVC conditions
- MountedByPods []string `protobuf:"bytes,5,rep,name=mounted_by_pods,json=mountedByPods,proto3" json:"mounted_by_pods,omitempty"` // Pods currently using this PVC
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Volume source type
+ Csi *CSIVolumeSource `protobuf:"bytes,2,opt,name=csi,proto3" json:"csi,omitempty"` // CSI volume source (if applicable)
+ HostPath *HostPathVolumeSource `protobuf:"bytes,3,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` // HostPath volume source (if applicable)
+ Nfs *NFSVolumeSource `protobuf:"bytes,4,opt,name=nfs,proto3" json:"nfs,omitempty"` // NFS volume source (if applicable)
+ VolumeAttributes map[string]string `protobuf:"bytes,5,rep,name=volume_attributes,json=volumeAttributes,proto3" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Additional volume attributes
}
-func (x *PersistentVolumeClaimDetails) Reset() {
- *x = PersistentVolumeClaimDetails{}
+func (x *PVVolumeSource) Reset() {
+ *x = PVVolumeSource{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[49]
+ mi := &file_api_v1_common_proto_msgTypes[61]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PersistentVolumeClaimDetails) String() string {
+func (x *PVVolumeSource) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PersistentVolumeClaimDetails) ProtoMessage() {}
+func (*PVVolumeSource) ProtoMessage() {}
-func (x *PersistentVolumeClaimDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[49]
+func (x *PVVolumeSource) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[61]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7508,73 +8976,76 @@ func (x *PersistentVolumeClaimDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PersistentVolumeClaimDetails.ProtoReflect.Descriptor instead.
-func (*PersistentVolumeClaimDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{49}
+// Deprecated: Use PVVolumeSource.ProtoReflect.Descriptor instead.
+func (*PVVolumeSource) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{61}
}
-func (x *PersistentVolumeClaimDetails) GetResourceRequirements() *ResourceRequirements {
+func (x *PVVolumeSource) GetType() string {
if x != nil {
- return x.ResourceRequirements
+ return x.Type
}
- return nil
+ return ""
}
-func (x *PersistentVolumeClaimDetails) GetSelector() *LabelSelector {
+func (x *PVVolumeSource) GetCsi() *CSIVolumeSource {
if x != nil {
- return x.Selector
+ return x.Csi
}
return nil
}
-func (x *PersistentVolumeClaimDetails) GetVolumeNodeAffinity() []*VolumeNodeAffinity {
+func (x *PVVolumeSource) GetHostPath() *HostPathVolumeSource {
if x != nil {
- return x.VolumeNodeAffinity
+ return x.HostPath
}
return nil
}
-func (x *PersistentVolumeClaimDetails) GetConditions() []*PVCCondition {
+func (x *PVVolumeSource) GetNfs() *NFSVolumeSource {
if x != nil {
- return x.Conditions
+ return x.Nfs
}
return nil
}
-func (x *PersistentVolumeClaimDetails) GetMountedByPods() []string {
+func (x *PVVolumeSource) GetVolumeAttributes() map[string]string {
if x != nil {
- return x.MountedByPods
+ return x.VolumeAttributes
}
return nil
}
-// ResourceRequirements represents storage resource requirements
-type ResourceRequirements struct {
+// CSIVolumeSource represents a CSI volume source
+type CSIVolumeSource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Requests map[string]string `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource requests (e.g., "storage": "50Gi")
- Limits map[string]string `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource limits (optional for PVCs)
+ Driver string `protobuf:"bytes,1,opt,name=driver,proto3" json:"driver,omitempty"` // CSI driver name
+ VolumeHandle string `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle,proto3" json:"volume_handle,omitempty"` // Volume handle/ID
+ FsType string `protobuf:"bytes,3,opt,name=fs_type,json=fsType,proto3" json:"fs_type,omitempty"` // Filesystem type
+ ReadOnly bool `protobuf:"varint,4,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` // Whether volume is read-only
+ VolumeAttributes map[string]string `protobuf:"bytes,5,rep,name=volume_attributes,json=volumeAttributes,proto3" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // CSI volume attributes
}
-func (x *ResourceRequirements) Reset() {
- *x = ResourceRequirements{}
+func (x *CSIVolumeSource) Reset() {
+ *x = CSIVolumeSource{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[50]
+ mi := &file_api_v1_common_proto_msgTypes[62]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceRequirements) String() string {
+func (x *CSIVolumeSource) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceRequirements) ProtoMessage() {}
+func (*CSIVolumeSource) ProtoMessage() {}
-func (x *ResourceRequirements) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[50]
+func (x *CSIVolumeSource) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[62]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7585,52 +9056,73 @@ func (x *ResourceRequirements) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceRequirements.ProtoReflect.Descriptor instead.
-func (*ResourceRequirements) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{50}
+// Deprecated: Use CSIVolumeSource.ProtoReflect.Descriptor instead.
+func (*CSIVolumeSource) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{62}
}
-func (x *ResourceRequirements) GetRequests() map[string]string {
+func (x *CSIVolumeSource) GetDriver() string {
if x != nil {
- return x.Requests
+ return x.Driver
}
- return nil
+ return ""
}
-func (x *ResourceRequirements) GetLimits() map[string]string {
+func (x *CSIVolumeSource) GetVolumeHandle() string {
if x != nil {
- return x.Limits
+ return x.VolumeHandle
+ }
+ return ""
+}
+
+func (x *CSIVolumeSource) GetFsType() string {
+ if x != nil {
+ return x.FsType
+ }
+ return ""
+}
+
+func (x *CSIVolumeSource) GetReadOnly() bool {
+ if x != nil {
+ return x.ReadOnly
+ }
+ return false
+}
+
+func (x *CSIVolumeSource) GetVolumeAttributes() map[string]string {
+ if x != nil {
+ return x.VolumeAttributes
}
return nil
}
-// VolumeNodeAffinity represents node affinity constraints for volumes
-type VolumeNodeAffinity struct {
+// HostPathVolumeSource represents a host path volume source
+type HostPathVolumeSource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Required []*NodeSelectorRequirement `protobuf:"bytes,1,rep,name=required,proto3" json:"required,omitempty"` // Required node selector terms
- Preferred []*NodeSelectorRequirement `protobuf:"bytes,2,rep,name=preferred,proto3" json:"preferred,omitempty"` // Preferred node selector terms
+ Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // Host path
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // Path type (e.g., "Directory", "File")
}
-func (x *VolumeNodeAffinity) Reset() {
- *x = VolumeNodeAffinity{}
+func (x *HostPathVolumeSource) Reset() {
+ *x = HostPathVolumeSource{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[51]
+ mi := &file_api_v1_common_proto_msgTypes[63]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VolumeNodeAffinity) String() string {
+func (x *HostPathVolumeSource) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VolumeNodeAffinity) ProtoMessage() {}
+func (*HostPathVolumeSource) ProtoMessage() {}
-func (x *VolumeNodeAffinity) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[51]
+func (x *HostPathVolumeSource) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[63]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7641,56 +9133,53 @@ func (x *VolumeNodeAffinity) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VolumeNodeAffinity.ProtoReflect.Descriptor instead.
-func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{51}
+// Deprecated: Use HostPathVolumeSource.ProtoReflect.Descriptor instead.
+func (*HostPathVolumeSource) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{63}
}
-func (x *VolumeNodeAffinity) GetRequired() []*NodeSelectorRequirement {
+func (x *HostPathVolumeSource) GetPath() string {
if x != nil {
- return x.Required
+ return x.Path
}
- return nil
+ return ""
}
-func (x *VolumeNodeAffinity) GetPreferred() []*NodeSelectorRequirement {
+func (x *HostPathVolumeSource) GetType() string {
if x != nil {
- return x.Preferred
+ return x.Type
}
- return nil
+ return ""
}
-// PVCCondition represents a condition of a PVC
-type PVCCondition struct {
+// NFSVolumeSource represents an NFS volume source
+type NFSVolumeSource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "Resizing")
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastProbeTime int64 `protobuf:"varint,5,opt,name=last_probe_time,json=lastProbeTime,proto3" json:"last_probe_time,omitempty"` // Last time condition was probed
- LastTransitionTime int64 `protobuf:"varint,6,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last time condition transitioned
+ Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` // NFS server
+ Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // NFS path
+ ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` // Whether NFS mount is read-only
}
-func (x *PVCCondition) Reset() {
- *x = PVCCondition{}
+func (x *NFSVolumeSource) Reset() {
+ *x = NFSVolumeSource{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[52]
+ mi := &file_api_v1_common_proto_msgTypes[64]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PVCCondition) String() string {
+func (x *NFSVolumeSource) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PVCCondition) ProtoMessage() {}
+func (*NFSVolumeSource) ProtoMessage() {}
-func (x *PVCCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[52]
+func (x *NFSVolumeSource) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[64]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7701,83 +9190,64 @@ func (x *PVCCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PVCCondition.ProtoReflect.Descriptor instead.
-func (*PVCCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{52}
-}
-
-func (x *PVCCondition) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *PVCCondition) GetStatus() string {
- if x != nil {
- return x.Status
- }
- return ""
+// Deprecated: Use NFSVolumeSource.ProtoReflect.Descriptor instead.
+func (*NFSVolumeSource) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{64}
}
-func (x *PVCCondition) GetReason() string {
+func (x *NFSVolumeSource) GetServer() string {
if x != nil {
- return x.Reason
+ return x.Server
}
return ""
}
-func (x *PVCCondition) GetMessage() string {
+func (x *NFSVolumeSource) GetPath() string {
if x != nil {
- return x.Message
+ return x.Path
}
return ""
}
-func (x *PVCCondition) GetLastProbeTime() int64 {
- if x != nil {
- return x.LastProbeTime
- }
- return 0
-}
-
-func (x *PVCCondition) GetLastTransitionTime() int64 {
+func (x *NFSVolumeSource) GetReadOnly() bool {
if x != nil {
- return x.LastTransitionTime
+ return x.ReadOnly
}
- return 0
+ return false
}
-// PersistentVolumeDetails contains detailed PV information for drill-down
-type PersistentVolumeDetails struct {
+// StorageClassDetails contains detailed StorageClass information for drill-down
+type StorageClassDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Capacity map[string]string `protobuf:"bytes,1,rep,name=capacity,proto3" json:"capacity,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Storage capacity resources
- ClaimRef *PVClaimReference `protobuf:"bytes,2,opt,name=claim_ref,json=claimRef,proto3" json:"claim_ref,omitempty"` // Reference to bound PVC
- VolumeSource *PVVolumeSource `protobuf:"bytes,3,opt,name=volume_source,json=volumeSource,proto3" json:"volume_source,omitempty"` // Volume source (CSI, HostPath, etc.)
- NodeAffinity *NodeSelector `protobuf:"bytes,4,opt,name=node_affinity,json=nodeAffinity,proto3" json:"node_affinity,omitempty"` // Node affinity constraints
- MountOptions []string `protobuf:"bytes,5,rep,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` // Mount options for the volume
+ Provisioner string `protobuf:"bytes,1,opt,name=provisioner,proto3" json:"provisioner,omitempty"` // Storage provisioner
+ Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Storage class parameters
+ AllowedTopologies []*TopologySelector `protobuf:"bytes,3,rep,name=allowed_topologies,json=allowedTopologies,proto3" json:"allowed_topologies,omitempty"` // Allowed topologies
+ MountOptions []string `protobuf:"bytes,4,rep,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` // Default mount options
+ VolumeBindingMode string `protobuf:"bytes,5,opt,name=volume_binding_mode,json=volumeBindingMode,proto3" json:"volume_binding_mode,omitempty"` // Volume binding mode
+ ReclaimPolicy string `protobuf:"bytes,6,opt,name=reclaim_policy,json=reclaimPolicy,proto3" json:"reclaim_policy,omitempty"` // Default reclaim policy
+ AllowVolumeExpansion bool `protobuf:"varint,7,opt,name=allow_volume_expansion,json=allowVolumeExpansion,proto3" json:"allow_volume_expansion,omitempty"` // Whether volume expansion is allowed
}
-func (x *PersistentVolumeDetails) Reset() {
- *x = PersistentVolumeDetails{}
+func (x *StorageClassDetails) Reset() {
+ *x = StorageClassDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[53]
+ mi := &file_api_v1_common_proto_msgTypes[65]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PersistentVolumeDetails) String() string {
+func (x *StorageClassDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PersistentVolumeDetails) ProtoMessage() {}
+func (*StorageClassDetails) ProtoMessage() {}
-func (x *PersistentVolumeDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[53]
+func (x *StorageClassDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[65]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7788,76 +9258,88 @@ func (x *PersistentVolumeDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PersistentVolumeDetails.ProtoReflect.Descriptor instead.
-func (*PersistentVolumeDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{53}
+// Deprecated: Use StorageClassDetails.ProtoReflect.Descriptor instead.
+func (*StorageClassDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{65}
}
-func (x *PersistentVolumeDetails) GetCapacity() map[string]string {
+func (x *StorageClassDetails) GetProvisioner() string {
if x != nil {
- return x.Capacity
+ return x.Provisioner
}
- return nil
+ return ""
}
-func (x *PersistentVolumeDetails) GetClaimRef() *PVClaimReference {
+func (x *StorageClassDetails) GetParameters() map[string]string {
if x != nil {
- return x.ClaimRef
+ return x.Parameters
}
return nil
}
-func (x *PersistentVolumeDetails) GetVolumeSource() *PVVolumeSource {
+func (x *StorageClassDetails) GetAllowedTopologies() []*TopologySelector {
if x != nil {
- return x.VolumeSource
+ return x.AllowedTopologies
}
return nil
}
-func (x *PersistentVolumeDetails) GetNodeAffinity() *NodeSelector {
+func (x *StorageClassDetails) GetMountOptions() []string {
if x != nil {
- return x.NodeAffinity
+ return x.MountOptions
}
return nil
}
-func (x *PersistentVolumeDetails) GetMountOptions() []string {
+func (x *StorageClassDetails) GetVolumeBindingMode() string {
if x != nil {
- return x.MountOptions
+ return x.VolumeBindingMode
}
- return nil
+ return ""
}
-// PVClaimReference represents a reference to a PVC
-type PVClaimReference struct {
+func (x *StorageClassDetails) GetReclaimPolicy() string {
+ if x != nil {
+ return x.ReclaimPolicy
+ }
+ return ""
+}
+
+func (x *StorageClassDetails) GetAllowVolumeExpansion() bool {
+ if x != nil {
+ return x.AllowVolumeExpansion
+ }
+ return false
+}
+
+// NamespaceDetails contains detailed Namespace information for drill-down
+type NamespaceDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // PVC name
- Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` // PVC namespace
- Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"` // PVC UID
- ApiVersion string `protobuf:"bytes,4,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version
- ResourceVersion string `protobuf:"bytes,5,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` // Resource version
+ Phase string `protobuf:"bytes,1,opt,name=phase,proto3" json:"phase,omitempty"` // Namespace phase: "Active", "Terminating"
+ Finalizers []string `protobuf:"bytes,2,rep,name=finalizers,proto3" json:"finalizers,omitempty"` // Finalizers preventing deletion
+ Conditions map[string]string `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Namespace conditions if any
}
-func (x *PVClaimReference) Reset() {
- *x = PVClaimReference{}
+func (x *NamespaceDetails) Reset() {
+ *x = NamespaceDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[54]
+ mi := &file_api_v1_common_proto_msgTypes[66]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PVClaimReference) String() string {
+func (x *NamespaceDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PVClaimReference) ProtoMessage() {}
+func (*NamespaceDetails) ProtoMessage() {}
-func (x *PVClaimReference) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[54]
+func (x *NamespaceDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[66]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7868,76 +9350,69 @@ func (x *PVClaimReference) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PVClaimReference.ProtoReflect.Descriptor instead.
-func (*PVClaimReference) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{54}
-}
-
-func (x *PVClaimReference) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *PVClaimReference) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
+// Deprecated: Use NamespaceDetails.ProtoReflect.Descriptor instead.
+func (*NamespaceDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{66}
}
-func (x *PVClaimReference) GetUid() string {
+func (x *NamespaceDetails) GetPhase() string {
if x != nil {
- return x.Uid
+ return x.Phase
}
return ""
}
-func (x *PVClaimReference) GetApiVersion() string {
+func (x *NamespaceDetails) GetFinalizers() []string {
if x != nil {
- return x.ApiVersion
+ return x.Finalizers
}
- return ""
+ return nil
}
-func (x *PVClaimReference) GetResourceVersion() string {
+func (x *NamespaceDetails) GetConditions() map[string]string {
if x != nil {
- return x.ResourceVersion
+ return x.Conditions
}
- return ""
+ return nil
}
-// PVVolumeSource represents the source of a persistent volume
-type PVVolumeSource struct {
+// NodeDetails contains detailed Node information for drill-down
+type NodeDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Volume source type
- Csi *CSIVolumeSource `protobuf:"bytes,2,opt,name=csi,proto3" json:"csi,omitempty"` // CSI volume source (if applicable)
- HostPath *HostPathVolumeSource `protobuf:"bytes,3,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` // HostPath volume source (if applicable)
- Nfs *NFSVolumeSource `protobuf:"bytes,4,opt,name=nfs,proto3" json:"nfs,omitempty"` // NFS volume source (if applicable)
- VolumeAttributes map[string]string `protobuf:"bytes,5,rep,name=volume_attributes,json=volumeAttributes,proto3" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Additional volume attributes
+ Addresses []*NodeAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` // Node addresses (Internal/External IP, DNS, etc.)
+ Conditions []*NodeCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // Node conditions (Ready, MemoryPressure, etc.)
+ SystemInfo *NodeSystemInfo `protobuf:"bytes,3,opt,name=system_info,json=systemInfo,proto3" json:"system_info,omitempty"` // System information (OS, kernel, etc.)
+ Capacity map[string]string `protobuf:"bytes,4,rep,name=capacity,proto3" json:"capacity,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource capacity (cpu, memory, etc.)
+ Allocatable map[string]string `protobuf:"bytes,5,rep,name=allocatable,proto3" json:"allocatable,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Allocatable resources
+ Images []*NodeImage `protobuf:"bytes,6,rep,name=images,proto3" json:"images,omitempty"` // Container images on the node
+ // Desired MIG partitioning profile from the nvidia.com/mig.config node
+ // label; empty on nodes without MIG management.
+ MigConfigDesired string `protobuf:"bytes,7,opt,name=mig_config_desired,json=migConfigDesired,proto3" json:"mig_config_desired,omitempty"`
+ // Applied MIG state from the nvidia.com/mig.config.state node label
+ // (e.g. success, pending, failed); empty on nodes without MIG management.
+ MigConfigState string `protobuf:"bytes,8,opt,name=mig_config_state,json=migConfigState,proto3" json:"mig_config_state,omitempty"`
}
-func (x *PVVolumeSource) Reset() {
- *x = PVVolumeSource{}
+func (x *NodeDetails) Reset() {
+ *x = NodeDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[55]
+ mi := &file_api_v1_common_proto_msgTypes[67]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PVVolumeSource) String() string {
+func (x *NodeDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PVVolumeSource) ProtoMessage() {}
+func (*NodeDetails) ProtoMessage() {}
-func (x *PVVolumeSource) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[55]
+func (x *NodeDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[67]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7948,76 +9423,96 @@ func (x *PVVolumeSource) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PVVolumeSource.ProtoReflect.Descriptor instead.
-func (*PVVolumeSource) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{55}
+// Deprecated: Use NodeDetails.ProtoReflect.Descriptor instead.
+func (*NodeDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{67}
}
-func (x *PVVolumeSource) GetType() string {
+func (x *NodeDetails) GetAddresses() []*NodeAddress {
if x != nil {
- return x.Type
+ return x.Addresses
}
- return ""
+ return nil
}
-func (x *PVVolumeSource) GetCsi() *CSIVolumeSource {
+func (x *NodeDetails) GetConditions() []*NodeCondition {
if x != nil {
- return x.Csi
+ return x.Conditions
}
return nil
}
-func (x *PVVolumeSource) GetHostPath() *HostPathVolumeSource {
+func (x *NodeDetails) GetSystemInfo() *NodeSystemInfo {
if x != nil {
- return x.HostPath
+ return x.SystemInfo
}
return nil
}
-func (x *PVVolumeSource) GetNfs() *NFSVolumeSource {
+func (x *NodeDetails) GetCapacity() map[string]string {
if x != nil {
- return x.Nfs
+ return x.Capacity
}
return nil
}
-func (x *PVVolumeSource) GetVolumeAttributes() map[string]string {
+func (x *NodeDetails) GetAllocatable() map[string]string {
if x != nil {
- return x.VolumeAttributes
+ return x.Allocatable
}
return nil
}
-// CSIVolumeSource represents a CSI volume source
-type CSIVolumeSource struct {
+func (x *NodeDetails) GetImages() []*NodeImage {
+ if x != nil {
+ return x.Images
+ }
+ return nil
+}
+
+func (x *NodeDetails) GetMigConfigDesired() string {
+ if x != nil {
+ return x.MigConfigDesired
+ }
+ return ""
+}
+
+func (x *NodeDetails) GetMigConfigState() string {
+ if x != nil {
+ return x.MigConfigState
+ }
+ return ""
+}
+
+// NodeTaint represents a node taint that affects pod scheduling
+type NodeTaint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Driver string `protobuf:"bytes,1,opt,name=driver,proto3" json:"driver,omitempty"` // CSI driver name
- VolumeHandle string `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle,proto3" json:"volume_handle,omitempty"` // Volume handle/ID
- FsType string `protobuf:"bytes,3,opt,name=fs_type,json=fsType,proto3" json:"fs_type,omitempty"` // Filesystem type
- ReadOnly bool `protobuf:"varint,4,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` // Whether volume is read-only
- VolumeAttributes map[string]string `protobuf:"bytes,5,rep,name=volume_attributes,json=volumeAttributes,proto3" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // CSI volume attributes
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Taint key
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // Taint value (optional)
+ Effect string `protobuf:"bytes,3,opt,name=effect,proto3" json:"effect,omitempty"` // Taint effect: "NoSchedule", "PreferNoSchedule", "NoExecute"
+ TimeAdded int64 `protobuf:"varint,4,opt,name=time_added,json=timeAdded,proto3" json:"time_added,omitempty"` // When the taint was added (optional)
}
-func (x *CSIVolumeSource) Reset() {
- *x = CSIVolumeSource{}
+func (x *NodeTaint) Reset() {
+ *x = NodeTaint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[56]
+ mi := &file_api_v1_common_proto_msgTypes[68]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CSIVolumeSource) String() string {
+func (x *NodeTaint) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CSIVolumeSource) ProtoMessage() {}
+func (*NodeTaint) ProtoMessage() {}
-func (x *CSIVolumeSource) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[56]
+func (x *NodeTaint) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[68]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8028,73 +9523,66 @@ func (x *CSIVolumeSource) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CSIVolumeSource.ProtoReflect.Descriptor instead.
-func (*CSIVolumeSource) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{56}
+// Deprecated: Use NodeTaint.ProtoReflect.Descriptor instead.
+func (*NodeTaint) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{68}
}
-func (x *CSIVolumeSource) GetDriver() string {
+func (x *NodeTaint) GetKey() string {
if x != nil {
- return x.Driver
+ return x.Key
}
return ""
}
-func (x *CSIVolumeSource) GetVolumeHandle() string {
+func (x *NodeTaint) GetValue() string {
if x != nil {
- return x.VolumeHandle
+ return x.Value
}
return ""
}
-func (x *CSIVolumeSource) GetFsType() string {
+func (x *NodeTaint) GetEffect() string {
if x != nil {
- return x.FsType
+ return x.Effect
}
return ""
}
-func (x *CSIVolumeSource) GetReadOnly() bool {
- if x != nil {
- return x.ReadOnly
- }
- return false
-}
-
-func (x *CSIVolumeSource) GetVolumeAttributes() map[string]string {
+func (x *NodeTaint) GetTimeAdded() int64 {
if x != nil {
- return x.VolumeAttributes
+ return x.TimeAdded
}
- return nil
+ return 0
}
-// HostPathVolumeSource represents a host path volume source
-type HostPathVolumeSource struct {
+// NodeAddress represents a node address
+type NodeAddress struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // Host path
- Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // Path type (e.g., "Directory", "File")
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Address type: "InternalIP", "ExternalIP", "InternalDNS", "ExternalDNS", "Hostname"
+ Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // The address value
}
-func (x *HostPathVolumeSource) Reset() {
- *x = HostPathVolumeSource{}
+func (x *NodeAddress) Reset() {
+ *x = NodeAddress{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[57]
+ mi := &file_api_v1_common_proto_msgTypes[69]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HostPathVolumeSource) String() string {
+func (x *NodeAddress) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HostPathVolumeSource) ProtoMessage() {}
+func (*NodeAddress) ProtoMessage() {}
-func (x *HostPathVolumeSource) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[57]
+func (x *NodeAddress) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[69]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8105,53 +9593,56 @@ func (x *HostPathVolumeSource) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HostPathVolumeSource.ProtoReflect.Descriptor instead.
-func (*HostPathVolumeSource) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{57}
+// Deprecated: Use NodeAddress.ProtoReflect.Descriptor instead.
+func (*NodeAddress) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{69}
}
-func (x *HostPathVolumeSource) GetPath() string {
+func (x *NodeAddress) GetType() string {
if x != nil {
- return x.Path
+ return x.Type
}
return ""
}
-func (x *HostPathVolumeSource) GetType() string {
+func (x *NodeAddress) GetAddress() string {
if x != nil {
- return x.Type
+ return x.Address
}
return ""
}
-// NFSVolumeSource represents an NFS volume source
-type NFSVolumeSource struct {
+// NodeCondition represents a node condition
+type NodeCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` // NFS server
- Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // NFS path
- ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` // Whether NFS mount is read-only
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type: "Ready", "MemoryPressure", "DiskPressure", "PIDPressure", etc.
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastHeartbeatTime int64 `protobuf:"varint,5,opt,name=last_heartbeat_time,json=lastHeartbeatTime,proto3" json:"last_heartbeat_time,omitempty"` // Last heartbeat time
+ LastTransitionTime int64 `protobuf:"varint,6,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *NFSVolumeSource) Reset() {
- *x = NFSVolumeSource{}
+func (x *NodeCondition) Reset() {
+ *x = NodeCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[58]
+ mi := &file_api_v1_common_proto_msgTypes[70]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NFSVolumeSource) String() string {
+func (x *NodeCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NFSVolumeSource) ProtoMessage() {}
+func (*NodeCondition) ProtoMessage() {}
-func (x *NFSVolumeSource) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[58]
+func (x *NodeCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[70]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8159,67 +9650,91 @@ func (x *NFSVolumeSource) ProtoReflect() protoreflect.Message {
}
return ms
}
- return mi.MessageOf(x)
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeCondition.ProtoReflect.Descriptor instead.
+func (*NodeCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{70}
+}
+
+func (x *NodeCondition) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *NodeCondition) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
}
-// Deprecated: Use NFSVolumeSource.ProtoReflect.Descriptor instead.
-func (*NFSVolumeSource) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{58}
+func (x *NodeCondition) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
}
-func (x *NFSVolumeSource) GetServer() string {
+func (x *NodeCondition) GetMessage() string {
if x != nil {
- return x.Server
+ return x.Message
}
return ""
}
-func (x *NFSVolumeSource) GetPath() string {
+func (x *NodeCondition) GetLastHeartbeatTime() int64 {
if x != nil {
- return x.Path
+ return x.LastHeartbeatTime
}
- return ""
+ return 0
}
-func (x *NFSVolumeSource) GetReadOnly() bool {
+func (x *NodeCondition) GetLastTransitionTime() int64 {
if x != nil {
- return x.ReadOnly
+ return x.LastTransitionTime
}
- return false
+ return 0
}
-// StorageClassDetails contains detailed StorageClass information for drill-down
-type StorageClassDetails struct {
+// NodeSystemInfo represents node system information
+type NodeSystemInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Provisioner string `protobuf:"bytes,1,opt,name=provisioner,proto3" json:"provisioner,omitempty"` // Storage provisioner
- Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Storage class parameters
- AllowedTopologies []*TopologySelector `protobuf:"bytes,3,rep,name=allowed_topologies,json=allowedTopologies,proto3" json:"allowed_topologies,omitempty"` // Allowed topologies
- MountOptions []string `protobuf:"bytes,4,rep,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` // Default mount options
- VolumeBindingMode string `protobuf:"bytes,5,opt,name=volume_binding_mode,json=volumeBindingMode,proto3" json:"volume_binding_mode,omitempty"` // Volume binding mode
- ReclaimPolicy string `protobuf:"bytes,6,opt,name=reclaim_policy,json=reclaimPolicy,proto3" json:"reclaim_policy,omitempty"` // Default reclaim policy
- AllowVolumeExpansion bool `protobuf:"varint,7,opt,name=allow_volume_expansion,json=allowVolumeExpansion,proto3" json:"allow_volume_expansion,omitempty"` // Whether volume expansion is allowed
+ MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` // Machine ID
+ SystemUuid string `protobuf:"bytes,2,opt,name=system_uuid,json=systemUuid,proto3" json:"system_uuid,omitempty"` // System UUID
+ BootId string `protobuf:"bytes,3,opt,name=boot_id,json=bootId,proto3" json:"boot_id,omitempty"` // Boot ID
+ KernelVersion string `protobuf:"bytes,4,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"` // Kernel version
+ OsImage string `protobuf:"bytes,5,opt,name=os_image,json=osImage,proto3" json:"os_image,omitempty"` // OS image
+ ContainerRuntimeVersion string `protobuf:"bytes,6,opt,name=container_runtime_version,json=containerRuntimeVersion,proto3" json:"container_runtime_version,omitempty"` // Container runtime version
+ KubeletVersion string `protobuf:"bytes,7,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"` // Kubelet version
+ KubeProxyVersion string `protobuf:"bytes,8,opt,name=kube_proxy_version,json=kubeProxyVersion,proto3" json:"kube_proxy_version,omitempty"` // Kube-proxy version
+ OperatingSystem string `protobuf:"bytes,9,opt,name=operating_system,json=operatingSystem,proto3" json:"operating_system,omitempty"` // Operating system
+ Architecture string `protobuf:"bytes,10,opt,name=architecture,proto3" json:"architecture,omitempty"` // Architecture
}
-func (x *StorageClassDetails) Reset() {
- *x = StorageClassDetails{}
+func (x *NodeSystemInfo) Reset() {
+ *x = NodeSystemInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[59]
+ mi := &file_api_v1_common_proto_msgTypes[71]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *StorageClassDetails) String() string {
+func (x *NodeSystemInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*StorageClassDetails) ProtoMessage() {}
+func (*NodeSystemInfo) ProtoMessage() {}
-func (x *StorageClassDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[59]
+func (x *NodeSystemInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[71]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8230,88 +9745,108 @@ func (x *StorageClassDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use StorageClassDetails.ProtoReflect.Descriptor instead.
-func (*StorageClassDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{59}
+// Deprecated: Use NodeSystemInfo.ProtoReflect.Descriptor instead.
+func (*NodeSystemInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{71}
}
-func (x *StorageClassDetails) GetProvisioner() string {
+func (x *NodeSystemInfo) GetMachineId() string {
if x != nil {
- return x.Provisioner
+ return x.MachineId
}
return ""
}
-func (x *StorageClassDetails) GetParameters() map[string]string {
+func (x *NodeSystemInfo) GetSystemUuid() string {
if x != nil {
- return x.Parameters
+ return x.SystemUuid
}
- return nil
+ return ""
}
-func (x *StorageClassDetails) GetAllowedTopologies() []*TopologySelector {
+func (x *NodeSystemInfo) GetBootId() string {
if x != nil {
- return x.AllowedTopologies
+ return x.BootId
}
- return nil
+ return ""
}
-func (x *StorageClassDetails) GetMountOptions() []string {
+func (x *NodeSystemInfo) GetKernelVersion() string {
if x != nil {
- return x.MountOptions
+ return x.KernelVersion
}
- return nil
+ return ""
}
-func (x *StorageClassDetails) GetVolumeBindingMode() string {
+func (x *NodeSystemInfo) GetOsImage() string {
if x != nil {
- return x.VolumeBindingMode
+ return x.OsImage
}
return ""
}
-func (x *StorageClassDetails) GetReclaimPolicy() string {
+func (x *NodeSystemInfo) GetContainerRuntimeVersion() string {
if x != nil {
- return x.ReclaimPolicy
+ return x.ContainerRuntimeVersion
}
return ""
}
-func (x *StorageClassDetails) GetAllowVolumeExpansion() bool {
+func (x *NodeSystemInfo) GetKubeletVersion() string {
if x != nil {
- return x.AllowVolumeExpansion
+ return x.KubeletVersion
}
- return false
+ return ""
}
-// NamespaceDetails contains detailed Namespace information for drill-down
-type NamespaceDetails struct {
+func (x *NodeSystemInfo) GetKubeProxyVersion() string {
+ if x != nil {
+ return x.KubeProxyVersion
+ }
+ return ""
+}
+
+func (x *NodeSystemInfo) GetOperatingSystem() string {
+ if x != nil {
+ return x.OperatingSystem
+ }
+ return ""
+}
+
+func (x *NodeSystemInfo) GetArchitecture() string {
+ if x != nil {
+ return x.Architecture
+ }
+ return ""
+}
+
+// NodeImage represents a container image on the node
+type NodeImage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Phase string `protobuf:"bytes,1,opt,name=phase,proto3" json:"phase,omitempty"` // Namespace phase: "Active", "Terminating"
- Finalizers []string `protobuf:"bytes,2,rep,name=finalizers,proto3" json:"finalizers,omitempty"` // Finalizers preventing deletion
- Conditions map[string]string `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Namespace conditions if any
+ Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` // Image names/tags
+ SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` // Image size in bytes
}
-func (x *NamespaceDetails) Reset() {
- *x = NamespaceDetails{}
+func (x *NodeImage) Reset() {
+ *x = NodeImage{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[60]
+ mi := &file_api_v1_common_proto_msgTypes[72]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NamespaceDetails) String() string {
+func (x *NodeImage) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NamespaceDetails) ProtoMessage() {}
+func (*NodeImage) ProtoMessage() {}
-func (x *NamespaceDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[60]
+func (x *NodeImage) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[72]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8322,63 +9857,51 @@ func (x *NamespaceDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NamespaceDetails.ProtoReflect.Descriptor instead.
-func (*NamespaceDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{60}
-}
-
-func (x *NamespaceDetails) GetPhase() string {
- if x != nil {
- return x.Phase
- }
- return ""
+// Deprecated: Use NodeImage.ProtoReflect.Descriptor instead.
+func (*NodeImage) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{72}
}
-func (x *NamespaceDetails) GetFinalizers() []string {
+func (x *NodeImage) GetNames() []string {
if x != nil {
- return x.Finalizers
+ return x.Names
}
return nil
}
-func (x *NamespaceDetails) GetConditions() map[string]string {
+func (x *NodeImage) GetSizeBytes() int64 {
if x != nil {
- return x.Conditions
+ return x.SizeBytes
}
- return nil
+ return 0
}
-// NodeDetails contains detailed Node information for drill-down
-type NodeDetails struct {
+// TopologySelector represents topology requirements for storage
+type TopologySelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Addresses []*NodeAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` // Node addresses (Internal/External IP, DNS, etc.)
- Conditions []*NodeCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // Node conditions (Ready, MemoryPressure, etc.)
- SystemInfo *NodeSystemInfo `protobuf:"bytes,3,opt,name=system_info,json=systemInfo,proto3" json:"system_info,omitempty"` // System information (OS, kernel, etc.)
- Capacity map[string]string `protobuf:"bytes,4,rep,name=capacity,proto3" json:"capacity,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource capacity (cpu, memory, etc.)
- Allocatable map[string]string `protobuf:"bytes,5,rep,name=allocatable,proto3" json:"allocatable,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Allocatable resources
- Images []*NodeImage `protobuf:"bytes,6,rep,name=images,proto3" json:"images,omitempty"` // Container images on the node
+ MatchLabelExpressions []*TopologySelectorTerm `protobuf:"bytes,1,rep,name=match_label_expressions,json=matchLabelExpressions,proto3" json:"match_label_expressions,omitempty"` // Topology selector terms
}
-func (x *NodeDetails) Reset() {
- *x = NodeDetails{}
+func (x *TopologySelector) Reset() {
+ *x = TopologySelector{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[61]
+ mi := &file_api_v1_common_proto_msgTypes[73]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeDetails) String() string {
+func (x *TopologySelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeDetails) ProtoMessage() {}
+func (*TopologySelector) ProtoMessage() {}
-func (x *NodeDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[61]
+func (x *TopologySelector) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[73]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8389,82 +9912,96 @@ func (x *NodeDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeDetails.ProtoReflect.Descriptor instead.
-func (*NodeDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{61}
+// Deprecated: Use TopologySelector.ProtoReflect.Descriptor instead.
+func (*TopologySelector) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{73}
}
-func (x *NodeDetails) GetAddresses() []*NodeAddress {
+func (x *TopologySelector) GetMatchLabelExpressions() []*TopologySelectorTerm {
if x != nil {
- return x.Addresses
+ return x.MatchLabelExpressions
}
return nil
}
-func (x *NodeDetails) GetConditions() []*NodeCondition {
- if x != nil {
- return x.Conditions
- }
- return nil
+// TopologySelectorTerm represents a topology selector term
+type TopologySelectorTerm struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MatchLabels map[string]string `protobuf:"bytes,1,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Labels that must match
}
-func (x *NodeDetails) GetSystemInfo() *NodeSystemInfo {
- if x != nil {
- return x.SystemInfo
+func (x *TopologySelectorTerm) Reset() {
+ *x = TopologySelectorTerm{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[74]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodeDetails) GetCapacity() map[string]string {
- if x != nil {
- return x.Capacity
- }
- return nil
+func (x *TopologySelectorTerm) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *NodeDetails) GetAllocatable() map[string]string {
- if x != nil {
- return x.Allocatable
+func (*TopologySelectorTerm) ProtoMessage() {}
+
+func (x *TopologySelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[74]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TopologySelectorTerm.ProtoReflect.Descriptor instead.
+func (*TopologySelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{74}
}
-func (x *NodeDetails) GetImages() []*NodeImage {
+func (x *TopologySelectorTerm) GetMatchLabels() map[string]string {
if x != nil {
- return x.Images
+ return x.MatchLabels
}
return nil
}
-// NodeTaint represents a node taint that affects pod scheduling
-type NodeTaint struct {
+// TolerationInfo represents a simplified pod toleration for DaemonSets
+type TolerationInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Taint key
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // Taint value (optional)
- Effect string `protobuf:"bytes,3,opt,name=effect,proto3" json:"effect,omitempty"` // Taint effect: "NoSchedule", "PreferNoSchedule", "NoExecute"
- TimeAdded int64 `protobuf:"varint,4,opt,name=time_added,json=timeAdded,proto3" json:"time_added,omitempty"` // When the taint was added (optional)
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Toleration key (optional for exists/all)
+ Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // "Equal", "Exists"
+ Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` // Value to match (for Equal operator)
+ Effect string `protobuf:"bytes,4,opt,name=effect,proto3" json:"effect,omitempty"` // "NoSchedule", "PreferNoSchedule", "NoExecute", or ""
+ TolerationSeconds int64 `protobuf:"varint,5,opt,name=toleration_seconds,json=tolerationSeconds,proto3" json:"toleration_seconds,omitempty"` // Toleration period for NoExecute (optional)
}
-func (x *NodeTaint) Reset() {
- *x = NodeTaint{}
+func (x *TolerationInfo) Reset() {
+ *x = TolerationInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[62]
+ mi := &file_api_v1_common_proto_msgTypes[75]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeTaint) String() string {
+func (x *TolerationInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeTaint) ProtoMessage() {}
+func (*TolerationInfo) ProtoMessage() {}
-func (x *NodeTaint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[62]
+func (x *TolerationInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[75]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8475,66 +10012,72 @@ func (x *NodeTaint) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeTaint.ProtoReflect.Descriptor instead.
-func (*NodeTaint) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{62}
+// Deprecated: Use TolerationInfo.ProtoReflect.Descriptor instead.
+func (*TolerationInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{75}
}
-func (x *NodeTaint) GetKey() string {
+func (x *TolerationInfo) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
-func (x *NodeTaint) GetValue() string {
+func (x *TolerationInfo) GetOperator() string {
+ if x != nil {
+ return x.Operator
+ }
+ return ""
+}
+
+func (x *TolerationInfo) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
-func (x *NodeTaint) GetEffect() string {
+func (x *TolerationInfo) GetEffect() string {
if x != nil {
return x.Effect
}
return ""
}
-func (x *NodeTaint) GetTimeAdded() int64 {
+func (x *TolerationInfo) GetTolerationSeconds() int64 {
if x != nil {
- return x.TimeAdded
+ return x.TolerationSeconds
}
return 0
}
-// NodeAddress represents a node address
-type NodeAddress struct {
+// NodeSelector represents node selector requirements
+type NodeSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Address type: "InternalIP", "ExternalIP", "InternalDNS", "ExternalDNS", "Hostname"
- Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // The address value
+ Terms []*NodeSelectorTerm `protobuf:"bytes,1,rep,name=terms,proto3" json:"terms,omitempty"` // Node selector terms
}
-func (x *NodeAddress) Reset() {
- *x = NodeAddress{}
+func (x *NodeSelector) Reset() {
+ *x = NodeSelector{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[63]
+ mi := &file_api_v1_common_proto_msgTypes[76]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeAddress) String() string {
+func (x *NodeSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeAddress) ProtoMessage() {}
+func (*NodeSelector) ProtoMessage() {}
-func (x *NodeAddress) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[63]
+func (x *NodeSelector) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[76]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8545,56 +10088,45 @@ func (x *NodeAddress) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeAddress.ProtoReflect.Descriptor instead.
-func (*NodeAddress) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{63}
-}
-
-func (x *NodeAddress) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
+// Deprecated: Use NodeSelector.ProtoReflect.Descriptor instead.
+func (*NodeSelector) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{76}
}
-func (x *NodeAddress) GetAddress() string {
+func (x *NodeSelector) GetTerms() []*NodeSelectorTerm {
if x != nil {
- return x.Address
+ return x.Terms
}
- return ""
+ return nil
}
-// NodeCondition represents a node condition
-type NodeCondition struct {
+// NodeSelectorTerm represents a node selector term
+type NodeSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type: "Ready", "MemoryPressure", "DiskPressure", "PIDPressure", etc.
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastHeartbeatTime int64 `protobuf:"varint,5,opt,name=last_heartbeat_time,json=lastHeartbeatTime,proto3" json:"last_heartbeat_time,omitempty"` // Last heartbeat time
- LastTransitionTime int64 `protobuf:"varint,6,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
+ MatchExpressions []*NodeSelectorRequirement `protobuf:"bytes,1,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"` // Match expressions
+ MatchFields []*NodeSelectorRequirement `protobuf:"bytes,2,rep,name=match_fields,json=matchFields,proto3" json:"match_fields,omitempty"` // Match fields
}
-func (x *NodeCondition) Reset() {
- *x = NodeCondition{}
+func (x *NodeSelectorTerm) Reset() {
+ *x = NodeSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[64]
+ mi := &file_api_v1_common_proto_msgTypes[77]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeCondition) String() string {
+func (x *NodeSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeCondition) ProtoMessage() {}
+func (*NodeSelectorTerm) ProtoMessage() {}
-func (x *NodeCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[64]
+func (x *NodeSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[77]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8605,88 +10137,53 @@ func (x *NodeCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeCondition.ProtoReflect.Descriptor instead.
-func (*NodeCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{64}
-}
-
-func (x *NodeCondition) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *NodeCondition) GetStatus() string {
- if x != nil {
- return x.Status
- }
- return ""
-}
-
-func (x *NodeCondition) GetReason() string {
- if x != nil {
- return x.Reason
- }
- return ""
-}
-
-func (x *NodeCondition) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
+// Deprecated: Use NodeSelectorTerm.ProtoReflect.Descriptor instead.
+func (*NodeSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{77}
}
-func (x *NodeCondition) GetLastHeartbeatTime() int64 {
+func (x *NodeSelectorTerm) GetMatchExpressions() []*NodeSelectorRequirement {
if x != nil {
- return x.LastHeartbeatTime
+ return x.MatchExpressions
}
- return 0
+ return nil
}
-func (x *NodeCondition) GetLastTransitionTime() int64 {
+func (x *NodeSelectorTerm) GetMatchFields() []*NodeSelectorRequirement {
if x != nil {
- return x.LastTransitionTime
+ return x.MatchFields
}
- return 0
+ return nil
}
-// NodeSystemInfo represents node system information
-type NodeSystemInfo struct {
+// NodeSelectorRequirement represents a node selector requirement
+type NodeSelectorRequirement struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` // Machine ID
- SystemUuid string `protobuf:"bytes,2,opt,name=system_uuid,json=systemUuid,proto3" json:"system_uuid,omitempty"` // System UUID
- BootId string `protobuf:"bytes,3,opt,name=boot_id,json=bootId,proto3" json:"boot_id,omitempty"` // Boot ID
- KernelVersion string `protobuf:"bytes,4,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"` // Kernel version
- OsImage string `protobuf:"bytes,5,opt,name=os_image,json=osImage,proto3" json:"os_image,omitempty"` // OS image
- ContainerRuntimeVersion string `protobuf:"bytes,6,opt,name=container_runtime_version,json=containerRuntimeVersion,proto3" json:"container_runtime_version,omitempty"` // Container runtime version
- KubeletVersion string `protobuf:"bytes,7,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"` // Kubelet version
- KubeProxyVersion string `protobuf:"bytes,8,opt,name=kube_proxy_version,json=kubeProxyVersion,proto3" json:"kube_proxy_version,omitempty"` // Kube-proxy version
- OperatingSystem string `protobuf:"bytes,9,opt,name=operating_system,json=operatingSystem,proto3" json:"operating_system,omitempty"` // Operating system
- Architecture string `protobuf:"bytes,10,opt,name=architecture,proto3" json:"architecture,omitempty"` // Architecture
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Selector key
+ Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // "In", "NotIn", "Exists", "DoesNotExist", "Gt", "Lt"
+ Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Values to match
}
-func (x *NodeSystemInfo) Reset() {
- *x = NodeSystemInfo{}
+func (x *NodeSelectorRequirement) Reset() {
+ *x = NodeSelectorRequirement{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[65]
+ mi := &file_api_v1_common_proto_msgTypes[78]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeSystemInfo) String() string {
+func (x *NodeSelectorRequirement) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeSystemInfo) ProtoMessage() {}
+func (*NodeSelectorRequirement) ProtoMessage() {}
-func (x *NodeSystemInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[65]
+func (x *NodeSelectorRequirement) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[78]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8697,108 +10194,62 @@ func (x *NodeSystemInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeSystemInfo.ProtoReflect.Descriptor instead.
-func (*NodeSystemInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{65}
-}
-
-func (x *NodeSystemInfo) GetMachineId() string {
- if x != nil {
- return x.MachineId
- }
- return ""
-}
-
-func (x *NodeSystemInfo) GetSystemUuid() string {
- if x != nil {
- return x.SystemUuid
- }
- return ""
-}
-
-func (x *NodeSystemInfo) GetBootId() string {
- if x != nil {
- return x.BootId
- }
- return ""
-}
-
-func (x *NodeSystemInfo) GetKernelVersion() string {
- if x != nil {
- return x.KernelVersion
- }
- return ""
-}
-
-func (x *NodeSystemInfo) GetOsImage() string {
- if x != nil {
- return x.OsImage
- }
- return ""
-}
-
-func (x *NodeSystemInfo) GetContainerRuntimeVersion() string {
- if x != nil {
- return x.ContainerRuntimeVersion
- }
- return ""
-}
-
-func (x *NodeSystemInfo) GetKubeletVersion() string {
- if x != nil {
- return x.KubeletVersion
- }
- return ""
+// Deprecated: Use NodeSelectorRequirement.ProtoReflect.Descriptor instead.
+func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{78}
}
-func (x *NodeSystemInfo) GetKubeProxyVersion() string {
+func (x *NodeSelectorRequirement) GetKey() string {
if x != nil {
- return x.KubeProxyVersion
+ return x.Key
}
return ""
}
-func (x *NodeSystemInfo) GetOperatingSystem() string {
+func (x *NodeSelectorRequirement) GetOperator() string {
if x != nil {
- return x.OperatingSystem
+ return x.Operator
}
return ""
}
-func (x *NodeSystemInfo) GetArchitecture() string {
+func (x *NodeSelectorRequirement) GetValues() []string {
if x != nil {
- return x.Architecture
+ return x.Values
}
- return ""
+ return nil
}
-// NodeImage represents a container image on the node
-type NodeImage struct {
+// HPADetails contains detailed HorizontalPodAutoscaler information for drill-down
+type HPADetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` // Image names/tags
- SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` // Image size in bytes
+ ScaleTargetRef *ScaleTargetRef `protobuf:"bytes,1,opt,name=scale_target_ref,json=scaleTargetRef,proto3" json:"scale_target_ref,omitempty"` // Target reference for scaling
+ Metrics []*HPAMetric `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty"` // Scaling metrics configuration
+ Conditions []*HPACondition `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty"` // HPA conditions for debugging
+ Behavior *HPABehavior `protobuf:"bytes,4,opt,name=behavior,proto3" json:"behavior,omitempty"` // Scaling behavior policies (optional)
+ CurrentMetrics []*HPACurrentMetric `protobuf:"bytes,5,rep,name=current_metrics,json=currentMetrics,proto3" json:"current_metrics,omitempty"` // Current metrics values
}
-func (x *NodeImage) Reset() {
- *x = NodeImage{}
+func (x *HPADetails) Reset() {
+ *x = HPADetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[66]
+ mi := &file_api_v1_common_proto_msgTypes[79]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeImage) String() string {
+func (x *HPADetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeImage) ProtoMessage() {}
+func (*HPADetails) ProtoMessage() {}
-func (x *NodeImage) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[66]
+func (x *HPADetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[79]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8809,51 +10260,74 @@ func (x *NodeImage) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeImage.ProtoReflect.Descriptor instead.
-func (*NodeImage) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{66}
+// Deprecated: Use HPADetails.ProtoReflect.Descriptor instead.
+func (*HPADetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{79}
}
-func (x *NodeImage) GetNames() []string {
+func (x *HPADetails) GetScaleTargetRef() *ScaleTargetRef {
if x != nil {
- return x.Names
+ return x.ScaleTargetRef
}
return nil
}
-func (x *NodeImage) GetSizeBytes() int64 {
+func (x *HPADetails) GetMetrics() []*HPAMetric {
if x != nil {
- return x.SizeBytes
+ return x.Metrics
}
- return 0
+ return nil
}
-// TopologySelector represents topology requirements for storage
-type TopologySelector struct {
+func (x *HPADetails) GetConditions() []*HPACondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+func (x *HPADetails) GetBehavior() *HPABehavior {
+ if x != nil {
+ return x.Behavior
+ }
+ return nil
+}
+
+func (x *HPADetails) GetCurrentMetrics() []*HPACurrentMetric {
+ if x != nil {
+ return x.CurrentMetrics
+ }
+ return nil
+}
+
+// ScaleTargetRef represents the target resource for HPA scaling
+type ScaleTargetRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- MatchLabelExpressions []*TopologySelectorTerm `protobuf:"bytes,1,rep,name=match_label_expressions,json=matchLabelExpressions,proto3" json:"match_label_expressions,omitempty"` // Topology selector terms
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Target resource kind (e.g., "Deployment")
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Target resource name
+ ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version of the target resource
}
-func (x *TopologySelector) Reset() {
- *x = TopologySelector{}
+func (x *ScaleTargetRef) Reset() {
+ *x = ScaleTargetRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[67]
+ mi := &file_api_v1_common_proto_msgTypes[80]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *TopologySelector) String() string {
+func (x *ScaleTargetRef) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*TopologySelector) ProtoMessage() {}
+func (*ScaleTargetRef) ProtoMessage() {}
-func (x *TopologySelector) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[67]
+func (x *ScaleTargetRef) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[80]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8864,44 +10338,62 @@ func (x *TopologySelector) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use TopologySelector.ProtoReflect.Descriptor instead.
-func (*TopologySelector) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{67}
+// Deprecated: Use ScaleTargetRef.ProtoReflect.Descriptor instead.
+func (*ScaleTargetRef) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{80}
}
-func (x *TopologySelector) GetMatchLabelExpressions() []*TopologySelectorTerm {
+func (x *ScaleTargetRef) GetKind() string {
if x != nil {
- return x.MatchLabelExpressions
+ return x.Kind
}
- return nil
+ return ""
}
-// TopologySelectorTerm represents a topology selector term
-type TopologySelectorTerm struct {
+func (x *ScaleTargetRef) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ScaleTargetRef) GetApiVersion() string {
+ if x != nil {
+ return x.ApiVersion
+ }
+ return ""
+}
+
+// HPAMetric represents an HPA metric configuration
+type HPAMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- MatchLabels map[string]string `protobuf:"bytes,1,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Labels that must match
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Metric type: "Resource", "Pods", "Object", "External"
+ Resource *HPAResourceMetric `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` // Resource metric (if type is Resource)
+ Pods *HPAPodsMetric `protobuf:"bytes,3,opt,name=pods,proto3" json:"pods,omitempty"` // Pods metric (if type is Pods)
+ Object *HPAObjectMetric `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` // Object metric (if type is Object)
+ External *HPAExternalMetric `protobuf:"bytes,5,opt,name=external,proto3" json:"external,omitempty"` // External metric (if type is External)
}
-func (x *TopologySelectorTerm) Reset() {
- *x = TopologySelectorTerm{}
+func (x *HPAMetric) Reset() {
+ *x = HPAMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[68]
+ mi := &file_api_v1_common_proto_msgTypes[81]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *TopologySelectorTerm) String() string {
+func (x *HPAMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*TopologySelectorTerm) ProtoMessage() {}
+func (*HPAMetric) ProtoMessage() {}
-func (x *TopologySelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[68]
+func (x *HPAMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[81]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8912,48 +10404,74 @@ func (x *TopologySelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use TopologySelectorTerm.ProtoReflect.Descriptor instead.
-func (*TopologySelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{68}
+// Deprecated: Use HPAMetric.ProtoReflect.Descriptor instead.
+func (*HPAMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{81}
}
-func (x *TopologySelectorTerm) GetMatchLabels() map[string]string {
+func (x *HPAMetric) GetType() string {
if x != nil {
- return x.MatchLabels
+ return x.Type
+ }
+ return ""
+}
+
+func (x *HPAMetric) GetResource() *HPAResourceMetric {
+ if x != nil {
+ return x.Resource
}
return nil
}
-// TolerationInfo represents a simplified pod toleration for DaemonSets
-type TolerationInfo struct {
+func (x *HPAMetric) GetPods() *HPAPodsMetric {
+ if x != nil {
+ return x.Pods
+ }
+ return nil
+}
+
+func (x *HPAMetric) GetObject() *HPAObjectMetric {
+ if x != nil {
+ return x.Object
+ }
+ return nil
+}
+
+func (x *HPAMetric) GetExternal() *HPAExternalMetric {
+ if x != nil {
+ return x.External
+ }
+ return nil
+}
+
+// HPAResourceMetric represents a resource-based metric
+type HPAResourceMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Toleration key (optional for exists/all)
- Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // "Equal", "Exists"
- Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` // Value to match (for Equal operator)
- Effect string `protobuf:"bytes,4,opt,name=effect,proto3" json:"effect,omitempty"` // "NoSchedule", "PreferNoSchedule", "NoExecute", or ""
- TolerationSeconds int64 `protobuf:"varint,5,opt,name=toleration_seconds,json=tolerationSeconds,proto3" json:"toleration_seconds,omitempty"` // Toleration period for NoExecute (optional)
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Resource name: "cpu", "memory"
+ TargetType string `protobuf:"bytes,2,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "Utilization", "AverageValue"
+ TargetValue string `protobuf:"bytes,3,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target value (e.g., "80" for 80%, "100m" for 100 millicores)
}
-func (x *TolerationInfo) Reset() {
- *x = TolerationInfo{}
+func (x *HPAResourceMetric) Reset() {
+ *x = HPAResourceMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[69]
+ mi := &file_api_v1_common_proto_msgTypes[82]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *TolerationInfo) String() string {
+func (x *HPAResourceMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*TolerationInfo) ProtoMessage() {}
+func (*HPAResourceMetric) ProtoMessage() {}
-func (x *TolerationInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[69]
+func (x *HPAResourceMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[82]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8964,72 +10482,60 @@ func (x *TolerationInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use TolerationInfo.ProtoReflect.Descriptor instead.
-func (*TolerationInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{69}
-}
-
-func (x *TolerationInfo) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
+// Deprecated: Use HPAResourceMetric.ProtoReflect.Descriptor instead.
+func (*HPAResourceMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{82}
}
-func (x *TolerationInfo) GetOperator() string {
+func (x *HPAResourceMetric) GetName() string {
if x != nil {
- return x.Operator
+ return x.Name
}
return ""
}
-func (x *TolerationInfo) GetValue() string {
+func (x *HPAResourceMetric) GetTargetType() string {
if x != nil {
- return x.Value
+ return x.TargetType
}
return ""
}
-func (x *TolerationInfo) GetEffect() string {
+func (x *HPAResourceMetric) GetTargetValue() string {
if x != nil {
- return x.Effect
+ return x.TargetValue
}
return ""
}
-func (x *TolerationInfo) GetTolerationSeconds() int64 {
- if x != nil {
- return x.TolerationSeconds
- }
- return 0
-}
-
-// NodeSelector represents node selector requirements
-type NodeSelector struct {
+// HPAPodsMetric represents a pods-based metric
+type HPAPodsMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Terms []*NodeSelectorTerm `protobuf:"bytes,1,rep,name=terms,proto3" json:"terms,omitempty"` // Node selector terms
+ Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
+ TargetType string `protobuf:"bytes,2,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "AverageValue"
+ TargetValue string `protobuf:"bytes,3,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target average value per pod
}
-func (x *NodeSelector) Reset() {
- *x = NodeSelector{}
+func (x *HPAPodsMetric) Reset() {
+ *x = HPAPodsMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[70]
+ mi := &file_api_v1_common_proto_msgTypes[83]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeSelector) String() string {
+func (x *HPAPodsMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeSelector) ProtoMessage() {}
+func (*HPAPodsMetric) ProtoMessage() {}
-func (x *NodeSelector) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[70]
+func (x *HPAPodsMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[83]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9040,45 +10546,61 @@ func (x *NodeSelector) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeSelector.ProtoReflect.Descriptor instead.
-func (*NodeSelector) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{70}
+// Deprecated: Use HPAPodsMetric.ProtoReflect.Descriptor instead.
+func (*HPAPodsMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{83}
}
-func (x *NodeSelector) GetTerms() []*NodeSelectorTerm {
+func (x *HPAPodsMetric) GetMetric() *HPAMetricSelector {
if x != nil {
- return x.Terms
+ return x.Metric
}
return nil
}
-// NodeSelectorTerm represents a node selector term
-type NodeSelectorTerm struct {
+func (x *HPAPodsMetric) GetTargetType() string {
+ if x != nil {
+ return x.TargetType
+ }
+ return ""
+}
+
+func (x *HPAPodsMetric) GetTargetValue() string {
+ if x != nil {
+ return x.TargetValue
+ }
+ return ""
+}
+
+// HPAObjectMetric represents an object-based metric
+type HPAObjectMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- MatchExpressions []*NodeSelectorRequirement `protobuf:"bytes,1,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"` // Match expressions
- MatchFields []*NodeSelectorRequirement `protobuf:"bytes,2,rep,name=match_fields,json=matchFields,proto3" json:"match_fields,omitempty"` // Match fields
+ DescribedObject *HPAObjectReference `protobuf:"bytes,1,opt,name=described_object,json=describedObject,proto3" json:"described_object,omitempty"` // Object reference
+ Metric *HPAMetricSelector `protobuf:"bytes,2,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
+ TargetType string `protobuf:"bytes,3,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "Value", "AverageValue"
+ TargetValue string `protobuf:"bytes,4,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target value
}
-func (x *NodeSelectorTerm) Reset() {
- *x = NodeSelectorTerm{}
+func (x *HPAObjectMetric) Reset() {
+ *x = HPAObjectMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[71]
+ mi := &file_api_v1_common_proto_msgTypes[84]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeSelectorTerm) String() string {
+func (x *HPAObjectMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeSelectorTerm) ProtoMessage() {}
+func (*HPAObjectMetric) ProtoMessage() {}
-func (x *NodeSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[71]
+func (x *HPAObjectMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[84]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9089,53 +10611,67 @@ func (x *NodeSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeSelectorTerm.ProtoReflect.Descriptor instead.
-func (*NodeSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{71}
+// Deprecated: Use HPAObjectMetric.ProtoReflect.Descriptor instead.
+func (*HPAObjectMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{84}
}
-func (x *NodeSelectorTerm) GetMatchExpressions() []*NodeSelectorRequirement {
+func (x *HPAObjectMetric) GetDescribedObject() *HPAObjectReference {
if x != nil {
- return x.MatchExpressions
+ return x.DescribedObject
}
return nil
}
-func (x *NodeSelectorTerm) GetMatchFields() []*NodeSelectorRequirement {
+func (x *HPAObjectMetric) GetMetric() *HPAMetricSelector {
if x != nil {
- return x.MatchFields
+ return x.Metric
}
return nil
}
-// NodeSelectorRequirement represents a node selector requirement
-type NodeSelectorRequirement struct {
+func (x *HPAObjectMetric) GetTargetType() string {
+ if x != nil {
+ return x.TargetType
+ }
+ return ""
+}
+
+func (x *HPAObjectMetric) GetTargetValue() string {
+ if x != nil {
+ return x.TargetValue
+ }
+ return ""
+}
+
+// HPAExternalMetric represents an external metric
+type HPAExternalMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Selector key
- Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // "In", "NotIn", "Exists", "DoesNotExist", "Gt", "Lt"
- Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Values to match
+ Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
+ TargetType string `protobuf:"bytes,2,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "Value", "AverageValue"
+ TargetValue string `protobuf:"bytes,3,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target value
}
-func (x *NodeSelectorRequirement) Reset() {
- *x = NodeSelectorRequirement{}
+func (x *HPAExternalMetric) Reset() {
+ *x = HPAExternalMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[72]
+ mi := &file_api_v1_common_proto_msgTypes[85]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeSelectorRequirement) String() string {
+func (x *HPAExternalMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeSelectorRequirement) ProtoMessage() {}
+func (*HPAExternalMetric) ProtoMessage() {}
-func (x *NodeSelectorRequirement) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[72]
+func (x *HPAExternalMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[85]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9146,62 +10682,59 @@ func (x *NodeSelectorRequirement) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeSelectorRequirement.ProtoReflect.Descriptor instead.
-func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{72}
+// Deprecated: Use HPAExternalMetric.ProtoReflect.Descriptor instead.
+func (*HPAExternalMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{85}
}
-func (x *NodeSelectorRequirement) GetKey() string {
+func (x *HPAExternalMetric) GetMetric() *HPAMetricSelector {
if x != nil {
- return x.Key
+ return x.Metric
}
- return ""
+ return nil
}
-func (x *NodeSelectorRequirement) GetOperator() string {
+func (x *HPAExternalMetric) GetTargetType() string {
if x != nil {
- return x.Operator
+ return x.TargetType
}
return ""
}
-func (x *NodeSelectorRequirement) GetValues() []string {
+func (x *HPAExternalMetric) GetTargetValue() string {
if x != nil {
- return x.Values
+ return x.TargetValue
}
- return nil
+ return ""
}
-// HPADetails contains detailed HorizontalPodAutoscaler information for drill-down
-type HPADetails struct {
+// HPAMetricSelector represents a metric selector
+type HPAMetricSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ScaleTargetRef *ScaleTargetRef `protobuf:"bytes,1,opt,name=scale_target_ref,json=scaleTargetRef,proto3" json:"scale_target_ref,omitempty"` // Target reference for scaling
- Metrics []*HPAMetric `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty"` // Scaling metrics configuration
- Conditions []*HPACondition `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty"` // HPA conditions for debugging
- Behavior *HPABehavior `protobuf:"bytes,4,opt,name=behavior,proto3" json:"behavior,omitempty"` // Scaling behavior policies (optional)
- CurrentMetrics []*HPACurrentMetric `protobuf:"bytes,5,rep,name=current_metrics,json=currentMetrics,proto3" json:"current_metrics,omitempty"` // Current metrics values
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Metric name
+ Selector map[string]string `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Label selector (optional)
}
-func (x *HPADetails) Reset() {
- *x = HPADetails{}
+func (x *HPAMetricSelector) Reset() {
+ *x = HPAMetricSelector{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[73]
+ mi := &file_api_v1_common_proto_msgTypes[86]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPADetails) String() string {
+func (x *HPAMetricSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPADetails) ProtoMessage() {}
+func (*HPAMetricSelector) ProtoMessage() {}
-func (x *HPADetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[73]
+func (x *HPAMetricSelector) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[86]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9212,74 +10745,54 @@ func (x *HPADetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPADetails.ProtoReflect.Descriptor instead.
-func (*HPADetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{73}
-}
-
-func (x *HPADetails) GetScaleTargetRef() *ScaleTargetRef {
- if x != nil {
- return x.ScaleTargetRef
- }
- return nil
-}
-
-func (x *HPADetails) GetMetrics() []*HPAMetric {
- if x != nil {
- return x.Metrics
- }
- return nil
-}
-
-func (x *HPADetails) GetConditions() []*HPACondition {
- if x != nil {
- return x.Conditions
- }
- return nil
+// Deprecated: Use HPAMetricSelector.ProtoReflect.Descriptor instead.
+func (*HPAMetricSelector) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{86}
}
-func (x *HPADetails) GetBehavior() *HPABehavior {
+func (x *HPAMetricSelector) GetName() string {
if x != nil {
- return x.Behavior
+ return x.Name
}
- return nil
+ return ""
}
-func (x *HPADetails) GetCurrentMetrics() []*HPACurrentMetric {
+func (x *HPAMetricSelector) GetSelector() map[string]string {
if x != nil {
- return x.CurrentMetrics
+ return x.Selector
}
return nil
}
-// ScaleTargetRef represents the target resource for HPA scaling
-type ScaleTargetRef struct {
+// HPAObjectReference represents an object reference for metrics
+type HPAObjectReference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Target resource kind (e.g., "Deployment")
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Target resource name
- ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version of the target resource
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Object kind
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Object name
+ ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` // Object namespace (optional)
}
-func (x *ScaleTargetRef) Reset() {
- *x = ScaleTargetRef{}
+func (x *HPAObjectReference) Reset() {
+ *x = HPAObjectReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[74]
+ mi := &file_api_v1_common_proto_msgTypes[87]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ScaleTargetRef) String() string {
+func (x *HPAObjectReference) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ScaleTargetRef) ProtoMessage() {}
+func (*HPAObjectReference) ProtoMessage() {}
-func (x *ScaleTargetRef) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[74]
+func (x *HPAObjectReference) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[87]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9290,62 +10803,69 @@ func (x *ScaleTargetRef) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ScaleTargetRef.ProtoReflect.Descriptor instead.
-func (*ScaleTargetRef) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{74}
+// Deprecated: Use HPAObjectReference.ProtoReflect.Descriptor instead.
+func (*HPAObjectReference) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{87}
}
-func (x *ScaleTargetRef) GetKind() string {
+func (x *HPAObjectReference) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
-func (x *ScaleTargetRef) GetName() string {
+func (x *HPAObjectReference) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *ScaleTargetRef) GetApiVersion() string {
+func (x *HPAObjectReference) GetApiVersion() string {
if x != nil {
return x.ApiVersion
}
return ""
}
-// HPAMetric represents an HPA metric configuration
-type HPAMetric struct {
+func (x *HPAObjectReference) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+// HPACurrentMetric represents current metric values
+type HPACurrentMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Metric type: "Resource", "Pods", "Object", "External"
- Resource *HPAResourceMetric `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` // Resource metric (if type is Resource)
- Pods *HPAPodsMetric `protobuf:"bytes,3,opt,name=pods,proto3" json:"pods,omitempty"` // Pods metric (if type is Pods)
- Object *HPAObjectMetric `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` // Object metric (if type is Object)
- External *HPAExternalMetric `protobuf:"bytes,5,opt,name=external,proto3" json:"external,omitempty"` // External metric (if type is External)
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Metric type: "Resource", "Pods", "Object", "External"
+ Resource *HPACurrentResourceMetric `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` // Current resource metric
+ Pods *HPACurrentPodsMetric `protobuf:"bytes,3,opt,name=pods,proto3" json:"pods,omitempty"` // Current pods metric
+ Object *HPACurrentObjectMetric `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` // Current object metric
+ External *HPACurrentExternalMetric `protobuf:"bytes,5,opt,name=external,proto3" json:"external,omitempty"` // Current external metric
}
-func (x *HPAMetric) Reset() {
- *x = HPAMetric{}
+func (x *HPACurrentMetric) Reset() {
+ *x = HPACurrentMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[75]
+ mi := &file_api_v1_common_proto_msgTypes[88]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAMetric) String() string {
+func (x *HPACurrentMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAMetric) ProtoMessage() {}
+func (*HPACurrentMetric) ProtoMessage() {}
-func (x *HPAMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[75]
+func (x *HPACurrentMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[88]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9356,74 +10876,74 @@ func (x *HPAMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAMetric.ProtoReflect.Descriptor instead.
-func (*HPAMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{75}
+// Deprecated: Use HPACurrentMetric.ProtoReflect.Descriptor instead.
+func (*HPACurrentMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{88}
}
-func (x *HPAMetric) GetType() string {
+func (x *HPACurrentMetric) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *HPAMetric) GetResource() *HPAResourceMetric {
+func (x *HPACurrentMetric) GetResource() *HPACurrentResourceMetric {
if x != nil {
return x.Resource
}
return nil
}
-func (x *HPAMetric) GetPods() *HPAPodsMetric {
+func (x *HPACurrentMetric) GetPods() *HPACurrentPodsMetric {
if x != nil {
return x.Pods
}
return nil
}
-func (x *HPAMetric) GetObject() *HPAObjectMetric {
+func (x *HPACurrentMetric) GetObject() *HPACurrentObjectMetric {
if x != nil {
return x.Object
}
return nil
}
-func (x *HPAMetric) GetExternal() *HPAExternalMetric {
+func (x *HPACurrentMetric) GetExternal() *HPACurrentExternalMetric {
if x != nil {
return x.External
}
return nil
}
-// HPAResourceMetric represents a resource-based metric
-type HPAResourceMetric struct {
+// HPACurrentResourceMetric represents current resource metric values
+type HPACurrentResourceMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Resource name: "cpu", "memory"
- TargetType string `protobuf:"bytes,2,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "Utilization", "AverageValue"
- TargetValue string `protobuf:"bytes,3,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target value (e.g., "80" for 80%, "100m" for 100 millicores)
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Resource name
+ CurrentUtilization string `protobuf:"bytes,2,opt,name=current_utilization,json=currentUtilization,proto3" json:"current_utilization,omitempty"` // Current utilization percentage (optional)
+ CurrentAverageValue string `protobuf:"bytes,3,opt,name=current_average_value,json=currentAverageValue,proto3" json:"current_average_value,omitempty"` // Current average value (optional)
}
-func (x *HPAResourceMetric) Reset() {
- *x = HPAResourceMetric{}
+func (x *HPACurrentResourceMetric) Reset() {
+ *x = HPACurrentResourceMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[76]
+ mi := &file_api_v1_common_proto_msgTypes[89]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAResourceMetric) String() string {
+func (x *HPACurrentResourceMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAResourceMetric) ProtoMessage() {}
+func (*HPACurrentResourceMetric) ProtoMessage() {}
-func (x *HPAResourceMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[76]
+func (x *HPACurrentResourceMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[89]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9434,60 +10954,59 @@ func (x *HPAResourceMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAResourceMetric.ProtoReflect.Descriptor instead.
-func (*HPAResourceMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{76}
+// Deprecated: Use HPACurrentResourceMetric.ProtoReflect.Descriptor instead.
+func (*HPACurrentResourceMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{89}
}
-func (x *HPAResourceMetric) GetName() string {
+func (x *HPACurrentResourceMetric) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *HPAResourceMetric) GetTargetType() string {
+func (x *HPACurrentResourceMetric) GetCurrentUtilization() string {
if x != nil {
- return x.TargetType
+ return x.CurrentUtilization
}
return ""
}
-func (x *HPAResourceMetric) GetTargetValue() string {
+func (x *HPACurrentResourceMetric) GetCurrentAverageValue() string {
if x != nil {
- return x.TargetValue
+ return x.CurrentAverageValue
}
return ""
}
-// HPAPodsMetric represents a pods-based metric
-type HPAPodsMetric struct {
+// HPACurrentPodsMetric represents current pods metric values
+type HPACurrentPodsMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
- TargetType string `protobuf:"bytes,2,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "AverageValue"
- TargetValue string `protobuf:"bytes,3,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target average value per pod
+ Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
+ CurrentAverageValue string `protobuf:"bytes,2,opt,name=current_average_value,json=currentAverageValue,proto3" json:"current_average_value,omitempty"` // Current average value per pod
}
-func (x *HPAPodsMetric) Reset() {
- *x = HPAPodsMetric{}
+func (x *HPACurrentPodsMetric) Reset() {
+ *x = HPACurrentPodsMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[77]
+ mi := &file_api_v1_common_proto_msgTypes[90]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAPodsMetric) String() string {
+func (x *HPACurrentPodsMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAPodsMetric) ProtoMessage() {}
+func (*HPACurrentPodsMetric) ProtoMessage() {}
-func (x *HPAPodsMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[77]
+func (x *HPACurrentPodsMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[90]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9498,61 +11017,53 @@ func (x *HPAPodsMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAPodsMetric.ProtoReflect.Descriptor instead.
-func (*HPAPodsMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{77}
+// Deprecated: Use HPACurrentPodsMetric.ProtoReflect.Descriptor instead.
+func (*HPACurrentPodsMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{90}
}
-func (x *HPAPodsMetric) GetMetric() *HPAMetricSelector {
+func (x *HPACurrentPodsMetric) GetMetric() *HPAMetricSelector {
if x != nil {
return x.Metric
}
return nil
}
-func (x *HPAPodsMetric) GetTargetType() string {
- if x != nil {
- return x.TargetType
- }
- return ""
-}
-
-func (x *HPAPodsMetric) GetTargetValue() string {
+func (x *HPACurrentPodsMetric) GetCurrentAverageValue() string {
if x != nil {
- return x.TargetValue
+ return x.CurrentAverageValue
}
return ""
}
-// HPAObjectMetric represents an object-based metric
-type HPAObjectMetric struct {
+// HPACurrentObjectMetric represents current object metric values
+type HPACurrentObjectMetric struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DescribedObject *HPAObjectReference `protobuf:"bytes,1,opt,name=described_object,json=describedObject,proto3" json:"described_object,omitempty"` // Object reference
Metric *HPAMetricSelector `protobuf:"bytes,2,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
- TargetType string `protobuf:"bytes,3,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "Value", "AverageValue"
- TargetValue string `protobuf:"bytes,4,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target value
+ CurrentValue string `protobuf:"bytes,3,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` // Current value
}
-func (x *HPAObjectMetric) Reset() {
- *x = HPAObjectMetric{}
+func (x *HPACurrentObjectMetric) Reset() {
+ *x = HPACurrentObjectMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[78]
+ mi := &file_api_v1_common_proto_msgTypes[91]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAObjectMetric) String() string {
+func (x *HPACurrentObjectMetric) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAObjectMetric) ProtoMessage() {}
+func (*HPACurrentObjectMetric) ProtoMessage() {}
-func (x *HPAObjectMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[78]
+func (x *HPACurrentObjectMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[91]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9563,67 +11074,126 @@ func (x *HPAObjectMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAObjectMetric.ProtoReflect.Descriptor instead.
-func (*HPAObjectMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{78}
+// Deprecated: Use HPACurrentObjectMetric.ProtoReflect.Descriptor instead.
+func (*HPACurrentObjectMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{91}
}
-func (x *HPAObjectMetric) GetDescribedObject() *HPAObjectReference {
+func (x *HPACurrentObjectMetric) GetDescribedObject() *HPAObjectReference {
if x != nil {
return x.DescribedObject
}
return nil
}
-func (x *HPAObjectMetric) GetMetric() *HPAMetricSelector {
+func (x *HPACurrentObjectMetric) GetMetric() *HPAMetricSelector {
if x != nil {
return x.Metric
}
return nil
}
-func (x *HPAObjectMetric) GetTargetType() string {
+func (x *HPACurrentObjectMetric) GetCurrentValue() string {
if x != nil {
- return x.TargetType
+ return x.CurrentValue
}
return ""
}
-func (x *HPAObjectMetric) GetTargetValue() string {
+// HPACurrentExternalMetric represents current external metric values
+type HPACurrentExternalMetric struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
+ CurrentValue string `protobuf:"bytes,2,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` // Current value
+ CurrentAverageValue string `protobuf:"bytes,3,opt,name=current_average_value,json=currentAverageValue,proto3" json:"current_average_value,omitempty"` // Current average value (optional)
+}
+
+func (x *HPACurrentExternalMetric) Reset() {
+ *x = HPACurrentExternalMetric{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[92]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *HPACurrentExternalMetric) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HPACurrentExternalMetric) ProtoMessage() {}
+
+func (x *HPACurrentExternalMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[92]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use HPACurrentExternalMetric.ProtoReflect.Descriptor instead.
+func (*HPACurrentExternalMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{92}
+}
+
+func (x *HPACurrentExternalMetric) GetMetric() *HPAMetricSelector {
if x != nil {
- return x.TargetValue
+ return x.Metric
+ }
+ return nil
+}
+
+func (x *HPACurrentExternalMetric) GetCurrentValue() string {
+ if x != nil {
+ return x.CurrentValue
}
return ""
}
-// HPAExternalMetric represents an external metric
-type HPAExternalMetric struct {
+func (x *HPACurrentExternalMetric) GetCurrentAverageValue() string {
+ if x != nil {
+ return x.CurrentAverageValue
+ }
+ return ""
+}
+
+// HPACondition represents an HPA condition
+type HPACondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
- TargetType string `protobuf:"bytes,2,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` // Target type: "Value", "AverageValue"
- TargetValue string `protobuf:"bytes,3,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"` // Target value
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type: "AbleToScale", "ScalingActive", "ScalingLimited"
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *HPAExternalMetric) Reset() {
- *x = HPAExternalMetric{}
+func (x *HPACondition) Reset() {
+ *x = HPACondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[79]
+ mi := &file_api_v1_common_proto_msgTypes[93]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAExternalMetric) String() string {
+func (x *HPACondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAExternalMetric) ProtoMessage() {}
+func (*HPACondition) ProtoMessage() {}
-func (x *HPAExternalMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[79]
+func (x *HPACondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[93]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9634,59 +11204,73 @@ func (x *HPAExternalMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAExternalMetric.ProtoReflect.Descriptor instead.
-func (*HPAExternalMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{79}
+// Deprecated: Use HPACondition.ProtoReflect.Descriptor instead.
+func (*HPACondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{93}
}
-func (x *HPAExternalMetric) GetMetric() *HPAMetricSelector {
+func (x *HPACondition) GetType() string {
if x != nil {
- return x.Metric
+ return x.Type
}
- return nil
+ return ""
}
-func (x *HPAExternalMetric) GetTargetType() string {
+func (x *HPACondition) GetStatus() string {
if x != nil {
- return x.TargetType
+ return x.Status
+ }
+ return ""
+}
+
+func (x *HPACondition) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *HPACondition) GetMessage() string {
+ if x != nil {
+ return x.Message
}
return ""
}
-func (x *HPAExternalMetric) GetTargetValue() string {
+func (x *HPACondition) GetLastTransitionTime() int64 {
if x != nil {
- return x.TargetValue
+ return x.LastTransitionTime
}
- return ""
+ return 0
}
-// HPAMetricSelector represents a metric selector
-type HPAMetricSelector struct {
+// HPABehavior represents HPA scaling behavior policies
+type HPABehavior struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Metric name
- Selector map[string]string `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Label selector (optional)
+ ScaleUp *HPAScalingRules `protobuf:"bytes,1,opt,name=scale_up,json=scaleUp,proto3" json:"scale_up,omitempty"` // Scale up behavior
+ ScaleDown *HPAScalingRules `protobuf:"bytes,2,opt,name=scale_down,json=scaleDown,proto3" json:"scale_down,omitempty"` // Scale down behavior
}
-func (x *HPAMetricSelector) Reset() {
- *x = HPAMetricSelector{}
+func (x *HPABehavior) Reset() {
+ *x = HPABehavior{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[80]
+ mi := &file_api_v1_common_proto_msgTypes[94]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAMetricSelector) String() string {
+func (x *HPABehavior) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAMetricSelector) ProtoMessage() {}
+func (*HPABehavior) ProtoMessage() {}
-func (x *HPAMetricSelector) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[80]
+func (x *HPABehavior) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[94]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9697,54 +11281,53 @@ func (x *HPAMetricSelector) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAMetricSelector.ProtoReflect.Descriptor instead.
-func (*HPAMetricSelector) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{80}
+// Deprecated: Use HPABehavior.ProtoReflect.Descriptor instead.
+func (*HPABehavior) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{94}
}
-func (x *HPAMetricSelector) GetName() string {
+func (x *HPABehavior) GetScaleUp() *HPAScalingRules {
if x != nil {
- return x.Name
+ return x.ScaleUp
}
- return ""
+ return nil
}
-func (x *HPAMetricSelector) GetSelector() map[string]string {
+func (x *HPABehavior) GetScaleDown() *HPAScalingRules {
if x != nil {
- return x.Selector
+ return x.ScaleDown
}
return nil
}
-// HPAObjectReference represents an object reference for metrics
-type HPAObjectReference struct {
+// HPAScalingRules represents scaling behavior rules
+type HPAScalingRules struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Object kind
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Object name
- ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version
- Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` // Object namespace (optional)
+ StabilizationWindowSeconds int32 `protobuf:"varint,1,opt,name=stabilization_window_seconds,json=stabilizationWindowSeconds,proto3" json:"stabilization_window_seconds,omitempty"` // Stabilization window
+ SelectPolicy string `protobuf:"bytes,2,opt,name=select_policy,json=selectPolicy,proto3" json:"select_policy,omitempty"` // Policy selection: "Max", "Min", "Disabled"
+ Policies []*HPAScalingPolicy `protobuf:"bytes,3,rep,name=policies,proto3" json:"policies,omitempty"` // Scaling policies
}
-func (x *HPAObjectReference) Reset() {
- *x = HPAObjectReference{}
+func (x *HPAScalingRules) Reset() {
+ *x = HPAScalingRules{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[81]
+ mi := &file_api_v1_common_proto_msgTypes[95]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAObjectReference) String() string {
+func (x *HPAScalingRules) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAObjectReference) ProtoMessage() {}
+func (*HPAScalingRules) ProtoMessage() {}
-func (x *HPAObjectReference) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[81]
+func (x *HPAScalingRules) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[95]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9755,69 +11338,60 @@ func (x *HPAObjectReference) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAObjectReference.ProtoReflect.Descriptor instead.
-func (*HPAObjectReference) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{81}
-}
-
-func (x *HPAObjectReference) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
+// Deprecated: Use HPAScalingRules.ProtoReflect.Descriptor instead.
+func (*HPAScalingRules) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{95}
}
-func (x *HPAObjectReference) GetName() string {
+func (x *HPAScalingRules) GetStabilizationWindowSeconds() int32 {
if x != nil {
- return x.Name
+ return x.StabilizationWindowSeconds
}
- return ""
+ return 0
}
-func (x *HPAObjectReference) GetApiVersion() string {
+func (x *HPAScalingRules) GetSelectPolicy() string {
if x != nil {
- return x.ApiVersion
+ return x.SelectPolicy
}
return ""
}
-func (x *HPAObjectReference) GetNamespace() string {
+func (x *HPAScalingRules) GetPolicies() []*HPAScalingPolicy {
if x != nil {
- return x.Namespace
+ return x.Policies
}
- return ""
+ return nil
}
-// HPACurrentMetric represents current metric values
-type HPACurrentMetric struct {
+// HPAScalingPolicy represents a scaling policy
+type HPAScalingPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Metric type: "Resource", "Pods", "Object", "External"
- Resource *HPACurrentResourceMetric `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` // Current resource metric
- Pods *HPACurrentPodsMetric `protobuf:"bytes,3,opt,name=pods,proto3" json:"pods,omitempty"` // Current pods metric
- Object *HPACurrentObjectMetric `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` // Current object metric
- External *HPACurrentExternalMetric `protobuf:"bytes,5,opt,name=external,proto3" json:"external,omitempty"` // Current external metric
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Policy type: "Pods", "Percent"
+ Value int32 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` // Policy value
+ PeriodSeconds int32 `protobuf:"varint,3,opt,name=period_seconds,json=periodSeconds,proto3" json:"period_seconds,omitempty"` // Period in seconds
}
-func (x *HPACurrentMetric) Reset() {
- *x = HPACurrentMetric{}
+func (x *HPAScalingPolicy) Reset() {
+ *x = HPAScalingPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[82]
+ mi := &file_api_v1_common_proto_msgTypes[96]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPACurrentMetric) String() string {
+func (x *HPAScalingPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPACurrentMetric) ProtoMessage() {}
+func (*HPAScalingPolicy) ProtoMessage() {}
-func (x *HPACurrentMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[82]
+func (x *HPAScalingPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[96]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9828,74 +11402,62 @@ func (x *HPACurrentMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPACurrentMetric.ProtoReflect.Descriptor instead.
-func (*HPACurrentMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{82}
+// Deprecated: Use HPAScalingPolicy.ProtoReflect.Descriptor instead.
+func (*HPAScalingPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{96}
}
-func (x *HPACurrentMetric) GetType() string {
+func (x *HPAScalingPolicy) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *HPACurrentMetric) GetResource() *HPACurrentResourceMetric {
- if x != nil {
- return x.Resource
- }
- return nil
-}
-
-func (x *HPACurrentMetric) GetPods() *HPACurrentPodsMetric {
- if x != nil {
- return x.Pods
- }
- return nil
-}
-
-func (x *HPACurrentMetric) GetObject() *HPACurrentObjectMetric {
+func (x *HPAScalingPolicy) GetValue() int32 {
if x != nil {
- return x.Object
+ return x.Value
}
- return nil
+ return 0
}
-func (x *HPACurrentMetric) GetExternal() *HPACurrentExternalMetric {
+func (x *HPAScalingPolicy) GetPeriodSeconds() int32 {
if x != nil {
- return x.External
+ return x.PeriodSeconds
}
- return nil
+ return 0
}
-// HPACurrentResourceMetric represents current resource metric values
-type HPACurrentResourceMetric struct {
+// VPADetails contains detailed VerticalPodAutoscaler information for drill-down
+type VPADetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Resource name
- CurrentUtilization string `protobuf:"bytes,2,opt,name=current_utilization,json=currentUtilization,proto3" json:"current_utilization,omitempty"` // Current utilization percentage (optional)
- CurrentAverageValue string `protobuf:"bytes,3,opt,name=current_average_value,json=currentAverageValue,proto3" json:"current_average_value,omitempty"` // Current average value (optional)
+ TargetRef *VPATargetRef `protobuf:"bytes,1,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"` // Target reference for VPA
+ UpdatePolicy *VPAUpdatePolicy `protobuf:"bytes,2,opt,name=update_policy,json=updatePolicy,proto3" json:"update_policy,omitempty"` // Update policy configuration
+ ResourcePolicy *VPAResourcePolicy `protobuf:"bytes,3,opt,name=resource_policy,json=resourcePolicy,proto3" json:"resource_policy,omitempty"` // Resource policy configuration
+ Recommendation *VPARecommendation `protobuf:"bytes,4,opt,name=recommendation,proto3" json:"recommendation,omitempty"` // Current recommendations
+ Conditions []*VPACondition `protobuf:"bytes,5,rep,name=conditions,proto3" json:"conditions,omitempty"` // VPA conditions for debugging
}
-func (x *HPACurrentResourceMetric) Reset() {
- *x = HPACurrentResourceMetric{}
+func (x *VPADetails) Reset() {
+ *x = VPADetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[83]
+ mi := &file_api_v1_common_proto_msgTypes[97]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPACurrentResourceMetric) String() string {
+func (x *VPADetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPACurrentResourceMetric) ProtoMessage() {}
+func (*VPADetails) ProtoMessage() {}
-func (x *HPACurrentResourceMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[83]
+func (x *VPADetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[97]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9906,59 +11468,74 @@ func (x *HPACurrentResourceMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPACurrentResourceMetric.ProtoReflect.Descriptor instead.
-func (*HPACurrentResourceMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{83}
+// Deprecated: Use VPADetails.ProtoReflect.Descriptor instead.
+func (*VPADetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{97}
}
-func (x *HPACurrentResourceMetric) GetName() string {
+func (x *VPADetails) GetTargetRef() *VPATargetRef {
if x != nil {
- return x.Name
+ return x.TargetRef
}
- return ""
+ return nil
}
-func (x *HPACurrentResourceMetric) GetCurrentUtilization() string {
+func (x *VPADetails) GetUpdatePolicy() *VPAUpdatePolicy {
if x != nil {
- return x.CurrentUtilization
+ return x.UpdatePolicy
}
- return ""
+ return nil
}
-func (x *HPACurrentResourceMetric) GetCurrentAverageValue() string {
+func (x *VPADetails) GetResourcePolicy() *VPAResourcePolicy {
if x != nil {
- return x.CurrentAverageValue
+ return x.ResourcePolicy
}
- return ""
+ return nil
}
-// HPACurrentPodsMetric represents current pods metric values
-type HPACurrentPodsMetric struct {
+func (x *VPADetails) GetRecommendation() *VPARecommendation {
+ if x != nil {
+ return x.Recommendation
+ }
+ return nil
+}
+
+func (x *VPADetails) GetConditions() []*VPACondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+// VPATargetRef represents the target resource for VPA
+type VPATargetRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
- CurrentAverageValue string `protobuf:"bytes,2,opt,name=current_average_value,json=currentAverageValue,proto3" json:"current_average_value,omitempty"` // Current average value per pod
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Target resource kind (e.g., "Deployment")
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Target resource name
+ ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version of the target resource
}
-func (x *HPACurrentPodsMetric) Reset() {
- *x = HPACurrentPodsMetric{}
+func (x *VPATargetRef) Reset() {
+ *x = VPATargetRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[84]
+ mi := &file_api_v1_common_proto_msgTypes[98]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPACurrentPodsMetric) String() string {
+func (x *VPATargetRef) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPACurrentPodsMetric) ProtoMessage() {}
+func (*VPATargetRef) ProtoMessage() {}
-func (x *HPACurrentPodsMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[84]
+func (x *VPATargetRef) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[98]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9969,53 +11546,59 @@ func (x *HPACurrentPodsMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPACurrentPodsMetric.ProtoReflect.Descriptor instead.
-func (*HPACurrentPodsMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{84}
+// Deprecated: Use VPATargetRef.ProtoReflect.Descriptor instead.
+func (*VPATargetRef) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{98}
+}
+
+func (x *VPATargetRef) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
}
-func (x *HPACurrentPodsMetric) GetMetric() *HPAMetricSelector {
+func (x *VPATargetRef) GetName() string {
if x != nil {
- return x.Metric
+ return x.Name
}
- return nil
+ return ""
}
-func (x *HPACurrentPodsMetric) GetCurrentAverageValue() string {
+func (x *VPATargetRef) GetApiVersion() string {
if x != nil {
- return x.CurrentAverageValue
+ return x.ApiVersion
}
return ""
}
-// HPACurrentObjectMetric represents current object metric values
-type HPACurrentObjectMetric struct {
+// VPAUpdatePolicy represents VPA update policy
+type VPAUpdatePolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- DescribedObject *HPAObjectReference `protobuf:"bytes,1,opt,name=described_object,json=describedObject,proto3" json:"described_object,omitempty"` // Object reference
- Metric *HPAMetricSelector `protobuf:"bytes,2,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
- CurrentValue string `protobuf:"bytes,3,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` // Current value
+ UpdateMode string `protobuf:"bytes,1,opt,name=update_mode,json=updateMode,proto3" json:"update_mode,omitempty"` // Update mode: "Off", "Initial", "Recreation", "Auto"
+ MinReplicas int32 `protobuf:"varint,2,opt,name=min_replicas,json=minReplicas,proto3" json:"min_replicas,omitempty"` // Minimum replicas during update (optional)
}
-func (x *HPACurrentObjectMetric) Reset() {
- *x = HPACurrentObjectMetric{}
+func (x *VPAUpdatePolicy) Reset() {
+ *x = VPAUpdatePolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[85]
+ mi := &file_api_v1_common_proto_msgTypes[99]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPACurrentObjectMetric) String() string {
+func (x *VPAUpdatePolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPACurrentObjectMetric) ProtoMessage() {}
+func (*VPAUpdatePolicy) ProtoMessage() {}
-func (x *HPACurrentObjectMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[85]
+func (x *VPAUpdatePolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[99]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10026,60 +11609,51 @@ func (x *HPACurrentObjectMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPACurrentObjectMetric.ProtoReflect.Descriptor instead.
-func (*HPACurrentObjectMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{85}
-}
-
-func (x *HPACurrentObjectMetric) GetDescribedObject() *HPAObjectReference {
- if x != nil {
- return x.DescribedObject
- }
- return nil
+// Deprecated: Use VPAUpdatePolicy.ProtoReflect.Descriptor instead.
+func (*VPAUpdatePolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{99}
}
-func (x *HPACurrentObjectMetric) GetMetric() *HPAMetricSelector {
+func (x *VPAUpdatePolicy) GetUpdateMode() string {
if x != nil {
- return x.Metric
+ return x.UpdateMode
}
- return nil
+ return ""
}
-func (x *HPACurrentObjectMetric) GetCurrentValue() string {
+func (x *VPAUpdatePolicy) GetMinReplicas() int32 {
if x != nil {
- return x.CurrentValue
+ return x.MinReplicas
}
- return ""
+ return 0
}
-// HPACurrentExternalMetric represents current external metric values
-type HPACurrentExternalMetric struct {
+// VPAResourcePolicy represents VPA resource policy
+type VPAResourcePolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Metric *HPAMetricSelector `protobuf:"bytes,1,opt,name=metric,proto3" json:"metric,omitempty"` // Metric selector
- CurrentValue string `protobuf:"bytes,2,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` // Current value
- CurrentAverageValue string `protobuf:"bytes,3,opt,name=current_average_value,json=currentAverageValue,proto3" json:"current_average_value,omitempty"` // Current average value (optional)
+ ContainerPolicies []*VPAContainerResourcePolicy `protobuf:"bytes,1,rep,name=container_policies,json=containerPolicies,proto3" json:"container_policies,omitempty"` // Per-container policies
}
-func (x *HPACurrentExternalMetric) Reset() {
- *x = HPACurrentExternalMetric{}
+func (x *VPAResourcePolicy) Reset() {
+ *x = VPAResourcePolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[86]
+ mi := &file_api_v1_common_proto_msgTypes[100]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPACurrentExternalMetric) String() string {
+func (x *VPAResourcePolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPACurrentExternalMetric) ProtoMessage() {}
+func (*VPAResourcePolicy) ProtoMessage() {}
-func (x *HPACurrentExternalMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[86]
+func (x *VPAResourcePolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[100]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10090,62 +11664,49 @@ func (x *HPACurrentExternalMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPACurrentExternalMetric.ProtoReflect.Descriptor instead.
-func (*HPACurrentExternalMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{86}
+// Deprecated: Use VPAResourcePolicy.ProtoReflect.Descriptor instead.
+func (*VPAResourcePolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{100}
}
-func (x *HPACurrentExternalMetric) GetMetric() *HPAMetricSelector {
+func (x *VPAResourcePolicy) GetContainerPolicies() []*VPAContainerResourcePolicy {
if x != nil {
- return x.Metric
+ return x.ContainerPolicies
}
return nil
}
-func (x *HPACurrentExternalMetric) GetCurrentValue() string {
- if x != nil {
- return x.CurrentValue
- }
- return ""
-}
-
-func (x *HPACurrentExternalMetric) GetCurrentAverageValue() string {
- if x != nil {
- return x.CurrentAverageValue
- }
- return ""
-}
-
-// HPACondition represents an HPA condition
-type HPACondition struct {
+// VPAContainerResourcePolicy represents VPA policy for a container
+type VPAContainerResourcePolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type: "AbleToScale", "ScalingActive", "ScalingLimited"
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
+ ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` // Container name
+ Mode string `protobuf:"bytes,2,opt,name=mode,proto3" json:"mode,omitempty"` // Mode: "Auto", "Off"
+ MinAllowed map[string]string `protobuf:"bytes,3,rep,name=min_allowed,json=minAllowed,proto3" json:"min_allowed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Minimum allowed resources
+ MaxAllowed map[string]string `protobuf:"bytes,4,rep,name=max_allowed,json=maxAllowed,proto3" json:"max_allowed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Maximum allowed resources
+ ControlledResources []string `protobuf:"bytes,5,rep,name=controlled_resources,json=controlledResources,proto3" json:"controlled_resources,omitempty"` // Controlled resource types
+ ControlledValues string `protobuf:"bytes,6,opt,name=controlled_values,json=controlledValues,proto3" json:"controlled_values,omitempty"` // Controlled values: "RequestsAndLimits", "RequestsOnly"
}
-func (x *HPACondition) Reset() {
- *x = HPACondition{}
+func (x *VPAContainerResourcePolicy) Reset() {
+ *x = VPAContainerResourcePolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[87]
+ mi := &file_api_v1_common_proto_msgTypes[101]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPACondition) String() string {
+func (x *VPAContainerResourcePolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPACondition) ProtoMessage() {}
+func (*VPAContainerResourcePolicy) ProtoMessage() {}
-func (x *HPACondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[87]
+func (x *VPAContainerResourcePolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[101]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10156,73 +11717,79 @@ func (x *HPACondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPACondition.ProtoReflect.Descriptor instead.
-func (*HPACondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{87}
+// Deprecated: Use VPAContainerResourcePolicy.ProtoReflect.Descriptor instead.
+func (*VPAContainerResourcePolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{101}
}
-func (x *HPACondition) GetType() string {
+func (x *VPAContainerResourcePolicy) GetContainerName() string {
if x != nil {
- return x.Type
+ return x.ContainerName
}
return ""
}
-func (x *HPACondition) GetStatus() string {
+func (x *VPAContainerResourcePolicy) GetMode() string {
if x != nil {
- return x.Status
+ return x.Mode
}
return ""
}
-func (x *HPACondition) GetReason() string {
+func (x *VPAContainerResourcePolicy) GetMinAllowed() map[string]string {
if x != nil {
- return x.Reason
+ return x.MinAllowed
}
- return ""
+ return nil
}
-func (x *HPACondition) GetMessage() string {
+func (x *VPAContainerResourcePolicy) GetMaxAllowed() map[string]string {
if x != nil {
- return x.Message
+ return x.MaxAllowed
}
- return ""
+ return nil
}
-func (x *HPACondition) GetLastTransitionTime() int64 {
+func (x *VPAContainerResourcePolicy) GetControlledResources() []string {
if x != nil {
- return x.LastTransitionTime
+ return x.ControlledResources
}
- return 0
+ return nil
}
-// HPABehavior represents HPA scaling behavior policies
-type HPABehavior struct {
+func (x *VPAContainerResourcePolicy) GetControlledValues() string {
+ if x != nil {
+ return x.ControlledValues
+ }
+ return ""
+}
+
+// VPARecommendation represents VPA recommendations
+type VPARecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ScaleUp *HPAScalingRules `protobuf:"bytes,1,opt,name=scale_up,json=scaleUp,proto3" json:"scale_up,omitempty"` // Scale up behavior
- ScaleDown *HPAScalingRules `protobuf:"bytes,2,opt,name=scale_down,json=scaleDown,proto3" json:"scale_down,omitempty"` // Scale down behavior
+ ContainerRecommendations []*VPAContainerRecommendation `protobuf:"bytes,1,rep,name=container_recommendations,json=containerRecommendations,proto3" json:"container_recommendations,omitempty"` // Per-container recommendations
}
-func (x *HPABehavior) Reset() {
- *x = HPABehavior{}
+func (x *VPARecommendation) Reset() {
+ *x = VPARecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[88]
+ mi := &file_api_v1_common_proto_msgTypes[102]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPABehavior) String() string {
+func (x *VPARecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPABehavior) ProtoMessage() {}
+func (*VPARecommendation) ProtoMessage() {}
-func (x *HPABehavior) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[88]
+func (x *VPARecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[102]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10233,53 +11800,48 @@ func (x *HPABehavior) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPABehavior.ProtoReflect.Descriptor instead.
-func (*HPABehavior) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{88}
-}
-
-func (x *HPABehavior) GetScaleUp() *HPAScalingRules {
- if x != nil {
- return x.ScaleUp
- }
- return nil
+// Deprecated: Use VPARecommendation.ProtoReflect.Descriptor instead.
+func (*VPARecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{102}
}
-func (x *HPABehavior) GetScaleDown() *HPAScalingRules {
+func (x *VPARecommendation) GetContainerRecommendations() []*VPAContainerRecommendation {
if x != nil {
- return x.ScaleDown
+ return x.ContainerRecommendations
}
return nil
}
-// HPAScalingRules represents scaling behavior rules
-type HPAScalingRules struct {
+// VPAContainerRecommendation represents VPA recommendation for a container
+type VPAContainerRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- StabilizationWindowSeconds int32 `protobuf:"varint,1,opt,name=stabilization_window_seconds,json=stabilizationWindowSeconds,proto3" json:"stabilization_window_seconds,omitempty"` // Stabilization window
- SelectPolicy string `protobuf:"bytes,2,opt,name=select_policy,json=selectPolicy,proto3" json:"select_policy,omitempty"` // Policy selection: "Max", "Min", "Disabled"
- Policies []*HPAScalingPolicy `protobuf:"bytes,3,rep,name=policies,proto3" json:"policies,omitempty"` // Scaling policies
+ ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` // Container name
+ Target map[string]string `protobuf:"bytes,2,rep,name=target,proto3" json:"target,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Target recommendations
+ LowerBound map[string]string `protobuf:"bytes,3,rep,name=lower_bound,json=lowerBound,proto3" json:"lower_bound,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Lower bound recommendations
+ UpperBound map[string]string `protobuf:"bytes,4,rep,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Upper bound recommendations
+ UncappedTarget map[string]string `protobuf:"bytes,5,rep,name=uncapped_target,json=uncappedTarget,proto3" json:"uncapped_target,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Uncapped target recommendations
}
-func (x *HPAScalingRules) Reset() {
- *x = HPAScalingRules{}
+func (x *VPAContainerRecommendation) Reset() {
+ *x = VPAContainerRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[89]
+ mi := &file_api_v1_common_proto_msgTypes[103]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAScalingRules) String() string {
+func (x *VPAContainerRecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAScalingRules) ProtoMessage() {}
+func (*VPAContainerRecommendation) ProtoMessage() {}
-func (x *HPAScalingRules) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[89]
+func (x *VPAContainerRecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[103]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10290,60 +11852,76 @@ func (x *HPAScalingRules) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAScalingRules.ProtoReflect.Descriptor instead.
-func (*HPAScalingRules) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{89}
+// Deprecated: Use VPAContainerRecommendation.ProtoReflect.Descriptor instead.
+func (*VPAContainerRecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{103}
+}
+
+func (x *VPAContainerRecommendation) GetContainerName() string {
+ if x != nil {
+ return x.ContainerName
+ }
+ return ""
+}
+
+func (x *VPAContainerRecommendation) GetTarget() map[string]string {
+ if x != nil {
+ return x.Target
+ }
+ return nil
}
-func (x *HPAScalingRules) GetStabilizationWindowSeconds() int32 {
+func (x *VPAContainerRecommendation) GetLowerBound() map[string]string {
if x != nil {
- return x.StabilizationWindowSeconds
+ return x.LowerBound
}
- return 0
+ return nil
}
-func (x *HPAScalingRules) GetSelectPolicy() string {
+func (x *VPAContainerRecommendation) GetUpperBound() map[string]string {
if x != nil {
- return x.SelectPolicy
+ return x.UpperBound
}
- return ""
+ return nil
}
-func (x *HPAScalingRules) GetPolicies() []*HPAScalingPolicy {
+func (x *VPAContainerRecommendation) GetUncappedTarget() map[string]string {
if x != nil {
- return x.Policies
+ return x.UncappedTarget
}
return nil
}
-// HPAScalingPolicy represents a scaling policy
-type HPAScalingPolicy struct {
+// VPACondition represents a VPA condition
+type VPACondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Policy type: "Pods", "Percent"
- Value int32 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` // Policy value
- PeriodSeconds int32 `protobuf:"varint,3,opt,name=period_seconds,json=periodSeconds,proto3" json:"period_seconds,omitempty"` // Period in seconds
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type: "RecommendationProvided", "LowConfidence", etc.
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *HPAScalingPolicy) Reset() {
- *x = HPAScalingPolicy{}
+func (x *VPACondition) Reset() {
+ *x = VPACondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[90]
+ mi := &file_api_v1_common_proto_msgTypes[104]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *HPAScalingPolicy) String() string {
+func (x *VPACondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*HPAScalingPolicy) ProtoMessage() {}
+func (*VPACondition) ProtoMessage() {}
-func (x *HPAScalingPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[90]
+func (x *VPACondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[104]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10354,62 +11932,72 @@ func (x *HPAScalingPolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use HPAScalingPolicy.ProtoReflect.Descriptor instead.
-func (*HPAScalingPolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{90}
+// Deprecated: Use VPACondition.ProtoReflect.Descriptor instead.
+func (*VPACondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{104}
}
-func (x *HPAScalingPolicy) GetType() string {
+func (x *VPACondition) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *HPAScalingPolicy) GetValue() int32 {
+func (x *VPACondition) GetStatus() string {
if x != nil {
- return x.Value
+ return x.Status
}
- return 0
+ return ""
}
-func (x *HPAScalingPolicy) GetPeriodSeconds() int32 {
+func (x *VPACondition) GetReason() string {
if x != nil {
- return x.PeriodSeconds
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *VPACondition) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *VPACondition) GetLastTransitionTime() int64 {
+ if x != nil {
+ return x.LastTransitionTime
}
return 0
}
-// VPADetails contains detailed VerticalPodAutoscaler information for drill-down
-type VPADetails struct {
+// LimitRangeDetails contains detailed LimitRange information for drill-down
+type LimitRangeDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TargetRef *VPATargetRef `protobuf:"bytes,1,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"` // Target reference for VPA
- UpdatePolicy *VPAUpdatePolicy `protobuf:"bytes,2,opt,name=update_policy,json=updatePolicy,proto3" json:"update_policy,omitempty"` // Update policy configuration
- ResourcePolicy *VPAResourcePolicy `protobuf:"bytes,3,opt,name=resource_policy,json=resourcePolicy,proto3" json:"resource_policy,omitempty"` // Resource policy configuration
- Recommendation *VPARecommendation `protobuf:"bytes,4,opt,name=recommendation,proto3" json:"recommendation,omitempty"` // Current recommendations
- Conditions []*VPACondition `protobuf:"bytes,5,rep,name=conditions,proto3" json:"conditions,omitempty"` // VPA conditions for debugging
+ Limits []*LimitRangeItem `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits,omitempty"` // Limit range items
}
-func (x *VPADetails) Reset() {
- *x = VPADetails{}
+func (x *LimitRangeDetails) Reset() {
+ *x = LimitRangeDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[91]
+ mi := &file_api_v1_common_proto_msgTypes[105]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPADetails) String() string {
+func (x *LimitRangeDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPADetails) ProtoMessage() {}
+func (*LimitRangeDetails) ProtoMessage() {}
-func (x *VPADetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[91]
+func (x *LimitRangeDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[105]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10420,74 +12008,49 @@ func (x *VPADetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPADetails.ProtoReflect.Descriptor instead.
-func (*VPADetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{91}
-}
-
-func (x *VPADetails) GetTargetRef() *VPATargetRef {
- if x != nil {
- return x.TargetRef
- }
- return nil
-}
-
-func (x *VPADetails) GetUpdatePolicy() *VPAUpdatePolicy {
- if x != nil {
- return x.UpdatePolicy
- }
- return nil
-}
-
-func (x *VPADetails) GetResourcePolicy() *VPAResourcePolicy {
- if x != nil {
- return x.ResourcePolicy
- }
- return nil
-}
-
-func (x *VPADetails) GetRecommendation() *VPARecommendation {
- if x != nil {
- return x.Recommendation
- }
- return nil
+// Deprecated: Use LimitRangeDetails.ProtoReflect.Descriptor instead.
+func (*LimitRangeDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{105}
}
-func (x *VPADetails) GetConditions() []*VPACondition {
+func (x *LimitRangeDetails) GetLimits() []*LimitRangeItem {
if x != nil {
- return x.Conditions
+ return x.Limits
}
return nil
}
-// VPATargetRef represents the target resource for VPA
-type VPATargetRef struct {
+// LimitRangeItem represents a single limit range item
+type LimitRangeItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Target resource kind (e.g., "Deployment")
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Target resource name
- ApiVersion string `protobuf:"bytes,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // API version of the target resource
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Type: "Container", "Pod", "PersistentVolumeClaim"
+ DefaultLimits map[string]string `protobuf:"bytes,2,rep,name=default_limits,json=defaultLimits,proto3" json:"default_limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Default limits
+ DefaultRequest map[string]string `protobuf:"bytes,3,rep,name=default_request,json=defaultRequest,proto3" json:"default_request,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Default requests
+ Max map[string]string `protobuf:"bytes,4,rep,name=max,proto3" json:"max,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Maximum limits
+ Min map[string]string `protobuf:"bytes,5,rep,name=min,proto3" json:"min,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Minimum limits
+ MaxLimitRequestRatio map[string]string `protobuf:"bytes,6,rep,name=max_limit_request_ratio,json=maxLimitRequestRatio,proto3" json:"max_limit_request_ratio,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Max limit/request ratio
}
-func (x *VPATargetRef) Reset() {
- *x = VPATargetRef{}
+func (x *LimitRangeItem) Reset() {
+ *x = LimitRangeItem{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[92]
+ mi := &file_api_v1_common_proto_msgTypes[106]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPATargetRef) String() string {
+func (x *LimitRangeItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPATargetRef) ProtoMessage() {}
+func (*LimitRangeItem) ProtoMessage() {}
-func (x *VPATargetRef) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[92]
+func (x *LimitRangeItem) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[106]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10498,59 +12061,82 @@ func (x *VPATargetRef) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPATargetRef.ProtoReflect.Descriptor instead.
-func (*VPATargetRef) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{92}
+// Deprecated: Use LimitRangeItem.ProtoReflect.Descriptor instead.
+func (*LimitRangeItem) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{106}
}
-func (x *VPATargetRef) GetKind() string {
+func (x *LimitRangeItem) GetType() string {
if x != nil {
- return x.Kind
+ return x.Type
}
return ""
}
-func (x *VPATargetRef) GetName() string {
+func (x *LimitRangeItem) GetDefaultLimits() map[string]string {
if x != nil {
- return x.Name
+ return x.DefaultLimits
}
- return ""
+ return nil
}
-func (x *VPATargetRef) GetApiVersion() string {
+func (x *LimitRangeItem) GetDefaultRequest() map[string]string {
if x != nil {
- return x.ApiVersion
+ return x.DefaultRequest
}
- return ""
+ return nil
}
-// VPAUpdatePolicy represents VPA update policy
-type VPAUpdatePolicy struct {
+func (x *LimitRangeItem) GetMax() map[string]string {
+ if x != nil {
+ return x.Max
+ }
+ return nil
+}
+
+func (x *LimitRangeItem) GetMin() map[string]string {
+ if x != nil {
+ return x.Min
+ }
+ return nil
+}
+
+func (x *LimitRangeItem) GetMaxLimitRequestRatio() map[string]string {
+ if x != nil {
+ return x.MaxLimitRequestRatio
+ }
+ return nil
+}
+
+// ServiceAccountDetails contains detailed ServiceAccount information for drill-down
+type ServiceAccountDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- UpdateMode string `protobuf:"bytes,1,opt,name=update_mode,json=updateMode,proto3" json:"update_mode,omitempty"` // Update mode: "Off", "Initial", "Recreation", "Auto"
- MinReplicas int32 `protobuf:"varint,2,opt,name=min_replicas,json=minReplicas,proto3" json:"min_replicas,omitempty"` // Minimum replicas during update (optional)
+ AutomountServiceAccountToken bool `protobuf:"varint,1,opt,name=automount_service_account_token,json=automountServiceAccountToken,proto3" json:"automount_service_account_token,omitempty"` // Whether to automatically mount service account token
+ Secrets []string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty"` // Names of secrets referenced by this service account
+ ImagePullSecrets []string `protobuf:"bytes,3,rep,name=image_pull_secrets,json=imagePullSecrets,proto3" json:"image_pull_secrets,omitempty"` // Names of image pull secrets
+ ResourceVersion string `protobuf:"bytes,4,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"`
}
-func (x *VPAUpdatePolicy) Reset() {
- *x = VPAUpdatePolicy{}
+func (x *ServiceAccountDetails) Reset() {
+ *x = ServiceAccountDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[93]
+ mi := &file_api_v1_common_proto_msgTypes[107]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPAUpdatePolicy) String() string {
+func (x *ServiceAccountDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPAUpdatePolicy) ProtoMessage() {}
+func (*ServiceAccountDetails) ProtoMessage() {}
-func (x *VPAUpdatePolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[93]
+func (x *ServiceAccountDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[107]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10561,51 +12147,65 @@ func (x *VPAUpdatePolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPAUpdatePolicy.ProtoReflect.Descriptor instead.
-func (*VPAUpdatePolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{93}
+// Deprecated: Use ServiceAccountDetails.ProtoReflect.Descriptor instead.
+func (*ServiceAccountDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{107}
}
-func (x *VPAUpdatePolicy) GetUpdateMode() string {
+func (x *ServiceAccountDetails) GetAutomountServiceAccountToken() bool {
if x != nil {
- return x.UpdateMode
+ return x.AutomountServiceAccountToken
+ }
+ return false
+}
+
+func (x *ServiceAccountDetails) GetSecrets() []string {
+ if x != nil {
+ return x.Secrets
+ }
+ return nil
+}
+
+func (x *ServiceAccountDetails) GetImagePullSecrets() []string {
+ if x != nil {
+ return x.ImagePullSecrets
}
- return ""
+ return nil
}
-func (x *VPAUpdatePolicy) GetMinReplicas() int32 {
+func (x *ServiceAccountDetails) GetResourceVersion() string {
if x != nil {
- return x.MinReplicas
+ return x.ResourceVersion
}
- return 0
+ return ""
}
-// VPAResourcePolicy represents VPA resource policy
-type VPAResourcePolicy struct {
+// RoleDetails contains detailed Role information for drill-down
+type RoleDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ContainerPolicies []*VPAContainerResourcePolicy `protobuf:"bytes,1,rep,name=container_policies,json=containerPolicies,proto3" json:"container_policies,omitempty"` // Per-container policies
+ Rules []*RoleRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` // Role rules defining permissions
}
-func (x *VPAResourcePolicy) Reset() {
- *x = VPAResourcePolicy{}
+func (x *RoleDetails) Reset() {
+ *x = RoleDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[94]
+ mi := &file_api_v1_common_proto_msgTypes[108]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPAResourcePolicy) String() string {
+func (x *RoleDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPAResourcePolicy) ProtoMessage() {}
+func (*RoleDetails) ProtoMessage() {}
-func (x *VPAResourcePolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[94]
+func (x *RoleDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[108]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10616,49 +12216,47 @@ func (x *VPAResourcePolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPAResourcePolicy.ProtoReflect.Descriptor instead.
-func (*VPAResourcePolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{94}
+// Deprecated: Use RoleDetails.ProtoReflect.Descriptor instead.
+func (*RoleDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{108}
}
-func (x *VPAResourcePolicy) GetContainerPolicies() []*VPAContainerResourcePolicy {
+func (x *RoleDetails) GetRules() []*RoleRule {
if x != nil {
- return x.ContainerPolicies
+ return x.Rules
}
return nil
}
-// VPAContainerResourcePolicy represents VPA policy for a container
-type VPAContainerResourcePolicy struct {
+// RoleRule represents a single role rule
+type RoleRule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` // Container name
- Mode string `protobuf:"bytes,2,opt,name=mode,proto3" json:"mode,omitempty"` // Mode: "Auto", "Off"
- MinAllowed map[string]string `protobuf:"bytes,3,rep,name=min_allowed,json=minAllowed,proto3" json:"min_allowed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Minimum allowed resources
- MaxAllowed map[string]string `protobuf:"bytes,4,rep,name=max_allowed,json=maxAllowed,proto3" json:"max_allowed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Maximum allowed resources
- ControlledResources []string `protobuf:"bytes,5,rep,name=controlled_resources,json=controlledResources,proto3" json:"controlled_resources,omitempty"` // Controlled resource types
- ControlledValues string `protobuf:"bytes,6,opt,name=controlled_values,json=controlledValues,proto3" json:"controlled_values,omitempty"` // Controlled values: "RequestsAndLimits", "RequestsOnly"
+ ApiGroups []string `protobuf:"bytes,1,rep,name=api_groups,json=apiGroups,proto3" json:"api_groups,omitempty"` // API groups (e.g., "", "apps", "extensions")
+ Resources []string `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources,omitempty"` // Resources (e.g., "pods", "deployments")
+ Verbs []string `protobuf:"bytes,3,rep,name=verbs,proto3" json:"verbs,omitempty"` // Verbs (e.g., "get", "list", "create", "update", "delete")
+ ResourceNames []string `protobuf:"bytes,4,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"` // Specific resource names (optional)
}
-func (x *VPAContainerResourcePolicy) Reset() {
- *x = VPAContainerResourcePolicy{}
+func (x *RoleRule) Reset() {
+ *x = RoleRule{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[95]
+ mi := &file_api_v1_common_proto_msgTypes[109]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPAContainerResourcePolicy) String() string {
+func (x *RoleRule) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPAContainerResourcePolicy) ProtoMessage() {}
+func (*RoleRule) ProtoMessage() {}
-func (x *VPAContainerResourcePolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[95]
+func (x *RoleRule) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[109]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10669,79 +12267,66 @@ func (x *VPAContainerResourcePolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPAContainerResourcePolicy.ProtoReflect.Descriptor instead.
-func (*VPAContainerResourcePolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{95}
-}
-
-func (x *VPAContainerResourcePolicy) GetContainerName() string {
- if x != nil {
- return x.ContainerName
- }
- return ""
-}
-
-func (x *VPAContainerResourcePolicy) GetMode() string {
- if x != nil {
- return x.Mode
- }
- return ""
+// Deprecated: Use RoleRule.ProtoReflect.Descriptor instead.
+func (*RoleRule) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{109}
}
-func (x *VPAContainerResourcePolicy) GetMinAllowed() map[string]string {
+func (x *RoleRule) GetApiGroups() []string {
if x != nil {
- return x.MinAllowed
+ return x.ApiGroups
}
return nil
}
-func (x *VPAContainerResourcePolicy) GetMaxAllowed() map[string]string {
+func (x *RoleRule) GetResources() []string {
if x != nil {
- return x.MaxAllowed
+ return x.Resources
}
return nil
}
-func (x *VPAContainerResourcePolicy) GetControlledResources() []string {
+func (x *RoleRule) GetVerbs() []string {
if x != nil {
- return x.ControlledResources
+ return x.Verbs
}
return nil
}
-func (x *VPAContainerResourcePolicy) GetControlledValues() string {
+func (x *RoleRule) GetResourceNames() []string {
if x != nil {
- return x.ControlledValues
+ return x.ResourceNames
}
- return ""
+ return nil
}
-// VPARecommendation represents VPA recommendations
-type VPARecommendation struct {
+// RoleBindingDetails contains detailed RoleBinding information for drill-down
+type RoleBindingDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ContainerRecommendations []*VPAContainerRecommendation `protobuf:"bytes,1,rep,name=container_recommendations,json=containerRecommendations,proto3" json:"container_recommendations,omitempty"` // Per-container recommendations
+ Subjects []*RoleBindingSubject `protobuf:"bytes,1,rep,name=subjects,proto3" json:"subjects,omitempty"` // Subjects that the role is bound to
+ RoleRef *RoleReference `protobuf:"bytes,2,opt,name=role_ref,json=roleRef,proto3" json:"role_ref,omitempty"` // Reference to the role being bound
}
-func (x *VPARecommendation) Reset() {
- *x = VPARecommendation{}
+func (x *RoleBindingDetails) Reset() {
+ *x = RoleBindingDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[96]
+ mi := &file_api_v1_common_proto_msgTypes[110]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPARecommendation) String() string {
+func (x *RoleBindingDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPARecommendation) ProtoMessage() {}
+func (*RoleBindingDetails) ProtoMessage() {}
-func (x *VPARecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[96]
+func (x *RoleBindingDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[110]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10752,48 +12337,54 @@ func (x *VPARecommendation) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPARecommendation.ProtoReflect.Descriptor instead.
-func (*VPARecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{96}
+// Deprecated: Use RoleBindingDetails.ProtoReflect.Descriptor instead.
+func (*RoleBindingDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{110}
}
-func (x *VPARecommendation) GetContainerRecommendations() []*VPAContainerRecommendation {
+func (x *RoleBindingDetails) GetSubjects() []*RoleBindingSubject {
if x != nil {
- return x.ContainerRecommendations
+ return x.Subjects
}
return nil
}
-// VPAContainerRecommendation represents VPA recommendation for a container
-type VPAContainerRecommendation struct {
+func (x *RoleBindingDetails) GetRoleRef() *RoleReference {
+ if x != nil {
+ return x.RoleRef
+ }
+ return nil
+}
+
+// RoleBindingSubject represents a subject in a role binding
+type RoleBindingSubject struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` // Container name
- Target map[string]string `protobuf:"bytes,2,rep,name=target,proto3" json:"target,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Target recommendations
- LowerBound map[string]string `protobuf:"bytes,3,rep,name=lower_bound,json=lowerBound,proto3" json:"lower_bound,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Lower bound recommendations
- UpperBound map[string]string `protobuf:"bytes,4,rep,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Upper bound recommendations
- UncappedTarget map[string]string `protobuf:"bytes,5,rep,name=uncapped_target,json=uncappedTarget,proto3" json:"uncapped_target,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Uncapped target recommendations
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Subject kind: "User", "Group", "ServiceAccount"
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Subject name
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` // Subject namespace (for ServiceAccount)
+ ApiGroup string `protobuf:"bytes,4,opt,name=api_group,json=apiGroup,proto3" json:"api_group,omitempty"` // API group (optional)
}
-func (x *VPAContainerRecommendation) Reset() {
- *x = VPAContainerRecommendation{}
+func (x *RoleBindingSubject) Reset() {
+ *x = RoleBindingSubject{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[97]
+ mi := &file_api_v1_common_proto_msgTypes[111]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPAContainerRecommendation) String() string {
+func (x *RoleBindingSubject) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPAContainerRecommendation) ProtoMessage() {}
+func (*RoleBindingSubject) ProtoMessage() {}
-func (x *VPAContainerRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[97]
+func (x *RoleBindingSubject) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[111]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10804,76 +12395,136 @@ func (x *VPAContainerRecommendation) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPAContainerRecommendation.ProtoReflect.Descriptor instead.
-func (*VPAContainerRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{97}
+// Deprecated: Use RoleBindingSubject.ProtoReflect.Descriptor instead.
+func (*RoleBindingSubject) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{111}
}
-func (x *VPAContainerRecommendation) GetContainerName() string {
+func (x *RoleBindingSubject) GetKind() string {
if x != nil {
- return x.ContainerName
+ return x.Kind
}
return ""
}
-func (x *VPAContainerRecommendation) GetTarget() map[string]string {
+func (x *RoleBindingSubject) GetName() string {
if x != nil {
- return x.Target
+ return x.Name
}
- return nil
+ return ""
}
-func (x *VPAContainerRecommendation) GetLowerBound() map[string]string {
+func (x *RoleBindingSubject) GetNamespace() string {
if x != nil {
- return x.LowerBound
+ return x.Namespace
}
- return nil
+ return ""
}
-func (x *VPAContainerRecommendation) GetUpperBound() map[string]string {
+func (x *RoleBindingSubject) GetApiGroup() string {
if x != nil {
- return x.UpperBound
+ return x.ApiGroup
}
- return nil
+ return ""
}
-func (x *VPAContainerRecommendation) GetUncappedTarget() map[string]string {
+// RoleReference represents a reference to a role in a role binding
+type RoleReference struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Role kind: "Role", "ClusterRole"
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Role name
+ ApiGroup string `protobuf:"bytes,3,opt,name=api_group,json=apiGroup,proto3" json:"api_group,omitempty"` // API group (typically "rbac.authorization.k8s.io")
+}
+
+func (x *RoleReference) Reset() {
+ *x = RoleReference{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[112]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleReference) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleReference) ProtoMessage() {}
+
+func (x *RoleReference) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[112]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleReference.ProtoReflect.Descriptor instead.
+func (*RoleReference) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{112}
+}
+
+func (x *RoleReference) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *RoleReference) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *RoleReference) GetApiGroup() string {
if x != nil {
- return x.UncappedTarget
+ return x.ApiGroup
}
- return nil
+ return ""
}
-// VPACondition represents a VPA condition
-type VPACondition struct {
+// KedaScaledObjectDetails contains detailed KEDA ScaledObject information
+type KedaScaledObjectDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type: "RecommendationProvided", "LowConfidence", etc.
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
+ TargetName string `protobuf:"bytes,1,opt,name=target_name,json=targetName,proto3" json:"target_name,omitempty"` // Name of the scale target
+ TargetKind string `protobuf:"bytes,2,opt,name=target_kind,json=targetKind,proto3" json:"target_kind,omitempty"` // Kind of the scale target (e.g., "Deployment")
+ MinReplicas int32 `protobuf:"varint,3,opt,name=min_replicas,json=minReplicas,proto3" json:"min_replicas,omitempty"` // Minimum number of replicas
+ MaxReplicas int32 `protobuf:"varint,4,opt,name=max_replicas,json=maxReplicas,proto3" json:"max_replicas,omitempty"` // Maximum number of replicas
+ CurrentReplicas int32 `protobuf:"varint,5,opt,name=current_replicas,json=currentReplicas,proto3" json:"current_replicas,omitempty"` // Current number of replicas
+ Triggers []*KedaScaledObjectTrigger `protobuf:"bytes,6,rep,name=triggers,proto3" json:"triggers,omitempty"` // List of scaling triggers
+ Conditions []*KedaScaledObjectCondition `protobuf:"bytes,7,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
+ Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Ready", "Active", "Unknown"
}
-func (x *VPACondition) Reset() {
- *x = VPACondition{}
+func (x *KedaScaledObjectDetails) Reset() {
+ *x = KedaScaledObjectDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[98]
+ mi := &file_api_v1_common_proto_msgTypes[113]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VPACondition) String() string {
+func (x *KedaScaledObjectDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VPACondition) ProtoMessage() {}
+func (*KedaScaledObjectDetails) ProtoMessage() {}
-func (x *VPACondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[98]
+func (x *KedaScaledObjectDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[113]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10884,72 +12535,94 @@ func (x *VPACondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VPACondition.ProtoReflect.Descriptor instead.
-func (*VPACondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{98}
+// Deprecated: Use KedaScaledObjectDetails.ProtoReflect.Descriptor instead.
+func (*KedaScaledObjectDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{113}
}
-func (x *VPACondition) GetType() string {
+func (x *KedaScaledObjectDetails) GetTargetName() string {
if x != nil {
- return x.Type
+ return x.TargetName
}
return ""
}
-func (x *VPACondition) GetStatus() string {
+func (x *KedaScaledObjectDetails) GetTargetKind() string {
if x != nil {
- return x.Status
+ return x.TargetKind
}
return ""
}
-func (x *VPACondition) GetReason() string {
+func (x *KedaScaledObjectDetails) GetMinReplicas() int32 {
if x != nil {
- return x.Reason
+ return x.MinReplicas
}
- return ""
+ return 0
}
-func (x *VPACondition) GetMessage() string {
+func (x *KedaScaledObjectDetails) GetMaxReplicas() int32 {
if x != nil {
- return x.Message
+ return x.MaxReplicas
}
- return ""
+ return 0
}
-func (x *VPACondition) GetLastTransitionTime() int64 {
+func (x *KedaScaledObjectDetails) GetCurrentReplicas() int32 {
if x != nil {
- return x.LastTransitionTime
+ return x.CurrentReplicas
}
return 0
}
-// LimitRangeDetails contains detailed LimitRange information for drill-down
-type LimitRangeDetails struct {
+func (x *KedaScaledObjectDetails) GetTriggers() []*KedaScaledObjectTrigger {
+ if x != nil {
+ return x.Triggers
+ }
+ return nil
+}
+
+func (x *KedaScaledObjectDetails) GetConditions() []*KedaScaledObjectCondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+func (x *KedaScaledObjectDetails) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+// KedaScaledObjectTrigger represents a scaling trigger
+type KedaScaledObjectTrigger struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Limits []*LimitRangeItem `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits,omitempty"` // Limit range items
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Trigger type (e.g., "cpu", "memory", "prometheus")
+ Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Trigger-specific metadata
}
-func (x *LimitRangeDetails) Reset() {
- *x = LimitRangeDetails{}
+func (x *KedaScaledObjectTrigger) Reset() {
+ *x = KedaScaledObjectTrigger{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[99]
+ mi := &file_api_v1_common_proto_msgTypes[114]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *LimitRangeDetails) String() string {
+func (x *KedaScaledObjectTrigger) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*LimitRangeDetails) ProtoMessage() {}
+func (*KedaScaledObjectTrigger) ProtoMessage() {}
-func (x *LimitRangeDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[99]
+func (x *KedaScaledObjectTrigger) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[114]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10960,49 +12633,55 @@ func (x *LimitRangeDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use LimitRangeDetails.ProtoReflect.Descriptor instead.
-func (*LimitRangeDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{99}
+// Deprecated: Use KedaScaledObjectTrigger.ProtoReflect.Descriptor instead.
+func (*KedaScaledObjectTrigger) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{114}
}
-func (x *LimitRangeDetails) GetLimits() []*LimitRangeItem {
+func (x *KedaScaledObjectTrigger) GetType() string {
if x != nil {
- return x.Limits
+ return x.Type
+ }
+ return ""
+}
+
+func (x *KedaScaledObjectTrigger) GetMetadata() map[string]string {
+ if x != nil {
+ return x.Metadata
}
return nil
}
-// LimitRangeItem represents a single limit range item
-type LimitRangeItem struct {
+// KedaScaledObjectCondition represents a condition of a KEDA ScaledObject
+type KedaScaledObjectCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Type: "Container", "Pod", "PersistentVolumeClaim"
- DefaultLimits map[string]string `protobuf:"bytes,2,rep,name=default_limits,json=defaultLimits,proto3" json:"default_limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Default limits
- DefaultRequest map[string]string `protobuf:"bytes,3,rep,name=default_request,json=defaultRequest,proto3" json:"default_request,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Default requests
- Max map[string]string `protobuf:"bytes,4,rep,name=max,proto3" json:"max,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Maximum limits
- Min map[string]string `protobuf:"bytes,5,rep,name=min,proto3" json:"min,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Minimum limits
- MaxLimitRequestRatio map[string]string `protobuf:"bytes,6,rep,name=max_limit_request_ratio,json=maxLimitRequestRatio,proto3" json:"max_limit_request_ratio,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Max limit/request ratio
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "Ready", "Active")
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *LimitRangeItem) Reset() {
- *x = LimitRangeItem{}
+func (x *KedaScaledObjectCondition) Reset() {
+ *x = KedaScaledObjectCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[100]
+ mi := &file_api_v1_common_proto_msgTypes[115]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *LimitRangeItem) String() string {
+func (x *KedaScaledObjectCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*LimitRangeItem) ProtoMessage() {}
+func (*KedaScaledObjectCondition) ProtoMessage() {}
-func (x *LimitRangeItem) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[100]
+func (x *KedaScaledObjectCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[115]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11013,151 +12692,188 @@ func (x *LimitRangeItem) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use LimitRangeItem.ProtoReflect.Descriptor instead.
-func (*LimitRangeItem) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{100}
+// Deprecated: Use KedaScaledObjectCondition.ProtoReflect.Descriptor instead.
+func (*KedaScaledObjectCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{115}
}
-func (x *LimitRangeItem) GetType() string {
+func (x *KedaScaledObjectCondition) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *LimitRangeItem) GetDefaultLimits() map[string]string {
- if x != nil {
- return x.DefaultLimits
- }
- return nil
-}
-
-func (x *LimitRangeItem) GetDefaultRequest() map[string]string {
+func (x *KedaScaledObjectCondition) GetStatus() string {
if x != nil {
- return x.DefaultRequest
+ return x.Status
}
- return nil
+ return ""
}
-func (x *LimitRangeItem) GetMax() map[string]string {
+func (x *KedaScaledObjectCondition) GetReason() string {
if x != nil {
- return x.Max
+ return x.Reason
}
- return nil
+ return ""
}
-func (x *LimitRangeItem) GetMin() map[string]string {
+func (x *KedaScaledObjectCondition) GetMessage() string {
if x != nil {
- return x.Min
+ return x.Message
}
- return nil
+ return ""
}
-func (x *LimitRangeItem) GetMaxLimitRequestRatio() map[string]string {
+func (x *KedaScaledObjectCondition) GetLastTransitionTime() int64 {
if x != nil {
- return x.MaxLimitRequestRatio
+ return x.LastTransitionTime
}
- return nil
+ return 0
}
-// ServiceAccountDetails contains detailed ServiceAccount information for drill-down
-type ServiceAccountDetails struct {
+// KarpenterResourceDetails contains detailed Karpenter resource information
+type KarpenterResourceDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- AutomountServiceAccountToken bool `protobuf:"varint,1,opt,name=automount_service_account_token,json=automountServiceAccountToken,proto3" json:"automount_service_account_token,omitempty"` // Whether to automatically mount service account token
- Secrets []string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty"` // Names of secrets referenced by this service account
- ImagePullSecrets []string `protobuf:"bytes,3,rep,name=image_pull_secrets,json=imagePullSecrets,proto3" json:"image_pull_secrets,omitempty"` // Names of image pull secrets
- ResourceVersion string `protobuf:"bytes,4,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"`
+ ResourceType string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` // Type of Karpenter resource (NodePool, NodeClaim, Provisioner)
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Ready", "Available", "Unknown"
+ Conditions []*KarpenterResourceCondition `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
+ Capacity *KarpenterCapacity `protobuf:"bytes,4,opt,name=capacity,proto3" json:"capacity,omitempty"` // Resource capacity (for NodePool/NodeClaim)
+ Requirements []*KarpenterRequirement `protobuf:"bytes,5,rep,name=requirements,proto3" json:"requirements,omitempty"` // Instance requirements (for NodePool)
+ NodeClassRef string `protobuf:"bytes,6,opt,name=node_class_ref,json=nodeClassRef,proto3" json:"node_class_ref,omitempty"` // Reference to NodeClass (for NodePool)
+ NodeName string `protobuf:"bytes,7,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` // Associated node name (for NodeClaim)
+ Limits map[string]string `protobuf:"bytes,8,rep,name=limits,proto3" json:"limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource limits (for Provisioner)
+ KarpenterVersion string `protobuf:"bytes,9,opt,name=karpenter_version,json=karpenterVersion,proto3" json:"karpenter_version,omitempty"` // Karpenter version
}
-func (x *ServiceAccountDetails) Reset() {
- *x = ServiceAccountDetails{}
+func (x *KarpenterResourceDetails) Reset() {
+ *x = KarpenterResourceDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[101]
+ mi := &file_api_v1_common_proto_msgTypes[116]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ServiceAccountDetails) String() string {
+func (x *KarpenterResourceDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ServiceAccountDetails) ProtoMessage() {}
-
-func (x *ServiceAccountDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[101]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (*KarpenterResourceDetails) ProtoMessage() {}
+
+func (x *KarpenterResourceDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[116]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KarpenterResourceDetails.ProtoReflect.Descriptor instead.
+func (*KarpenterResourceDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{116}
+}
+
+func (x *KarpenterResourceDetails) GetResourceType() string {
+ if x != nil {
+ return x.ResourceType
+ }
+ return ""
+}
+
+func (x *KarpenterResourceDetails) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *KarpenterResourceDetails) GetConditions() []*KarpenterResourceCondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+func (x *KarpenterResourceDetails) GetCapacity() *KarpenterCapacity {
+ if x != nil {
+ return x.Capacity
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use ServiceAccountDetails.ProtoReflect.Descriptor instead.
-func (*ServiceAccountDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{101}
+func (x *KarpenterResourceDetails) GetRequirements() []*KarpenterRequirement {
+ if x != nil {
+ return x.Requirements
+ }
+ return nil
}
-func (x *ServiceAccountDetails) GetAutomountServiceAccountToken() bool {
+func (x *KarpenterResourceDetails) GetNodeClassRef() string {
if x != nil {
- return x.AutomountServiceAccountToken
+ return x.NodeClassRef
}
- return false
+ return ""
}
-func (x *ServiceAccountDetails) GetSecrets() []string {
+func (x *KarpenterResourceDetails) GetNodeName() string {
if x != nil {
- return x.Secrets
+ return x.NodeName
}
- return nil
+ return ""
}
-func (x *ServiceAccountDetails) GetImagePullSecrets() []string {
+func (x *KarpenterResourceDetails) GetLimits() map[string]string {
if x != nil {
- return x.ImagePullSecrets
+ return x.Limits
}
return nil
}
-func (x *ServiceAccountDetails) GetResourceVersion() string {
+func (x *KarpenterResourceDetails) GetKarpenterVersion() string {
if x != nil {
- return x.ResourceVersion
+ return x.KarpenterVersion
}
return ""
}
-// RoleDetails contains detailed Role information for drill-down
-type RoleDetails struct {
+// KarpenterResourceCondition represents a condition of a Karpenter resource
+type KarpenterResourceCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Rules []*RoleRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` // Role rules defining permissions
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "Ready", "Available")
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *RoleDetails) Reset() {
- *x = RoleDetails{}
+func (x *KarpenterResourceCondition) Reset() {
+ *x = KarpenterResourceCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[102]
+ mi := &file_api_v1_common_proto_msgTypes[117]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RoleDetails) String() string {
+func (x *KarpenterResourceCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RoleDetails) ProtoMessage() {}
+func (*KarpenterResourceCondition) ProtoMessage() {}
-func (x *RoleDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[102]
+func (x *KarpenterResourceCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[117]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11168,47 +12884,74 @@ func (x *RoleDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RoleDetails.ProtoReflect.Descriptor instead.
-func (*RoleDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{102}
+// Deprecated: Use KarpenterResourceCondition.ProtoReflect.Descriptor instead.
+func (*KarpenterResourceCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{117}
}
-func (x *RoleDetails) GetRules() []*RoleRule {
+func (x *KarpenterResourceCondition) GetType() string {
if x != nil {
- return x.Rules
+ return x.Type
}
- return nil
+ return ""
}
-// RoleRule represents a single role rule
-type RoleRule struct {
+func (x *KarpenterResourceCondition) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *KarpenterResourceCondition) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *KarpenterResourceCondition) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *KarpenterResourceCondition) GetLastTransitionTime() int64 {
+ if x != nil {
+ return x.LastTransitionTime
+ }
+ return 0
+}
+
+// KarpenterCapacity represents capacity information
+type KarpenterCapacity struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ApiGroups []string `protobuf:"bytes,1,rep,name=api_groups,json=apiGroups,proto3" json:"api_groups,omitempty"` // API groups (e.g., "", "apps", "extensions")
- Resources []string `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources,omitempty"` // Resources (e.g., "pods", "deployments")
- Verbs []string `protobuf:"bytes,3,rep,name=verbs,proto3" json:"verbs,omitempty"` // Verbs (e.g., "get", "list", "create", "update", "delete")
- ResourceNames []string `protobuf:"bytes,4,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"` // Specific resource names (optional)
+ Cpu string `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"` // CPU capacity (e.g., "4")
+ Memory string `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` // Memory capacity (e.g., "16Gi")
+ Other map[string]string `protobuf:"bytes,3,rep,name=other,proto3" json:"other,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Other resource capacities
}
-func (x *RoleRule) Reset() {
- *x = RoleRule{}
+func (x *KarpenterCapacity) Reset() {
+ *x = KarpenterCapacity{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[103]
+ mi := &file_api_v1_common_proto_msgTypes[118]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RoleRule) String() string {
+func (x *KarpenterCapacity) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RoleRule) ProtoMessage() {}
+func (*KarpenterCapacity) ProtoMessage() {}
-func (x *RoleRule) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[103]
+func (x *KarpenterCapacity) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[118]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11219,66 +12962,60 @@ func (x *RoleRule) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RoleRule.ProtoReflect.Descriptor instead.
-func (*RoleRule) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{103}
-}
-
-func (x *RoleRule) GetApiGroups() []string {
- if x != nil {
- return x.ApiGroups
- }
- return nil
+// Deprecated: Use KarpenterCapacity.ProtoReflect.Descriptor instead.
+func (*KarpenterCapacity) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{118}
}
-func (x *RoleRule) GetResources() []string {
+func (x *KarpenterCapacity) GetCpu() string {
if x != nil {
- return x.Resources
+ return x.Cpu
}
- return nil
+ return ""
}
-func (x *RoleRule) GetVerbs() []string {
+func (x *KarpenterCapacity) GetMemory() string {
if x != nil {
- return x.Verbs
+ return x.Memory
}
- return nil
+ return ""
}
-func (x *RoleRule) GetResourceNames() []string {
+func (x *KarpenterCapacity) GetOther() map[string]string {
if x != nil {
- return x.ResourceNames
+ return x.Other
}
return nil
}
-// RoleBindingDetails contains detailed RoleBinding information for drill-down
-type RoleBindingDetails struct {
+// KarpenterRequirement represents an instance requirement
+type KarpenterRequirement struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Subjects []*RoleBindingSubject `protobuf:"bytes,1,rep,name=subjects,proto3" json:"subjects,omitempty"` // Subjects that the role is bound to
- RoleRef *RoleReference `protobuf:"bytes,2,opt,name=role_ref,json=roleRef,proto3" json:"role_ref,omitempty"` // Reference to the role being bound
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Requirement key (e.g., "node.kubernetes.io/instance-type")
+ Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // Operator (e.g., "In", "NotIn", "Exists")
+ Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Requirement values
}
-func (x *RoleBindingDetails) Reset() {
- *x = RoleBindingDetails{}
+func (x *KarpenterRequirement) Reset() {
+ *x = KarpenterRequirement{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[104]
+ mi := &file_api_v1_common_proto_msgTypes[119]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RoleBindingDetails) String() string {
+func (x *KarpenterRequirement) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RoleBindingDetails) ProtoMessage() {}
+func (*KarpenterRequirement) ProtoMessage() {}
-func (x *RoleBindingDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[104]
+func (x *KarpenterRequirement) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[119]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11289,54 +13026,59 @@ func (x *RoleBindingDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RoleBindingDetails.ProtoReflect.Descriptor instead.
-func (*RoleBindingDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{104}
+// Deprecated: Use KarpenterRequirement.ProtoReflect.Descriptor instead.
+func (*KarpenterRequirement) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{119}
}
-func (x *RoleBindingDetails) GetSubjects() []*RoleBindingSubject {
+func (x *KarpenterRequirement) GetKey() string {
if x != nil {
- return x.Subjects
+ return x.Key
}
- return nil
+ return ""
}
-func (x *RoleBindingDetails) GetRoleRef() *RoleReference {
+func (x *KarpenterRequirement) GetOperator() string {
if x != nil {
- return x.RoleRef
+ return x.Operator
+ }
+ return ""
+}
+
+func (x *KarpenterRequirement) GetValues() []string {
+ if x != nil {
+ return x.Values
}
return nil
}
-// RoleBindingSubject represents a subject in a role binding
-type RoleBindingSubject struct {
+// ResourceFieldFilter filters resources on a single field; values are OR'd together.
+type ResourceFieldFilter struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Subject kind: "User", "Group", "ServiceAccount"
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Subject name
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` // Subject namespace (for ServiceAccount)
- ApiGroup string `protobuf:"bytes,4,opt,name=api_group,json=apiGroup,proto3" json:"api_group,omitempty"` // API group (optional)
+ Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` // e.g. "type", "class", "kind", "namespace"
+ Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` // OR'd together
}
-func (x *RoleBindingSubject) Reset() {
- *x = RoleBindingSubject{}
+func (x *ResourceFieldFilter) Reset() {
+ *x = ResourceFieldFilter{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[105]
+ mi := &file_api_v1_common_proto_msgTypes[120]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RoleBindingSubject) String() string {
+func (x *ResourceFieldFilter) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RoleBindingSubject) ProtoMessage() {}
+func (*ResourceFieldFilter) ProtoMessage() {}
-func (x *RoleBindingSubject) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[105]
+func (x *ResourceFieldFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[120]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11347,67 +13089,54 @@ func (x *RoleBindingSubject) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RoleBindingSubject.ProtoReflect.Descriptor instead.
-func (*RoleBindingSubject) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{105}
-}
-
-func (x *RoleBindingSubject) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
-}
-
-func (x *RoleBindingSubject) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
+// Deprecated: Use ResourceFieldFilter.ProtoReflect.Descriptor instead.
+func (*ResourceFieldFilter) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{120}
}
-func (x *RoleBindingSubject) GetNamespace() string {
+func (x *ResourceFieldFilter) GetField() string {
if x != nil {
- return x.Namespace
+ return x.Field
}
return ""
}
-func (x *RoleBindingSubject) GetApiGroup() string {
+func (x *ResourceFieldFilter) GetValues() []string {
if x != nil {
- return x.ApiGroup
+ return x.Values
}
- return ""
+ return nil
}
-// RoleReference represents a reference to a role in a role binding
-type RoleReference struct {
+// ResourceFilterFieldOptions describes the distinct values available for a filterable field.
+type ResourceFilterFieldOptions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Role kind: "Role", "ClusterRole"
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Role name
- ApiGroup string `protobuf:"bytes,3,opt,name=api_group,json=apiGroup,proto3" json:"api_group,omitempty"` // API group (typically "rbac.authorization.k8s.io")
+ Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
+ Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
+ Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
+ Truncated bool `protobuf:"varint,4,opt,name=truncated,proto3" json:"truncated,omitempty"` // true when the value list was capped and is incomplete
}
-
-func (x *RoleReference) Reset() {
- *x = RoleReference{}
+
+func (x *ResourceFilterFieldOptions) Reset() {
+ *x = ResourceFilterFieldOptions{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[106]
+ mi := &file_api_v1_common_proto_msgTypes[121]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RoleReference) String() string {
+func (x *ResourceFilterFieldOptions) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RoleReference) ProtoMessage() {}
+func (*ResourceFilterFieldOptions) ProtoMessage() {}
-func (x *RoleReference) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[106]
+func (x *ResourceFilterFieldOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[121]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11418,65 +13147,84 @@ func (x *RoleReference) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RoleReference.ProtoReflect.Descriptor instead.
-func (*RoleReference) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{106}
+// Deprecated: Use ResourceFilterFieldOptions.ProtoReflect.Descriptor instead.
+func (*ResourceFilterFieldOptions) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{121}
}
-func (x *RoleReference) GetKind() string {
+func (x *ResourceFilterFieldOptions) GetField() string {
if x != nil {
- return x.Kind
+ return x.Field
}
return ""
}
-func (x *RoleReference) GetName() string {
+func (x *ResourceFilterFieldOptions) GetLabel() string {
if x != nil {
- return x.Name
+ return x.Label
}
return ""
}
-func (x *RoleReference) GetApiGroup() string {
+func (x *ResourceFilterFieldOptions) GetValues() []string {
if x != nil {
- return x.ApiGroup
+ return x.Values
}
- return ""
+ return nil
}
-// KedaScaledObjectDetails contains detailed KEDA ScaledObject information
-type KedaScaledObjectDetails struct {
+func (x *ResourceFilterFieldOptions) GetTruncated() bool {
+ if x != nil {
+ return x.Truncated
+ }
+ return false
+}
+
+// WorkloadFilters provides optional filters for narrowing the GetWorkloads request.
+// All fields are optional. When multiple fields are provided, they are ANDed together.
+type WorkloadFilters struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TargetName string `protobuf:"bytes,1,opt,name=target_name,json=targetName,proto3" json:"target_name,omitempty"` // Name of the scale target
- TargetKind string `protobuf:"bytes,2,opt,name=target_kind,json=targetKind,proto3" json:"target_kind,omitempty"` // Kind of the scale target (e.g., "Deployment")
- MinReplicas int32 `protobuf:"varint,3,opt,name=min_replicas,json=minReplicas,proto3" json:"min_replicas,omitempty"` // Minimum number of replicas
- MaxReplicas int32 `protobuf:"varint,4,opt,name=max_replicas,json=maxReplicas,proto3" json:"max_replicas,omitempty"` // Maximum number of replicas
- CurrentReplicas int32 `protobuf:"varint,5,opt,name=current_replicas,json=currentReplicas,proto3" json:"current_replicas,omitempty"` // Current number of replicas
- Triggers []*KedaScaledObjectTrigger `protobuf:"bytes,6,rep,name=triggers,proto3" json:"triggers,omitempty"` // List of scaling triggers
- Conditions []*KedaScaledObjectCondition `protobuf:"bytes,7,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
- Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Ready", "Active", "Unknown"
+ // Targeting criteria (AND logic between non-null fields)
+ NamespaceSelector *LabelSelector `protobuf:"bytes,11,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"` // Target namespaces by labels
+ WorkloadSelector *LabelSelector `protobuf:"bytes,12,opt,name=workload_selector,json=workloadSelector,proto3,oneof" json:"workload_selector,omitempty"` // Target workloads by labels
+ KindFilter []K8SObjectKind `protobuf:"varint,13,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"` // Target specific workload kinds
+ NamePattern *RegexPattern `protobuf:"bytes,14,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
+ AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
+ WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"` // Target specific workload kinds
+ // Match workloads with at least one container detected as one of these
+ // languages (e.g. "python", "go", "java"). ANY container matching is
+ // sufficient — containers do not all need to match.
+ LanguageFilter []string `protobuf:"bytes,17,rep,name=language_filter,json=languageFilter,proto3" json:"language_filter,omitempty"`
+ // Exact detected version strings (e.g. "3.11.4"). Only meaningful when
+ // language_filter is also set; ignored otherwise.
+ LanguageVersionFilter []string `protobuf:"bytes,18,rep,name=language_version_filter,json=languageVersionFilter,proto3" json:"language_version_filter,omitempty"`
+ NodeGroupNames []string `protobuf:"bytes,21,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // target workloads running on specific nodes
+ NamespaceNames []string `protobuf:"bytes,22,rep,name=namespace_names,json=namespaceNames,proto3" json:"namespace_names,omitempty"` // Target workloads in any of these namespaces by exact name (OR'd together; ANDed with other filter fields; no-op when empty)
+ NamespacePattern *RegexPattern `protobuf:"bytes,23,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ // Lifecycle status filter (overrides legacy show_deleted when set)
+ Status WorkloadStatusFilter `protobuf:"varint,30,opt,name=status,proto3,enum=api.v1.WorkloadStatusFilter" json:"status,omitempty"` // ACTIVE, DELETED, or BOTH
}
-func (x *KedaScaledObjectDetails) Reset() {
- *x = KedaScaledObjectDetails{}
+func (x *WorkloadFilters) Reset() {
+ *x = WorkloadFilters{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[107]
+ mi := &file_api_v1_common_proto_msgTypes[122]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KedaScaledObjectDetails) String() string {
+func (x *WorkloadFilters) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KedaScaledObjectDetails) ProtoMessage() {}
+func (*WorkloadFilters) ProtoMessage() {}
-func (x *KedaScaledObjectDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[107]
+func (x *WorkloadFilters) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[122]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11487,94 +13235,129 @@ func (x *KedaScaledObjectDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KedaScaledObjectDetails.ProtoReflect.Descriptor instead.
-func (*KedaScaledObjectDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{107}
+// Deprecated: Use WorkloadFilters.ProtoReflect.Descriptor instead.
+func (*WorkloadFilters) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{122}
}
-func (x *KedaScaledObjectDetails) GetTargetName() string {
+func (x *WorkloadFilters) GetNamespaceSelector() *LabelSelector {
if x != nil {
- return x.TargetName
+ return x.NamespaceSelector
}
- return ""
+ return nil
}
-func (x *KedaScaledObjectDetails) GetTargetKind() string {
+func (x *WorkloadFilters) GetWorkloadSelector() *LabelSelector {
if x != nil {
- return x.TargetKind
+ return x.WorkloadSelector
}
- return ""
+ return nil
}
-func (x *KedaScaledObjectDetails) GetMinReplicas() int32 {
+func (x *WorkloadFilters) GetKindFilter() []K8SObjectKind {
if x != nil {
- return x.MinReplicas
+ return x.KindFilter
}
- return 0
+ return nil
}
-func (x *KedaScaledObjectDetails) GetMaxReplicas() int32 {
+func (x *WorkloadFilters) GetNamePattern() *RegexPattern {
if x != nil {
- return x.MaxReplicas
+ return x.NamePattern
}
- return 0
+ return nil
}
-func (x *KedaScaledObjectDetails) GetCurrentReplicas() int32 {
+func (x *WorkloadFilters) GetAnnotationSelector() *LabelSelector {
if x != nil {
- return x.CurrentReplicas
+ return x.AnnotationSelector
}
- return 0
+ return nil
}
-func (x *KedaScaledObjectDetails) GetTriggers() []*KedaScaledObjectTrigger {
+func (x *WorkloadFilters) GetWorkloadNames() []string {
if x != nil {
- return x.Triggers
+ return x.WorkloadNames
}
return nil
}
-func (x *KedaScaledObjectDetails) GetConditions() []*KedaScaledObjectCondition {
+func (x *WorkloadFilters) GetLanguageFilter() []string {
if x != nil {
- return x.Conditions
+ return x.LanguageFilter
}
return nil
}
-func (x *KedaScaledObjectDetails) GetStatus() string {
+func (x *WorkloadFilters) GetLanguageVersionFilter() []string {
+ if x != nil {
+ return x.LanguageVersionFilter
+ }
+ return nil
+}
+
+func (x *WorkloadFilters) GetNodeGroupNames() []string {
+ if x != nil {
+ return x.NodeGroupNames
+ }
+ return nil
+}
+
+func (x *WorkloadFilters) GetNamespaceNames() []string {
+ if x != nil {
+ return x.NamespaceNames
+ }
+ return nil
+}
+
+func (x *WorkloadFilters) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+func (x *WorkloadFilters) GetStatus() WorkloadStatusFilter {
if x != nil {
return x.Status
}
- return ""
+ return WorkloadStatusFilter_WORKLOAD_STATUS_FILTER_UNSPECIFIED
}
-// KedaScaledObjectTrigger represents a scaling trigger
-type KedaScaledObjectTrigger struct {
+// PodDisruptionBudgetDetails contains detailed PodDisruptionBudget information
+type PodDisruptionBudgetDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Trigger type (e.g., "cpu", "memory", "prometheus")
- Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Trigger-specific metadata
+ MinAvailable int32 `protobuf:"varint,1,opt,name=min_available,json=minAvailable,proto3" json:"min_available,omitempty"` // Minimum number of pods that should be available
+ MaxUnavailable int32 `protobuf:"varint,2,opt,name=max_unavailable,json=maxUnavailable,proto3" json:"max_unavailable,omitempty"` // Maximum number of pods that can be unavailable
+ CurrentHealthy int32 `protobuf:"varint,3,opt,name=current_healthy,json=currentHealthy,proto3" json:"current_healthy,omitempty"` // Current number of healthy pods
+ DesiredHealthy int32 `protobuf:"varint,4,opt,name=desired_healthy,json=desiredHealthy,proto3" json:"desired_healthy,omitempty"` // Desired number of healthy pods
+ DisruptionsAllowed int32 `protobuf:"varint,5,opt,name=disruptions_allowed,json=disruptionsAllowed,proto3" json:"disruptions_allowed,omitempty"` // Number of disruptions currently allowed
+ ExpectedPods int32 `protobuf:"varint,6,opt,name=expected_pods,json=expectedPods,proto3" json:"expected_pods,omitempty"` // Expected number of pods
+ Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Healthy", "Disrupted", "Unknown"
+ SelectorLabels map[string]string `protobuf:"bytes,8,rep,name=selector_labels,json=selectorLabels,proto3" json:"selector_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Label selector for target pods
+ Conditions []*PodDisruptionBudgetCondition `protobuf:"bytes,9,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
}
-func (x *KedaScaledObjectTrigger) Reset() {
- *x = KedaScaledObjectTrigger{}
+func (x *PodDisruptionBudgetDetails) Reset() {
+ *x = PodDisruptionBudgetDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[108]
+ mi := &file_api_v1_common_proto_msgTypes[123]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KedaScaledObjectTrigger) String() string {
+func (x *PodDisruptionBudgetDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KedaScaledObjectTrigger) ProtoMessage() {}
+func (*PodDisruptionBudgetDetails) ProtoMessage() {}
-func (x *KedaScaledObjectTrigger) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[108]
+func (x *PodDisruptionBudgetDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[123]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11585,55 +13368,104 @@ func (x *KedaScaledObjectTrigger) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KedaScaledObjectTrigger.ProtoReflect.Descriptor instead.
-func (*KedaScaledObjectTrigger) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{108}
+// Deprecated: Use PodDisruptionBudgetDetails.ProtoReflect.Descriptor instead.
+func (*PodDisruptionBudgetDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{123}
}
-func (x *KedaScaledObjectTrigger) GetType() string {
+func (x *PodDisruptionBudgetDetails) GetMinAvailable() int32 {
if x != nil {
- return x.Type
+ return x.MinAvailable
+ }
+ return 0
+}
+
+func (x *PodDisruptionBudgetDetails) GetMaxUnavailable() int32 {
+ if x != nil {
+ return x.MaxUnavailable
+ }
+ return 0
+}
+
+func (x *PodDisruptionBudgetDetails) GetCurrentHealthy() int32 {
+ if x != nil {
+ return x.CurrentHealthy
+ }
+ return 0
+}
+
+func (x *PodDisruptionBudgetDetails) GetDesiredHealthy() int32 {
+ if x != nil {
+ return x.DesiredHealthy
+ }
+ return 0
+}
+
+func (x *PodDisruptionBudgetDetails) GetDisruptionsAllowed() int32 {
+ if x != nil {
+ return x.DisruptionsAllowed
+ }
+ return 0
+}
+
+func (x *PodDisruptionBudgetDetails) GetExpectedPods() int32 {
+ if x != nil {
+ return x.ExpectedPods
+ }
+ return 0
+}
+
+func (x *PodDisruptionBudgetDetails) GetStatus() string {
+ if x != nil {
+ return x.Status
}
return ""
}
-func (x *KedaScaledObjectTrigger) GetMetadata() map[string]string {
+func (x *PodDisruptionBudgetDetails) GetSelectorLabels() map[string]string {
if x != nil {
- return x.Metadata
+ return x.SelectorLabels
}
return nil
}
-// KedaScaledObjectCondition represents a condition of a KEDA ScaledObject
-type KedaScaledObjectCondition struct {
+func (x *PodDisruptionBudgetDetails) GetConditions() []*PodDisruptionBudgetCondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+// PodDisruptionBudgetCondition represents a condition of a PodDisruptionBudget
+type PodDisruptionBudgetCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "Ready", "Active")
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "DisruptionAllowed")
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *KedaScaledObjectCondition) Reset() {
- *x = KedaScaledObjectCondition{}
+func (x *PodDisruptionBudgetCondition) Reset() {
+ *x = PodDisruptionBudgetCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[109]
+ mi := &file_api_v1_common_proto_msgTypes[124]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KedaScaledObjectCondition) String() string {
+func (x *PodDisruptionBudgetCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KedaScaledObjectCondition) ProtoMessage() {}
+func (*PodDisruptionBudgetCondition) ProtoMessage() {}
-func (x *KedaScaledObjectCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[109]
+func (x *PodDisruptionBudgetCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[124]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11644,80 +13476,77 @@ func (x *KedaScaledObjectCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KedaScaledObjectCondition.ProtoReflect.Descriptor instead.
-func (*KedaScaledObjectCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{109}
+// Deprecated: Use PodDisruptionBudgetCondition.ProtoReflect.Descriptor instead.
+func (*PodDisruptionBudgetCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{124}
}
-func (x *KedaScaledObjectCondition) GetType() string {
+func (x *PodDisruptionBudgetCondition) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *KedaScaledObjectCondition) GetStatus() string {
+func (x *PodDisruptionBudgetCondition) GetStatus() string {
if x != nil {
return x.Status
}
return ""
}
-func (x *KedaScaledObjectCondition) GetReason() string {
+func (x *PodDisruptionBudgetCondition) GetReason() string {
if x != nil {
return x.Reason
}
return ""
}
-func (x *KedaScaledObjectCondition) GetMessage() string {
+func (x *PodDisruptionBudgetCondition) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
-func (x *KedaScaledObjectCondition) GetLastTransitionTime() int64 {
+func (x *PodDisruptionBudgetCondition) GetLastTransitionTime() int64 {
if x != nil {
return x.LastTransitionTime
}
return 0
}
-// KarpenterResourceDetails contains detailed Karpenter resource information
-type KarpenterResourceDetails struct {
+// ResourceQuotaDetails contains detailed ResourceQuota information
+type ResourceQuotaDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ResourceType string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` // Type of Karpenter resource (NodePool, NodeClaim, Provisioner)
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Ready", "Available", "Unknown"
- Conditions []*KarpenterResourceCondition `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
- Capacity *KarpenterCapacity `protobuf:"bytes,4,opt,name=capacity,proto3" json:"capacity,omitempty"` // Resource capacity (for NodePool/NodeClaim)
- Requirements []*KarpenterRequirement `protobuf:"bytes,5,rep,name=requirements,proto3" json:"requirements,omitempty"` // Instance requirements (for NodePool)
- NodeClassRef string `protobuf:"bytes,6,opt,name=node_class_ref,json=nodeClassRef,proto3" json:"node_class_ref,omitempty"` // Reference to NodeClass (for NodePool)
- NodeName string `protobuf:"bytes,7,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` // Associated node name (for NodeClaim)
- Limits map[string]string `protobuf:"bytes,8,rep,name=limits,proto3" json:"limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Resource limits (for Provisioner)
- KarpenterVersion string `protobuf:"bytes,9,opt,name=karpenter_version,json=karpenterVersion,proto3" json:"karpenter_version,omitempty"` // Karpenter version
+ HardLimits map[string]string `protobuf:"bytes,1,rep,name=hard_limits,json=hardLimits,proto3" json:"hard_limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Hard resource limits (e.g., "requests.cpu": "4", "requests.memory": "8Gi")
+ Used map[string]string `protobuf:"bytes,2,rep,name=used,proto3" json:"used,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Currently used resources
+ Scopes []string `protobuf:"bytes,3,rep,name=scopes,proto3" json:"scopes,omitempty"` // Quota scopes: ["BestEffort", "NotBestEffort", "NotTerminating", "Terminating"]
+ ScopeSelector map[string]string `protobuf:"bytes,4,rep,name=scope_selector,json=scopeSelector,proto3" json:"scope_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Scope selector match labels
+ Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Valid", "Invalid", "Unknown"
+ Conditions []*ResourceQuotaCondition `protobuf:"bytes,6,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
}
-func (x *KarpenterResourceDetails) Reset() {
- *x = KarpenterResourceDetails{}
+func (x *ResourceQuotaDetails) Reset() {
+ *x = ResourceQuotaDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[110]
+ mi := &file_api_v1_common_proto_msgTypes[125]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KarpenterResourceDetails) String() string {
+func (x *ResourceQuotaDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KarpenterResourceDetails) ProtoMessage() {}
+func (*ResourceQuotaDetails) ProtoMessage() {}
-func (x *KarpenterResourceDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[110]
+func (x *ResourceQuotaDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[125]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11728,104 +13557,83 @@ func (x *KarpenterResourceDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KarpenterResourceDetails.ProtoReflect.Descriptor instead.
-func (*KarpenterResourceDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{110}
-}
-
-func (x *KarpenterResourceDetails) GetResourceType() string {
- if x != nil {
- return x.ResourceType
- }
- return ""
-}
-
-func (x *KarpenterResourceDetails) GetStatus() string {
- if x != nil {
- return x.Status
- }
- return ""
+// Deprecated: Use ResourceQuotaDetails.ProtoReflect.Descriptor instead.
+func (*ResourceQuotaDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{125}
}
-func (x *KarpenterResourceDetails) GetConditions() []*KarpenterResourceCondition {
+func (x *ResourceQuotaDetails) GetHardLimits() map[string]string {
if x != nil {
- return x.Conditions
+ return x.HardLimits
}
return nil
}
-func (x *KarpenterResourceDetails) GetCapacity() *KarpenterCapacity {
+func (x *ResourceQuotaDetails) GetUsed() map[string]string {
if x != nil {
- return x.Capacity
+ return x.Used
}
return nil
}
-func (x *KarpenterResourceDetails) GetRequirements() []*KarpenterRequirement {
+func (x *ResourceQuotaDetails) GetScopes() []string {
if x != nil {
- return x.Requirements
+ return x.Scopes
}
return nil
}
-func (x *KarpenterResourceDetails) GetNodeClassRef() string {
+func (x *ResourceQuotaDetails) GetScopeSelector() map[string]string {
if x != nil {
- return x.NodeClassRef
+ return x.ScopeSelector
}
- return ""
+ return nil
}
-func (x *KarpenterResourceDetails) GetNodeName() string {
+func (x *ResourceQuotaDetails) GetStatus() string {
if x != nil {
- return x.NodeName
+ return x.Status
}
return ""
}
-func (x *KarpenterResourceDetails) GetLimits() map[string]string {
+func (x *ResourceQuotaDetails) GetConditions() []*ResourceQuotaCondition {
if x != nil {
- return x.Limits
+ return x.Conditions
}
return nil
}
-func (x *KarpenterResourceDetails) GetKarpenterVersion() string {
- if x != nil {
- return x.KarpenterVersion
- }
- return ""
-}
-
-// KarpenterResourceCondition represents a condition of a Karpenter resource
-type KarpenterResourceCondition struct {
+// ResourceQuotaCondition represents a condition of a ResourceQuota
+type ResourceQuotaCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "Ready", "Available")
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (typically not used in core/v1)
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
}
-func (x *KarpenterResourceCondition) Reset() {
- *x = KarpenterResourceCondition{}
+func (x *ResourceQuotaCondition) Reset() {
+ *x = ResourceQuotaCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[111]
+ mi := &file_api_v1_common_proto_msgTypes[126]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KarpenterResourceCondition) String() string {
+func (x *ResourceQuotaCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KarpenterResourceCondition) ProtoMessage() {}
+func (*ResourceQuotaCondition) ProtoMessage() {}
-func (x *KarpenterResourceCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[111]
+func (x *ResourceQuotaCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[126]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11836,74 +13644,78 @@ func (x *KarpenterResourceCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KarpenterResourceCondition.ProtoReflect.Descriptor instead.
-func (*KarpenterResourceCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{111}
+// Deprecated: Use ResourceQuotaCondition.ProtoReflect.Descriptor instead.
+func (*ResourceQuotaCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{126}
}
-func (x *KarpenterResourceCondition) GetType() string {
+func (x *ResourceQuotaCondition) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *KarpenterResourceCondition) GetStatus() string {
+func (x *ResourceQuotaCondition) GetStatus() string {
if x != nil {
return x.Status
}
return ""
}
-func (x *KarpenterResourceCondition) GetReason() string {
+func (x *ResourceQuotaCondition) GetReason() string {
if x != nil {
return x.Reason
}
return ""
}
-func (x *KarpenterResourceCondition) GetMessage() string {
+func (x *ResourceQuotaCondition) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
-func (x *KarpenterResourceCondition) GetLastTransitionTime() int64 {
+func (x *ResourceQuotaCondition) GetLastTransitionTime() int64 {
if x != nil {
return x.LastTransitionTime
}
return 0
}
-// KarpenterCapacity represents capacity information
-type KarpenterCapacity struct {
+// VolcanoJobDetails contains detailed VolcanoJob information for drill-down
+type VolcanoJobDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Cpu string `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"` // CPU capacity (e.g., "4")
- Memory string `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` // Memory capacity (e.g., "16Gi")
- Other map[string]string `protobuf:"bytes,3,rep,name=other,proto3" json:"other,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Other resource capacities
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
+ Conditions []*VolcanoJobCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // VolcanoJob conditions for debugging
+ Queue string `protobuf:"bytes,3,opt,name=queue,proto3" json:"queue,omitempty"` // Queue name for scheduling
+ MinAvailable int32 `protobuf:"varint,4,opt,name=min_available,json=minAvailable,proto3" json:"min_available,omitempty"` // Minimum available pods
+ SchedulePolicy string `protobuf:"bytes,5,opt,name=schedule_policy,json=schedulePolicy,proto3" json:"schedule_policy,omitempty"` // Schedule policy name
+ PriorityClass string `protobuf:"bytes,6,opt,name=priority_class,json=priorityClass,proto3" json:"priority_class,omitempty"` // Priority class name
+ Tasks []*VolcanoTask `protobuf:"bytes,7,rep,name=tasks,proto3" json:"tasks,omitempty"` // Tasks in the job
}
-func (x *KarpenterCapacity) Reset() {
- *x = KarpenterCapacity{}
+func (x *VolcanoJobDetails) Reset() {
+ *x = VolcanoJobDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[112]
+ mi := &file_api_v1_common_proto_msgTypes[127]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KarpenterCapacity) String() string {
+func (x *VolcanoJobDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KarpenterCapacity) ProtoMessage() {}
+func (*VolcanoJobDetails) ProtoMessage() {}
-func (x *KarpenterCapacity) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[112]
+func (x *VolcanoJobDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[127]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11914,60 +13726,90 @@ func (x *KarpenterCapacity) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KarpenterCapacity.ProtoReflect.Descriptor instead.
-func (*KarpenterCapacity) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{112}
+// Deprecated: Use VolcanoJobDetails.ProtoReflect.Descriptor instead.
+func (*VolcanoJobDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{127}
}
-func (x *KarpenterCapacity) GetCpu() string {
+func (x *VolcanoJobDetails) GetContainers() []*ContainerTemplate {
if x != nil {
- return x.Cpu
+ return x.Containers
+ }
+ return nil
+}
+
+func (x *VolcanoJobDetails) GetConditions() []*VolcanoJobCondition {
+ if x != nil {
+ return x.Conditions
+ }
+ return nil
+}
+
+func (x *VolcanoJobDetails) GetQueue() string {
+ if x != nil {
+ return x.Queue
}
return ""
}
-func (x *KarpenterCapacity) GetMemory() string {
+func (x *VolcanoJobDetails) GetMinAvailable() int32 {
if x != nil {
- return x.Memory
+ return x.MinAvailable
+ }
+ return 0
+}
+
+func (x *VolcanoJobDetails) GetSchedulePolicy() string {
+ if x != nil {
+ return x.SchedulePolicy
}
return ""
}
-func (x *KarpenterCapacity) GetOther() map[string]string {
+func (x *VolcanoJobDetails) GetPriorityClass() string {
if x != nil {
- return x.Other
+ return x.PriorityClass
+ }
+ return ""
+}
+
+func (x *VolcanoJobDetails) GetTasks() []*VolcanoTask {
+ if x != nil {
+ return x.Tasks
}
return nil
}
-// KarpenterRequirement represents an instance requirement
-type KarpenterRequirement struct {
+// VolcanoJobCondition represents a volcano job condition
+type VolcanoJobCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Requirement key (e.g., "node.kubernetes.io/instance-type")
- Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // Operator (e.g., "In", "NotIn", "Exists")
- Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Requirement values
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "Pending", "Running", "Completed", "Failed", etc.
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last time condition transitioned
}
-func (x *KarpenterRequirement) Reset() {
- *x = KarpenterRequirement{}
+func (x *VolcanoJobCondition) Reset() {
+ *x = VolcanoJobCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[113]
+ mi := &file_api_v1_common_proto_msgTypes[128]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KarpenterRequirement) String() string {
+func (x *VolcanoJobCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KarpenterRequirement) ProtoMessage() {}
+func (*VolcanoJobCondition) ProtoMessage() {}
-func (x *KarpenterRequirement) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[113]
+func (x *VolcanoJobCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[128]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11978,68 +13820,74 @@ func (x *KarpenterRequirement) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KarpenterRequirement.ProtoReflect.Descriptor instead.
-func (*KarpenterRequirement) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{113}
+// Deprecated: Use VolcanoJobCondition.ProtoReflect.Descriptor instead.
+func (*VolcanoJobCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{128}
}
-func (x *KarpenterRequirement) GetKey() string {
+func (x *VolcanoJobCondition) GetType() string {
if x != nil {
- return x.Key
+ return x.Type
}
return ""
}
-func (x *KarpenterRequirement) GetOperator() string {
+func (x *VolcanoJobCondition) GetStatus() string {
if x != nil {
- return x.Operator
+ return x.Status
}
return ""
}
-func (x *KarpenterRequirement) GetValues() []string {
+func (x *VolcanoJobCondition) GetReason() string {
if x != nil {
- return x.Values
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *VolcanoJobCondition) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *VolcanoJobCondition) GetLastTransitionTime() int64 {
+ if x != nil {
+ return x.LastTransitionTime
}
- return nil
+ return 0
}
-// WorkloadFilters provides optional filters for narrowing the GetWorkloads request.
-// All fields are optional. When multiple fields are provided, they are ANDed together.
-type WorkloadFilters struct {
+// VolcanoTask represents a task in a VolcanoJob
+type VolcanoTask struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Targeting criteria (AND logic between non-null fields)
- NamespaceSelector *LabelSelector `protobuf:"bytes,11,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"` // Target namespaces by labels
- WorkloadSelector *LabelSelector `protobuf:"bytes,12,opt,name=workload_selector,json=workloadSelector,proto3,oneof" json:"workload_selector,omitempty"` // Target workloads by labels
- KindFilter []K8SObjectKind `protobuf:"varint,13,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"` // Target specific workload kinds
- NamePattern *RegexPattern `protobuf:"bytes,14,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
- AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
- WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"` // Target specific workload kinds
- NodeGroupNames []string `protobuf:"bytes,21,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // target workloads running on specific nodes
- // Lifecycle status filter (overrides legacy show_deleted when set)
- Status WorkloadStatusFilter `protobuf:"varint,30,opt,name=status,proto3,enum=api.v1.WorkloadStatusFilter" json:"status,omitempty"` // ACTIVE, DELETED, or BOTH
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Task name
+ Replicas int32 `protobuf:"varint,2,opt,name=replicas,proto3" json:"replicas,omitempty"` // Number of replicas
+ Containers []*ContainerTemplate `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates
}
-func (x *WorkloadFilters) Reset() {
- *x = WorkloadFilters{}
+func (x *VolcanoTask) Reset() {
+ *x = VolcanoTask{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[114]
+ mi := &file_api_v1_common_proto_msgTypes[129]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadFilters) String() string {
+func (x *VolcanoTask) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadFilters) ProtoMessage() {}
+func (*VolcanoTask) ProtoMessage() {}
-func (x *WorkloadFilters) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[114]
+func (x *VolcanoTask) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[129]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12050,101 +13898,73 @@ func (x *WorkloadFilters) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadFilters.ProtoReflect.Descriptor instead.
-func (*WorkloadFilters) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{114}
-}
-
-func (x *WorkloadFilters) GetNamespaceSelector() *LabelSelector {
- if x != nil {
- return x.NamespaceSelector
- }
- return nil
-}
-
-func (x *WorkloadFilters) GetWorkloadSelector() *LabelSelector {
- if x != nil {
- return x.WorkloadSelector
- }
- return nil
-}
-
-func (x *WorkloadFilters) GetKindFilter() []K8SObjectKind {
- if x != nil {
- return x.KindFilter
- }
- return nil
-}
-
-func (x *WorkloadFilters) GetNamePattern() *RegexPattern {
- if x != nil {
- return x.NamePattern
- }
- return nil
+// Deprecated: Use VolcanoTask.ProtoReflect.Descriptor instead.
+func (*VolcanoTask) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{129}
}
-func (x *WorkloadFilters) GetAnnotationSelector() *LabelSelector {
+func (x *VolcanoTask) GetName() string {
if x != nil {
- return x.AnnotationSelector
+ return x.Name
}
- return nil
+ return ""
}
-func (x *WorkloadFilters) GetWorkloadNames() []string {
+func (x *VolcanoTask) GetReplicas() int32 {
if x != nil {
- return x.WorkloadNames
+ return x.Replicas
}
- return nil
+ return 0
}
-func (x *WorkloadFilters) GetNodeGroupNames() []string {
+func (x *VolcanoTask) GetContainers() []*ContainerTemplate {
if x != nil {
- return x.NodeGroupNames
+ return x.Containers
}
return nil
}
-func (x *WorkloadFilters) GetStatus() WorkloadStatusFilter {
- if x != nil {
- return x.Status
- }
- return WorkloadStatusFilter_WORKLOAD_STATUS_FILTER_UNSPECIFIED
-}
-
-// PodDisruptionBudgetDetails contains detailed PodDisruptionBudget information
-type PodDisruptionBudgetDetails struct {
+// SparkApplicationDetails contains detailed SparkApplication information for drill-down
+type SparkApplicationDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- MinAvailable int32 `protobuf:"varint,1,opt,name=min_available,json=minAvailable,proto3" json:"min_available,omitempty"` // Minimum number of pods that should be available
- MaxUnavailable int32 `protobuf:"varint,2,opt,name=max_unavailable,json=maxUnavailable,proto3" json:"max_unavailable,omitempty"` // Maximum number of pods that can be unavailable
- CurrentHealthy int32 `protobuf:"varint,3,opt,name=current_healthy,json=currentHealthy,proto3" json:"current_healthy,omitempty"` // Current number of healthy pods
- DesiredHealthy int32 `protobuf:"varint,4,opt,name=desired_healthy,json=desiredHealthy,proto3" json:"desired_healthy,omitempty"` // Desired number of healthy pods
- DisruptionsAllowed int32 `protobuf:"varint,5,opt,name=disruptions_allowed,json=disruptionsAllowed,proto3" json:"disruptions_allowed,omitempty"` // Number of disruptions currently allowed
- ExpectedPods int32 `protobuf:"varint,6,opt,name=expected_pods,json=expectedPods,proto3" json:"expected_pods,omitempty"` // Expected number of pods
- Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Healthy", "Disrupted", "Unknown"
- SelectorLabels map[string]string `protobuf:"bytes,8,rep,name=selector_labels,json=selectorLabels,proto3" json:"selector_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Label selector for target pods
- Conditions []*PodDisruptionBudgetCondition `protobuf:"bytes,9,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
+ Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from driver/executor specs
+ SparkVersion string `protobuf:"bytes,2,opt,name=spark_version,json=sparkVersion,proto3" json:"spark_version,omitempty"` // Spark version
+ ApplicationType string `protobuf:"bytes,3,opt,name=application_type,json=applicationType,proto3" json:"application_type,omitempty"` // Java, Scala, Python, R
+ DeployMode string `protobuf:"bytes,4,opt,name=deploy_mode,json=deployMode,proto3" json:"deploy_mode,omitempty"` // cluster, client, in-cluster-client
+ MainClass string `protobuf:"bytes,5,opt,name=main_class,json=mainClass,proto3" json:"main_class,omitempty"` // Main class for Java/Scala applications
+ MainApplicationFile string `protobuf:"bytes,6,opt,name=main_application_file,json=mainApplicationFile,proto3" json:"main_application_file,omitempty"` // Main application file path
+ Arguments []string `protobuf:"bytes,7,rep,name=arguments,proto3" json:"arguments,omitempty"` // Application arguments
+ SparkDriverInfo *SparkDriverInfo `protobuf:"bytes,8,opt,name=spark_driver_info,json=sparkDriverInfo,proto3" json:"spark_driver_info,omitempty"` // Driver information
+ ExecutorInstances int32 `protobuf:"varint,9,opt,name=executor_instances,json=executorInstances,proto3" json:"executor_instances,omitempty"` // Number of executor instances (from spec.executor.instances)
+ ExecutorsReady int32 `protobuf:"varint,16,opt,name=executors_ready,json=executorsReady,proto3" json:"executors_ready,omitempty"` // Number of RUNNING executors (from status.executorState); only meaningful when app is running
+ ApplicationState string `protobuf:"bytes,10,opt,name=application_state,json=applicationState,proto3" json:"application_state,omitempty"` // Application state: SUBMITTED, RUNNING, COMPLETED, FAILED, etc.
+ SparkApplicationId string `protobuf:"bytes,11,opt,name=spark_application_id,json=sparkApplicationId,proto3" json:"spark_application_id,omitempty"` // Spark application ID
+ SubmissionId string `protobuf:"bytes,12,opt,name=submission_id,json=submissionId,proto3" json:"submission_id,omitempty"` // Submission ID
+ Suspended bool `protobuf:"varint,13,opt,name=suspended,proto3" json:"suspended,omitempty"` // Whether application is suspended
+ RestartPolicy *SparkRestartPolicyInfo `protobuf:"bytes,14,opt,name=restart_policy,json=restartPolicy,proto3" json:"restart_policy,omitempty"` // Restart policy information
+ DynamicAllocation *SparkDynamicAllocationInfo `protobuf:"bytes,15,opt,name=dynamic_allocation,json=dynamicAllocation,proto3" json:"dynamic_allocation,omitempty"` // Dynamic allocation configuration
}
-func (x *PodDisruptionBudgetDetails) Reset() {
- *x = PodDisruptionBudgetDetails{}
+func (x *SparkApplicationDetails) Reset() {
+ *x = SparkApplicationDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[115]
+ mi := &file_api_v1_common_proto_msgTypes[130]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PodDisruptionBudgetDetails) String() string {
+func (x *SparkApplicationDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PodDisruptionBudgetDetails) ProtoMessage() {}
+func (*SparkApplicationDetails) ProtoMessage() {}
-func (x *PodDisruptionBudgetDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[115]
+func (x *SparkApplicationDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[130]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12155,185 +13975,157 @@ func (x *PodDisruptionBudgetDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PodDisruptionBudgetDetails.ProtoReflect.Descriptor instead.
-func (*PodDisruptionBudgetDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{115}
-}
-
-func (x *PodDisruptionBudgetDetails) GetMinAvailable() int32 {
- if x != nil {
- return x.MinAvailable
- }
- return 0
+// Deprecated: Use SparkApplicationDetails.ProtoReflect.Descriptor instead.
+func (*SparkApplicationDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{130}
}
-func (x *PodDisruptionBudgetDetails) GetMaxUnavailable() int32 {
+func (x *SparkApplicationDetails) GetContainers() []*ContainerTemplate {
if x != nil {
- return x.MaxUnavailable
+ return x.Containers
}
- return 0
+ return nil
}
-func (x *PodDisruptionBudgetDetails) GetCurrentHealthy() int32 {
+func (x *SparkApplicationDetails) GetSparkVersion() string {
if x != nil {
- return x.CurrentHealthy
+ return x.SparkVersion
}
- return 0
+ return ""
}
-func (x *PodDisruptionBudgetDetails) GetDesiredHealthy() int32 {
+func (x *SparkApplicationDetails) GetApplicationType() string {
if x != nil {
- return x.DesiredHealthy
+ return x.ApplicationType
}
- return 0
+ return ""
}
-func (x *PodDisruptionBudgetDetails) GetDisruptionsAllowed() int32 {
+func (x *SparkApplicationDetails) GetDeployMode() string {
if x != nil {
- return x.DisruptionsAllowed
+ return x.DeployMode
}
- return 0
+ return ""
}
-func (x *PodDisruptionBudgetDetails) GetExpectedPods() int32 {
+func (x *SparkApplicationDetails) GetMainClass() string {
if x != nil {
- return x.ExpectedPods
+ return x.MainClass
}
- return 0
+ return ""
}
-func (x *PodDisruptionBudgetDetails) GetStatus() string {
+func (x *SparkApplicationDetails) GetMainApplicationFile() string {
if x != nil {
- return x.Status
+ return x.MainApplicationFile
}
return ""
}
-func (x *PodDisruptionBudgetDetails) GetSelectorLabels() map[string]string {
+func (x *SparkApplicationDetails) GetArguments() []string {
if x != nil {
- return x.SelectorLabels
+ return x.Arguments
}
return nil
}
-func (x *PodDisruptionBudgetDetails) GetConditions() []*PodDisruptionBudgetCondition {
+func (x *SparkApplicationDetails) GetSparkDriverInfo() *SparkDriverInfo {
if x != nil {
- return x.Conditions
+ return x.SparkDriverInfo
}
return nil
}
-// PodDisruptionBudgetCondition represents a condition of a PodDisruptionBudget
-type PodDisruptionBudgetCondition struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (e.g., "DisruptionAllowed")
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
-}
-
-func (x *PodDisruptionBudgetCondition) Reset() {
- *x = PodDisruptionBudgetCondition{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[116]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *SparkApplicationDetails) GetExecutorInstances() int32 {
+ if x != nil {
+ return x.ExecutorInstances
}
+ return 0
}
-func (x *PodDisruptionBudgetCondition) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PodDisruptionBudgetCondition) ProtoMessage() {}
-
-func (x *PodDisruptionBudgetCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[116]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *SparkApplicationDetails) GetExecutorsReady() int32 {
+ if x != nil {
+ return x.ExecutorsReady
}
- return mi.MessageOf(x)
+ return 0
}
-// Deprecated: Use PodDisruptionBudgetCondition.ProtoReflect.Descriptor instead.
-func (*PodDisruptionBudgetCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{116}
+func (x *SparkApplicationDetails) GetApplicationState() string {
+ if x != nil {
+ return x.ApplicationState
+ }
+ return ""
}
-func (x *PodDisruptionBudgetCondition) GetType() string {
+func (x *SparkApplicationDetails) GetSparkApplicationId() string {
if x != nil {
- return x.Type
+ return x.SparkApplicationId
}
return ""
}
-func (x *PodDisruptionBudgetCondition) GetStatus() string {
+func (x *SparkApplicationDetails) GetSubmissionId() string {
if x != nil {
- return x.Status
+ return x.SubmissionId
}
return ""
}
-func (x *PodDisruptionBudgetCondition) GetReason() string {
+func (x *SparkApplicationDetails) GetSuspended() bool {
if x != nil {
- return x.Reason
+ return x.Suspended
}
- return ""
+ return false
}
-func (x *PodDisruptionBudgetCondition) GetMessage() string {
+func (x *SparkApplicationDetails) GetRestartPolicy() *SparkRestartPolicyInfo {
if x != nil {
- return x.Message
+ return x.RestartPolicy
}
- return ""
+ return nil
}
-func (x *PodDisruptionBudgetCondition) GetLastTransitionTime() int64 {
+func (x *SparkApplicationDetails) GetDynamicAllocation() *SparkDynamicAllocationInfo {
if x != nil {
- return x.LastTransitionTime
+ return x.DynamicAllocation
}
- return 0
+ return nil
}
-// ResourceQuotaDetails contains detailed ResourceQuota information
-type ResourceQuotaDetails struct {
+// SparkDriverInfo represents information about the Spark driver
+type SparkDriverInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- HardLimits map[string]string `protobuf:"bytes,1,rep,name=hard_limits,json=hardLimits,proto3" json:"hard_limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Hard resource limits (e.g., "requests.cpu": "4", "requests.memory": "8Gi")
- Used map[string]string `protobuf:"bytes,2,rep,name=used,proto3" json:"used,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Currently used resources
- Scopes []string `protobuf:"bytes,3,rep,name=scopes,proto3" json:"scopes,omitempty"` // Quota scopes: ["BestEffort", "NotBestEffort", "NotTerminating", "Terminating"]
- ScopeSelector map[string]string `protobuf:"bytes,4,rep,name=scope_selector,json=scopeSelector,proto3" json:"scope_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Scope selector match labels
- Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` // Overall status: "Valid", "Invalid", "Unknown"
- Conditions []*ResourceQuotaCondition `protobuf:"bytes,6,rep,name=conditions,proto3" json:"conditions,omitempty"` // Current conditions
+ PodName string `protobuf:"bytes,1,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` // Driver pod name
+ WebUiServiceName string `protobuf:"bytes,2,opt,name=web_ui_service_name,json=webUiServiceName,proto3" json:"web_ui_service_name,omitempty"` // Web UI service name
+ WebUiAddress string `protobuf:"bytes,3,opt,name=web_ui_address,json=webUiAddress,proto3" json:"web_ui_address,omitempty"` // Web UI address
+ WebUiPort int32 `protobuf:"varint,4,opt,name=web_ui_port,json=webUiPort,proto3" json:"web_ui_port,omitempty"` // Web UI port
+ WebUiIngressName string `protobuf:"bytes,5,opt,name=web_ui_ingress_name,json=webUiIngressName,proto3" json:"web_ui_ingress_name,omitempty"` // Web UI ingress name (if configured)
+ WebUiIngressAddress string `protobuf:"bytes,6,opt,name=web_ui_ingress_address,json=webUiIngressAddress,proto3" json:"web_ui_ingress_address,omitempty"` // Web UI ingress address (if configured)
+ Cores string `protobuf:"bytes,7,opt,name=cores,proto3" json:"cores,omitempty"` // Driver cores
+ Memory string `protobuf:"bytes,8,opt,name=memory,proto3" json:"memory,omitempty"` // Driver memory
+ ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` // Service account used by driver
}
-func (x *ResourceQuotaDetails) Reset() {
- *x = ResourceQuotaDetails{}
+func (x *SparkDriverInfo) Reset() {
+ *x = SparkDriverInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[117]
+ mi := &file_api_v1_common_proto_msgTypes[131]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceQuotaDetails) String() string {
+func (x *SparkDriverInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceQuotaDetails) ProtoMessage() {}
+func (*SparkDriverInfo) ProtoMessage() {}
-func (x *ResourceQuotaDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[117]
+func (x *SparkDriverInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[131]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12344,83 +14136,104 @@ func (x *ResourceQuotaDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceQuotaDetails.ProtoReflect.Descriptor instead.
-func (*ResourceQuotaDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{117}
+// Deprecated: Use SparkDriverInfo.ProtoReflect.Descriptor instead.
+func (*SparkDriverInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{131}
}
-func (x *ResourceQuotaDetails) GetHardLimits() map[string]string {
+func (x *SparkDriverInfo) GetPodName() string {
if x != nil {
- return x.HardLimits
+ return x.PodName
}
- return nil
+ return ""
}
-func (x *ResourceQuotaDetails) GetUsed() map[string]string {
+func (x *SparkDriverInfo) GetWebUiServiceName() string {
if x != nil {
- return x.Used
+ return x.WebUiServiceName
}
- return nil
+ return ""
}
-func (x *ResourceQuotaDetails) GetScopes() []string {
+func (x *SparkDriverInfo) GetWebUiAddress() string {
if x != nil {
- return x.Scopes
+ return x.WebUiAddress
}
- return nil
+ return ""
}
-func (x *ResourceQuotaDetails) GetScopeSelector() map[string]string {
+func (x *SparkDriverInfo) GetWebUiPort() int32 {
if x != nil {
- return x.ScopeSelector
+ return x.WebUiPort
}
- return nil
+ return 0
}
-func (x *ResourceQuotaDetails) GetStatus() string {
+func (x *SparkDriverInfo) GetWebUiIngressName() string {
if x != nil {
- return x.Status
+ return x.WebUiIngressName
}
return ""
}
-func (x *ResourceQuotaDetails) GetConditions() []*ResourceQuotaCondition {
+func (x *SparkDriverInfo) GetWebUiIngressAddress() string {
if x != nil {
- return x.Conditions
+ return x.WebUiIngressAddress
}
- return nil
+ return ""
}
-// ResourceQuotaCondition represents a condition of a ResourceQuota
-type ResourceQuotaCondition struct {
+func (x *SparkDriverInfo) GetCores() string {
+ if x != nil {
+ return x.Cores
+ }
+ return ""
+}
+
+func (x *SparkDriverInfo) GetMemory() string {
+ if x != nil {
+ return x.Memory
+ }
+ return ""
+}
+
+func (x *SparkDriverInfo) GetServiceAccount() string {
+ if x != nil {
+ return x.ServiceAccount
+ }
+ return ""
+}
+
+// SparkRestartPolicyInfo represents restart policy information
+type SparkRestartPolicyInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Condition type (typically not used in core/v1)
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Condition status: "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last transition time
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Always, OnFailure, Never
+ OnFailureRetries int32 `protobuf:"varint,2,opt,name=on_failure_retries,json=onFailureRetries,proto3" json:"on_failure_retries,omitempty"` // Number of retries on failure
+ OnFailureRetryInterval int64 `protobuf:"varint,3,opt,name=on_failure_retry_interval,json=onFailureRetryInterval,proto3" json:"on_failure_retry_interval,omitempty"` // Retry interval in seconds
+ OnSubmissionFailureRetries int32 `protobuf:"varint,4,opt,name=on_submission_failure_retries,json=onSubmissionFailureRetries,proto3" json:"on_submission_failure_retries,omitempty"` // Number of retries on submission failure
+ OnSubmissionFailureRetryInterval int64 `protobuf:"varint,5,opt,name=on_submission_failure_retry_interval,json=onSubmissionFailureRetryInterval,proto3" json:"on_submission_failure_retry_interval,omitempty"` // Submission retry interval in seconds
}
-func (x *ResourceQuotaCondition) Reset() {
- *x = ResourceQuotaCondition{}
+func (x *SparkRestartPolicyInfo) Reset() {
+ *x = SparkRestartPolicyInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[118]
+ mi := &file_api_v1_common_proto_msgTypes[132]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceQuotaCondition) String() string {
+func (x *SparkRestartPolicyInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceQuotaCondition) ProtoMessage() {}
+func (*SparkRestartPolicyInfo) ProtoMessage() {}
-func (x *ResourceQuotaCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[118]
+func (x *SparkRestartPolicyInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[132]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12431,78 +14244,77 @@ func (x *ResourceQuotaCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceQuotaCondition.ProtoReflect.Descriptor instead.
-func (*ResourceQuotaCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{118}
+// Deprecated: Use SparkRestartPolicyInfo.ProtoReflect.Descriptor instead.
+func (*SparkRestartPolicyInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{132}
}
-func (x *ResourceQuotaCondition) GetType() string {
+func (x *SparkRestartPolicyInfo) GetType() string {
if x != nil {
return x.Type
}
return ""
}
-func (x *ResourceQuotaCondition) GetStatus() string {
+func (x *SparkRestartPolicyInfo) GetOnFailureRetries() int32 {
if x != nil {
- return x.Status
+ return x.OnFailureRetries
}
- return ""
+ return 0
}
-func (x *ResourceQuotaCondition) GetReason() string {
+func (x *SparkRestartPolicyInfo) GetOnFailureRetryInterval() int64 {
if x != nil {
- return x.Reason
+ return x.OnFailureRetryInterval
}
- return ""
+ return 0
}
-func (x *ResourceQuotaCondition) GetMessage() string {
+func (x *SparkRestartPolicyInfo) GetOnSubmissionFailureRetries() int32 {
if x != nil {
- return x.Message
+ return x.OnSubmissionFailureRetries
}
- return ""
+ return 0
}
-func (x *ResourceQuotaCondition) GetLastTransitionTime() int64 {
+func (x *SparkRestartPolicyInfo) GetOnSubmissionFailureRetryInterval() int64 {
if x != nil {
- return x.LastTransitionTime
+ return x.OnSubmissionFailureRetryInterval
}
return 0
}
-// VolcanoJobDetails contains detailed VolcanoJob information for drill-down
-type VolcanoJobDetails struct {
+// SparkDynamicAllocationInfo represents dynamic allocation configuration
+type SparkDynamicAllocationInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from pod spec
- Conditions []*VolcanoJobCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` // VolcanoJob conditions for debugging
- Queue string `protobuf:"bytes,3,opt,name=queue,proto3" json:"queue,omitempty"` // Queue name for scheduling
- MinAvailable int32 `protobuf:"varint,4,opt,name=min_available,json=minAvailable,proto3" json:"min_available,omitempty"` // Minimum available pods
- SchedulePolicy string `protobuf:"bytes,5,opt,name=schedule_policy,json=schedulePolicy,proto3" json:"schedule_policy,omitempty"` // Schedule policy name
- PriorityClass string `protobuf:"bytes,6,opt,name=priority_class,json=priorityClass,proto3" json:"priority_class,omitempty"` // Priority class name
- Tasks []*VolcanoTask `protobuf:"bytes,7,rep,name=tasks,proto3" json:"tasks,omitempty"` // Tasks in the job
+ Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` // Whether dynamic allocation is enabled
+ InitialExecutors int32 `protobuf:"varint,2,opt,name=initial_executors,json=initialExecutors,proto3" json:"initial_executors,omitempty"` // Initial number of executors
+ MinExecutors int32 `protobuf:"varint,3,opt,name=min_executors,json=minExecutors,proto3" json:"min_executors,omitempty"` // Minimum number of executors
+ MaxExecutors int32 `protobuf:"varint,4,opt,name=max_executors,json=maxExecutors,proto3" json:"max_executors,omitempty"` // Maximum number of executors
+ ShuffleTrackingEnabled bool `protobuf:"varint,5,opt,name=shuffle_tracking_enabled,json=shuffleTrackingEnabled,proto3" json:"shuffle_tracking_enabled,omitempty"` // Whether shuffle tracking is enabled
+ ShuffleTrackingTimeout int64 `protobuf:"varint,6,opt,name=shuffle_tracking_timeout,json=shuffleTrackingTimeout,proto3" json:"shuffle_tracking_timeout,omitempty"` // Shuffle tracking timeout in milliseconds
}
-func (x *VolcanoJobDetails) Reset() {
- *x = VolcanoJobDetails{}
+func (x *SparkDynamicAllocationInfo) Reset() {
+ *x = SparkDynamicAllocationInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[119]
+ mi := &file_api_v1_common_proto_msgTypes[133]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VolcanoJobDetails) String() string {
+func (x *SparkDynamicAllocationInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VolcanoJobDetails) ProtoMessage() {}
+func (*SparkDynamicAllocationInfo) ProtoMessage() {}
-func (x *VolcanoJobDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[119]
+func (x *SparkDynamicAllocationInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[133]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12513,90 +14325,93 @@ func (x *VolcanoJobDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VolcanoJobDetails.ProtoReflect.Descriptor instead.
-func (*VolcanoJobDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{119}
-}
-
-func (x *VolcanoJobDetails) GetContainers() []*ContainerTemplate {
- if x != nil {
- return x.Containers
- }
- return nil
+// Deprecated: Use SparkDynamicAllocationInfo.ProtoReflect.Descriptor instead.
+func (*SparkDynamicAllocationInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{133}
}
-func (x *VolcanoJobDetails) GetConditions() []*VolcanoJobCondition {
+func (x *SparkDynamicAllocationInfo) GetEnabled() bool {
if x != nil {
- return x.Conditions
+ return x.Enabled
}
- return nil
+ return false
}
-func (x *VolcanoJobDetails) GetQueue() string {
+func (x *SparkDynamicAllocationInfo) GetInitialExecutors() int32 {
if x != nil {
- return x.Queue
+ return x.InitialExecutors
}
- return ""
+ return 0
}
-func (x *VolcanoJobDetails) GetMinAvailable() int32 {
+func (x *SparkDynamicAllocationInfo) GetMinExecutors() int32 {
if x != nil {
- return x.MinAvailable
+ return x.MinExecutors
}
return 0
}
-func (x *VolcanoJobDetails) GetSchedulePolicy() string {
+func (x *SparkDynamicAllocationInfo) GetMaxExecutors() int32 {
if x != nil {
- return x.SchedulePolicy
+ return x.MaxExecutors
}
- return ""
+ return 0
}
-func (x *VolcanoJobDetails) GetPriorityClass() string {
+func (x *SparkDynamicAllocationInfo) GetShuffleTrackingEnabled() bool {
if x != nil {
- return x.PriorityClass
+ return x.ShuffleTrackingEnabled
}
- return ""
+ return false
}
-func (x *VolcanoJobDetails) GetTasks() []*VolcanoTask {
+func (x *SparkDynamicAllocationInfo) GetShuffleTrackingTimeout() int64 {
if x != nil {
- return x.Tasks
+ return x.ShuffleTrackingTimeout
}
- return nil
+ return 0
}
-// VolcanoJobCondition represents a volcano job condition
-type VolcanoJobCondition struct {
+// ScheduledSparkApplicationDetails contains detailed ScheduledSparkApplication information for drill-down
+type ScheduledSparkApplicationDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "Pending", "Running", "Completed", "Failed", etc.
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // "True", "False", "Unknown"
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for the condition
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
- LastTransitionTime int64 `protobuf:"varint,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` // Last time condition transitioned
+ Schedule string `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` // Cron schedule expression (e.g., "@every 15m", "0 * * * *")
+ TimeZone string `protobuf:"bytes,2,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"` // Time zone for schedule (e.g., "UTC", "America/New_York")
+ Suspended bool `protobuf:"varint,3,opt,name=suspended,proto3" json:"suspended,omitempty"` // Whether the schedule is suspended
+ ConcurrencyPolicy string `protobuf:"bytes,4,opt,name=concurrency_policy,json=concurrencyPolicy,proto3" json:"concurrency_policy,omitempty"` // Allow, Forbid, Replace
+ SuccessfulRunHistoryLimit int32 `protobuf:"varint,5,opt,name=successful_run_history_limit,json=successfulRunHistoryLimit,proto3" json:"successful_run_history_limit,omitempty"` // Number of successful runs to keep
+ FailedRunHistoryLimit int32 `protobuf:"varint,6,opt,name=failed_run_history_limit,json=failedRunHistoryLimit,proto3" json:"failed_run_history_limit,omitempty"` // Number of failed runs to keep
+ ScheduleState string `protobuf:"bytes,7,opt,name=schedule_state,json=scheduleState,proto3" json:"schedule_state,omitempty"` // Current state: Scheduled, Validating, FailedValidation
+ LastRunName string `protobuf:"bytes,8,opt,name=last_run_name,json=lastRunName,proto3" json:"last_run_name,omitempty"` // Name of the last SparkApplication created
+ LastRun *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_run,json=lastRun,proto3" json:"last_run,omitempty"` // Time of last run
+ NextRun *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=next_run,json=nextRun,proto3" json:"next_run,omitempty"` // Time of next scheduled run
+ PastSuccessfulRunNames []string `protobuf:"bytes,11,rep,name=past_successful_run_names,json=pastSuccessfulRunNames,proto3" json:"past_successful_run_names,omitempty"` // Names of past successful runs
+ PastFailedRunNames []string `protobuf:"bytes,12,rep,name=past_failed_run_names,json=pastFailedRunNames,proto3" json:"past_failed_run_names,omitempty"` // Names of past failed runs
+ Reason string `protobuf:"bytes,13,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for current schedule state
+ // Template fields (inherited from SparkApplication)
+ TemplateDetails *SparkApplicationDetails `protobuf:"bytes,14,opt,name=template_details,json=templateDetails,proto3" json:"template_details,omitempty"` // Details from the SparkApplication template
}
-func (x *VolcanoJobCondition) Reset() {
- *x = VolcanoJobCondition{}
+func (x *ScheduledSparkApplicationDetails) Reset() {
+ *x = ScheduledSparkApplicationDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[120]
+ mi := &file_api_v1_common_proto_msgTypes[134]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *VolcanoJobCondition) String() string {
+func (x *ScheduledSparkApplicationDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*VolcanoJobCondition) ProtoMessage() {}
+func (*ScheduledSparkApplicationDetails) ProtoMessage() {}
-func (x *VolcanoJobCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[120]
+func (x *ScheduledSparkApplicationDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[134]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12607,151 +14422,140 @@ func (x *VolcanoJobCondition) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use VolcanoJobCondition.ProtoReflect.Descriptor instead.
-func (*VolcanoJobCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{120}
+// Deprecated: Use ScheduledSparkApplicationDetails.ProtoReflect.Descriptor instead.
+func (*ScheduledSparkApplicationDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{134}
}
-func (x *VolcanoJobCondition) GetType() string {
+func (x *ScheduledSparkApplicationDetails) GetSchedule() string {
if x != nil {
- return x.Type
+ return x.Schedule
}
return ""
}
-func (x *VolcanoJobCondition) GetStatus() string {
+func (x *ScheduledSparkApplicationDetails) GetTimeZone() string {
if x != nil {
- return x.Status
+ return x.TimeZone
}
return ""
}
-func (x *VolcanoJobCondition) GetReason() string {
+func (x *ScheduledSparkApplicationDetails) GetSuspended() bool {
if x != nil {
- return x.Reason
+ return x.Suspended
}
- return ""
+ return false
}
-func (x *VolcanoJobCondition) GetMessage() string {
+func (x *ScheduledSparkApplicationDetails) GetConcurrencyPolicy() string {
if x != nil {
- return x.Message
+ return x.ConcurrencyPolicy
}
return ""
}
-func (x *VolcanoJobCondition) GetLastTransitionTime() int64 {
+func (x *ScheduledSparkApplicationDetails) GetSuccessfulRunHistoryLimit() int32 {
if x != nil {
- return x.LastTransitionTime
+ return x.SuccessfulRunHistoryLimit
}
return 0
}
-// VolcanoTask represents a task in a VolcanoJob
-type VolcanoTask struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Task name
- Replicas int32 `protobuf:"varint,2,opt,name=replicas,proto3" json:"replicas,omitempty"` // Number of replicas
- Containers []*ContainerTemplate `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates
+func (x *ScheduledSparkApplicationDetails) GetFailedRunHistoryLimit() int32 {
+ if x != nil {
+ return x.FailedRunHistoryLimit
+ }
+ return 0
}
-func (x *VolcanoTask) Reset() {
- *x = VolcanoTask{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[121]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *ScheduledSparkApplicationDetails) GetScheduleState() string {
+ if x != nil {
+ return x.ScheduleState
}
+ return ""
}
-func (x *VolcanoTask) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *ScheduledSparkApplicationDetails) GetLastRunName() string {
+ if x != nil {
+ return x.LastRunName
+ }
+ return ""
}
-func (*VolcanoTask) ProtoMessage() {}
+func (x *ScheduledSparkApplicationDetails) GetLastRun() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastRun
+ }
+ return nil
+}
-func (x *VolcanoTask) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[121]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *ScheduledSparkApplicationDetails) GetNextRun() *timestamppb.Timestamp {
+ if x != nil {
+ return x.NextRun
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use VolcanoTask.ProtoReflect.Descriptor instead.
-func (*VolcanoTask) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{121}
+func (x *ScheduledSparkApplicationDetails) GetPastSuccessfulRunNames() []string {
+ if x != nil {
+ return x.PastSuccessfulRunNames
+ }
+ return nil
}
-func (x *VolcanoTask) GetName() string {
+func (x *ScheduledSparkApplicationDetails) GetPastFailedRunNames() []string {
if x != nil {
- return x.Name
+ return x.PastFailedRunNames
}
- return ""
+ return nil
}
-func (x *VolcanoTask) GetReplicas() int32 {
+func (x *ScheduledSparkApplicationDetails) GetReason() string {
if x != nil {
- return x.Replicas
+ return x.Reason
}
- return 0
+ return ""
}
-func (x *VolcanoTask) GetContainers() []*ContainerTemplate {
+func (x *ScheduledSparkApplicationDetails) GetTemplateDetails() *SparkApplicationDetails {
if x != nil {
- return x.Containers
+ return x.TemplateDetails
}
return nil
}
-// SparkApplicationDetails contains detailed SparkApplication information for drill-down
-type SparkApplicationDetails struct {
+// KyvernoPolicyDetails contains detailed Kyverno Policy/ClusterPolicy information for drill-down
+type KyvernoPolicyDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTemplate `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` // Container templates from driver/executor specs
- SparkVersion string `protobuf:"bytes,2,opt,name=spark_version,json=sparkVersion,proto3" json:"spark_version,omitempty"` // Spark version
- ApplicationType string `protobuf:"bytes,3,opt,name=application_type,json=applicationType,proto3" json:"application_type,omitempty"` // Java, Scala, Python, R
- DeployMode string `protobuf:"bytes,4,opt,name=deploy_mode,json=deployMode,proto3" json:"deploy_mode,omitempty"` // cluster, client, in-cluster-client
- MainClass string `protobuf:"bytes,5,opt,name=main_class,json=mainClass,proto3" json:"main_class,omitempty"` // Main class for Java/Scala applications
- MainApplicationFile string `protobuf:"bytes,6,opt,name=main_application_file,json=mainApplicationFile,proto3" json:"main_application_file,omitempty"` // Main application file path
- Arguments []string `protobuf:"bytes,7,rep,name=arguments,proto3" json:"arguments,omitempty"` // Application arguments
- SparkDriverInfo *SparkDriverInfo `protobuf:"bytes,8,opt,name=spark_driver_info,json=sparkDriverInfo,proto3" json:"spark_driver_info,omitempty"` // Driver information
- ExecutorInstances int32 `protobuf:"varint,9,opt,name=executor_instances,json=executorInstances,proto3" json:"executor_instances,omitempty"` // Number of executor instances (from spec.executor.instances)
- ExecutorsReady int32 `protobuf:"varint,16,opt,name=executors_ready,json=executorsReady,proto3" json:"executors_ready,omitempty"` // Number of RUNNING executors (from status.executorState); only meaningful when app is running
- ApplicationState string `protobuf:"bytes,10,opt,name=application_state,json=applicationState,proto3" json:"application_state,omitempty"` // Application state: SUBMITTED, RUNNING, COMPLETED, FAILED, etc.
- SparkApplicationId string `protobuf:"bytes,11,opt,name=spark_application_id,json=sparkApplicationId,proto3" json:"spark_application_id,omitempty"` // Spark application ID
- SubmissionId string `protobuf:"bytes,12,opt,name=submission_id,json=submissionId,proto3" json:"submission_id,omitempty"` // Submission ID
- Suspended bool `protobuf:"varint,13,opt,name=suspended,proto3" json:"suspended,omitempty"` // Whether application is suspended
- RestartPolicy *SparkRestartPolicyInfo `protobuf:"bytes,14,opt,name=restart_policy,json=restartPolicy,proto3" json:"restart_policy,omitempty"` // Restart policy information
- DynamicAllocation *SparkDynamicAllocationInfo `protobuf:"bytes,15,opt,name=dynamic_allocation,json=dynamicAllocation,proto3" json:"dynamic_allocation,omitempty"` // Dynamic allocation configuration
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Policy (namespaced) or ClusterPolicy
+ Background bool `protobuf:"varint,2,opt,name=background,proto3" json:"background,omitempty"` // Whether background scanning is enabled
+ ValidationFailureAction string `protobuf:"bytes,3,opt,name=validation_failure_action,json=validationFailureAction,proto3" json:"validation_failure_action,omitempty"` // Audit or Enforce (rule-level failureAction wins on kyverno 1.13+)
+ RuleCount int32 `protobuf:"varint,4,opt,name=rule_count,json=ruleCount,proto3" json:"rule_count,omitempty"` // Number of rules in the policy
+ RuleNames []string `protobuf:"bytes,5,rep,name=rule_names,json=ruleNames,proto3" json:"rule_names,omitempty"` // Rule names
+ SpecJson string `protobuf:"bytes,6,opt,name=spec_json,json=specJson,proto3" json:"spec_json,omitempty"` // Full policy spec as JSON for raw inspection
}
-func (x *SparkApplicationDetails) Reset() {
- *x = SparkApplicationDetails{}
+func (x *KyvernoPolicyDetails) Reset() {
+ *x = KyvernoPolicyDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[122]
+ mi := &file_api_v1_common_proto_msgTypes[135]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SparkApplicationDetails) String() string {
+func (x *KyvernoPolicyDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SparkApplicationDetails) ProtoMessage() {}
+func (*KyvernoPolicyDetails) ProtoMessage() {}
-func (x *SparkApplicationDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[122]
+func (x *KyvernoPolicyDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[135]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12762,157 +14566,194 @@ func (x *SparkApplicationDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SparkApplicationDetails.ProtoReflect.Descriptor instead.
-func (*SparkApplicationDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{122}
+// Deprecated: Use KyvernoPolicyDetails.ProtoReflect.Descriptor instead.
+func (*KyvernoPolicyDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{135}
}
-func (x *SparkApplicationDetails) GetContainers() []*ContainerTemplate {
+func (x *KyvernoPolicyDetails) GetKind() string {
if x != nil {
- return x.Containers
+ return x.Kind
}
- return nil
+ return ""
}
-func (x *SparkApplicationDetails) GetSparkVersion() string {
+func (x *KyvernoPolicyDetails) GetBackground() bool {
if x != nil {
- return x.SparkVersion
+ return x.Background
}
- return ""
+ return false
}
-func (x *SparkApplicationDetails) GetApplicationType() string {
+func (x *KyvernoPolicyDetails) GetValidationFailureAction() string {
if x != nil {
- return x.ApplicationType
+ return x.ValidationFailureAction
}
return ""
}
-func (x *SparkApplicationDetails) GetDeployMode() string {
+func (x *KyvernoPolicyDetails) GetRuleCount() int32 {
if x != nil {
- return x.DeployMode
+ return x.RuleCount
}
- return ""
+ return 0
}
-func (x *SparkApplicationDetails) GetMainClass() string {
+func (x *KyvernoPolicyDetails) GetRuleNames() []string {
if x != nil {
- return x.MainClass
+ return x.RuleNames
}
- return ""
+ return nil
}
-func (x *SparkApplicationDetails) GetMainApplicationFile() string {
+func (x *KyvernoPolicyDetails) GetSpecJson() string {
if x != nil {
- return x.MainApplicationFile
+ return x.SpecJson
}
return ""
}
-func (x *SparkApplicationDetails) GetArguments() []string {
- if x != nil {
- return x.Arguments
+// PolicyReportResult is one per-resource result inside a Kyverno policy report
+type PolicyReportResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy string `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` // Policy name
+ Rule string `protobuf:"bytes,2,opt,name=rule,proto3" json:"rule,omitempty"` // Rule name
+ Result string `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` // pass, fail, warn, error, skip
+ Severity string `protobuf:"bytes,4,opt,name=severity,proto3" json:"severity,omitempty"` // critical, high, medium, low, info
+ Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // Human readable message
+ ResourceKind string `protobuf:"bytes,6,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` // Kind of the evaluated resource
+ ResourceNamespace string `protobuf:"bytes,7,opt,name=resource_namespace,json=resourceNamespace,proto3" json:"resource_namespace,omitempty"` // Namespace of the evaluated resource
+ ResourceName string `protobuf:"bytes,8,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` // Name of the evaluated resource
+}
+
+func (x *PolicyReportResult) Reset() {
+ *x = PolicyReportResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_common_proto_msgTypes[136]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *SparkApplicationDetails) GetSparkDriverInfo() *SparkDriverInfo {
- if x != nil {
- return x.SparkDriverInfo
+func (x *PolicyReportResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyReportResult) ProtoMessage() {}
+
+func (x *PolicyReportResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[136]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *SparkApplicationDetails) GetExecutorInstances() int32 {
+// Deprecated: Use PolicyReportResult.ProtoReflect.Descriptor instead.
+func (*PolicyReportResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{136}
+}
+
+func (x *PolicyReportResult) GetPolicy() string {
if x != nil {
- return x.ExecutorInstances
+ return x.Policy
}
- return 0
+ return ""
}
-func (x *SparkApplicationDetails) GetExecutorsReady() int32 {
+func (x *PolicyReportResult) GetRule() string {
if x != nil {
- return x.ExecutorsReady
+ return x.Rule
}
- return 0
+ return ""
}
-func (x *SparkApplicationDetails) GetApplicationState() string {
+func (x *PolicyReportResult) GetResult() string {
if x != nil {
- return x.ApplicationState
+ return x.Result
}
return ""
}
-func (x *SparkApplicationDetails) GetSparkApplicationId() string {
+func (x *PolicyReportResult) GetSeverity() string {
if x != nil {
- return x.SparkApplicationId
+ return x.Severity
}
return ""
}
-func (x *SparkApplicationDetails) GetSubmissionId() string {
+func (x *PolicyReportResult) GetMessage() string {
if x != nil {
- return x.SubmissionId
+ return x.Message
}
return ""
}
-func (x *SparkApplicationDetails) GetSuspended() bool {
+func (x *PolicyReportResult) GetResourceKind() string {
if x != nil {
- return x.Suspended
+ return x.ResourceKind
}
- return false
+ return ""
}
-func (x *SparkApplicationDetails) GetRestartPolicy() *SparkRestartPolicyInfo {
+func (x *PolicyReportResult) GetResourceNamespace() string {
if x != nil {
- return x.RestartPolicy
+ return x.ResourceNamespace
}
- return nil
+ return ""
}
-func (x *SparkApplicationDetails) GetDynamicAllocation() *SparkDynamicAllocationInfo {
+func (x *PolicyReportResult) GetResourceName() string {
if x != nil {
- return x.DynamicAllocation
+ return x.ResourceName
}
- return nil
+ return ""
}
-// SparkDriverInfo represents information about the Spark driver
-type SparkDriverInfo struct {
+// KyvernoPolicyReportDetails contains detailed policy report information for drill-down.
+// The results list is capped at collection time (50); the counts always cover the full report.
+type KyvernoPolicyReportDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PodName string `protobuf:"bytes,1,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` // Driver pod name
- WebUiServiceName string `protobuf:"bytes,2,opt,name=web_ui_service_name,json=webUiServiceName,proto3" json:"web_ui_service_name,omitempty"` // Web UI service name
- WebUiAddress string `protobuf:"bytes,3,opt,name=web_ui_address,json=webUiAddress,proto3" json:"web_ui_address,omitempty"` // Web UI address
- WebUiPort int32 `protobuf:"varint,4,opt,name=web_ui_port,json=webUiPort,proto3" json:"web_ui_port,omitempty"` // Web UI port
- WebUiIngressName string `protobuf:"bytes,5,opt,name=web_ui_ingress_name,json=webUiIngressName,proto3" json:"web_ui_ingress_name,omitempty"` // Web UI ingress name (if configured)
- WebUiIngressAddress string `protobuf:"bytes,6,opt,name=web_ui_ingress_address,json=webUiIngressAddress,proto3" json:"web_ui_ingress_address,omitempty"` // Web UI ingress address (if configured)
- Cores string `protobuf:"bytes,7,opt,name=cores,proto3" json:"cores,omitempty"` // Driver cores
- Memory string `protobuf:"bytes,8,opt,name=memory,proto3" json:"memory,omitempty"` // Driver memory
- ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` // Service account used by driver
-}
-
-func (x *SparkDriverInfo) Reset() {
- *x = SparkDriverInfo{}
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // PolicyReport (namespaced) or ClusterPolicyReport
+ ScopeKind string `protobuf:"bytes,2,opt,name=scope_kind,json=scopeKind,proto3" json:"scope_kind,omitempty"` // Kind of the resource the report applies to
+ ScopeName string `protobuf:"bytes,3,opt,name=scope_name,json=scopeName,proto3" json:"scope_name,omitempty"` // Name of the resource the report applies to
+ ScopeNamespace string `protobuf:"bytes,4,opt,name=scope_namespace,json=scopeNamespace,proto3" json:"scope_namespace,omitempty"` // Namespace of the resource the report applies to
+ Pass int32 `protobuf:"varint,5,opt,name=pass,proto3" json:"pass,omitempty"` // Passing result count
+ Fail int32 `protobuf:"varint,6,opt,name=fail,proto3" json:"fail,omitempty"` // Failing result count
+ Warn int32 `protobuf:"varint,7,opt,name=warn,proto3" json:"warn,omitempty"` // Warning result count
+ Error int32 `protobuf:"varint,8,opt,name=error,proto3" json:"error,omitempty"` // Error result count
+ Skip int32 `protobuf:"varint,9,opt,name=skip,proto3" json:"skip,omitempty"` // Skipped result count
+ Results []*PolicyReportResult `protobuf:"bytes,10,rep,name=results,proto3" json:"results,omitempty"` // Capped per-resource results
+ TotalResults int32 `protobuf:"varint,11,opt,name=total_results,json=totalResults,proto3" json:"total_results,omitempty"` // Full result count before capping
+}
+
+func (x *KyvernoPolicyReportDetails) Reset() {
+ *x = KyvernoPolicyReportDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[123]
+ mi := &file_api_v1_common_proto_msgTypes[137]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SparkDriverInfo) String() string {
+func (x *KyvernoPolicyReportDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SparkDriverInfo) ProtoMessage() {}
+func (*KyvernoPolicyReportDetails) ProtoMessage() {}
-func (x *SparkDriverInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[123]
+func (x *KyvernoPolicyReportDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[137]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12923,104 +14764,117 @@ func (x *SparkDriverInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SparkDriverInfo.ProtoReflect.Descriptor instead.
-func (*SparkDriverInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{123}
+// Deprecated: Use KyvernoPolicyReportDetails.ProtoReflect.Descriptor instead.
+func (*KyvernoPolicyReportDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{137}
+}
+
+func (x *KyvernoPolicyReportDetails) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *KyvernoPolicyReportDetails) GetScopeKind() string {
+ if x != nil {
+ return x.ScopeKind
+ }
+ return ""
}
-func (x *SparkDriverInfo) GetPodName() string {
+func (x *KyvernoPolicyReportDetails) GetScopeName() string {
if x != nil {
- return x.PodName
+ return x.ScopeName
}
return ""
}
-func (x *SparkDriverInfo) GetWebUiServiceName() string {
+func (x *KyvernoPolicyReportDetails) GetScopeNamespace() string {
if x != nil {
- return x.WebUiServiceName
+ return x.ScopeNamespace
}
return ""
}
-func (x *SparkDriverInfo) GetWebUiAddress() string {
+func (x *KyvernoPolicyReportDetails) GetPass() int32 {
if x != nil {
- return x.WebUiAddress
+ return x.Pass
}
- return ""
+ return 0
}
-func (x *SparkDriverInfo) GetWebUiPort() int32 {
+func (x *KyvernoPolicyReportDetails) GetFail() int32 {
if x != nil {
- return x.WebUiPort
+ return x.Fail
}
return 0
}
-func (x *SparkDriverInfo) GetWebUiIngressName() string {
+func (x *KyvernoPolicyReportDetails) GetWarn() int32 {
if x != nil {
- return x.WebUiIngressName
+ return x.Warn
}
- return ""
+ return 0
}
-func (x *SparkDriverInfo) GetWebUiIngressAddress() string {
+func (x *KyvernoPolicyReportDetails) GetError() int32 {
if x != nil {
- return x.WebUiIngressAddress
+ return x.Error
}
- return ""
+ return 0
}
-func (x *SparkDriverInfo) GetCores() string {
+func (x *KyvernoPolicyReportDetails) GetSkip() int32 {
if x != nil {
- return x.Cores
+ return x.Skip
}
- return ""
+ return 0
}
-func (x *SparkDriverInfo) GetMemory() string {
+func (x *KyvernoPolicyReportDetails) GetResults() []*PolicyReportResult {
if x != nil {
- return x.Memory
+ return x.Results
}
- return ""
+ return nil
}
-func (x *SparkDriverInfo) GetServiceAccount() string {
+func (x *KyvernoPolicyReportDetails) GetTotalResults() int32 {
if x != nil {
- return x.ServiceAccount
+ return x.TotalResults
}
- return ""
+ return 0
}
-// SparkRestartPolicyInfo represents restart policy information
-type SparkRestartPolicyInfo struct {
+// GatekeeperConstraintTemplateDetails contains detailed ConstraintTemplate information for drill-down
+type GatekeeperConstraintTemplateDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Always, OnFailure, Never
- OnFailureRetries int32 `protobuf:"varint,2,opt,name=on_failure_retries,json=onFailureRetries,proto3" json:"on_failure_retries,omitempty"` // Number of retries on failure
- OnFailureRetryInterval int64 `protobuf:"varint,3,opt,name=on_failure_retry_interval,json=onFailureRetryInterval,proto3" json:"on_failure_retry_interval,omitempty"` // Retry interval in seconds
- OnSubmissionFailureRetries int32 `protobuf:"varint,4,opt,name=on_submission_failure_retries,json=onSubmissionFailureRetries,proto3" json:"on_submission_failure_retries,omitempty"` // Number of retries on submission failure
- OnSubmissionFailureRetryInterval int64 `protobuf:"varint,5,opt,name=on_submission_failure_retry_interval,json=onSubmissionFailureRetryInterval,proto3" json:"on_submission_failure_retry_interval,omitempty"` // Submission retry interval in seconds
+ CrdKind string `protobuf:"bytes,1,opt,name=crd_kind,json=crdKind,proto3" json:"crd_kind,omitempty"` // Constraint kind this template generates (e.g. K8sRequiredLabels)
+ Targets []string `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"` // Enforcement targets (e.g. admission.k8s.gatekeeper.sh)
+ Created bool `protobuf:"varint,3,opt,name=created,proto3" json:"created,omitempty"` // Whether the constraint CRD has been created
+ SpecJson string `protobuf:"bytes,4,opt,name=spec_json,json=specJson,proto3" json:"spec_json,omitempty"` // Full template spec as JSON for raw inspection
}
-func (x *SparkRestartPolicyInfo) Reset() {
- *x = SparkRestartPolicyInfo{}
+func (x *GatekeeperConstraintTemplateDetails) Reset() {
+ *x = GatekeeperConstraintTemplateDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[124]
+ mi := &file_api_v1_common_proto_msgTypes[138]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SparkRestartPolicyInfo) String() string {
+func (x *GatekeeperConstraintTemplateDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SparkRestartPolicyInfo) ProtoMessage() {}
+func (*GatekeeperConstraintTemplateDetails) ProtoMessage() {}
-func (x *SparkRestartPolicyInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[124]
+func (x *GatekeeperConstraintTemplateDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[138]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13031,77 +14885,69 @@ func (x *SparkRestartPolicyInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SparkRestartPolicyInfo.ProtoReflect.Descriptor instead.
-func (*SparkRestartPolicyInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{124}
+// Deprecated: Use GatekeeperConstraintTemplateDetails.ProtoReflect.Descriptor instead.
+func (*GatekeeperConstraintTemplateDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{138}
}
-func (x *SparkRestartPolicyInfo) GetType() string {
+func (x *GatekeeperConstraintTemplateDetails) GetCrdKind() string {
if x != nil {
- return x.Type
+ return x.CrdKind
}
return ""
}
-func (x *SparkRestartPolicyInfo) GetOnFailureRetries() int32 {
- if x != nil {
- return x.OnFailureRetries
- }
- return 0
-}
-
-func (x *SparkRestartPolicyInfo) GetOnFailureRetryInterval() int64 {
+func (x *GatekeeperConstraintTemplateDetails) GetTargets() []string {
if x != nil {
- return x.OnFailureRetryInterval
+ return x.Targets
}
- return 0
+ return nil
}
-func (x *SparkRestartPolicyInfo) GetOnSubmissionFailureRetries() int32 {
+func (x *GatekeeperConstraintTemplateDetails) GetCreated() bool {
if x != nil {
- return x.OnSubmissionFailureRetries
+ return x.Created
}
- return 0
+ return false
}
-func (x *SparkRestartPolicyInfo) GetOnSubmissionFailureRetryInterval() int64 {
+func (x *GatekeeperConstraintTemplateDetails) GetSpecJson() string {
if x != nil {
- return x.OnSubmissionFailureRetryInterval
+ return x.SpecJson
}
- return 0
+ return ""
}
-// SparkDynamicAllocationInfo represents dynamic allocation configuration
-type SparkDynamicAllocationInfo struct {
+// ConstraintViolation is one audit violation on a Gatekeeper constraint status
+type ConstraintViolation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` // Whether dynamic allocation is enabled
- InitialExecutors int32 `protobuf:"varint,2,opt,name=initial_executors,json=initialExecutors,proto3" json:"initial_executors,omitempty"` // Initial number of executors
- MinExecutors int32 `protobuf:"varint,3,opt,name=min_executors,json=minExecutors,proto3" json:"min_executors,omitempty"` // Minimum number of executors
- MaxExecutors int32 `protobuf:"varint,4,opt,name=max_executors,json=maxExecutors,proto3" json:"max_executors,omitempty"` // Maximum number of executors
- ShuffleTrackingEnabled bool `protobuf:"varint,5,opt,name=shuffle_tracking_enabled,json=shuffleTrackingEnabled,proto3" json:"shuffle_tracking_enabled,omitempty"` // Whether shuffle tracking is enabled
- ShuffleTrackingTimeout int64 `protobuf:"varint,6,opt,name=shuffle_tracking_timeout,json=shuffleTrackingTimeout,proto3" json:"shuffle_tracking_timeout,omitempty"` // Shuffle tracking timeout in milliseconds
+ ResourceKind string `protobuf:"bytes,1,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` // Kind of the violating resource
+ ResourceNamespace string `protobuf:"bytes,2,opt,name=resource_namespace,json=resourceNamespace,proto3" json:"resource_namespace,omitempty"` // Namespace of the violating resource
+ ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` // Name of the violating resource
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Violation message
+ EnforcementAction string `protobuf:"bytes,5,opt,name=enforcement_action,json=enforcementAction,proto3" json:"enforcement_action,omitempty"` // Action recorded on the violation
}
-func (x *SparkDynamicAllocationInfo) Reset() {
- *x = SparkDynamicAllocationInfo{}
+func (x *ConstraintViolation) Reset() {
+ *x = ConstraintViolation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[125]
+ mi := &file_api_v1_common_proto_msgTypes[139]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SparkDynamicAllocationInfo) String() string {
+func (x *ConstraintViolation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SparkDynamicAllocationInfo) ProtoMessage() {}
+func (*ConstraintViolation) ProtoMessage() {}
-func (x *SparkDynamicAllocationInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[125]
+func (x *ConstraintViolation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[139]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13112,93 +14958,79 @@ func (x *SparkDynamicAllocationInfo) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SparkDynamicAllocationInfo.ProtoReflect.Descriptor instead.
-func (*SparkDynamicAllocationInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{125}
-}
-
-func (x *SparkDynamicAllocationInfo) GetEnabled() bool {
- if x != nil {
- return x.Enabled
- }
- return false
+// Deprecated: Use ConstraintViolation.ProtoReflect.Descriptor instead.
+func (*ConstraintViolation) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{139}
}
-func (x *SparkDynamicAllocationInfo) GetInitialExecutors() int32 {
+func (x *ConstraintViolation) GetResourceKind() string {
if x != nil {
- return x.InitialExecutors
+ return x.ResourceKind
}
- return 0
+ return ""
}
-func (x *SparkDynamicAllocationInfo) GetMinExecutors() int32 {
+func (x *ConstraintViolation) GetResourceNamespace() string {
if x != nil {
- return x.MinExecutors
+ return x.ResourceNamespace
}
- return 0
+ return ""
}
-func (x *SparkDynamicAllocationInfo) GetMaxExecutors() int32 {
+func (x *ConstraintViolation) GetResourceName() string {
if x != nil {
- return x.MaxExecutors
+ return x.ResourceName
}
- return 0
+ return ""
}
-func (x *SparkDynamicAllocationInfo) GetShuffleTrackingEnabled() bool {
+func (x *ConstraintViolation) GetMessage() string {
if x != nil {
- return x.ShuffleTrackingEnabled
+ return x.Message
}
- return false
+ return ""
}
-func (x *SparkDynamicAllocationInfo) GetShuffleTrackingTimeout() int64 {
+func (x *ConstraintViolation) GetEnforcementAction() string {
if x != nil {
- return x.ShuffleTrackingTimeout
+ return x.EnforcementAction
}
- return 0
+ return ""
}
-// ScheduledSparkApplicationDetails contains detailed ScheduledSparkApplication information for drill-down
-type ScheduledSparkApplicationDetails struct {
+// GatekeeperConstraintDetails contains detailed constraint information for drill-down.
+// The violations list is capped by gatekeeper (default 20); total_violations covers the full audit.
+type GatekeeperConstraintDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Schedule string `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` // Cron schedule expression (e.g., "@every 15m", "0 * * * *")
- TimeZone string `protobuf:"bytes,2,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"` // Time zone for schedule (e.g., "UTC", "America/New_York")
- Suspended bool `protobuf:"varint,3,opt,name=suspended,proto3" json:"suspended,omitempty"` // Whether the schedule is suspended
- ConcurrencyPolicy string `protobuf:"bytes,4,opt,name=concurrency_policy,json=concurrencyPolicy,proto3" json:"concurrency_policy,omitempty"` // Allow, Forbid, Replace
- SuccessfulRunHistoryLimit int32 `protobuf:"varint,5,opt,name=successful_run_history_limit,json=successfulRunHistoryLimit,proto3" json:"successful_run_history_limit,omitempty"` // Number of successful runs to keep
- FailedRunHistoryLimit int32 `protobuf:"varint,6,opt,name=failed_run_history_limit,json=failedRunHistoryLimit,proto3" json:"failed_run_history_limit,omitempty"` // Number of failed runs to keep
- ScheduleState string `protobuf:"bytes,7,opt,name=schedule_state,json=scheduleState,proto3" json:"schedule_state,omitempty"` // Current state: Scheduled, Validating, FailedValidation
- LastRunName string `protobuf:"bytes,8,opt,name=last_run_name,json=lastRunName,proto3" json:"last_run_name,omitempty"` // Name of the last SparkApplication created
- LastRun *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_run,json=lastRun,proto3" json:"last_run,omitempty"` // Time of last run
- NextRun *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=next_run,json=nextRun,proto3" json:"next_run,omitempty"` // Time of next scheduled run
- PastSuccessfulRunNames []string `protobuf:"bytes,11,rep,name=past_successful_run_names,json=pastSuccessfulRunNames,proto3" json:"past_successful_run_names,omitempty"` // Names of past successful runs
- PastFailedRunNames []string `protobuf:"bytes,12,rep,name=past_failed_run_names,json=pastFailedRunNames,proto3" json:"past_failed_run_names,omitempty"` // Names of past failed runs
- Reason string `protobuf:"bytes,13,opt,name=reason,proto3" json:"reason,omitempty"` // Reason for current schedule state
- // Template fields (inherited from SparkApplication)
- TemplateDetails *SparkApplicationDetails `protobuf:"bytes,14,opt,name=template_details,json=templateDetails,proto3" json:"template_details,omitempty"` // Details from the SparkApplication template
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Template-generated constraint kind
+ EnforcementAction string `protobuf:"bytes,2,opt,name=enforcement_action,json=enforcementAction,proto3" json:"enforcement_action,omitempty"` // deny, warn, or dryrun
+ MatchJson string `protobuf:"bytes,3,opt,name=match_json,json=matchJson,proto3" json:"match_json,omitempty"` // Match criteria as JSON
+ ParametersJson string `protobuf:"bytes,4,opt,name=parameters_json,json=parametersJson,proto3" json:"parameters_json,omitempty"` // Constraint parameters as JSON
+ TotalViolations int64 `protobuf:"varint,5,opt,name=total_violations,json=totalViolations,proto3" json:"total_violations,omitempty"` // Full audit violation count
+ AuditTimestamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=audit_timestamp,json=auditTimestamp,proto3" json:"audit_timestamp,omitempty"` // When gatekeeper last audited
+ Violations []*ConstraintViolation `protobuf:"bytes,7,rep,name=violations,proto3" json:"violations,omitempty"` // Capped audit violations
}
-func (x *ScheduledSparkApplicationDetails) Reset() {
- *x = ScheduledSparkApplicationDetails{}
+func (x *GatekeeperConstraintDetails) Reset() {
+ *x = GatekeeperConstraintDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[126]
+ mi := &file_api_v1_common_proto_msgTypes[140]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ScheduledSparkApplicationDetails) String() string {
+func (x *GatekeeperConstraintDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ScheduledSparkApplicationDetails) ProtoMessage() {}
+func (*GatekeeperConstraintDetails) ProtoMessage() {}
-func (x *ScheduledSparkApplicationDetails) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[126]
+func (x *GatekeeperConstraintDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_common_proto_msgTypes[140]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13209,105 +15041,56 @@ func (x *ScheduledSparkApplicationDetails) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ScheduledSparkApplicationDetails.ProtoReflect.Descriptor instead.
-func (*ScheduledSparkApplicationDetails) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{126}
-}
-
-func (x *ScheduledSparkApplicationDetails) GetSchedule() string {
- if x != nil {
- return x.Schedule
- }
- return ""
+// Deprecated: Use GatekeeperConstraintDetails.ProtoReflect.Descriptor instead.
+func (*GatekeeperConstraintDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_common_proto_rawDescGZIP(), []int{140}
}
-func (x *ScheduledSparkApplicationDetails) GetTimeZone() string {
+func (x *GatekeeperConstraintDetails) GetKind() string {
if x != nil {
- return x.TimeZone
+ return x.Kind
}
return ""
}
-func (x *ScheduledSparkApplicationDetails) GetSuspended() bool {
- if x != nil {
- return x.Suspended
- }
- return false
-}
-
-func (x *ScheduledSparkApplicationDetails) GetConcurrencyPolicy() string {
+func (x *GatekeeperConstraintDetails) GetEnforcementAction() string {
if x != nil {
- return x.ConcurrencyPolicy
+ return x.EnforcementAction
}
return ""
}
-func (x *ScheduledSparkApplicationDetails) GetSuccessfulRunHistoryLimit() int32 {
- if x != nil {
- return x.SuccessfulRunHistoryLimit
- }
- return 0
-}
-
-func (x *ScheduledSparkApplicationDetails) GetFailedRunHistoryLimit() int32 {
- if x != nil {
- return x.FailedRunHistoryLimit
- }
- return 0
-}
-
-func (x *ScheduledSparkApplicationDetails) GetScheduleState() string {
+func (x *GatekeeperConstraintDetails) GetMatchJson() string {
if x != nil {
- return x.ScheduleState
+ return x.MatchJson
}
return ""
}
-func (x *ScheduledSparkApplicationDetails) GetLastRunName() string {
+func (x *GatekeeperConstraintDetails) GetParametersJson() string {
if x != nil {
- return x.LastRunName
+ return x.ParametersJson
}
return ""
}
-func (x *ScheduledSparkApplicationDetails) GetLastRun() *timestamppb.Timestamp {
- if x != nil {
- return x.LastRun
- }
- return nil
-}
-
-func (x *ScheduledSparkApplicationDetails) GetNextRun() *timestamppb.Timestamp {
- if x != nil {
- return x.NextRun
- }
- return nil
-}
-
-func (x *ScheduledSparkApplicationDetails) GetPastSuccessfulRunNames() []string {
+func (x *GatekeeperConstraintDetails) GetTotalViolations() int64 {
if x != nil {
- return x.PastSuccessfulRunNames
+ return x.TotalViolations
}
- return nil
+ return 0
}
-func (x *ScheduledSparkApplicationDetails) GetPastFailedRunNames() []string {
+func (x *GatekeeperConstraintDetails) GetAuditTimestamp() *timestamppb.Timestamp {
if x != nil {
- return x.PastFailedRunNames
+ return x.AuditTimestamp
}
return nil
}
-func (x *ScheduledSparkApplicationDetails) GetReason() string {
- if x != nil {
- return x.Reason
- }
- return ""
-}
-
-func (x *ScheduledSparkApplicationDetails) GetTemplateDetails() *SparkApplicationDetails {
+func (x *GatekeeperConstraintDetails) GetViolations() []*ConstraintViolation {
if x != nil {
- return x.TemplateDetails
+ return x.Violations
}
return nil
}
@@ -13317,43 +15100,53 @@ type Event struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
- ClusterId string `protobuf:"bytes,5,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- OwnerUid string `protobuf:"bytes,7,opt,name=owner_uid,json=ownerUid,proto3" json:"owner_uid,omitempty"`
- OwnerKind string `protobuf:"bytes,8,opt,name=owner_kind,json=ownerKind,proto3" json:"owner_kind,omitempty"`
- OwnerName string `protobuf:"bytes,9,opt,name=owner_name,json=ownerName,proto3" json:"owner_name,omitempty"`
- ApiVersion string `protobuf:"bytes,10,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
- ResourceVersion string `protobuf:"bytes,11,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"`
- Count int32 `protobuf:"varint,12,opt,name=count,proto3" json:"count,omitempty"`
- Reason string `protobuf:"bytes,13,opt,name=reason,proto3" json:"reason,omitempty"`
- Message string `protobuf:"bytes,14,opt,name=message,proto3" json:"message,omitempty"`
- Type string `protobuf:"bytes,15,opt,name=type,proto3" json:"type,omitempty"`
- Action string `protobuf:"bytes,16,opt,name=action,proto3" json:"action,omitempty"`
- Source string `protobuf:"bytes,17,opt,name=source,proto3" json:"source,omitempty"`
- InvolvedObjectKind string `protobuf:"bytes,18,opt,name=involved_object_kind,json=involvedObjectKind,proto3" json:"involved_object_kind,omitempty"`
- InvolvedObjectName string `protobuf:"bytes,19,opt,name=involved_object_name,json=involvedObjectName,proto3" json:"involved_object_name,omitempty"`
- InvolvedObjectNamespace string `protobuf:"bytes,20,opt,name=involved_object_namespace,json=involvedObjectNamespace,proto3" json:"involved_object_namespace,omitempty"`
- ReportingController string `protobuf:"bytes,21,opt,name=reporting_controller,json=reportingController,proto3" json:"reporting_controller,omitempty"`
- ReportingInstance string `protobuf:"bytes,22,opt,name=reporting_instance,json=reportingInstance,proto3" json:"reporting_instance,omitempty"`
- Annotations map[string]string `protobuf:"bytes,23,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Labels map[string]string `protobuf:"bytes,24,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- InvolvedObjectUid string `protobuf:"bytes,25,opt,name=involved_object_uid,json=involvedObjectUid,proto3" json:"involved_object_uid,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,42,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,43,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- CreatedAtAge string `protobuf:"bytes,44,opt,name=created_at_age,json=createdAtAge,proto3" json:"created_at_age,omitempty"`
- UpdatedAtAge string `protobuf:"bytes,45,opt,name=updated_at_age,json=updatedAtAge,proto3" json:"updated_at_age,omitempty"`
- LastSeenAge string `protobuf:"bytes,46,opt,name=last_seen_age,json=lastSeenAge,proto3" json:"last_seen_age,omitempty"`
- DeletedAt *timestamppb.Timestamp `protobuf:"bytes,47,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ ClusterId string `protobuf:"bytes,5,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ OwnerUid string `protobuf:"bytes,7,opt,name=owner_uid,json=ownerUid,proto3" json:"owner_uid,omitempty"`
+ OwnerKind string `protobuf:"bytes,8,opt,name=owner_kind,json=ownerKind,proto3" json:"owner_kind,omitempty"`
+ OwnerName string `protobuf:"bytes,9,opt,name=owner_name,json=ownerName,proto3" json:"owner_name,omitempty"`
+ ApiVersion string `protobuf:"bytes,10,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
+ ResourceVersion string `protobuf:"bytes,11,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"`
+ Count int32 `protobuf:"varint,12,opt,name=count,proto3" json:"count,omitempty"`
+ Reason string `protobuf:"bytes,13,opt,name=reason,proto3" json:"reason,omitempty"`
+ Message string `protobuf:"bytes,14,opt,name=message,proto3" json:"message,omitempty"`
+ Type string `protobuf:"bytes,15,opt,name=type,proto3" json:"type,omitempty"`
+ Action string `protobuf:"bytes,16,opt,name=action,proto3" json:"action,omitempty"`
+ Source string `protobuf:"bytes,17,opt,name=source,proto3" json:"source,omitempty"`
+ InvolvedObjectKind string `protobuf:"bytes,18,opt,name=involved_object_kind,json=involvedObjectKind,proto3" json:"involved_object_kind,omitempty"`
+ InvolvedObjectName string `protobuf:"bytes,19,opt,name=involved_object_name,json=involvedObjectName,proto3" json:"involved_object_name,omitempty"`
+ InvolvedObjectNamespace string `protobuf:"bytes,20,opt,name=involved_object_namespace,json=involvedObjectNamespace,proto3" json:"involved_object_namespace,omitempty"`
+ ReportingController string `protobuf:"bytes,21,opt,name=reporting_controller,json=reportingController,proto3" json:"reporting_controller,omitempty"`
+ ReportingInstance string `protobuf:"bytes,22,opt,name=reporting_instance,json=reportingInstance,proto3" json:"reporting_instance,omitempty"`
+ Annotations map[string]string `protobuf:"bytes,23,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Labels map[string]string `protobuf:"bytes,24,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ InvolvedObjectUid string `protobuf:"bytes,25,opt,name=involved_object_uid,json=involvedObjectUid,proto3" json:"involved_object_uid,omitempty"`
+ // Set only on Karpenter `DisruptionBlocked` events; UNSPECIFIED on every other event.
+ DisruptionBlockReason DisruptionBlockReason `protobuf:"varint,26,opt,name=disruption_block_reason,json=disruptionBlockReason,proto3,enum=api.v1.DisruptionBlockReason" json:"disruption_block_reason,omitempty"`
+ // The PodDisruptionBudget that blocked eviction, as "namespace/name". Set only
+ // alongside DISRUPTION_BLOCK_REASON_PDB_VIOLATION; absent — not empty-string —
+ // otherwise, since "no PDB was involved" is not the same as "a PDB with no name".
+ BlockingPdbName *string `protobuf:"bytes,27,opt,name=blocking_pdb_name,json=blockingPdbName,proto3,oneof" json:"blocking_pdb_name,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,42,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,43,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ CreatedAtAge string `protobuf:"bytes,44,opt,name=created_at_age,json=createdAtAge,proto3" json:"created_at_age,omitempty"`
+ UpdatedAtAge string `protobuf:"bytes,45,opt,name=updated_at_age,json=updatedAtAge,proto3" json:"updated_at_age,omitempty"`
+ LastSeenAge string `protobuf:"bytes,46,opt,name=last_seen_age,json=lastSeenAge,proto3" json:"last_seen_age,omitempty"`
+ DeletedAt *timestamppb.Timestamp `protobuf:"bytes,47,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
+ // The pod behind a DISRUPTION_BLOCK_REASON_DO_NOT_DISRUPT_ANNOTATION or
+ // DISRUPTION_BLOCK_REASON_POD_NOMINATED classification, as "namespace/name". Same
+ // absent-means-not-applicable contract as blocking_pdb_name.
+ RelatedPodName *string `protobuf:"bytes,48,opt,name=related_pod_name,json=relatedPodName,proto3,oneof" json:"related_pod_name,omitempty"`
}
func (x *Event) Reset() {
*x = Event{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[127]
+ mi := &file_api_v1_common_proto_msgTypes[141]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13366,7 +15159,7 @@ func (x *Event) String() string {
func (*Event) ProtoMessage() {}
func (x *Event) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[127]
+ mi := &file_api_v1_common_proto_msgTypes[141]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13379,7 +15172,7 @@ func (x *Event) ProtoReflect() protoreflect.Message {
// Deprecated: Use Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{127}
+ return file_api_v1_common_proto_rawDescGZIP(), []int{141}
}
func (x *Event) GetId() string {
@@ -13550,6 +15343,20 @@ func (x *Event) GetInvolvedObjectUid() string {
return ""
}
+func (x *Event) GetDisruptionBlockReason() DisruptionBlockReason {
+ if x != nil {
+ return x.DisruptionBlockReason
+ }
+ return DisruptionBlockReason_DISRUPTION_BLOCK_REASON_UNSPECIFIED
+}
+
+func (x *Event) GetBlockingPdbName() string {
+ if x != nil && x.BlockingPdbName != nil {
+ return *x.BlockingPdbName
+ }
+ return ""
+}
+
func (x *Event) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
return x.CreatedAt
@@ -13599,6 +15406,13 @@ func (x *Event) GetDeletedAt() *timestamppb.Timestamp {
return nil
}
+func (x *Event) GetRelatedPodName() string {
+ if x != nil && x.RelatedPodName != nil {
+ return *x.RelatedPodName
+ }
+ return ""
+}
+
type EventDatapointInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -13616,7 +15430,7 @@ type EventDatapointInfo struct {
func (x *EventDatapointInfo) Reset() {
*x = EventDatapointInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[128]
+ mi := &file_api_v1_common_proto_msgTypes[142]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13629,7 +15443,7 @@ func (x *EventDatapointInfo) String() string {
func (*EventDatapointInfo) ProtoMessage() {}
func (x *EventDatapointInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[128]
+ mi := &file_api_v1_common_proto_msgTypes[142]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13642,7 +15456,7 @@ func (x *EventDatapointInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventDatapointInfo.ProtoReflect.Descriptor instead.
func (*EventDatapointInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{128}
+ return file_api_v1_common_proto_rawDescGZIP(), []int{142}
}
func (x *EventDatapointInfo) GetName() string {
@@ -13710,7 +15524,7 @@ type EventDatapoint struct {
func (x *EventDatapoint) Reset() {
*x = EventDatapoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[129]
+ mi := &file_api_v1_common_proto_msgTypes[143]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13723,7 +15537,7 @@ func (x *EventDatapoint) String() string {
func (*EventDatapoint) ProtoMessage() {}
func (x *EventDatapoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[129]
+ mi := &file_api_v1_common_proto_msgTypes[143]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13736,7 +15550,7 @@ func (x *EventDatapoint) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventDatapoint.ProtoReflect.Descriptor instead.
func (*EventDatapoint) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{129}
+ return file_api_v1_common_proto_rawDescGZIP(), []int{143}
}
func (x *EventDatapoint) GetUtcTime() string {
@@ -13794,7 +15608,7 @@ type DimensionCount struct {
func (x *DimensionCount) Reset() {
*x = DimensionCount{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[130]
+ mi := &file_api_v1_common_proto_msgTypes[144]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13807,7 +15621,7 @@ func (x *DimensionCount) String() string {
func (*DimensionCount) ProtoMessage() {}
func (x *DimensionCount) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[130]
+ mi := &file_api_v1_common_proto_msgTypes[144]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13820,7 +15634,7 @@ func (x *DimensionCount) ProtoReflect() protoreflect.Message {
// Deprecated: Use DimensionCount.ProtoReflect.Descriptor instead.
func (*DimensionCount) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{130}
+ return file_api_v1_common_proto_rawDescGZIP(), []int{144}
}
func (x *DimensionCount) GetValue() string {
@@ -13864,7 +15678,7 @@ type EventGroup struct {
func (x *EventGroup) Reset() {
*x = EventGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_common_proto_msgTypes[131]
+ mi := &file_api_v1_common_proto_msgTypes[145]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13877,7 +15691,7 @@ func (x *EventGroup) String() string {
func (*EventGroup) ProtoMessage() {}
func (x *EventGroup) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_common_proto_msgTypes[131]
+ mi := &file_api_v1_common_proto_msgTypes[145]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13890,7 +15704,7 @@ func (x *EventGroup) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventGroup.ProtoReflect.Descriptor instead.
func (*EventGroup) Descriptor() ([]byte, []int) {
- return file_api_v1_common_proto_rawDescGZIP(), []int{131}
+ return file_api_v1_common_proto_rawDescGZIP(), []int{145}
}
func (x *EventGroup) GetReason() string {
@@ -14031,7 +15845,7 @@ var file_api_v1_common_proto_rawDesc = []byte{
0x73, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x61,
0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x22, 0x82, 0x1b, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+ 0x6f, 0x6e, 0x22, 0xe1, 0x1b, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x2d, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f,
0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e,
0x63, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x33,
@@ -14192,500 +16006,695 @@ var file_api_v1_common_proto_rawDesc = []byte{
0x6f, 0x64, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1b, 0x6d, 0x6f,
0x6e, 0x65, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54,
- 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x68, 0x0a, 0x28, 0x6d, 0x6f, 0x6e,
- 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x75,
- 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
- 0x22, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x43,
- 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x12, 0x6e, 0x0a, 0x2b, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f,
- 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x25, 0x6d, 0x6f,
- 0x6e, 0x65, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x12, 0x6c, 0x0a, 0x2a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x73,
+ 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x5d, 0x0a, 0x22, 0x6d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+ 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18,
+ 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74,
+ 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1d, 0x6d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69,
+ 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x68, 0x0a, 0x28, 0x6d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f,
+ 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65,
+ 0x72, 0x69, 0x6f, 0x64, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x22,
+ 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x70,
+ 0x75, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x12, 0x6e, 0x0a, 0x2b, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69,
+ 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73,
0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x18, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x24, 0x6d, 0x6f, 0x6e,
- 0x65, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c,
+ 0x64, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x25, 0x6d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x12, 0x6c, 0x0a, 0x2a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69,
+ 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x73, 0x74,
+ 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x18, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x24, 0x6d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43,
+ 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x12, 0x68, 0x0a, 0x28, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69,
+ 0x7a, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x74, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
+ 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x22, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72,
+ 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x55, 0x0a, 0x1e, 0x6d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x75, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
+ 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x19, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x47, 0x70, 0x75,
0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x12, 0x68, 0x0a, 0x28, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d,
- 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f,
- 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x74, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x22, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4f, 0x70,
- 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f,
- 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x55, 0x0a, 0x1e, 0x6d,
- 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f,
- 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x75, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x19, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x47, 0x70,
- 0x75, 0x43, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x17, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f,
- 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x76, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x47, 0x70,
- 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x5b, 0x0a, 0x21,
- 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f,
- 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75,
- 0x72, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1c, 0x6d, 0x6f, 0x6e,
- 0x65, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x43, 0x6f,
- 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x58, 0x0a, 0x20, 0x6d, 0x6f, 0x6e,
- 0x65, 0x79, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f,
- 0x76, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x78, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x70,
- 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x56, 0x63, 0x70, 0x75, 0x50, 0x65, 0x72, 0x48,
- 0x6f, 0x75, 0x72, 0x12, 0x5c, 0x0a, 0x22, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x69, 0x62,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f,
- 0x6e, 0x65, 0x79, 0x52, 0x1c, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x47, 0x69, 0x62, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75,
- 0x72, 0x4a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x22, 0xd8, 0x16, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x43,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12,
- 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75,
- 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
- 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x43,
- 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a,
- 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15,
- 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75,
- 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1a, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74,
- 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
- 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
- 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
- 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75,
- 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65,
- 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x47, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
- 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67,
- 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x47, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
- 0x47, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x74,
- 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f,
- 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61,
- 0x67, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
- 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x17,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47,
- 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x6e, 0x6f, 0x64,
- 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x12, 0x39, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61,
- 0x6d, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d,
- 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x1f, 0x6e,
- 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1a,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
- 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
- 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
- 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69,
- 0x74, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
- 0x69, 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x1b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f,
+ 0x64, 0x12, 0x48, 0x0a, 0x17, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63,
+ 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x76, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
+ 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x47, 0x70, 0x75,
+ 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x5b, 0x0a, 0x21, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x67,
+ 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72,
+ 0x18, 0x77, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1c, 0x6d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73,
+ 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x58, 0x0a, 0x20, 0x6d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76,
+ 0x63, 0x70, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x78, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
+ 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x70, 0x75,
+ 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x56, 0x63, 0x70, 0x75, 0x50, 0x65, 0x72, 0x48, 0x6f,
+ 0x75, 0x72, 0x12, 0x5c, 0x0a, 0x22, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x69, 0x62, 0x5f,
+ 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x52, 0x1c, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43,
+ 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x47, 0x69, 0x62, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72,
+ 0x4a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x22, 0xf7, 0x1d, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x43, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a,
+ 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70,
+ 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x6e,
+ 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1a, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x30,
+ 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73,
+ 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x47, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70,
+ 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69,
+ 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
+ 0x67, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x47, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a,
+ 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x47,
+ 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76,
+ 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67,
+ 0x65, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67,
+ 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x17, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70,
+ 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x6e, 0x6f, 0x64, 0x65,
+ 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12,
+ 0x39, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d,
+ 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55,
+ 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x1f, 0x6e, 0x6f,
+ 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1a, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4e,
+ 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
+ 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f,
+ 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
+ 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
+ 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
+ 0x74, 0x79, 0x12, 0x41, 0x0a, 0x1b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63,
+ 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x43,
+ 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e,
+ 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52,
+ 0x1a, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41,
+ 0x0a, 0x1b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x21, 0x20,
+ 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x43, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01,
+ 0x01, 0x12, 0x5c, 0x0a, 0x29, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x22,
+ 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x24, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a,
+ 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12,
+ 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74,
+ 0x5f, 0x72, 0x63, 0x76, 0x18, 0x29, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x12, 0x34, 0x0a, 0x16, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69,
+ 0x74, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e,
+ 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x33, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74,
+ 0x52, 0x63, 0x76, 0x50, 0x63, 0x6b, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d,
+ 0x69, 0x74, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x50, 0x63, 0x6b, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62,
+ 0x79, 0x74, 0x65, 0x73, 0x18, 0x47, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73,
+ 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73,
+ 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x4c, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x73, 0x57,
+ 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73,
+ 0x18, 0x56, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x46, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18,
+ 0x51, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x6e, 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6e,
+ 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, 0x5c,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65,
+ 0x74, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x5d, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x50, 0x63, 0x6b,
+ 0x74, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x5e, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x50, 0x63, 0x6b, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73,
+ 0x18, 0x5f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52,
+ 0x63, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x73, 0x18, 0x60, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65,
+ 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x73, 0x12, 0x2f, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x72, 0x63,
+ 0x76, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x61, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x44, 0x72, 0x6f, 0x70, 0x70,
+ 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18,
+ 0x62, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x54, 0x72,
+ 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x2b, 0x0a,
+ 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x18, 0x65, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x46,
+ 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0x18, 0x66, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x73, 0x57,
+ 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x67, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x73, 0x12, 0x24, 0x0a,
+ 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18,
+ 0x68, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x73, 0x57, 0x72, 0x69,
+ 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x6f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x12, 0x2d, 0x0a, 0x13, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x75, 0x73, 0x65,
+ 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x79, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6a,
+ 0x76, 0x6d, 0x48, 0x65, 0x61, 0x70, 0x55, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+ 0x2b, 0x0a, 0x12, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6a, 0x76, 0x6d,
+ 0x48, 0x65, 0x61, 0x70, 0x4d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x5f, 0x72, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x52, 0x73, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61,
+ 0x63, 0x68, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x73,
+ 0x77, 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x23, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x63,
+ 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x18, 0x7e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x61, 0x63,
+ 0x68, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x25, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x61, 0x63,
+ 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x18, 0x7f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x21, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43,
+ 0x61, 0x63, 0x68, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x73, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x43, 0x66, 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x46,
+ 0x0a, 0x1f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x66, 0x73, 0x5f,
+ 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x73, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x43, 0x66, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65,
+ 0x64, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x66, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x74,
+ 0x74, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x47, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x73, 0x75,
+ 0x72, 0x65, 0x5f, 0x73, 0x6f, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x84, 0x01, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70,
+ 0x75, 0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x53, 0x6f, 0x6d, 0x65, 0x55, 0x73, 0x65,
+ 0x63, 0x12, 0x4d, 0x0a, 0x23, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x73,
+ 0x6f, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x1f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x53, 0x6f, 0x6d, 0x65, 0x55, 0x73, 0x65, 0x63,
+ 0x12, 0x4d, 0x0a, 0x23, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x75,
+ 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50,
+ 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x63, 0x42,
+ 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42,
+ 0x21, 0x0a, 0x1f, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x17, 0x6e, 0x6f, 0x64, 0x65,
- 0x43, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69,
- 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01,
- 0x52, 0x1a, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12,
- 0x41, 0x0a, 0x1b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x21,
- 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x43,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88,
- 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x29, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
- 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18,
- 0x22, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x24, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
- 0x7a, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01,
- 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x65,
- 0x74, 0x5f, 0x72, 0x63, 0x76, 0x18, 0x29, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x12, 0x34, 0x0a, 0x16,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72,
- 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d,
- 0x69, 0x74, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
- 0x6e, 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x33, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65,
- 0x74, 0x52, 0x63, 0x76, 0x50, 0x63, 0x6b, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73,
- 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61,
- 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x50, 0x63, 0x6b, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f,
- 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x47, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65,
- 0x73, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66,
- 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x4c, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x46, 0x73,
- 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65,
- 0x73, 0x18, 0x56, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x46, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73,
- 0x18, 0x51, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
- 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18,
- 0x5c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x54, 0x72,
- 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e,
- 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x5d, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x50, 0x63,
- 0x6b, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f,
- 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x63, 0x6b, 0x74, 0x73, 0x18, 0x5e,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61,
- 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x50, 0x63, 0x6b, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72,
- 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74,
- 0x52, 0x63, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x65,
- 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x60, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x6e, 0x6f, 0x64,
- 0x65, 0x4e, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f,
- 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x72,
- 0x63, 0x76, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x61, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x52, 0x63, 0x76, 0x44, 0x72, 0x6f, 0x70,
- 0x70, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f,
- 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64,
- 0x18, 0x62, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x65, 0x74, 0x54,
- 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x2b,
- 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x65, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
- 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74,
- 0x65, 0x73, 0x18, 0x66, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x73,
- 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x67, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x73, 0x52, 0x65, 0x61, 0x64, 0x73, 0x12, 0x24,
- 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73,
- 0x18, 0x68, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x73, 0x57, 0x72,
- 0x69, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70,
- 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x42, 0x2c, 0x0a, 0x2a, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
- 0x7a, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
+ 0x6f, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f,
0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x22, 0xf9, 0x03, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76,
- 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x61, 0x76, 0x67, 0x12, 0x10, 0x0a, 0x03,
- 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10,
- 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x35, 0x30,
- 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
- 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x03, 0x70, 0x39, 0x39, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x31, 0x30, 0x30, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x04, 0x70, 0x31, 0x30, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x31, 0x30, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x31, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x32,
- 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x32, 0x35, 0x12, 0x10, 0x0a, 0x03,
- 0x70, 0x37, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10,
- 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x30,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x39, 0x39, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04,
- 0x70, 0x39, 0x39, 0x39, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x02, 0x70, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x02, 0x70, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x03, 0x70, 0x31, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x32, 0x30, 0x18, 0x10, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x32, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x33, 0x30, 0x18,
- 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x33, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x33,
- 0x35, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x33, 0x35, 0x12, 0x10, 0x0a, 0x03,
- 0x70, 0x34, 0x30, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x34, 0x30, 0x12, 0x10,
- 0x0a, 0x03, 0x70, 0x34, 0x35, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x34, 0x35,
- 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
- 0x35, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x36, 0x30, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x03, 0x70, 0x36, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x36, 0x35, 0x18, 0x17, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x03, 0x70, 0x36, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x30, 0x18, 0x18, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x37, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x38, 0x30, 0x18,
- 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x38, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x38,
- 0x35, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x38, 0x35, 0x12, 0x10, 0x0a, 0x03,
- 0x70, 0x39, 0x37, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x37, 0x22, 0xa2,
- 0x08, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a,
- 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0c,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x70,
- 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x6f, 0x64, 0x42, 0x2c, 0x0a, 0x2a, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65,
+ 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x22, 0xf9, 0x03, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x61, 0x76, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61,
+ 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, 0x0a, 0x03,
+ 0x70, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x35, 0x30, 0x12, 0x10,
+ 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x35,
+ 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
+ 0x39, 0x39, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x31, 0x30, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x04, 0x70, 0x31, 0x30, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x31, 0x30, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x31, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x32, 0x35, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x32, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37,
+ 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03,
+ 0x70, 0x39, 0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x12,
+ 0x0a, 0x04, 0x70, 0x39, 0x39, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x70, 0x39,
+ 0x39, 0x39, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02,
+ 0x70, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02,
+ 0x70, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x03, 0x70, 0x31, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x32, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x03, 0x70, 0x32, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x33, 0x30, 0x18, 0x11, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x33, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x33, 0x35, 0x18,
+ 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x33, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x34,
+ 0x30, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x34, 0x30, 0x12, 0x10, 0x0a, 0x03,
+ 0x70, 0x34, 0x35, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x34, 0x35, 0x12, 0x10,
+ 0x0a, 0x03, 0x70, 0x35, 0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x35, 0x35,
+ 0x12, 0x10, 0x0a, 0x03, 0x70, 0x36, 0x30, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
+ 0x36, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x36, 0x35, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x03, 0x70, 0x36, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x30, 0x18, 0x18, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x03, 0x70, 0x37, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x38, 0x30, 0x18, 0x19, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x38, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x38, 0x35, 0x18,
+ 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x38, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39,
+ 0x37, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x37, 0x22, 0xa2, 0x08, 0x0a,
+ 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3c,
+ 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52,
+ 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x36, 0x0a, 0x09,
+ 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f,
- 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
- 0x73, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x36,
- 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x67, 0x70,
- 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72,
- 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72,
- 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
- 0x74, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x16, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52,
- 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01,
- 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0d, 0x20,
- 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
- 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x15, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65,
- 0x63, 0x65, 0x69, 0x76, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72,
- 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x66,
- 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x02, 0x18,
- 0x01, 0x52, 0x0b, 0x66, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x43,
- 0x0a, 0x0e, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
- 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
- 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x66, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79,
- 0x74, 0x65, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x25,
- 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43,
- 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xf2, 0x0c, 0x0a, 0x17, 0x46, 0x6f,
- 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25,
- 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64,
- 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63,
- 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
- 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75,
- 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f,
- 0x64, 0x65, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63,
- 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x4d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70,
- 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65,
- 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d,
+ 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d,
+ 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01,
+ 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43,
+ 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x16, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x14, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02,
+ 0x18, 0x01, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x4c, 0x69,
+ 0x6d, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28,
+ 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x15, 0x6e, 0x65, 0x74,
+ 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x79, 0x74,
+ 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x73, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x65,
+ 0x69, 0x76, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74,
+ 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x73, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x66, 0x73, 0x5f,
+ 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52,
+ 0x0b, 0x66, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0e,
+ 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x11,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x42,
+ 0x02, 0x18, 0x01, 0x52, 0x0c, 0x66, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65,
+ 0x73, 0x22, 0x9d, 0x05, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6a, 0x76, 0x6d, 0x5f, 0x6a,
+ 0x61, 0x76, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x6a, 0x76, 0x6d, 0x4a, 0x61, 0x76, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6a, 0x76, 0x6d, 0x5f, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6a, 0x76, 0x6d,
+ 0x4a, 0x61, 0x76, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6a,
+ 0x76, 0x6d, 0x5f, 0x78, 0x6d, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x0b, 0x6a, 0x76, 0x6d, 0x58, 0x6d, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+ 0x22, 0x0a, 0x0d, 0x6a, 0x76, 0x6d, 0x5f, 0x78, 0x6d, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6a, 0x76, 0x6d, 0x58, 0x6d, 0x73, 0x42, 0x79,
+ 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x6a, 0x76, 0x6d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72,
+ 0x61, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x13, 0x6a, 0x76, 0x6d, 0x4d, 0x61, 0x78, 0x52, 0x61, 0x6d, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x19, 0x6a, 0x76, 0x6d, 0x5f,
+ 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x75,
+ 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x16, 0x6a,
+ 0x76, 0x6d, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75,
+ 0x70, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0e, 0x6a, 0x76, 0x6d, 0x5f,
+ 0x78, 0x6d, 0x78, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x6a, 0x76, 0x6d, 0x58, 0x6d, 0x78, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x43,
+ 0x0a, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73,
+ 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
+ 0x73, 0x52, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
+ 0x73, 0x65, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
+ 0x74, 0x22, 0x8a, 0x03, 0x0a, 0x0e, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75,
+ 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69,
+ 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d,
+ 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65,
+ 0x6e, 0x73, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x0c, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x64, 0x72, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64, 0x72, 0x61, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
+ 0x12, 0x34, 0x0a, 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x67,
+ 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x14, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+ 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62,
+ 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x55, 0x73, 0x65,
+ 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
+ 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x66, 0x72,
+ 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xfa,
+ 0x03, 0x0a, 0x13, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x6d, 0x69, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x0a,
+ 0x0f, 0x6d, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x75, 0x74, 0x69, 0x6c,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x42, 0x0a, 0x1d,
0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
- 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17,
+ 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x1b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74,
+ 0x75, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x6d, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18,
+ 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x6d, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1b,
+ 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xd6, 0x01, 0x0a, 0x1d,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64,
+ 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x0a,
+ 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12,
+ 0x42, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74,
+ 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
+ 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x43, 0x6d, 0x64, 0x6c,
+ 0x69, 0x6e, 0x65, 0x22, 0xf2, 0x0c, 0x0a, 0x17, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12,
+ 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
+ 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
+ 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64,
+ 0x65, 0x43, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24,
+ 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x55,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12,
+ 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55,
+ 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67,
+ 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70,
+ 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70,
+ 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c,
0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x55,
- 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
- 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x47, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x3a,
- 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f,
- 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x55,
- 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18,
- 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x43, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
- 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c,
- 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14,
- 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65,
- 0x47, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d,
- 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f,
- 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x64,
- 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a,
- 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76,
- 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61,
- 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
- 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x18, 0x1d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56,
- 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x19, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16,
- 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x74, 0x69, 0x6c, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x1f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
- 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a,
- 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x5f,
- 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x19, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x47,
- 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x22, 0xe8,
- 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
- 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x64, 0x65,
- 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a,
- 0x12, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64,
- 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74,
- 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x75,
- 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e,
- 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x43,
- 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x65,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0b, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x21, 0x0a,
- 0x0c, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x64, 0x73,
- 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x6f,
- 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65,
- 0x64, 0x65, 0x64, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x65,
- 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x61,
- 0x69, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x6b, 0x6e,
- 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
- 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x75,
- 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64,
- 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x75, 0x6e,
- 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x43, 0x6f,
- 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x14, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
- 0x6f, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf1, 0x0a, 0x0a, 0x0c, 0x57, 0x6f,
+ 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36,
+ 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x12, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x70, 0x75,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2e,
+ 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f,
+ 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36,
+ 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x16,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47,
+ 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75,
+ 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61,
+ 0x67, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70,
+ 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
+ 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x55, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72,
+ 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61,
+ 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x70,
+ 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x70,
+ 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x45, 0x0a, 0x1f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43,
+ 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63,
+ 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x6e,
+ 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d,
+ 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x22, 0xe8, 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10,
+ 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
+ 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0e, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e,
+ 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65,
+ 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b,
+ 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f,
+ 0x70, 0x6f, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x65, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x6e, 0x69,
+ 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72,
+ 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75,
+ 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x64,
+ 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x6f,
+ 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x6f,
+ 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
+ 0x6e, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x70,
+ 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a,
+ 0x16, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x6f,
+ 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x22, 0x4f, 0x0a, 0x0f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x12, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69,
+ 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2e,
+ 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6c,
+ 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x4f,
+ 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x26,
+ 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x76,
+ 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x65, 0x64, 0x56, 0x32, 0x12, 0x40, 0x0a, 0x0f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79,
+ 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x66, 0x52, 0x0e, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x49, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72,
+ 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xdb, 0x0b, 0x0a, 0x0c, 0x57, 0x6f,
0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
@@ -14762,1025 +16771,1242 @@ var file_api_v1_common_proto_rawDesc = []byte{
0x69, 0x6e, 0x64, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x4f,
0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x6f, 0x6f, 0x74,
0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x1a, 0x39,
- 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x53, 0x0a,
- 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d,
- 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e,
- 0x74, 0x69, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x22, 0xdb, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
- 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26,
- 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e,
- 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
- 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a,
- 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x09, 0x73, 0x70, 0x6f, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d,
- 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0c, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f,
- 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x50, 0x72,
- 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0xe5, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66,
- 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43,
- 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x1a, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75,
- 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x14, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9c, 0x12, 0x0a, 0x04, 0x4e, 0x6f, 0x64,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e,
- 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16,
- 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d,
- 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a,
- 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64,
- 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79,
- 0x12, 0x4e, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75,
- 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75,
- 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
- 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x28, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
- 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f,
- 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c,
- 0x64, 0x72, 0x65, 0x6e, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d,
- 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x06, 0x6c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0b,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e,
- 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a,
- 0x0e, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18,
- 0x32, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65,
- 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x28, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x63, 0x65,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x63, 0x70, 0x75, 0x18, 0x33, 0x20, 0x01, 0x28, 0x01, 0x42,
- 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x56, 0x63, 0x70,
- 0x75, 0x12, 0x26, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67,
- 0x69, 0x62, 0x18, 0x34, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x72,
- 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x47, 0x69, 0x62, 0x12, 0x26, 0x0a, 0x0d, 0x70, 0x72, 0x69,
- 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x18, 0x35, 0x20, 0x01, 0x28, 0x01,
- 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x47, 0x70,
- 0x75, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x36,
- 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, 0x50, 0x72, 0x69,
- 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69,
- 0x63, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x09, 0x67, 0x70, 0x75,
- 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01,
- 0x52, 0x08, 0x67, 0x70, 0x75, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x14, 0x6d, 0x6f,
- 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f,
- 0x75, 0x72, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x11, 0x6d, 0x6f,
- 0x6e, 0x65, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12,
- 0x50, 0x0a, 0x1b, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x65, 0x66, 0x66, 0x5f, 0x70, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x3a,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79,
- 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x17, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x45,
- 0x66, 0x66, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x73,
- 0x74, 0x12, 0x43, 0x0a, 0x14, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x63, 0x70, 0x75, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f,
- 0x6e, 0x65, 0x79, 0x52, 0x11, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50,
- 0x65, 0x72, 0x56, 0x63, 0x70, 0x75, 0x12, 0x41, 0x0a, 0x13, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f,
- 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x50, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x72,
- 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x47, 0x69, 0x62, 0x12, 0x41, 0x0a, 0x13, 0x6d, 0x6f, 0x6e,
- 0x65, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75,
- 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65,
- 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x47, 0x70, 0x75, 0x12, 0x3a, 0x0a, 0x0f,
- 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18,
- 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74,
- 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x65, 0x79,
- 0x43, 0x70, 0x75, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x12, 0x6d, 0x6f, 0x6e, 0x65,
- 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x53,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79,
- 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x6d, 0x6f,
- 0x6e, 0x65, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x54, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x47, 0x70,
- 0x75, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f,
- 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f,
- 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e,
- 0x65, 0x79, 0x52, 0x19, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e,
- 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x21, 0x0a,
- 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x56, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x63, 0x75,
- 0x72, 0x61, 0x63, 0x79, 0x18, 0x57, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x63,
- 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x65,
- 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63,
- 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61,
- 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x7a, 0x6f, 0x6e, 0x65,
- 0x18, 0x3d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x79, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x75, 0x62, 0x65,
- 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x69, 0x64, 0x12,
- 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x41, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x55, 0x73, 0x65,
- 0x12, 0x41, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61,
- 0x63, 0x68, 0x65, 0x64, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x41, 0x74, 0x74, 0x61, 0x63,
- 0x68, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e,
- 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x0c,
- 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x47, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b,
- 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x49, 0x0a, 0x12, 0x64,
- 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
- 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x0e, 0x41, 0x74, 0x74, 0x61, 0x63,
- 0x68, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0xae,
- 0x03, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x22, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e,
- 0x6f, 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
+ 0x52, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x50,
+ 0x0a, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x02, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01,
+ 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42,
+ 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x53, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+ 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xdb, 0x02, 0x0a,
+ 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e,
+ 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64,
+ 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x5f,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x6f,
+ 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
+ 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x75,
+ 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x70,
+ 0x72, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x11, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe5, 0x01, 0x0a, 0x0c, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c,
+ 0x0a, 0x1a, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x18, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16,
+ 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x75, 0x6e,
+ 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x22, 0x9c, 0x12, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69,
+ 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
+ 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74,
- 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70,
+ 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63,
- 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f,
- 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66,
- 0x6f, 0x12, 0x3f, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69,
- 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e,
- 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64,
- 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22,
- 0x5c, 0x0a, 0x0d, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74,
- 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2d,
- 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x75, 0x0a,
- 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69,
- 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
- 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73,
- 0x22, 0xc8, 0x03, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61,
- 0x12, 0x34, 0x0a, 0x16, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f,
- 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x14, 0x63, 0x70, 0x75, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x4d, 0x69, 0x6c, 0x6c,
- 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x68, 0x69,
- 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x70, 0x75, 0x48, 0x69, 0x67, 0x68, 0x57, 0x61, 0x74, 0x65,
- 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f,
- 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x21, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76,
- 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6d, 0x69,
- 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1e,
- 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x70, 0x75, 0x53, 0x61, 0x76,
- 0x69, 0x6e, 0x67, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3d,
- 0x0a, 0x1b, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f,
- 0x75, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x18, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68,
- 0x6f, 0x75, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x12, 0x26, 0x0a,
- 0x0f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x70,
- 0x75, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73,
- 0x74, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x0e, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x12,
- 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x73,
- 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73,
- 0x74, 0x5f, 0x77, 0x61, 0x73, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63,
- 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x57, 0x61, 0x73, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x10, 0x53,
- 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12,
- 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a,
- 0x0c, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76,
- 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67,
- 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, 0x83, 0x02, 0x0a, 0x11, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67,
- 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x73,
- 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e,
- 0x74, 0x52, 0x11, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70,
+ 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
+ 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x4e, 0x0a, 0x11, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49,
+ 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1e, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f,
+ 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65,
+ 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75,
+ 0x69, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55,
+ 0x69, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x2b,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c,
+ 0x64, 0x72, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x2c,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06,
+ 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x63, 0x65,
+ 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x32, 0x20, 0x01, 0x28, 0x01, 0x42,
+ 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75,
+ 0x72, 0x12, 0x28, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76,
+ 0x63, 0x70, 0x75, 0x18, 0x33, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70,
+ 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x56, 0x63, 0x70, 0x75, 0x12, 0x26, 0x0a, 0x0d, 0x70,
+ 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x34, 0x20, 0x01,
+ 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72,
+ 0x47, 0x69, 0x62, 0x12, 0x26, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x67, 0x70, 0x75, 0x18, 0x35, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b,
+ 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x47, 0x70, 0x75, 0x12, 0x1f, 0x0a, 0x09, 0x63,
+ 0x70, 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02,
+ 0x18, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0c,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x37, 0x20, 0x01,
+ 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x72,
+ 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65,
+ 0x18, 0x38, 0x20, 0x01, 0x28, 0x01, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x67, 0x70, 0x75, 0x50,
+ 0x72, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x14, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x72,
+ 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x39, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
+ 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x11, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x72, 0x69,
+ 0x63, 0x65, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x50, 0x0a, 0x1b, 0x6d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x5f, 0x65, 0x66, 0x66, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x74, 0x6f,
+ 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x52, 0x17, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x45, 0x66, 0x66, 0x50, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x14, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76,
+ 0x63, 0x70, 0x75, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x11, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x56, 0x63, 0x70, 0x75,
+ 0x12, 0x41, 0x0a, 0x13, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f,
+ 0x70, 0x65, 0x72, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72,
+ 0x47, 0x69, 0x62, 0x12, 0x41, 0x0a, 0x13, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x69,
+ 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65,
+ 0x50, 0x65, 0x72, 0x47, 0x70, 0x75, 0x12, 0x3a, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f,
+ 0x63, 0x70, 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x70, 0x75, 0x50, 0x72, 0x69,
+ 0x63, 0x65, 0x12, 0x40, 0x0a, 0x12, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50,
+ 0x72, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x67, 0x70,
+ 0x75, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x47, 0x70, 0x75, 0x50, 0x72, 0x69, 0x63, 0x65,
+ 0x12, 0x55, 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6d,
+ 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f,
+ 0x75, 0x72, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x19, 0x6d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65,
+ 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65,
+ 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x56, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70,
+ 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72,
+ 0x69, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x18, 0x57,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63,
+ 0x75, 0x72, 0x61, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,
+ 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x3c, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64,
+ 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5a, 0x6f,
+ 0x6e, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x5f, 0x75, 0x69, 0x64, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6b, 0x75, 0x62, 0x65,
+ 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x3f, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f,
+ 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x41, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x10, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x42,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74,
+ 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x0f, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x37, 0x0a,
+ 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
+ 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x49, 0x0a, 0x12, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x48, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d,
+ 0x65, 0x22, 0x45, 0x0a, 0x0e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0xae, 0x03, 0x0a, 0x09, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x6e, 0x6f,
+ 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x42,
+ 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+ 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f,
+ 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66,
+ 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x10, 0x63,
+ 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18,
+ 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+ 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6f,
+ 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61,
+ 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44,
+ 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x0d, 0x43, 0x6f, 0x73,
+ 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74,
+ 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63,
+ 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x75, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09,
+ 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x89,
+ 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65,
+ 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a,
+ 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74,
+ 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xc8, 0x03, 0x0a, 0x0b, 0x53,
+ 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x70,
0x75, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63,
- 0x6f, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61,
- 0x6c, 0x43, 0x70, 0x75, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69,
- 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63,
- 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x43,
- 0x6f, 0x73, 0x74, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x14, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x77, 0x61, 0x73,
- 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43,
- 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x57, 0x61, 0x73, 0x74, 0x65, 0x22, 0x7f, 0x0a, 0x18, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75,
- 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x08, 0x6f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x05,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x22, 0x94, 0x02,
- 0x0a, 0x0d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12,
- 0x29, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x02,
- 0x18, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x61,
- 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65,
- 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
- 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
- 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x14,
- 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66,
- 0x6c, 0x61, 0x67, 0x73, 0x22, 0xe0, 0x47, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x6f, 0x64, 0x5f,
- 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12,
- 0x4a, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79,
- 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x73,
- 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x12, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75,
- 0x6c, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x64,
- 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x48, 0x00, 0x52, 0x10, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52,
- 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x6a,
- 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x72, 0x6f,
- 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f,
- 0x6e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x63,
- 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a,
- 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00,
- 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
- 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x76, 0x63, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48,
- 0x00, 0x52, 0x0a, 0x70, 0x76, 0x63, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a,
- 0x0a, 0x70, 0x76, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8d, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73,
- 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x09, 0x70, 0x76, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
- 0x12, 0x3d, 0x0a, 0x0a, 0x73, 0x63, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8e,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x48, 0x00, 0x52, 0x09, 0x73, 0x63, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12,
- 0x3a, 0x0a, 0x0a, 0x6e, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8f, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00,
- 0x52, 0x09, 0x6e, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x90, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x44,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x68, 0x70, 0x61, 0x5f, 0x64, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
- 0x48, 0x00, 0x52, 0x0a, 0x68, 0x70, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36,
- 0x0a, 0x0b, 0x76, 0x70, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x92, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50,
- 0x41, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x70, 0x61, 0x44,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f,
- 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x93, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48,
- 0x00, 0x52, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74,
- 0x61, 0x69, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
- 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39,
- 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xe9,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
- 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f,
- 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x72, 0x6f, 0x6c,
- 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x18, 0xea, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74,
- 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x1a, 0x6b, 0x65,
- 0x64, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xeb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61,
- 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
- 0x48, 0x00, 0x52, 0x17, 0x6b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x1a, 0x6b,
- 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xec, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
- 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x48, 0x00, 0x52, 0x18, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x68,
- 0x0a, 0x1d, 0x70, 0x6f, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
- 0xed, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64,
- 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x70, 0x6f,
- 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65,
- 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x18, 0xee, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61,
- 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12,
- 0x4c, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x64,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f,
- 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x63,
- 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5e, 0x0a,
- 0x19, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf2, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b,
- 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x48, 0x00, 0x52, 0x17, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x7a, 0x0a,
- 0x23, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x6b,
+ 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x70, 0x75, 0x53,
+ 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73,
+ 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74,
+ 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63,
+ 0x70, 0x75, 0x48, 0x69, 0x67, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x12,
+ 0x2c, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74,
+ 0x75, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a,
+ 0x21, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f,
+ 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72,
+ 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1e, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61,
+ 0x74, 0x69, 0x76, 0x65, 0x43, 0x70, 0x75, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x4d, 0x69,
+ 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x70, 0x75, 0x5f,
+ 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x75, 0x74,
+ 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x63,
+ 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x41, 0x75, 0x74,
+ 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x75, 0x61,
+ 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x0d, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x12,
+ 0x28, 0x0a, 0x10, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x76, 0x69,
+ 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x63, 0x70, 0x75, 0x43, 0x6f,
+ 0x73, 0x74, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75,
+ 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x73, 0x74, 0x12,
+ 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x77, 0x61, 0x73, 0x74,
+ 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74,
+ 0x57, 0x61, 0x73, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x10, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73,
+ 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0c, 0x73, 0x61, 0x76, 0x69, 0x6e,
+ 0x67, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x0b, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22,
+ 0x83, 0x02, 0x0a, 0x11, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53,
+ 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e,
+ 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x11, 0x73, 0x61, 0x76,
+ 0x69, 0x6e, 0x67, 0x73, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3f,
+ 0x0a, 0x1c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x61, 0x76, 0x69,
+ 0x6e, 0x67, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x53, 0x61,
+ 0x76, 0x69, 0x6e, 0x67, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12,
+ 0x33, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73,
+ 0x74, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x76,
+ 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70,
+ 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x77, 0x61, 0x73, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74,
+ 0x57, 0x61, 0x73, 0x74, 0x65, 0x22, 0x7f, 0x0a, 0x18, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
+ 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x72,
+ 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16,
+ 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x22, 0x94, 0x02, 0x0a, 0x0d, 0x4c, 0x61, 0x62, 0x65,
+ 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x61, 0x62,
+ 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12,
+ 0x4d, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x61,
+ 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e,
+ 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e,
+ 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x18,
+ 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67,
+ 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x93,
+ 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x6f, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x70,
+ 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x12, 0x64, 0x65, 0x70,
+ 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
+ 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75,
+ 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61,
+ 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48,
+ 0x00, 0x52, 0x12, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x65, 0x6d, 0x6f,
+ 0x6e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x64,
+ 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12,
+ 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x0b,
+ 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61,
+ 0x69, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x5f,
+ 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e,
+ 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x69,
+ 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a,
+ 0x0b, 0x70, 0x76, 0x63, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8c, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72,
+ 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61,
+ 0x69, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x76, 0x63,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x76, 0x5f, 0x64, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52,
+ 0x09, 0x70, 0x76, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x73, 0x63,
+ 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x09,
+ 0x73, 0x63, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x6e, 0x73, 0x5f,
+ 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x73, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+ 0x73, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x12, 0x36, 0x0a, 0x0b, 0x68, 0x70, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
+ 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x48, 0x50, 0x41, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x70,
+ 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x76, 0x70, 0x61, 0x5f,
+ 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x70, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x12, 0x4c, 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f,
+ 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e,
+ 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x58,
+ 0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48,
+ 0x00, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65,
+ 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xe9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61,
+ 0x69, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xea, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
+ 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00,
+ 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x1a, 0x6b, 0x65, 0x64, 0x61, 0x5f, 0x73, 0x63, 0x61,
+ 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x18, 0xeb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x17, 0x6b, 0x65,
+ 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x1a, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61,
+ 0x69, 0x6c, 0x73, 0x18, 0xec, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x18,
+ 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1d, 0x70, 0x6f, 0x64, 0x5f,
+ 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x64, 0x67, 0x65,
+ 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xed, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73,
+ 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x70, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x71,
+ 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xee, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+ 0x73, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f,
+ 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x76, 0x6f, 0x6c,
+ 0x63, 0x61, 0x6e, 0x6f, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x18, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5e, 0x0a, 0x19, 0x73, 0x70, 0x61, 0x72, 0x6b,
0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74,
- 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x70,
- 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x64, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61,
- 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12,
- 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x70, 0x6f, 0x64, 0x49, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69,
- 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x70, 0x12,
- 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61,
- 0x64, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x71, 0x6f, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18,
- 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x6f, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12,
- 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a,
+ 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x17,
+ 0x73, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x7a, 0x0a, 0x23, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf3,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48,
+ 0x00, 0x52, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x70, 0x61, 0x72,
+ 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61,
+ 0x69, 0x6c, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x6b, 0x79, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x5f, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf4, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x79,
+ 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6b, 0x79, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1d, 0x6b, 0x79,
+ 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf5, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x79, 0x76, 0x65,
+ 0x72, 0x6e, 0x6f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6b, 0x79, 0x76, 0x65, 0x72, 0x6e,
+ 0x6f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x26, 0x67, 0x61, 0x74, 0x65, 0x6b, 0x65, 0x65,
+ 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x5f, 0x74,
+ 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
+ 0xf6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x61, 0x74, 0x65, 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72,
+ 0x61, 0x69, 0x6e, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61,
+ 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x23, 0x67, 0x61, 0x74, 0x65, 0x6b, 0x65, 0x65, 0x70, 0x65,
+ 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+ 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x1d, 0x67, 0x61,
+ 0x74, 0x65, 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61,
+ 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0xf7, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x74, 0x65,
+ 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x67, 0x61, 0x74, 0x65, 0x6b,
+ 0x65, 0x65, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x44,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18,
+ 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06,
+ 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f,
+ 0x64, 0x49, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x70, 0x12, 0x1b, 0x0a, 0x09,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61,
+ 0x64, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12,
+ 0x1b, 0x0a, 0x09, 0x71, 0x6f, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x71, 0x6f, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+ 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x70,
+ 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69,
+ 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x63, 0x70, 0x75,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72,
+ 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18,
+ 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73,
+ 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c,
+ 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
+ 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79,
+ 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
+ 0x65, 0x64, 0x42, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65,
+ 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x72, 0x65,
+ 0x61, 0x64, 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2a,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x41, 0x76,
+ 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x2b, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74,
+ 0x79, 0x70, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c,
+ 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69,
+ 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73,
+ 0x73, 0x69, 0x6e, 0x67, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f,
+ 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x2f, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x30,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3c, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x64, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
+ 0x70, 0x6f, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
+ 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x76, 0x63, 0x5f, 0x72, 0x65, 0x74, 0x65,
+ 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x40, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x12, 0x70, 0x76, 0x63, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x41, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x42, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f,
+ 0x64, 0x65, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x46, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x47,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79,
+ 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x18, 0x48, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x73,
+ 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64,
+ 0x65, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x49, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23,
+ 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18,
+ 0x4a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x73,
+ 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x4d, 0x69, 0x73, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69,
+ 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x78,
+ 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70,
+ 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x4d, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x50, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x15, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x6a, 0x6f,
+ 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x75,
+ 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6a,
+ 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x63,
+ 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6a, 0x6f, 0x62, 0x5f, 0x70, 0x61,
+ 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x52, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0e, 0x6a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x12,
+ 0x2a, 0x0a, 0x11, 0x6a, 0x6f, 0x62, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x18, 0x53, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6a, 0x6f, 0x62, 0x42,
+ 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x6a,
+ 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f,
+ 0x64, 0x65, 0x18, 0x54, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6a,
+ 0x6f, 0x62, 0x5f, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x55, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64,
+ 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x56, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x44, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x18, 0x57, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x62, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
+ 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x58, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x62,
+ 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f,
+ 0x62, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x59, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x62, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x6f,
+ 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28,
+ 0x0a, 0x10, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6a, 0x6f,
+ 0x62, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x41, 0x63,
+ 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x72, 0x6f, 0x6e,
+ 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x72, 0x6f, 0x6e, 0x4c,
+ 0x61, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x35, 0x0a, 0x17, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x14, 0x63, 0x72, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x72, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b,
+ 0x0a, 0x1a, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75,
+ 0x6c, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x60, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x17, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66,
+ 0x75, 0x6c, 0x4a, 0x6f, 0x62, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x16, 0x63,
+ 0x72, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x61, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x63, 0x72, 0x6f,
+ 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74,
+ 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e,
+ 0x67, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
+ 0x64, 0x73, 0x18, 0x62, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x74,
+ 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72,
+ 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x18, 0x65,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x70, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x66,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x78, 0x74,
+ 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x73, 0x12, 0x38, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72,
+ 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x68, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x18, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61,
+ 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x69, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x66, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x1f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
+ 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54,
+ 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x45, 0x0a, 0x1f,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+ 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
+ 0x6b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
+ 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x4c, 0x0a, 0x23, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x6c, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x1f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
+ 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65,
+ 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x18, 0x6d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c,
+ 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73,
+ 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x66,
+ 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73,
+ 0x12, 0x37, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x66,
+ 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x6f, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x46, 0x61, 0x6d,
+ 0x69, 0x6c, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x78, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6c,
+ 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x67, 0x72, 0x65,
+ 0x73, 0x73, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x79, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c,
+ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d,
+ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x7a, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68,
+ 0x73, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x61, 0x63,
+ 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x7b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11,
+ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x68, 0x6f, 0x73, 0x74,
+ 0x73, 0x18, 0x7c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
+ 0x54, 0x6c, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72,
+ 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18,
+ 0x7d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x6c,
+ 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x69, 0x6e, 0x67, 0x72,
+ 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
+ 0x72, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x7e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x69, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
+ 0x49, 0x70, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x72,
+ 0x75, 0x6c, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74,
+ 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x12, 0x3e, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x5f,
+ 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18,
+ 0x81, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48,
+ 0x61, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
+ 0x12, 0x34, 0x0a, 0x16, 0x70, 0x76, 0x63, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x13, 0x70, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x70, 0x76, 0x63, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x76, 0x63, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x2f, 0x0a,
+ 0x13, 0x70, 0x76, 0x63, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x76, 0x63,
+ 0x41, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x29,
+ 0x0a, 0x10, 0x70, 0x76, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64,
+ 0x65, 0x73, 0x18, 0x85, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x76, 0x63, 0x41, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x76, 0x63,
+ 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x86, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x76, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f,
+ 0x64, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x76, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x76,
+ 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
+ 0x76, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x70, 0x76, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70,
+ 0x76, 0x63, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x89, 0x01, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x70, 0x76, 0x63, 0x49, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3a,
+ 0x0a, 0x19, 0x70, 0x76, 0x63, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6d,
+ 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x8a, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x16, 0x70, 0x76, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x70, 0x76,
+ 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x69, 0x65, 0x73, 0x18, 0x8b, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x70, 0x76, 0x63,
+ 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65,
+ 0x73, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x76, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x12, 0x70, 0x76, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73,
+ 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x76, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x76, 0x43,
+ 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x76, 0x5f, 0x61, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x98, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0d, 0x70, 0x76, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x73,
+ 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x76, 0x5f, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x76,
+ 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a,
+ 0x11, 0x70, 0x76, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x76, 0x43, 0x6c, 0x61,
+ 0x69, 0x6d, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x76, 0x5f,
+ 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x18, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x76, 0x43, 0x6c,
+ 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x1c, 0x0a, 0x09, 0x70, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x9c, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x70, 0x76, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x9d, 0x01, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x76, 0x49, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x25,
+ 0x0a, 0x0e, 0x70, 0x76, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
+ 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x76, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x76, 0x5f, 0x63, 0x73, 0x69, 0x5f,
+ 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70,
+ 0x76, 0x43, 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x76,
+ 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74,
+ 0x79, 0x70, 0x65, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x76, 0x56, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34,
+ 0x0a, 0x16, 0x70, 0x76, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x79, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0xa1, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x13, 0x70, 0x76, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x5a,
+ 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
+ 0x63, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11,
+ 0x73, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0xab, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x52, 0x65, 0x63, 0x6c,
+ 0x61, 0x69, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x63, 0x5f,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d,
+ 0x6f, 0x64, 0x65, 0x18, 0xac, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x63, 0x56, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12,
+ 0x3a, 0x0a, 0x19, 0x73, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xad, 0x01, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0d, 0x73,
+ 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0xae, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x63, 0x50,
+ 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c,
+ 0x73, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x15,
+ 0x73, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c,
+ 0x6f, 0x67, 0x69, 0x65, 0x73, 0x18, 0xaf, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x73, 0x63,
+ 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65,
+ 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x63, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63,
+ 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x73,
+ 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x18, 0xb2, 0x01, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73,
+ 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x43, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a,
+ 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x6f,
+ 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0xb5,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79,
+ 0x12, 0x33, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18,
+ 0xb6, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x54,
+ 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x6f,
+ 0x6c, 0x65, 0x73, 0x18, 0xb7, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65,
+ 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0xb8, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70,
+ 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
+ 0x6c, 0x5f, 0x69, 0x70, 0x18, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64,
+ 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xba, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xbb, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6e, 0x6f,
+ 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18,
+ 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x73, 0x18, 0xbc, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x4f, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69,
+ 0x6d, 0x65, 0x18, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12,
+ 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x18, 0xbe, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x70,
+ 0x61, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xc8,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x68, 0x70, 0x61, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x70, 0x61, 0x5f, 0x6d, 0x61, 0x78,
+ 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0e, 0x68, 0x70, 0x61, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
+ 0x12, 0x31, 0x0a, 0x14, 0x68, 0x70, 0x61, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f,
+ 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x12, 0x68, 0x70, 0x61, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x68, 0x70, 0x61, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72,
+ 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xcb, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x12, 0x68, 0x70, 0x61, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x70, 0x61, 0x5f, 0x6d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xcc, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0f, 0x68, 0x70, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x70, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x70, 0x61, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x68, 0x70, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x5f, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0xce, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x68, 0x70, 0x61, 0x53, 0x63, 0x61,
+ 0x6c, 0x65, 0x55, 0x70, 0x53, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x68, 0x70, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64,
+ 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0xcf, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x68, 0x70, 0x61, 0x53, 0x63, 0x61,
+ 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x53, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x70, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76,
+ 0x70, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12,
+ 0x76, 0x70, 0x61, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x76, 0x70, 0x61, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x19, 0x76,
+ 0x70, 0x61, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xd4, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x17, 0x76, 0x70, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x70, 0x61, 0x5f,
+ 0x63, 0x70, 0x75, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0xd5, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x76, 0x70, 0x61, 0x43, 0x70, 0x75, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x2b, 0x0a, 0x11, 0x76, 0x70, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x18, 0xd6, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x70, 0x61,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x76, 0x70, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xd7, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x76, 0x70, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x17,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xdc, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61,
+ 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0xdd, 0x01, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x0f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
+ 0x73, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
+ 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xde, 0x01,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65,
+ 0x48, 0x61, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63,
+ 0x70, 0x75, 0x18, 0xdf, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x12, 0x34, 0x0a, 0x16, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0xe0, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
+ 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0xe1, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x43, 0x70,
+ 0x75, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
+ 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0xe2, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x69,
+ 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0xe3, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x19, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75,
+ 0x6c, 0x74, 0x43, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x47, 0x0a, 0x20, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+ 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0xe4,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67,
+ 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69,
+ 0x6d, 0x69, 0x74, 0x12, 0x45, 0x0a, 0x1f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e,
+ 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0xe5, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x22, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+ 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x18, 0xe6, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61,
+ 0x6e, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xe7, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf0, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0xf1, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x42, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x63, 0x50, 0x61,
+ 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x22, 0x46, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
+ 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xb0, 0x01, 0x0a,
+ 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
+ 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72,
+ 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c,
+ 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22,
+ 0x8b, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70,
+ 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
+ 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
+ 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8d, 0x02,
+ 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+ 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a,
0x17, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x6d, 0x69,
- 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15,
+ 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15,
0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69,
0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x15,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04,
0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x70, 0x75,
0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72,
- 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d,
+ 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d,
0x69, 0x74, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x2e, 0x0a,
0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a,
- 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x1e,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64,
- 0x5f, 0x62, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72,
- 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x20,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x28, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x44, 0x65, 0x73,
- 0x69, 0x72, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
- 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x72,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
- 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x2b,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
- 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74,
- 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76,
- 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61,
- 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x67,
- 0x72, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70,
- 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65,
- 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
- 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
- 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65,
- 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12,
- 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x3c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x64, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
- 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x13, 0x70, 0x6f, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x3e,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x61,
- 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
- 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
- 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x76, 0x63, 0x5f, 0x72,
- 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
- 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x76, 0x63, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x41, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x76, 0x69,
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72,
- 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x42, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a,
- 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x46,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x44, 0x65, 0x73, 0x69, 0x72,
- 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64,
- 0x79, 0x18, 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65,
- 0x61, 0x64, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x61, 0x76, 0x61,
- 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x48, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x6f,
- 0x64, 0x65, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d,
- 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x49, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e,
- 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f,
- 0x6d, 0x69, 0x73, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18, 0x4b, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x4d, 0x69, 0x73, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x61,
- 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
- 0x6d, 0x61, 0x78, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x25,
- 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73,
- 0x18, 0x4d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d,
- 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64,
- 0x18, 0x50, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x6c,
- 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x3a, 0x0a,
- 0x19, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x17, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6a, 0x6f, 0x62,
- 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x52, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0e, 0x6a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69,
- 0x73, 0x6d, 0x12, 0x2a, 0x0a, 0x11, 0x6a, 0x6f, 0x62, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66,
- 0x66, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x53, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6a,
- 0x6f, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e,
- 0x0a, 0x13, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x54, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6a, 0x6f, 0x62,
- 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23,
- 0x0a, 0x0d, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18,
- 0x55, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e,
- 0x64, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x56, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x18, 0x57, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x62, 0x5f, 0x61, 0x63, 0x74,
- 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x58, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
- 0x6a, 0x6f, 0x62, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x26, 0x0a,
- 0x0f, 0x6a, 0x6f, 0x62, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73,
- 0x18, 0x59, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x62, 0x46, 0x61, 0x69, 0x6c, 0x65,
- 0x64, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72,
- 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72,
- 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x5b, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
- 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x72, 0x6f,
- 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63,
- 0x72, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x72,
- 0x6f, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69,
- 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5e, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x72, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x72, 0x6f,
- 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x72, 0x6f, 0x6e,
- 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
- 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
- 0x60, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65,
- 0x73, 0x73, 0x66, 0x75, 0x6c, 0x4a, 0x6f, 0x62, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x33,
- 0x0a, 0x16, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6a, 0x6f,
- 0x62, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x61, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13,
- 0x63, 0x72, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x62, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x63, 0x72, 0x6f,
- 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e,
- 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x70, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x70, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70,
- 0x73, 0x18, 0x66, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x73, 0x12, 0x38, 0x0a, 0x0d, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x67, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x68, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x38,
- 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x69, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
- 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x1f, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x72, 0x61,
- 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x6a, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x1c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e,
- 0x61, 0x6c, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
- 0x45, 0x0a, 0x1f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72,
- 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4c, 0x0a, 0x23, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x6c, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x1f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x61,
- 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69,
- 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c,
- 0x69, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69,
- 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
- 0x6f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70,
- 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x12,
- 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x78, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e,
- 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x79, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12,
- 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73,
- 0x18, 0x7a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50,
- 0x61, 0x74, 0x68, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f,
- 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x7b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
- 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x12,
- 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x68,
- 0x6f, 0x73, 0x74, 0x73, 0x18, 0x7c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x67, 0x72,
- 0x65, 0x73, 0x73, 0x54, 0x6c, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x69,
- 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65,
- 0x74, 0x73, 0x18, 0x7d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x69,
- 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x7e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16,
- 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x65, 0x72, 0x49, 0x70, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x7f, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x75, 0x6c, 0x65,
- 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x80, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x6c, 0x73, 0x43, 0x6f,
- 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x68,
- 0x61, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65,
- 0x6e, 0x64, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x72, 0x65,
- 0x73, 0x73, 0x48, 0x61, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x61, 0x63, 0x6b,
- 0x65, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x76, 0x63, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x82, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x70, 0x76, 0x63,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x76, 0x63, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x76, 0x63, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11,
- 0x70, 0x76, 0x63, 0x41, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
- 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x76, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,
- 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x85, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x76,
- 0x63, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f,
- 0x70, 0x76, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18,
- 0x86, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x76, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x76, 0x63, 0x5f, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0d, 0x70, 0x76, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e,
- 0x0a, 0x0a, 0x70, 0x76, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x88, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x76, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21,
- 0x0a, 0x0c, 0x70, 0x76, 0x63, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x89,
- 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x76, 0x63, 0x49, 0x73, 0x42, 0x6f, 0x75, 0x6e,
- 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x76, 0x63, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x8a,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x76, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x0a,
- 0x16, 0x70, 0x76, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70,
- 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x18, 0x8b, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14,
- 0x70, 0x76, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f,
- 0x67, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x76, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x96, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x76, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43,
- 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x76, 0x5f, 0x63,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
- 0x70, 0x76, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x76,
- 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x98, 0x01,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x76, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f,
- 0x64, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x76, 0x5f, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69,
- 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0f, 0x70, 0x76, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x76, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x66,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x76,
- 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16,
- 0x70, 0x76, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70,
- 0x76, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
- 0x9c, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x76, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18,
- 0x9d, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x76, 0x49, 0x73, 0x42, 0x6f, 0x75, 0x6e,
- 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x76, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d,
- 0x6f, 0x64, 0x65, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x76, 0x56, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x76, 0x5f, 0x63,
- 0x73, 0x69, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x70, 0x76, 0x43, 0x73, 0x69, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x32, 0x0a,
- 0x15, 0x70, 0x76, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70,
- 0x76, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x76, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x66, 0x66,
- 0x69, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0xa1, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x13, 0x70, 0x76, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x79, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x63, 0x5f, 0x70, 0x72,
- 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0d, 0x73, 0x63, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12,
- 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x18, 0xab, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x52,
- 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x16,
- 0x73, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xac, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73,
- 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f,
- 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0xad, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4f,
- 0x0a, 0x0d, 0x73, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
- 0xae, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e,
- 0x53, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0c, 0x73, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12,
- 0x33, 0x0a, 0x15, 0x73, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f,
- 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x18, 0xaf, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x13, 0x73, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f,
- 0x67, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x63, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0e, 0x73, 0x63, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
- 0x1c, 0x0a, 0x09, 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xb1, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a,
- 0x0d, 0x6e, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x18, 0xb2,
- 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a,
- 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f,
- 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x12, 0x31, 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
- 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64,
- 0x79, 0x18, 0xb5, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65,
- 0x61, 0x64, 0x79, 0x12, 0x33, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x69, 0x6e,
- 0x74, 0x73, 0x18, 0xb6, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x6e, 0x6f,
- 0x64, 0x65, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0xb7, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e,
- 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0xb8, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
- 0x6c, 0x49, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65,
- 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
- 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x12, 0x22,
- 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xba,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xbb, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x73, 0x18, 0xbc, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x4f, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75,
- 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x6f,
- 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69,
- 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
- 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xbe, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e,
- 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a,
- 0x10, 0x68, 0x70, 0x61, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x73, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x68, 0x70, 0x61, 0x4d, 0x69, 0x6e,
- 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x70, 0x61, 0x5f,
- 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xc9, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0e, 0x68, 0x70, 0x61, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x68, 0x70, 0x61, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x12, 0x68, 0x70, 0x61, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x68, 0x70, 0x61, 0x5f, 0x64, 0x65,
- 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0xcb,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x68, 0x70, 0x61, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65,
- 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x70, 0x61,
- 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xcc,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x68, 0x70, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x70, 0x61, 0x5f, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x70, 0x61,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x68, 0x70, 0x61, 0x5f, 0x73, 0x63,
- 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xce, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x68, 0x70, 0x61,
- 0x53, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70, 0x53, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x68, 0x70, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c,
- 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xcf, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x68, 0x70, 0x61,
- 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x53, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x70, 0x61, 0x5f, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0d, 0x76, 0x70, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12,
- 0x2d, 0x0a, 0x12, 0x76, 0x70, 0x61, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x5f,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x76, 0x70,
- 0x61, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b,
- 0x0a, 0x19, 0x76, 0x70, 0x61, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xd4, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x17, 0x76, 0x70, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x76,
- 0x70, 0x61, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0xd5, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x70, 0x61, 0x43, 0x70, 0x75, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x70, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0xd6, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
- 0x76, 0x70, 0x61, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
- 0x1e, 0x0a, 0x0a, 0x76, 0x70, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xd7, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x70, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x36, 0x0a, 0x17, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xdc, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65,
- 0x6d, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0xdd, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54,
- 0x79, 0x70, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61,
- 0x6e, 0x67, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73,
- 0x18, 0xde, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61,
- 0x6e, 0x67, 0x65, 0x48, 0x61, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2e,
- 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x63, 0x70, 0x75, 0x18, 0xdf, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x12, 0x34,
- 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0xe0, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x78, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61,
- 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0xe1, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x69,
- 0x6e, 0x43, 0x70, 0x75, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61,
- 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0xe2,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67,
- 0x65, 0x4d, 0x69, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
- 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0xe3, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x19, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x47, 0x0a,
- 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66,
- 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x18, 0xe4, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52,
- 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x45, 0x0a, 0x1f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f,
- 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x70,
- 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0xe5, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x1b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61,
- 0x75, 0x6c, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a,
- 0x22, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x66,
- 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x18, 0xe6, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x18, 0xe7, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61,
- 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf0, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf1, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x42, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 0x1a, 0x3f, 0x0a, 0x11, 0x53,
- 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07,
- 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x46, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d,
- 0x61, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22,
- 0xb0, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d,
- 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14,
- 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72,
- 0x65, 0x61, 0x64, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61,
- 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12,
- 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
- 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
+ 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x9d, 0x01,
+ 0x0a, 0x13, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6c,
+ 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc0, 0x01,
+ 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+ 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12,
+ 0x51, 0x0a, 0x16, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f,
+ 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43,
+ 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x14, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+ 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0xbd, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d,
+ 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c,
+ 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65,
+ 0x12, 0x29, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73,
+ 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
+ 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70,
+ 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
+ 0x12, 0x38, 0x0a, 0x0b, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54,
+ 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x74,
+ 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0d, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb0, 0x01, 0x0a, 0x0a, 0x4a, 0x6f,
+ 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54,
0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x22, 0x8d, 0x02, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
- 0x12, 0x36, 0x0a, 0x17, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
- 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x15, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x4d, 0x69,
- 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65,
- 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15,
- 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69,
- 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x70, 0x75,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73,
- 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73,
- 0x22, 0x9d, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
- 0x22, 0xc0, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74,
- 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x73, 0x12, 0x51, 0x0a, 0x16, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61,
- 0x69, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52,
- 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70,
- 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x22, 0xbd, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c,
- 0x61, 0x69, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64,
- 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d,
- 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x23,
- 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65,
- 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xc6, 0x01, 0x0a,
+ 0x0c, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x54,
+ 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f,
+ 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54,
0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x0b, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a,
- 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39,
- 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb0, 0x01, 0x0a,
- 0x0a, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x08,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22,
- 0xc6, 0x01, 0x0a, 0x0c, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6a, 0x6f,
+ 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x73,
+ 0x12, 0x36, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x62,
+ 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x7d, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x54,
+ 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65,
+ 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x61, 0x63, 0x6b, 0x6f,
+ 0x66, 0x66, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
+ 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f,
+ 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72,
+ 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
+ 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x12, 0x27, 0x0a, 0x0f, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e,
+ 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72,
+ 0x74, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
+ 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61,
+ 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
+ 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e,
+ 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65,
+ 0x73, 0x73, 0x65, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 0x22, 0xdc, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72,
+ 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x21, 0x0a,
+ 0x0c, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x22, 0x70, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
+ 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 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, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, 0x5f,
+ 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x4d, 0x6f,
+ 0x64, 0x65, 0x22, 0xf3, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e,
+ 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73,
+ 0x12, 0x24, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x4c,
+ 0x53, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+ 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
+ 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
+ 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
+ 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72,
+ 0x65, 0x73, 0x73, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
+ 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4c, 0x0a, 0x0b, 0x49, 0x6e, 0x67, 0x72,
+ 0x65, 0x73, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x05, 0x70,
+ 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52,
+ 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x70, 0x0a, 0x0b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
+ 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x74,
+ 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61,
+ 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52,
+ 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x22, 0xfe, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21,
+ 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72,
+ 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72,
+ 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a,
+ 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x0a, 0x49, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x54, 0x4c, 0x53, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd0,
+ 0x02, 0x0a, 0x1c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12,
+ 0x51, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75,
+ 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x14, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61,
+ 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4c, 0x0a, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x52,
+ 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x56, 0x43, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x6f, 0x75,
+ 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x42, 0x79, 0x50, 0x6f, 0x64,
+ 0x73, 0x22, 0x98, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+ 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+ 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x01, 0x0a,
+ 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69,
+ 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+ 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
+ 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x22,
+ 0xc6, 0x01, 0x0a, 0x0c, 0x50, 0x56, 0x43, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06,
@@ -15792,933 +18018,571 @@ var file_api_v1_common_proto_rawDesc = []byte{
0x62, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74,
0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06,
0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x6f,
- 0x6e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
- 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a,
- 0x6f, 0x62, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0b,
- 0x6a, 0x6f, 0x62, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x7d, 0x0a, 0x12, 0x41,
- 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x0b, 0x4a,
- 0x6f, 0x62, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66,
- 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x61,
- 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f,
- 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b,
- 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x12, 0x27,
- 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
- 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x70, 0x6f,
- 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05,
- 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72,
- 0x65, 0x73, 0x73, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
- 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 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, 0x22, 0xdc, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a,
- 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50,
- 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74,
- 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x22, 0x70, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 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, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07,
- 0x69, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69,
- 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xf3, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75,
- 0x6c, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x54, 0x4c, 0x53, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x64, 0x65, 0x66,
- 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72,
- 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61,
- 0x75, 0x6c, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x15, 0x6c, 0x6f,
- 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72,
- 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49,
- 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4c, 0x0a, 0x0b, 0x49,
- 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f,
- 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x29,
- 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x61,
- 0x74, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x70, 0x0a, 0x0b, 0x49, 0x6e, 0x67,
- 0x72, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09,
- 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x70, 0x61, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x62, 0x61, 0x63,
- 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65,
- 0x6e, 0x64, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x22, 0xfe, 0x01, 0x0a, 0x0e,
- 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x21,
- 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72,
- 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x70, 0x69,
- 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b,
- 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x0a,
- 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x4c, 0x53, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f,
- 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73,
- 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d,
- 0x65, 0x22, 0xd0, 0x02, 0x0a, 0x1c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x12, 0x51, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72,
- 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52,
- 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
- 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4c, 0x0a, 0x14, 0x76, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x79, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x56, 0x43, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f,
- 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x42, 0x79,
- 0x50, 0x6f, 0x64, 0x73, 0x22, 0x98, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x46, 0x0a,
- 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
- 0x6e, 0x74, 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
- 0x90, 0x01, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x66,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
- 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65,
- 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69,
- 0x72, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75,
- 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72,
- 0x65, 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, 0x50, 0x56, 0x43, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74,
- 0x50, 0x72, 0x6f, 0x62, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73,
- 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61,
- 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf5, 0x02, 0x0a, 0x17,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf5, 0x02, 0x0a, 0x17, 0x50, 0x65, 0x72,
+ 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69,
- 0x74, 0x79, 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x56, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x12, 0x3b, 0x0a, 0x0d, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x56, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x61,
- 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74,
- 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
- 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x50, 0x56, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
- 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
- 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
- 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd5, 0x02, 0x0a, 0x0e, 0x50, 0x56, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
- 0x29, 0x0a, 0x03, 0x63, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x49, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x63, 0x73, 0x69, 0x12, 0x39, 0x0a, 0x09, 0x68, 0x6f,
- 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x68, 0x6f, 0x73,
- 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x03, 0x6e, 0x66, 0x73, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x46, 0x53, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x6e, 0x66, 0x73,
- 0x12, 0x59, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69,
- 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x56, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
- 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x15, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12,
+ 0x35, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x56, 0x43, 0x6c,
+ 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x63, 0x6c,
+ 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x12, 0x3b, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x56, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x66, 0x66, 0x69,
+ 0x6e, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x23,
+ 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0xa5, 0x02, 0x0a, 0x0f, 0x43, 0x53, 0x49, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c,
- 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65,
- 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72,
- 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x5a, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x49, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75,
+ 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x50, 0x56, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd5, 0x02, 0x0a, 0x0e, 0x50, 0x56, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x03,
+ 0x63, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x53, 0x49, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x52, 0x03, 0x63, 0x73, 0x69, 0x12, 0x39, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f,
+ 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x61,
+ 0x74, 0x68, 0x12, 0x29, 0x0a, 0x03, 0x6e, 0x66, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x46, 0x53, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x6e, 0x66, 0x73, 0x12, 0x59, 0x0a,
+ 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x50, 0x56, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74,
+ 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
- 0x74, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74,
- 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a, 0x14, 0x48, 0x6f, 0x73, 0x74,
- 0x50, 0x61, 0x74, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x0f, 0x4e, 0x46, 0x53, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f,
- 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64,
- 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xbe, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b,
- 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x4b,
- 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72,
- 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e,
- 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x61,
- 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65,
- 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f,
- 0x67, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x75,
- 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x69,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63,
- 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70,
- 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa5, 0x02,
+ 0x0a, 0x0f, 0x43, 0x53, 0x49, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x17,
+ 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f,
+ 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64,
+ 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x5a, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61,
+ 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x49, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41,
+ 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
+ 0x1a, 0x43, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68,
- 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65,
- 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73,
- 0x12, 0x48, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a,
- 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x43, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a, 0x14, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x61, 0x74,
+ 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
+ 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x0f, 0x4e, 0x46, 0x53, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c,
+ 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c,
+ 0x79, 0x22, 0xbe, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0a, 0x70,
+ 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72,
+ 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61,
+ 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f,
+ 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65,
+ 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69,
+ 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+ 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a,
+ 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x65, 0x78,
+ 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73,
+ 0x69, 0x6f, 0x6e, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a,
+ 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x04, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x44,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
+ 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x09,
+ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x12, 0x37, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x73,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x08, 0x63, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08,
+ 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f,
+ 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x12, 0x29, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d,
+ 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65,
+ 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x69, 0x67,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 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,
+ 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x22, 0x6a, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x03, 0x0a, 0x0b, 0x4e, 0x6f,
- 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0a,
- 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x6e,
- 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x08,
- 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x0b, 0x61,
- 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c,
- 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61,
- 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
- 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x3b,
- 0x0a, 0x0d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 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, 0x1a, 0x3e, 0x0a, 0x10, 0x41,
- 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x09, 0x4e,
- 0x6f, 0x64, 0x65, 0x54, 0x61, 0x69, 0x6e, 0x74, 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,
- 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65,
- 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
- 0x6d, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x22, 0x3b, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x41,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x0d, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e,
- 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61,
- 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
- 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61,
- 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8d, 0x03, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x53,
- 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63,
- 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d,
- 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74,
- 0x65, 0x6d, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
- 0x79, 0x73, 0x74, 0x65, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x6f, 0x6f,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x6f, 0x6f, 0x74,
- 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6b, 0x65, 0x72, 0x6e,
- 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x73, 0x5f,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x73, 0x49,
- 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c,
- 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6b, 0x75, 0x62,
- 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6b, 0x75, 0x62, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74,
- 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75,
- 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74,
- 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x40, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a,
- 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73,
- 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x68, 0x0a, 0x10, 0x54, 0x6f, 0x70, 0x6f,
- 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x17,
- 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72,
- 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x15, 0x6d, 0x61, 0x74,
- 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x14, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x50, 0x0a, 0x0c, 0x6d,
- 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c,
- 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e,
- 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a,
- 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9b, 0x01,
- 0x0a, 0x0e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x0a, 0x12,
- 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
- 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x3e, 0x0a, 0x0c, 0x4e,
- 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x05, 0x74,
- 0x65, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x54, 0x65, 0x72, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x10,
- 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d,
- 0x12, 0x4c, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73,
- 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x61,
- 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42,
- 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c,
- 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x0a, 0x48, 0x50, 0x41, 0x44, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x10, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x52, 0x65, 0x66, 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x52, 0x65, 0x66, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
- 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
- 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
- 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76,
- 0x69, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08,
- 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0e, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x59, 0x0a, 0x0e, 0x53,
- 0x63, 0x61, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x12, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe9, 0x01, 0x0a, 0x09, 0x48, 0x50, 0x41, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
- 0x29, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x50, 0x6f, 0x64, 0x73, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x65,
- 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e,
- 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
- 0x61, 0x6c, 0x22, 0x6b, 0x0a, 0x11, 0x48, 0x50, 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22,
- 0x86, 0x01, 0x0a, 0x0d, 0x48, 0x50, 0x41, 0x50, 0x6f, 0x64, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x0f, 0x48, 0x50, 0x41,
- 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x45, 0x0a, 0x10,
- 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x4f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06,
- 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x11, 0x48,
- 0x50, 0x41, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x48, 0x50, 0x41, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 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, 0x22, 0x7b, 0x0a, 0x12, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
- 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41,
- 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22,
- 0x93, 0x01, 0x0a, 0x18, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x22, 0x3b, 0x0a, 0x0b,
+ 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x0d, 0x4e, 0x6f,
+ 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+ 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
+ 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73,
+ 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72,
+ 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73,
+ 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61,
+ 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8d, 0x03, 0x0a, 0x0e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x62, 0x6f, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x65, 0x72, 0x6e, 0x65,
+ 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19,
+ 0x0a, 0x08, 0x6f, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x6f, 0x73, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+ 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c,
+ 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6b, 0x75, 0x62, 0x65,
+ 0x50, 0x72, 0x6f, 0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10,
+ 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e,
+ 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69,
+ 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61,
+ 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x40, 0x0a, 0x09, 0x4e,
+ 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x68, 0x0a,
+ 0x10, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x12, 0x54, 0x0a, 0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f,
+ 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d,
+ 0x52, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x72,
+ 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x14, 0x54, 0x6f, 0x70, 0x6f,
+ 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d,
+ 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x54, 0x65, 0x72, 0x6d, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65,
+ 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0x9b, 0x01, 0x0a, 0x0e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61,
+ 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61,
+ 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66,
+ 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63,
+ 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74,
+ 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x22, 0x3e, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73,
+ 0x22, 0xa4, 0x01, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x4c, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65,
+ 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65,
+ 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x0a, 0x48, 0x50, 0x41,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x10, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x08,
+ 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x42, 0x65, 0x68, 0x61, 0x76,
+ 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x41, 0x0a,
+ 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x22, 0x59, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70,
+ 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe9, 0x01, 0x0a, 0x09,
+ 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a,
+ 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x50,
+ 0x6f, 0x64, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12,
+ 0x2f, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x12, 0x35, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x45,
+ 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x65,
+ 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x6b, 0x0a, 0x11, 0x48, 0x50, 0x41, 0x52, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x76, 0x65,
- 0x72, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x7d, 0x0a, 0x14, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x31, 0x0a,
- 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x76, 0x65, 0x72,
- 0x61, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x16, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
- 0x45, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64,
- 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0d, 0x48, 0x50, 0x41, 0x50, 0x6f, 0x64, 0x73,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa6,
- 0x01, 0x0a, 0x18, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74,
- 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x31, 0x0a, 0x06, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+ 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcf, 0x01,
+ 0x0a, 0x0f, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x12, 0x45, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x6f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62,
+ 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22,
+ 0x8a, 0x01, 0x0a, 0x11, 0x48, 0x50, 0x41, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
+ 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa9, 0x01, 0x0a,
+ 0x11, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x3b, 0x0a, 0x0d, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 0x22, 0x7b, 0x0a, 0x12, 0x48, 0x50, 0x41, 0x4f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c,
+ 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x04,
+ 0x70, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x6f,
+ 0x64, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x36,
+ 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06,
+ 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
+ 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65,
+ 0x72, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65,
+ 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x93, 0x01, 0x0a, 0x18, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x76,
+ 0x65, 0x72, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x7d, 0x0a, 0x14, 0x48, 0x50,
+ 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x65,
+ 0x72, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x16, 0x48, 0x50,
+ 0x41, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x12, 0x45, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+ 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4f, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x62, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65,
0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23,
0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x61,
- 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x65, 0x72, 0x61,
- 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x48, 0x50, 0x41, 0x43,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74,
- 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x79, 0x0a, 0x0b, 0x48, 0x50, 0x41, 0x42,
- 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x73, 0x63, 0x61, 0x6c, 0x65,
- 0x5f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c,
- 0x65, 0x73, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70, 0x12, 0x36, 0x0a, 0x0a, 0x73,
- 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x53, 0x63, 0x61, 0x6c,
- 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x44,
- 0x6f, 0x77, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x0f, 0x48, 0x50, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x69,
- 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x73, 0x74, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f,
- 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, 0x73,
- 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64,
- 0x6f, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34,
- 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x53, 0x63, 0x61,
- 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x22, 0x63, 0x0a, 0x10, 0x48, 0x50, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x69,
- 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xbc, 0x02, 0x0a, 0x0a, 0x56, 0x50,
- 0x41, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x66, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x3c, 0x0a,
- 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50,
- 0x41, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0c, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50,
- 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
- 0x41, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x56, 0x50, 0x41, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, 0x0c, 0x56, 0x50, 0x41, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x22, 0x55, 0x0a, 0x0f, 0x56, 0x50, 0x41, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d,
- 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e,
- 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x22, 0x66, 0x0a, 0x11, 0x56, 0x50, 0x41, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x51, 0x0a,
- 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x11, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x22, 0xdf, 0x03, 0x0a, 0x1a, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
- 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x0b, 0x6d, 0x69,
- 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x69, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12,
- 0x53, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50,
- 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f,
- 0x77, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c,
- 0x6f, 0x77, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
- 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72,
- 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x4d, 0x69, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
- 0x65, 0x64, 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, 0x1a, 0x3d, 0x0a, 0x0f, 0x4d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0x74, 0x0a, 0x11, 0x56, 0x50, 0x41, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, 0x05, 0x0a, 0x1a, 0x56, 0x50, 0x41,
- 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46,
- 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x18, 0x48, 0x50, 0x41, 0x43, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x12, 0x31, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9e, 0x01, 0x0a,
+ 0x0c, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x79, 0x0a,
+ 0x0b, 0x48, 0x50, 0x41, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x08,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x69,
+ 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70,
+ 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50,
+ 0x41, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x73,
+ 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x0f, 0x48, 0x50, 0x41,
+ 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x1c,
+ 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x1a, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x23,
+ 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
+ 0x50, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x63, 0x0a, 0x10, 0x48, 0x50, 0x41,
+ 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0d, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xbc,
+ 0x02, 0x0a, 0x0a, 0x56, 0x50, 0x41, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x33, 0x0a,
+ 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x65, 0x66, 0x12, 0x3c, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a,
+ 0x0c, 0x56, 0x50, 0x41, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x12, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0f, 0x56, 0x50, 0x41, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x22, 0x66, 0x0a,
+ 0x11, 0x56, 0x50, 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x12, 0x51, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f,
- 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x53, 0x0a, 0x0b, 0x75,
- 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64,
- 0x12, 0x5f, 0x0a, 0x0f, 0x75, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x6e,
- 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0e, 0x75, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 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, 0x1a, 0x3d, 0x0a, 0x0f,
- 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 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, 0x1a, 0x3d, 0x0a, 0x0f, 0x55,
- 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 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, 0x1a, 0x41, 0x0a, 0x13, 0x55, 0x6e,
- 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9e, 0x01,
- 0x0a, 0x0c, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12,
- 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
- 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14,
- 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74,
- 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x43,
- 0x0a, 0x11, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x73, 0x22, 0xd8, 0x05, 0x0a, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e,
- 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x64, 0x65,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69,
- 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75,
- 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x64,
- 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0f,
- 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
- 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x44, 0x65,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e,
- 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x03, 0x6d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d,
- 0x2e, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x52, 0x61, 0x74, 0x69, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x4c,
- 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f,
- 0x1a, 0x40, 0x0a, 0x12, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xdf, 0x03, 0x0a, 0x1a, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d,
+ 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12,
+ 0x53, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50,
+ 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x69, 0x6e, 0x41, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x41, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x61,
+ 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d,
+ 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x6f, 0x6e,
+ 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
+ 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11,
+ 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
+ 0x6c, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x4d, 0x69, 0x6e,
+ 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 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, 0x1a, 0x3d, 0x0a, 0x0f, 0x4d, 0x61, 0x78, 0x41,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+ 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x74, 0x0a, 0x11, 0x56, 0x50, 0x41, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x19,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, 0x05,
+ 0x0a, 0x1a, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x0b, 0x6c,
+ 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64,
+ 0x12, 0x53, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56,
+ 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42,
+ 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72,
+ 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x5f, 0x0a, 0x0f, 0x75, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65,
+ 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2e, 0x55, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 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, 0x1a, 0x3d, 0x0a, 0x0f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 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,
+ 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 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, 0x1a,
+ 0x41, 0x0a, 0x13, 0x55, 0x6e, 0x63, 0x61, 0x70, 0x70, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 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, 0x1a, 0x41, 0x0a, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 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, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x78, 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, 0x1a, 0x36, 0x0a,
- 0x08, 0x4d, 0x69, 0x6e, 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, 0x1a, 0x47, 0x0a, 0x19, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69,
- 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1,
- 0x01, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x61, 0x75, 0x74, 0x6f,
- 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x1c, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
- 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x75, 0x6c, 0x6c,
- 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x22, 0x35, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x12, 0x26, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x75,
- 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x08, 0x52, 0x6f,
- 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x69, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x65, 0x72, 0x62, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x05, 0x76, 0x65, 0x72, 0x62, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x22, 0x7e, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x30,
- 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x66,
- 0x22, 0x77, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53,
- 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c,
- 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09,
- 0x61, 0x70, 0x69, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x61, 0x70, 0x69, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x54, 0x0a, 0x0d, 0x52, 0x6f, 0x6c,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22,
- 0xe4, 0x02, 0x0a, 0x17, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a,
- 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
- 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x3b,
- 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63,
- 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x63,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61,
- 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16,
- 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x4b, 0x65, 0x64, 0x61, 0x53,
- 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xab,
- 0x01, 0x0a, 0x19, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61,
- 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72,
- 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x04, 0x0a,
- 0x18, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16,
- 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a,
- 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
- 0x79, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
- 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
- 0x6e, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73,
- 0x73, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64,
- 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f,
- 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73,
- 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11,
- 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
- 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x1a, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
- 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
+ 0x38, 0x01, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x56, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
@@ -16728,140 +18592,181 @@ var file_api_v1_common_proto_rawDesc = []byte{
0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x69, 0x6d, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x11, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
- 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70,
- 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x74,
- 0x68, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a,
- 0x38, 0x0a, 0x0a, 0x4f, 0x74, 0x68, 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, 0x22, 0x5c, 0x0a, 0x14, 0x4b, 0x61, 0x72,
- 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e,
- 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12,
- 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xc5, 0x04, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x12, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00,
- 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12,
- 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d,
- 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38,
- 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e,
- 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
- 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74,
- 0x65, 0x72, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65,
- 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x12, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88,
- 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x15, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1e, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
- 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22,
- 0x94, 0x04, 0x0a, 0x1a, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23,
- 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61,
- 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x61, 0x76, 0x61,
- 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61,
- 0x78, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x65,
- 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64,
- 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
- 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x2f,
- 0x0a, 0x13, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x61, 0x6c,
- 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x69, 0x73,
- 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12,
- 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
- 0x50, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5f, 0x0a, 0x0f,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
- 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67,
- 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x44, 0x0a,
- 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x44, 0x69,
- 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x43, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xae, 0x01, 0x0a, 0x1c, 0x50, 0x6f, 0x64, 0x44, 0x69,
- 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x43, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72,
- 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa3, 0x04, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
- 0x12, 0x4d, 0x0a, 0x0b, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0a, 0x68, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12,
- 0x3a, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51,
- 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x64,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73,
- 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f,
- 0x70, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x73, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f,
- 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x63,
- 0x6f, 0x70, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x69, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x11, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67,
+ 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69,
+ 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d,
+ 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0xd8, 0x05, 0x0a, 0x0e, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+ 0x50, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e,
+ 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74,
+ 0x65, 0x6d, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4d, 0x61, 0x78, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x69, 0x6e,
+ 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4d,
+ 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x67, 0x0a, 0x17,
+ 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67,
+ 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x14, 0x6d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x52, 0x61, 0x74, 0x69, 0x6f, 0x1a, 0x40, 0x0a, 0x12, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+ 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75,
+ 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61,
+ 0x78, 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, 0x1a, 0x37, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x64, 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, 0x1a, 0x40, 0x0a, 0x12, 0x53,
- 0x63, 0x6f, 0x70, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 0x22, 0xa8, 0x01,
- 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43,
+ 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 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, 0x1a, 0x47, 0x0a, 0x19, 0x4d, 0x61,
+ 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74,
+ 0x69, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x22, 0xd1, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x45, 0x0a,
+ 0x1f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x6f, 0x75, 0x6e,
+ 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x2c,
+ 0x0a, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x63,
+ 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x50, 0x75, 0x6c, 0x6c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x35, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x44,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x6f, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x84,
+ 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61,
+ 0x70, 0x69, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x09, 0x61, 0x70, 0x69, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x65, 0x72, 0x62,
+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x65, 0x72, 0x62, 0x73, 0x12, 0x25,
+ 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x7e, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x73,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x6f,
+ 0x6c, 0x65, 0x52, 0x65, 0x66, 0x22, 0x77, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x54,
+ 0x0a, 0x0d, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x22, 0xe4, 0x02, 0x0a, 0x17, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61,
+ 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4b, 0x69,
+ 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78,
+ 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
+ 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+ 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
+ 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65,
+ 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f,
+ 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x17,
+ 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65,
+ 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x22, 0xab, 0x01, 0x0a, 0x19, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c,
+ 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a,
+ 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+ 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c,
+ 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
+ 0x65, 0x22, 0x85, 0x04, 0x0a, 0x18, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23,
+ 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x35, 0x0a, 0x08, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x08, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52,
+ 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75,
+ 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x66, 0x12, 0x1b,
+ 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x69,
+ 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6b, 0x61,
+ 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x39,
+ 0x0a, 0x0b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x1a, 0x4b, 0x61,
+ 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43,
0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74,
@@ -16871,461 +18776,784 @@ var file_api_v1_common_proto_rawDesc = []byte{
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74,
0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05,
0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x11, 0x56, 0x6f, 0x6c,
- 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39,
- 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e,
- 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f,
- 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d,
- 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
- 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72,
- 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x12, 0x29, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e,
- 0x6f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xa5, 0x01, 0x0a,
- 0x13, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x69, 0x6d, 0x65, 0x22, 0x78, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x54,
- 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
- 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x8f,
- 0x06, 0x0a, 0x17, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x70,
- 0x61, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f,
- 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c,
- 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x63,
- 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x69, 0x6e,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x61, 0x70,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67,
- 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72,
- 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x11, 0x73, 0x70, 0x61, 0x72, 0x6b,
- 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72,
- 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x73, 0x70, 0x61,
- 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x12,
- 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74,
- 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65,
- 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52,
- 0x65, 0x61, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
- 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x12, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x73, 0x70,
- 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x73,
- 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d,
- 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x51, 0x0a,
- 0x12, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41,
- 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x64,
- 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x22, 0xdc, 0x02, 0x0a, 0x0f, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72,
- 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x2d, 0x0a, 0x13, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x65,
- 0x62, 0x55, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24,
- 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x55, 0x69, 0x41, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x70,
- 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x62, 0x55, 0x69,
- 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x69,
- 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x10, 0x77, 0x65, 0x62, 0x55, 0x69, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x69, 0x6e,
- 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x65, 0x62, 0x55, 0x69, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
- 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65,
- 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x16,
- 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22,
- 0xa8, 0x02, 0x0a, 0x16, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c,
- 0x0a, 0x12, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74,
- 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x6e, 0x46, 0x61,
- 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x19,
- 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79,
- 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x16, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49,
- 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x1d, 0x6f, 0x6e, 0x5f, 0x73, 0x75,
- 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
- 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a,
- 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c,
- 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x24, 0x6f, 0x6e,
- 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c,
- 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76,
- 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74,
- 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xa1, 0x02, 0x0a, 0x1a, 0x53,
- 0x70, 0x61, 0x72, 0x6b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65,
- 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
- 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73,
- 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72,
- 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63,
- 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x65,
- 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61,
- 0x78, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x68,
- 0x75, 0x66, 0x66, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x68,
- 0x75, 0x66, 0x66, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c, 0x65, 0x5f,
- 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c, 0x65, 0x54,
- 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xad,
- 0x05, 0x0a, 0x20, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x70, 0x61, 0x72,
- 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09,
- 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f,
- 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x73, 0x75, 0x63,
- 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74,
- 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x19, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x52, 0x75, 0x6e, 0x48, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61,
- 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
- 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x66, 0x61,
- 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61,
- 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35,
- 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x6c, 0x61,
- 0x73, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75,
- 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x39, 0x0a, 0x19,
- 0x70, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f,
- 0x72, 0x75, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x16, 0x70, 0x61, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x52,
- 0x75, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x61, 0x73, 0x74, 0x5f,
- 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c,
- 0x65, 0x64, 0x52, 0x75, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
- 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0f, 0x74,
- 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xab,
- 0x0a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77,
- 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e,
- 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f,
- 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f,
- 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61,
- 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
- 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12,
- 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69,
- 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64,
- 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65,
- 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f,
- 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
- 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
- 0x6c, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67,
- 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x18,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x76, 0x6f, 0x6c,
- 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x19,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x55, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
- 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x11, 0x4b, 0x61, 0x72,
+ 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x70, 0x75,
+ 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
+ 0x74, 0x79, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x1a, 0x38, 0x0a, 0x0a, 0x4f, 0x74, 0x68, 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, 0x22, 0x5c,
+ 0x0a, 0x14, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69,
+ 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72,
+ 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72,
+ 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x13,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x73, 0x22, 0x7e, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65,
+ 0x64, 0x22, 0xad, 0x06, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01,
+ 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e,
+ 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x02, 0x52,
+ 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12,
+ 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x10,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61,
+ 0x6d, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61,
+ 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17,
+ 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6c,
+ 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x27,
+ 0x0a, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x17, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65,
+ 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x04, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12,
+ 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x22, 0x94, 0x04, 0x0a, 0x1a, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x41, 0x76, 0x61, 0x69,
+ 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x61,
+ 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
+ 0x6d, 0x61, 0x78, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x27,
+ 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
+ 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x69, 0x72,
+ 0x65, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0e, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79,
+ 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64,
+ 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
+ 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f,
+ 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74,
+ 0x65, 0x64, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5f,
+ 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75,
+ 0x64, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12,
+ 0x44, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64,
+ 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74,
+ 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xae, 0x01, 0x0a, 0x1c, 0x50, 0x6f, 0x64,
+ 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74,
+ 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
+ 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+ 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa3, 0x04, 0x0a, 0x14, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x68, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x55, 0x73,
+ 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a,
+ 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73,
+ 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51,
+ 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x63, 0x6f, 0x70,
+ 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d,
+ 0x73, 0x63, 0x6f, 0x70, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61,
+ 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x64, 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, 0x1a, 0x40, 0x0a,
+ 0x12, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 0x22,
+ 0xa8, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74,
+ 0x61, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16,
+ 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18,
+ 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74,
+ 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x11, 0x56,
+ 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52,
+ 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f,
+ 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x12, 0x23,
+ 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, 0x0e,
+ 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6c,
+ 0x61, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x63,
+ 0x61, 0x6e, 0x6f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xa5,
+ 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e, 0x6f, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x78, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x63, 0x61, 0x6e,
+ 0x6f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70,
+ 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
+ 0x22, 0x8f, 0x06, 0x0a, 0x17, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x6b,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x73, 0x70, 0x61, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10,
+ 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f,
+ 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
+ 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e,
+ 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61,
+ 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x69, 0x6e, 0x5f,
+ 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61,
+ 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09,
+ 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x11, 0x73, 0x70, 0x61,
+ 0x72, 0x6b, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70,
+ 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x73,
+ 0x70, 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d,
+ 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63,
+ 0x75, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a,
+ 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79,
+ 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72,
+ 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x61, 0x70, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x12, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75,
+ 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75,
+ 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73,
+ 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52,
+ 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f,
+ 0x52, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
+ 0x51, 0x0a, 0x12, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69,
+ 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x11, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0xdc, 0x02, 0x0a, 0x0f, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x72, 0x69, 0x76,
+ 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
+ 0x77, 0x65, 0x62, 0x55, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
+ 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x55, 0x69, 0x41,
+ 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69,
+ 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x62,
+ 0x55, 0x69, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69,
+ 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x65, 0x62, 0x55, 0x69, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
+ 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x69, 0x5f,
+ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x65, 0x62, 0x55, 0x69, 0x49, 0x6e, 0x67, 0x72,
+ 0x65, 0x73, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,
+ 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73,
+ 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x22, 0xa8, 0x02, 0x0a, 0x16, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04,
+ 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72,
+ 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x6e,
+ 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x39,
+ 0x0a, 0x19, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74,
+ 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x16, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72,
+ 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x1d, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75,
+ 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x1a, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61,
+ 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x24,
+ 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61,
+ 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65,
+ 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x20, 0x6f, 0x6e, 0x53, 0x75,
+ 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52,
+ 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xa1, 0x02, 0x0a,
+ 0x1a, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x6c, 0x6c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
+ 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f,
+ 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74,
+ 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x45, 0x78,
+ 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x65,
+ 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
+ 0x6d, 0x61, 0x78, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18,
+ 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67,
+ 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16,
+ 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c,
+ 0x65, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
+ 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x73, 0x68, 0x75, 0x66, 0x66, 0x6c,
+ 0x65, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+ 0x22, 0xad, 0x05, 0x0a, 0x20, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x70,
+ 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1c,
+ 0x0a, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12,
+ 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x73,
+ 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x68, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x19, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x52, 0x75, 0x6e,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x37, 0x0a, 0x18,
+ 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15,
+ 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d,
+ 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x35, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07,
+ 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f,
+ 0x72, 0x75, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x39,
+ 0x0a, 0x19, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75,
+ 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x16, 0x70, 0x61, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75,
+ 0x6c, 0x52, 0x75, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x61, 0x73,
+ 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x73, 0x74, 0x46, 0x61,
+ 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
+ 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
+ 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x41, 0x70, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52,
+ 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+ 0x22, 0xe1, 0x01, 0x0a, 0x14, 0x4b, 0x79, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3a, 0x0a,
+ 0x19, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c,
+ 0x75, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c,
+ 0x75, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x75, 0x6c,
+ 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72,
+ 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x75,
+ 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f,
+ 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63,
+ 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0x87, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
+ 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd8,
+ 0x02, 0x0a, 0x1a, 0x4b, 0x79, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x69, 0x6e, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x27, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, 0x73,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04,
+ 0x66, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x61, 0x69, 0x6c,
+ 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
+ 0x77, 0x61, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b,
+ 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x34,
+ 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x47, 0x61,
+ 0x74, 0x65, 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69,
+ 0x6e, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+ 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x72, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0xd7, 0x01,
+ 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x56, 0x69, 0x6f, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18,
+ 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x66, 0x6f,
+ 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd5, 0x02, 0x0a, 0x1b, 0x47, 0x61, 0x74, 0x65,
+ 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x65,
+ 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72,
+ 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x4a, 0x73,
+ 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x69, 0x6f, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f,
+ 0x74, 0x61, 0x6c, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a,
+ 0x0f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a,
- 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
- 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x41, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2d,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x41,
- 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f,
- 0x61, 0x67, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53,
- 0x65, 0x65, 0x6e, 0x41, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41,
- 0x74, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc9, 0x01, 0x0a,
- 0x12, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49,
- 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75,
- 0x74, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75,
- 0x74, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06,
- 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x43, 0x6f,
- 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x61, 0x72, 0x6e,
- 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x69, 0x74,
- 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0d, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22,
- 0x5c, 0x0a, 0x0e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a,
- 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0xe9, 0x02,
- 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06,
- 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65,
- 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
- 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65,
- 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74,
- 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x09,
- 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x6d, 0x70, 0x52, 0x0e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+ 0x8d, 0x0c, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b,
+ 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+ 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b,
+ 0x69, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f,
+ 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65,
+ 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76,
+ 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x13, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
+ 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
+ 0x67, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
+ 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x76, 0x6f,
+ 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18,
+ 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x69, 0x64, 0x12, 0x55, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x72,
+ 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x15, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
+ 0x2f, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x64, 0x62, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01,
+ 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x29,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73,
- 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0xc5, 0x0a, 0x0a, 0x0d, 0x4b, 0x38,
- 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x4b,
- 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a,
- 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f,
- 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b,
- 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f,
- 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, 0x20, 0x0a,
- 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x46, 0x55, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73,
+ 0x65, 0x65, 0x6e, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12,
+ 0x24, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67,
+ 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x41, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x5f, 0x61, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x41, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x2e, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x67, 0x65, 0x12,
+ 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2f, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x72, 0x65,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x30,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x50,
+ 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62,
+ 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e,
+ 0x67, 0x5f, 0x70, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72,
+ 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+ 0xc9, 0x01, 0x0a, 0x12, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x0e,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19,
+ 0x0a, 0x08, 0x75, 0x74, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x75, 0x74, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61,
+ 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e,
+ 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77,
+ 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63,
+ 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65,
+ 0x22, 0xe9, 0x02, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
+ 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x66, 0x66,
+ 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65,
+ 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12,
+ 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08,
+ 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0xf3, 0x0b, 0x0a,
+ 0x0d, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1f,
+ 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e,
+ 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49,
- 0x4e, 0x44, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12,
- 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49,
- 0x4e, 0x44, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x38, 0x53, 0x5f,
- 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x52, 0x4f, 0x4e,
- 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42,
- 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43,
- 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x52,
- 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54,
- 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x4b,
- 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e,
- 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x38,
- 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f,
- 0x44, 0x45, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
- 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10,
- 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f,
- 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x0c,
- 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b,
- 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x0d, 0x12, 0x1e, 0x0a,
- 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44,
- 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x0e, 0x12, 0x25, 0x0a,
- 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44,
- 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55,
- 0x4d, 0x45, 0x10, 0x0f, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
- 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45,
- 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x10,
- 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f,
- 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41,
- 0x53, 0x53, 0x10, 0x11, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
- 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x4f, 0x5f, 0x52, 0x4f, 0x4c,
- 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x12, 0x12, 0x2d, 0x0a, 0x29, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42,
- 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f,
- 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41,
- 0x4c, 0x45, 0x52, 0x10, 0x13, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a,
- 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41,
- 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52,
- 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54,
- 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x47,
- 0x45, 0x10, 0x15, 0x12, 0x23, 0x0a, 0x1f, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43,
- 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41,
- 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x16, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x38, 0x53, 0x5f,
- 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45,
- 0x10, 0x17, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54,
- 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49,
- 0x4e, 0x47, 0x10, 0x18, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
- 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x45, 0x44, 0x41, 0x5f, 0x53, 0x43, 0x41,
- 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x19, 0x12, 0x26, 0x0a, 0x22,
+ 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12,
+ 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49,
+ 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02,
+ 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b,
+ 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x46, 0x55, 0x4c, 0x5f, 0x53, 0x45, 0x54,
+ 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54,
+ 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54,
+ 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54,
+ 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x4b,
+ 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43,
+ 0x52, 0x4f, 0x4e, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x4b, 0x38, 0x53,
+ 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50,
+ 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c,
+ 0x4c, 0x45, 0x52, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a,
+ 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x08, 0x12, 0x1d,
+ 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e,
+ 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x09, 0x12, 0x18, 0x0a,
+ 0x14, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44,
+ 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
+ 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45,
+ 0x53, 0x53, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
+ 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45,
+ 0x52, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43,
+ 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x0d,
+ 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b,
+ 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x0e,
+ 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b,
+ 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56,
+ 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0f, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
+ 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49,
+ 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41,
+ 0x49, 0x4d, 0x10, 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
+ 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
+ 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x11, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
+ 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x4f, 0x5f,
+ 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x12, 0x12, 0x2d, 0x0a, 0x29, 0x4b, 0x38, 0x53,
+ 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x48, 0x4f, 0x52,
+ 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f,
+ 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52, 0x10, 0x13, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x38, 0x53, 0x5f,
+ 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x45, 0x52, 0x54,
+ 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x43, 0x41,
+ 0x4c, 0x45, 0x52, 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a,
+ 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x52,
+ 0x41, 0x4e, 0x47, 0x45, 0x10, 0x15, 0x12, 0x23, 0x0a, 0x1f, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42,
+ 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43,
+ 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x16, 0x12, 0x18, 0x0a, 0x14, 0x4b,
+ 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52,
+ 0x4f, 0x4c, 0x45, 0x10, 0x17, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a,
+ 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49,
+ 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x18, 0x12, 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
+ 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x45, 0x44, 0x41, 0x5f,
+ 0x53, 0x43, 0x41, 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x19, 0x12,
+ 0x26, 0x0a, 0x22, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49,
+ 0x4e, 0x44, 0x5f, 0x4b, 0x41, 0x52, 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53,
+ 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
+ 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x44,
+ 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47, 0x45, 0x54,
+ 0x10, 0x1b, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54,
+ 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x51,
+ 0x55, 0x4f, 0x54, 0x41, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42,
+ 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x46, 0x4c,
+ 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x54, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x1d, 0x12, 0x1f, 0x0a,
+ 0x1b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44,
+ 0x5f, 0x56, 0x4f, 0x4c, 0x43, 0x41, 0x4e, 0x4f, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x1e, 0x12, 0x1a,
+ 0x0a, 0x16, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e,
+ 0x44, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x1f, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38,
+ 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4c,
+ 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24,
+ 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f,
+ 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e,
+ 0x44, 0x49, 0x4e, 0x47, 0x10, 0x21, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42,
+ 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52,
+ 0x4b, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38,
+ 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4e,
+ 0x50, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x23, 0x12, 0x25, 0x0a, 0x21,
0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f,
- 0x4b, 0x41, 0x52, 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52,
- 0x43, 0x45, 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
- 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x52,
- 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47, 0x45, 0x54, 0x10, 0x1b, 0x12,
- 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49,
- 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x51, 0x55, 0x4f, 0x54,
- 0x41, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43,
- 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x46, 0x4c, 0x4f, 0x57, 0x5f,
- 0x4e, 0x4f, 0x54, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x1d, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x38,
- 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x4f,
- 0x4c, 0x43, 0x41, 0x4e, 0x4f, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4b,
- 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53,
- 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x1f, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
- 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54,
- 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x38, 0x53,
- 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x55,
- 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e,
- 0x47, 0x10, 0x21, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43,
- 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50,
- 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
- 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4e, 0x50, 0x47, 0x5f,
- 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x23, 0x12, 0x25, 0x0a, 0x21, 0x4b, 0x38, 0x53,
- 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x50, 0x41,
- 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x24,
- 0x12, 0x2f, 0x0a, 0x2b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b,
- 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x50,
- 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10,
- 0x25, 0x2a, 0x48, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x45, 0x6e, 0x75, 0x6d,
- 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x45, 0x4e, 0x55,
- 0x4d, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
- 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59,
- 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x01, 0x2a, 0x94, 0x02, 0x0a, 0x15,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53,
- 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52,
- 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e,
- 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52,
- 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x22,
- 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52,
- 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e,
- 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45,
- 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x58,
- 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f,
+ 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x10, 0x24, 0x12, 0x2f, 0x0a, 0x2b, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43,
+ 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44,
+ 0x5f, 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45,
+ 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x59, 0x56, 0x45, 0x52, 0x4e, 0x4f, 0x5f,
+ 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x26, 0x12, 0x29, 0x0a, 0x25, 0x4b, 0x38, 0x53, 0x5f,
+ 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x59, 0x56, 0x45,
+ 0x52, 0x4e, 0x4f, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52,
+ 0x54, 0x10, 0x27, 0x12, 0x32, 0x0a, 0x2e, 0x4b, 0x38, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43,
+ 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x45, 0x50, 0x45,
+ 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x45, 0x4d,
+ 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x28, 0x12, 0x29, 0x0a, 0x25, 0x4b, 0x38, 0x53, 0x5f, 0x4f,
+ 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x4b,
+ 0x45, 0x45, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54,
+ 0x10, 0x29, 0x2a, 0x48, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x45, 0x6e, 0x75,
+ 0x6d, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x45, 0x4e,
+ 0x55, 0x4d, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42,
+ 0x59, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x01, 0x2a, 0x94, 0x02, 0x0a,
+ 0x15, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70,
+ 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f,
0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f,
- 0x52, 0x5f, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54,
- 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45,
- 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x47, 0x54,
- 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45,
- 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x54,
- 0x10, 0x06, 0x2a, 0xa6, 0x01, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x22, 0x57,
+ 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f,
+ 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12,
+ 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f,
+ 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49,
+ 0x4e, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c,
+ 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45,
+ 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x4c, 0x41, 0x42, 0x45, 0x4c,
+ 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54,
+ 0x4f, 0x52, 0x5f, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53,
+ 0x54, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c,
+ 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x47,
+ 0x54, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x45, 0x4c,
+ 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4c,
+ 0x54, 0x10, 0x06, 0x2a, 0xa6, 0x01, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x22,
+ 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
+ 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44,
+ 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x41,
+ 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
+ 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45,
+ 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x57,
0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46,
- 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x43,
- 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f,
- 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52,
- 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f,
- 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49,
- 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x42, 0x89, 0x01, 0x0a, 0x0a,
- 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75,
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e,
- 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x6b, 0x72, 0x2f,
- 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31,
- 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca,
- 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56,
- 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07,
- 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x2a, 0xea, 0x03, 0x0a,
+ 0x15, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f,
+ 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x29, 0x0a, 0x25, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c,
+ 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x44, 0x42, 0x5f, 0x56,
+ 0x49, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x35, 0x0a, 0x31, 0x44, 0x49,
+ 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52,
+ 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x49, 0x53,
+ 0x52, 0x55, 0x50, 0x54, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10,
+ 0x02, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52,
+ 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21,
+ 0x0a, 0x1d, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f,
+ 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10,
+ 0x04, 0x12, 0x34, 0x0a, 0x30, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54,
+ 0x5f, 0x55, 0x4e, 0x4e, 0x45, 0x45, 0x44, 0x45, 0x44, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x45,
+ 0x4e, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x05, 0x12, 0x31, 0x0a, 0x2d, 0x44, 0x49, 0x53, 0x52, 0x55,
+ 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53,
+ 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4d,
+ 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x53, 0x10, 0x06, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x49,
+ 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52,
+ 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x4e, 0x4f, 0x4d, 0x49, 0x4e, 0x41,
+ 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x2d, 0x0a, 0x29, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e,
+ 0x5f, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x44, 0x47,
+ 0x45, 0x54, 0x10, 0x08, 0x12, 0x33, 0x0a, 0x2f, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f,
+ 0x50, 0x4f, 0x44, 0x53, 0x5f, 0x57, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53,
+ 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x09, 0x42, 0x89, 0x01, 0x0a, 0x0a, 0x63, 0x6f,
+ 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65,
+ 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02,
+ 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06,
+ 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c,
+ 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70,
+ 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -17340,455 +19568,485 @@ func file_api_v1_common_proto_rawDescGZIP() []byte {
return file_api_v1_common_proto_rawDescData
}
-var file_api_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_api_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 172)
+var file_api_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_api_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 186)
var file_api_v1_common_proto_goTypes = []interface{}{
- (K8SObjectKind)(0), // 0: api.v1.K8sObjectKind
- (OrderByEnum)(0), // 1: api.v1.OrderByEnum
- (LabelSelectorOperator)(0), // 2: api.v1.LabelSelectorOperator
- (WorkloadStatusFilter)(0), // 3: api.v1.WorkloadStatusFilter
- (*AuditLogEntry)(nil), // 4: api.v1.AuditLogEntry
- (*Pagination)(nil), // 5: api.v1.Pagination
- (*CostInfo)(nil), // 6: api.v1.CostInfo
- (*ResourceMetrics)(nil), // 7: api.v1.ResourceMetrics
- (*MetricPercentiles)(nil), // 8: api.v1.MetricPercentiles
- (*ContainerPercentileSummary)(nil), // 9: api.v1.ContainerPercentileSummary
- (*ContainerRequestLimits)(nil), // 10: api.v1.ContainerRequestLimits
- (*ForecastResourceMetrics)(nil), // 11: api.v1.ForecastResourceMetrics
- (*ResourceSummary)(nil), // 12: api.v1.ResourceSummary
- (*WorkloadItem)(nil), // 13: api.v1.WorkloadItem
- (*ContainerRuntimeInfo)(nil), // 14: api.v1.ContainerRuntimeInfo
- (*NodeInfo)(nil), // 15: api.v1.NodeInfo
- (*ResourceInfo)(nil), // 16: api.v1.ResourceInfo
- (*Node)(nil), // 17: api.v1.Node
- (*AttachedVolume)(nil), // 18: api.v1.AttachedVolume
- (*NodeGroup)(nil), // 19: api.v1.NodeGroup
- (*CostDataPoint)(nil), // 20: api.v1.CostDataPoint
- (*ResourceDataPoint)(nil), // 21: api.v1.ResourceDataPoint
- (*ContainerTimeSeries)(nil), // 22: api.v1.ContainerTimeSeries
- (*SavingsData)(nil), // 23: api.v1.SavingsData
- (*SavingsDataPoint)(nil), // 24: api.v1.SavingsDataPoint
- (*SavingsTimeSeries)(nil), // 25: api.v1.SavingsTimeSeries
- (*LabelSelectorRequirement)(nil), // 26: api.v1.LabelSelectorRequirement
- (*Label)(nil), // 27: api.v1.Label
- (*LabelSelector)(nil), // 28: api.v1.LabelSelector
- (*RegexPattern)(nil), // 29: api.v1.RegexPattern
- (*ResourceDetails)(nil), // 30: api.v1.ResourceDetails
- (*PodDetails)(nil), // 31: api.v1.PodDetails
- (*ContainerSummary)(nil), // 32: api.v1.ContainerSummary
- (*DeploymentDetails)(nil), // 33: api.v1.DeploymentDetails
- (*ContainerTemplate)(nil), // 34: api.v1.ContainerTemplate
- (*DeploymentCondition)(nil), // 35: api.v1.DeploymentCondition
- (*StatefulSetDetails)(nil), // 36: api.v1.StatefulSetDetails
- (*VolumeClaimTemplate)(nil), // 37: api.v1.VolumeClaimTemplate
- (*DaemonSetDetails)(nil), // 38: api.v1.DaemonSetDetails
- (*ReplicaSetDetails)(nil), // 39: api.v1.ReplicaSetDetails
- (*JobDetails)(nil), // 40: api.v1.JobDetails
- (*JobCondition)(nil), // 41: api.v1.JobCondition
- (*CronJobDetails)(nil), // 42: api.v1.CronJobDetails
- (*ActiveJobReference)(nil), // 43: api.v1.ActiveJobReference
- (*JobTemplate)(nil), // 44: api.v1.JobTemplate
- (*ServiceDetails)(nil), // 45: api.v1.ServiceDetails
- (*ServicePort)(nil), // 46: api.v1.ServicePort
- (*LoadBalancerIngress)(nil), // 47: api.v1.LoadBalancerIngress
- (*IngressDetails)(nil), // 48: api.v1.IngressDetails
- (*IngressRule)(nil), // 49: api.v1.IngressRule
- (*IngressPath)(nil), // 50: api.v1.IngressPath
- (*IngressBackend)(nil), // 51: api.v1.IngressBackend
- (*IngressTLS)(nil), // 52: api.v1.IngressTLS
- (*PersistentVolumeClaimDetails)(nil), // 53: api.v1.PersistentVolumeClaimDetails
- (*ResourceRequirements)(nil), // 54: api.v1.ResourceRequirements
- (*VolumeNodeAffinity)(nil), // 55: api.v1.VolumeNodeAffinity
- (*PVCCondition)(nil), // 56: api.v1.PVCCondition
- (*PersistentVolumeDetails)(nil), // 57: api.v1.PersistentVolumeDetails
- (*PVClaimReference)(nil), // 58: api.v1.PVClaimReference
- (*PVVolumeSource)(nil), // 59: api.v1.PVVolumeSource
- (*CSIVolumeSource)(nil), // 60: api.v1.CSIVolumeSource
- (*HostPathVolumeSource)(nil), // 61: api.v1.HostPathVolumeSource
- (*NFSVolumeSource)(nil), // 62: api.v1.NFSVolumeSource
- (*StorageClassDetails)(nil), // 63: api.v1.StorageClassDetails
- (*NamespaceDetails)(nil), // 64: api.v1.NamespaceDetails
- (*NodeDetails)(nil), // 65: api.v1.NodeDetails
- (*NodeTaint)(nil), // 66: api.v1.NodeTaint
- (*NodeAddress)(nil), // 67: api.v1.NodeAddress
- (*NodeCondition)(nil), // 68: api.v1.NodeCondition
- (*NodeSystemInfo)(nil), // 69: api.v1.NodeSystemInfo
- (*NodeImage)(nil), // 70: api.v1.NodeImage
- (*TopologySelector)(nil), // 71: api.v1.TopologySelector
- (*TopologySelectorTerm)(nil), // 72: api.v1.TopologySelectorTerm
- (*TolerationInfo)(nil), // 73: api.v1.TolerationInfo
- (*NodeSelector)(nil), // 74: api.v1.NodeSelector
- (*NodeSelectorTerm)(nil), // 75: api.v1.NodeSelectorTerm
- (*NodeSelectorRequirement)(nil), // 76: api.v1.NodeSelectorRequirement
- (*HPADetails)(nil), // 77: api.v1.HPADetails
- (*ScaleTargetRef)(nil), // 78: api.v1.ScaleTargetRef
- (*HPAMetric)(nil), // 79: api.v1.HPAMetric
- (*HPAResourceMetric)(nil), // 80: api.v1.HPAResourceMetric
- (*HPAPodsMetric)(nil), // 81: api.v1.HPAPodsMetric
- (*HPAObjectMetric)(nil), // 82: api.v1.HPAObjectMetric
- (*HPAExternalMetric)(nil), // 83: api.v1.HPAExternalMetric
- (*HPAMetricSelector)(nil), // 84: api.v1.HPAMetricSelector
- (*HPAObjectReference)(nil), // 85: api.v1.HPAObjectReference
- (*HPACurrentMetric)(nil), // 86: api.v1.HPACurrentMetric
- (*HPACurrentResourceMetric)(nil), // 87: api.v1.HPACurrentResourceMetric
- (*HPACurrentPodsMetric)(nil), // 88: api.v1.HPACurrentPodsMetric
- (*HPACurrentObjectMetric)(nil), // 89: api.v1.HPACurrentObjectMetric
- (*HPACurrentExternalMetric)(nil), // 90: api.v1.HPACurrentExternalMetric
- (*HPACondition)(nil), // 91: api.v1.HPACondition
- (*HPABehavior)(nil), // 92: api.v1.HPABehavior
- (*HPAScalingRules)(nil), // 93: api.v1.HPAScalingRules
- (*HPAScalingPolicy)(nil), // 94: api.v1.HPAScalingPolicy
- (*VPADetails)(nil), // 95: api.v1.VPADetails
- (*VPATargetRef)(nil), // 96: api.v1.VPATargetRef
- (*VPAUpdatePolicy)(nil), // 97: api.v1.VPAUpdatePolicy
- (*VPAResourcePolicy)(nil), // 98: api.v1.VPAResourcePolicy
- (*VPAContainerResourcePolicy)(nil), // 99: api.v1.VPAContainerResourcePolicy
- (*VPARecommendation)(nil), // 100: api.v1.VPARecommendation
- (*VPAContainerRecommendation)(nil), // 101: api.v1.VPAContainerRecommendation
- (*VPACondition)(nil), // 102: api.v1.VPACondition
- (*LimitRangeDetails)(nil), // 103: api.v1.LimitRangeDetails
- (*LimitRangeItem)(nil), // 104: api.v1.LimitRangeItem
- (*ServiceAccountDetails)(nil), // 105: api.v1.ServiceAccountDetails
- (*RoleDetails)(nil), // 106: api.v1.RoleDetails
- (*RoleRule)(nil), // 107: api.v1.RoleRule
- (*RoleBindingDetails)(nil), // 108: api.v1.RoleBindingDetails
- (*RoleBindingSubject)(nil), // 109: api.v1.RoleBindingSubject
- (*RoleReference)(nil), // 110: api.v1.RoleReference
- (*KedaScaledObjectDetails)(nil), // 111: api.v1.KedaScaledObjectDetails
- (*KedaScaledObjectTrigger)(nil), // 112: api.v1.KedaScaledObjectTrigger
- (*KedaScaledObjectCondition)(nil), // 113: api.v1.KedaScaledObjectCondition
- (*KarpenterResourceDetails)(nil), // 114: api.v1.KarpenterResourceDetails
- (*KarpenterResourceCondition)(nil), // 115: api.v1.KarpenterResourceCondition
- (*KarpenterCapacity)(nil), // 116: api.v1.KarpenterCapacity
- (*KarpenterRequirement)(nil), // 117: api.v1.KarpenterRequirement
- (*WorkloadFilters)(nil), // 118: api.v1.WorkloadFilters
- (*PodDisruptionBudgetDetails)(nil), // 119: api.v1.PodDisruptionBudgetDetails
- (*PodDisruptionBudgetCondition)(nil), // 120: api.v1.PodDisruptionBudgetCondition
- (*ResourceQuotaDetails)(nil), // 121: api.v1.ResourceQuotaDetails
- (*ResourceQuotaCondition)(nil), // 122: api.v1.ResourceQuotaCondition
- (*VolcanoJobDetails)(nil), // 123: api.v1.VolcanoJobDetails
- (*VolcanoJobCondition)(nil), // 124: api.v1.VolcanoJobCondition
- (*VolcanoTask)(nil), // 125: api.v1.VolcanoTask
- (*SparkApplicationDetails)(nil), // 126: api.v1.SparkApplicationDetails
- (*SparkDriverInfo)(nil), // 127: api.v1.SparkDriverInfo
- (*SparkRestartPolicyInfo)(nil), // 128: api.v1.SparkRestartPolicyInfo
- (*SparkDynamicAllocationInfo)(nil), // 129: api.v1.SparkDynamicAllocationInfo
- (*ScheduledSparkApplicationDetails)(nil), // 130: api.v1.ScheduledSparkApplicationDetails
- (*Event)(nil), // 131: api.v1.Event
- (*EventDatapointInfo)(nil), // 132: api.v1.EventDatapointInfo
- (*EventDatapoint)(nil), // 133: api.v1.EventDatapoint
- (*DimensionCount)(nil), // 134: api.v1.DimensionCount
- (*EventGroup)(nil), // 135: api.v1.EventGroup
- nil, // 136: api.v1.WorkloadItem.LabelsEntry
- nil, // 137: api.v1.WorkloadItem.AnnotationsEntry
- nil, // 138: api.v1.NodeInfo.PriceSourceCountsEntry
- nil, // 139: api.v1.Node.LabelsEntry
- nil, // 140: api.v1.Node.AnnotationsEntry
- nil, // 141: api.v1.LabelSelector.MatchLabelsEntry
- nil, // 142: api.v1.ResourceDetails.ServiceSelectorEntry
- nil, // 143: api.v1.ResourceDetails.ScParametersEntry
- nil, // 144: api.v1.ServiceDetails.SelectorEntry
- nil, // 145: api.v1.ResourceRequirements.RequestsEntry
- nil, // 146: api.v1.ResourceRequirements.LimitsEntry
- nil, // 147: api.v1.PersistentVolumeDetails.CapacityEntry
- nil, // 148: api.v1.PVVolumeSource.VolumeAttributesEntry
- nil, // 149: api.v1.CSIVolumeSource.VolumeAttributesEntry
- nil, // 150: api.v1.StorageClassDetails.ParametersEntry
- nil, // 151: api.v1.NamespaceDetails.ConditionsEntry
- nil, // 152: api.v1.NodeDetails.CapacityEntry
- nil, // 153: api.v1.NodeDetails.AllocatableEntry
- nil, // 154: api.v1.TopologySelectorTerm.MatchLabelsEntry
- nil, // 155: api.v1.HPAMetricSelector.SelectorEntry
- nil, // 156: api.v1.VPAContainerResourcePolicy.MinAllowedEntry
- nil, // 157: api.v1.VPAContainerResourcePolicy.MaxAllowedEntry
- nil, // 158: api.v1.VPAContainerRecommendation.TargetEntry
- nil, // 159: api.v1.VPAContainerRecommendation.LowerBoundEntry
- nil, // 160: api.v1.VPAContainerRecommendation.UpperBoundEntry
- nil, // 161: api.v1.VPAContainerRecommendation.UncappedTargetEntry
- nil, // 162: api.v1.LimitRangeItem.DefaultLimitsEntry
- nil, // 163: api.v1.LimitRangeItem.DefaultRequestEntry
- nil, // 164: api.v1.LimitRangeItem.MaxEntry
- nil, // 165: api.v1.LimitRangeItem.MinEntry
- nil, // 166: api.v1.LimitRangeItem.MaxLimitRequestRatioEntry
- nil, // 167: api.v1.KedaScaledObjectTrigger.MetadataEntry
- nil, // 168: api.v1.KarpenterResourceDetails.LimitsEntry
- nil, // 169: api.v1.KarpenterCapacity.OtherEntry
- nil, // 170: api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry
- nil, // 171: api.v1.ResourceQuotaDetails.HardLimitsEntry
- nil, // 172: api.v1.ResourceQuotaDetails.UsedEntry
- nil, // 173: api.v1.ResourceQuotaDetails.ScopeSelectorEntry
- nil, // 174: api.v1.Event.AnnotationsEntry
- nil, // 175: api.v1.Event.LabelsEntry
- (*timestamppb.Timestamp)(nil), // 176: google.protobuf.Timestamp
- (*money.Money)(nil), // 177: google.type.Money
+ (K8SObjectKind)(0), // 0: api.v1.K8sObjectKind
+ (OrderByEnum)(0), // 1: api.v1.OrderByEnum
+ (LabelSelectorOperator)(0), // 2: api.v1.LabelSelectorOperator
+ (WorkloadStatusFilter)(0), // 3: api.v1.WorkloadStatusFilter
+ (DisruptionBlockReason)(0), // 4: api.v1.DisruptionBlockReason
+ (*AuditLogEntry)(nil), // 5: api.v1.AuditLogEntry
+ (*Pagination)(nil), // 6: api.v1.Pagination
+ (*CostInfo)(nil), // 7: api.v1.CostInfo
+ (*ResourceMetrics)(nil), // 8: api.v1.ResourceMetrics
+ (*MetricPercentiles)(nil), // 9: api.v1.MetricPercentiles
+ (*ContainerPercentileSummary)(nil), // 10: api.v1.ContainerPercentileSummary
+ (*ContainerRequestLimits)(nil), // 11: api.v1.ContainerRequestLimits
+ (*GPUMigInstance)(nil), // 12: api.v1.GPUMigInstance
+ (*IndividualGPUMetric)(nil), // 13: api.v1.IndividualGPUMetric
+ (*ContainerIndividualGPUMetrics)(nil), // 14: api.v1.ContainerIndividualGPUMetrics
+ (*RuntimeProcess)(nil), // 15: api.v1.RuntimeProcess
+ (*ForecastResourceMetrics)(nil), // 16: api.v1.ForecastResourceMetrics
+ (*ResourceSummary)(nil), // 17: api.v1.ResourceSummary
+ (*LegacyPolicyRef)(nil), // 18: api.v1.LegacyPolicyRef
+ (*OptimizationStatus)(nil), // 19: api.v1.OptimizationStatus
+ (*WorkloadItem)(nil), // 20: api.v1.WorkloadItem
+ (*ContainerRuntimeInfo)(nil), // 21: api.v1.ContainerRuntimeInfo
+ (*NodeInfo)(nil), // 22: api.v1.NodeInfo
+ (*ResourceInfo)(nil), // 23: api.v1.ResourceInfo
+ (*Node)(nil), // 24: api.v1.Node
+ (*AttachedVolume)(nil), // 25: api.v1.AttachedVolume
+ (*NodeGroup)(nil), // 26: api.v1.NodeGroup
+ (*CostDataPoint)(nil), // 27: api.v1.CostDataPoint
+ (*ResourceDataPoint)(nil), // 28: api.v1.ResourceDataPoint
+ (*ContainerTimeSeries)(nil), // 29: api.v1.ContainerTimeSeries
+ (*SavingsData)(nil), // 30: api.v1.SavingsData
+ (*SavingsDataPoint)(nil), // 31: api.v1.SavingsDataPoint
+ (*SavingsTimeSeries)(nil), // 32: api.v1.SavingsTimeSeries
+ (*LabelSelectorRequirement)(nil), // 33: api.v1.LabelSelectorRequirement
+ (*Label)(nil), // 34: api.v1.Label
+ (*LabelSelector)(nil), // 35: api.v1.LabelSelector
+ (*RegexPattern)(nil), // 36: api.v1.RegexPattern
+ (*ResourceDetails)(nil), // 37: api.v1.ResourceDetails
+ (*PodDetails)(nil), // 38: api.v1.PodDetails
+ (*ContainerSummary)(nil), // 39: api.v1.ContainerSummary
+ (*DeploymentDetails)(nil), // 40: api.v1.DeploymentDetails
+ (*ContainerTemplate)(nil), // 41: api.v1.ContainerTemplate
+ (*DeploymentCondition)(nil), // 42: api.v1.DeploymentCondition
+ (*StatefulSetDetails)(nil), // 43: api.v1.StatefulSetDetails
+ (*VolumeClaimTemplate)(nil), // 44: api.v1.VolumeClaimTemplate
+ (*DaemonSetDetails)(nil), // 45: api.v1.DaemonSetDetails
+ (*ReplicaSetDetails)(nil), // 46: api.v1.ReplicaSetDetails
+ (*JobDetails)(nil), // 47: api.v1.JobDetails
+ (*JobCondition)(nil), // 48: api.v1.JobCondition
+ (*CronJobDetails)(nil), // 49: api.v1.CronJobDetails
+ (*ActiveJobReference)(nil), // 50: api.v1.ActiveJobReference
+ (*JobTemplate)(nil), // 51: api.v1.JobTemplate
+ (*ServiceDetails)(nil), // 52: api.v1.ServiceDetails
+ (*ServicePort)(nil), // 53: api.v1.ServicePort
+ (*LoadBalancerIngress)(nil), // 54: api.v1.LoadBalancerIngress
+ (*IngressDetails)(nil), // 55: api.v1.IngressDetails
+ (*IngressRule)(nil), // 56: api.v1.IngressRule
+ (*IngressPath)(nil), // 57: api.v1.IngressPath
+ (*IngressBackend)(nil), // 58: api.v1.IngressBackend
+ (*IngressTLS)(nil), // 59: api.v1.IngressTLS
+ (*PersistentVolumeClaimDetails)(nil), // 60: api.v1.PersistentVolumeClaimDetails
+ (*ResourceRequirements)(nil), // 61: api.v1.ResourceRequirements
+ (*VolumeNodeAffinity)(nil), // 62: api.v1.VolumeNodeAffinity
+ (*PVCCondition)(nil), // 63: api.v1.PVCCondition
+ (*PersistentVolumeDetails)(nil), // 64: api.v1.PersistentVolumeDetails
+ (*PVClaimReference)(nil), // 65: api.v1.PVClaimReference
+ (*PVVolumeSource)(nil), // 66: api.v1.PVVolumeSource
+ (*CSIVolumeSource)(nil), // 67: api.v1.CSIVolumeSource
+ (*HostPathVolumeSource)(nil), // 68: api.v1.HostPathVolumeSource
+ (*NFSVolumeSource)(nil), // 69: api.v1.NFSVolumeSource
+ (*StorageClassDetails)(nil), // 70: api.v1.StorageClassDetails
+ (*NamespaceDetails)(nil), // 71: api.v1.NamespaceDetails
+ (*NodeDetails)(nil), // 72: api.v1.NodeDetails
+ (*NodeTaint)(nil), // 73: api.v1.NodeTaint
+ (*NodeAddress)(nil), // 74: api.v1.NodeAddress
+ (*NodeCondition)(nil), // 75: api.v1.NodeCondition
+ (*NodeSystemInfo)(nil), // 76: api.v1.NodeSystemInfo
+ (*NodeImage)(nil), // 77: api.v1.NodeImage
+ (*TopologySelector)(nil), // 78: api.v1.TopologySelector
+ (*TopologySelectorTerm)(nil), // 79: api.v1.TopologySelectorTerm
+ (*TolerationInfo)(nil), // 80: api.v1.TolerationInfo
+ (*NodeSelector)(nil), // 81: api.v1.NodeSelector
+ (*NodeSelectorTerm)(nil), // 82: api.v1.NodeSelectorTerm
+ (*NodeSelectorRequirement)(nil), // 83: api.v1.NodeSelectorRequirement
+ (*HPADetails)(nil), // 84: api.v1.HPADetails
+ (*ScaleTargetRef)(nil), // 85: api.v1.ScaleTargetRef
+ (*HPAMetric)(nil), // 86: api.v1.HPAMetric
+ (*HPAResourceMetric)(nil), // 87: api.v1.HPAResourceMetric
+ (*HPAPodsMetric)(nil), // 88: api.v1.HPAPodsMetric
+ (*HPAObjectMetric)(nil), // 89: api.v1.HPAObjectMetric
+ (*HPAExternalMetric)(nil), // 90: api.v1.HPAExternalMetric
+ (*HPAMetricSelector)(nil), // 91: api.v1.HPAMetricSelector
+ (*HPAObjectReference)(nil), // 92: api.v1.HPAObjectReference
+ (*HPACurrentMetric)(nil), // 93: api.v1.HPACurrentMetric
+ (*HPACurrentResourceMetric)(nil), // 94: api.v1.HPACurrentResourceMetric
+ (*HPACurrentPodsMetric)(nil), // 95: api.v1.HPACurrentPodsMetric
+ (*HPACurrentObjectMetric)(nil), // 96: api.v1.HPACurrentObjectMetric
+ (*HPACurrentExternalMetric)(nil), // 97: api.v1.HPACurrentExternalMetric
+ (*HPACondition)(nil), // 98: api.v1.HPACondition
+ (*HPABehavior)(nil), // 99: api.v1.HPABehavior
+ (*HPAScalingRules)(nil), // 100: api.v1.HPAScalingRules
+ (*HPAScalingPolicy)(nil), // 101: api.v1.HPAScalingPolicy
+ (*VPADetails)(nil), // 102: api.v1.VPADetails
+ (*VPATargetRef)(nil), // 103: api.v1.VPATargetRef
+ (*VPAUpdatePolicy)(nil), // 104: api.v1.VPAUpdatePolicy
+ (*VPAResourcePolicy)(nil), // 105: api.v1.VPAResourcePolicy
+ (*VPAContainerResourcePolicy)(nil), // 106: api.v1.VPAContainerResourcePolicy
+ (*VPARecommendation)(nil), // 107: api.v1.VPARecommendation
+ (*VPAContainerRecommendation)(nil), // 108: api.v1.VPAContainerRecommendation
+ (*VPACondition)(nil), // 109: api.v1.VPACondition
+ (*LimitRangeDetails)(nil), // 110: api.v1.LimitRangeDetails
+ (*LimitRangeItem)(nil), // 111: api.v1.LimitRangeItem
+ (*ServiceAccountDetails)(nil), // 112: api.v1.ServiceAccountDetails
+ (*RoleDetails)(nil), // 113: api.v1.RoleDetails
+ (*RoleRule)(nil), // 114: api.v1.RoleRule
+ (*RoleBindingDetails)(nil), // 115: api.v1.RoleBindingDetails
+ (*RoleBindingSubject)(nil), // 116: api.v1.RoleBindingSubject
+ (*RoleReference)(nil), // 117: api.v1.RoleReference
+ (*KedaScaledObjectDetails)(nil), // 118: api.v1.KedaScaledObjectDetails
+ (*KedaScaledObjectTrigger)(nil), // 119: api.v1.KedaScaledObjectTrigger
+ (*KedaScaledObjectCondition)(nil), // 120: api.v1.KedaScaledObjectCondition
+ (*KarpenterResourceDetails)(nil), // 121: api.v1.KarpenterResourceDetails
+ (*KarpenterResourceCondition)(nil), // 122: api.v1.KarpenterResourceCondition
+ (*KarpenterCapacity)(nil), // 123: api.v1.KarpenterCapacity
+ (*KarpenterRequirement)(nil), // 124: api.v1.KarpenterRequirement
+ (*ResourceFieldFilter)(nil), // 125: api.v1.ResourceFieldFilter
+ (*ResourceFilterFieldOptions)(nil), // 126: api.v1.ResourceFilterFieldOptions
+ (*WorkloadFilters)(nil), // 127: api.v1.WorkloadFilters
+ (*PodDisruptionBudgetDetails)(nil), // 128: api.v1.PodDisruptionBudgetDetails
+ (*PodDisruptionBudgetCondition)(nil), // 129: api.v1.PodDisruptionBudgetCondition
+ (*ResourceQuotaDetails)(nil), // 130: api.v1.ResourceQuotaDetails
+ (*ResourceQuotaCondition)(nil), // 131: api.v1.ResourceQuotaCondition
+ (*VolcanoJobDetails)(nil), // 132: api.v1.VolcanoJobDetails
+ (*VolcanoJobCondition)(nil), // 133: api.v1.VolcanoJobCondition
+ (*VolcanoTask)(nil), // 134: api.v1.VolcanoTask
+ (*SparkApplicationDetails)(nil), // 135: api.v1.SparkApplicationDetails
+ (*SparkDriverInfo)(nil), // 136: api.v1.SparkDriverInfo
+ (*SparkRestartPolicyInfo)(nil), // 137: api.v1.SparkRestartPolicyInfo
+ (*SparkDynamicAllocationInfo)(nil), // 138: api.v1.SparkDynamicAllocationInfo
+ (*ScheduledSparkApplicationDetails)(nil), // 139: api.v1.ScheduledSparkApplicationDetails
+ (*KyvernoPolicyDetails)(nil), // 140: api.v1.KyvernoPolicyDetails
+ (*PolicyReportResult)(nil), // 141: api.v1.PolicyReportResult
+ (*KyvernoPolicyReportDetails)(nil), // 142: api.v1.KyvernoPolicyReportDetails
+ (*GatekeeperConstraintTemplateDetails)(nil), // 143: api.v1.GatekeeperConstraintTemplateDetails
+ (*ConstraintViolation)(nil), // 144: api.v1.ConstraintViolation
+ (*GatekeeperConstraintDetails)(nil), // 145: api.v1.GatekeeperConstraintDetails
+ (*Event)(nil), // 146: api.v1.Event
+ (*EventDatapointInfo)(nil), // 147: api.v1.EventDatapointInfo
+ (*EventDatapoint)(nil), // 148: api.v1.EventDatapoint
+ (*DimensionCount)(nil), // 149: api.v1.DimensionCount
+ (*EventGroup)(nil), // 150: api.v1.EventGroup
+ nil, // 151: api.v1.WorkloadItem.LabelsEntry
+ nil, // 152: api.v1.WorkloadItem.AnnotationsEntry
+ nil, // 153: api.v1.NodeInfo.PriceSourceCountsEntry
+ nil, // 154: api.v1.Node.LabelsEntry
+ nil, // 155: api.v1.Node.AnnotationsEntry
+ nil, // 156: api.v1.LabelSelector.MatchLabelsEntry
+ nil, // 157: api.v1.ResourceDetails.ServiceSelectorEntry
+ nil, // 158: api.v1.ResourceDetails.ScParametersEntry
+ nil, // 159: api.v1.ServiceDetails.SelectorEntry
+ nil, // 160: api.v1.ResourceRequirements.RequestsEntry
+ nil, // 161: api.v1.ResourceRequirements.LimitsEntry
+ nil, // 162: api.v1.PersistentVolumeDetails.CapacityEntry
+ nil, // 163: api.v1.PVVolumeSource.VolumeAttributesEntry
+ nil, // 164: api.v1.CSIVolumeSource.VolumeAttributesEntry
+ nil, // 165: api.v1.StorageClassDetails.ParametersEntry
+ nil, // 166: api.v1.NamespaceDetails.ConditionsEntry
+ nil, // 167: api.v1.NodeDetails.CapacityEntry
+ nil, // 168: api.v1.NodeDetails.AllocatableEntry
+ nil, // 169: api.v1.TopologySelectorTerm.MatchLabelsEntry
+ nil, // 170: api.v1.HPAMetricSelector.SelectorEntry
+ nil, // 171: api.v1.VPAContainerResourcePolicy.MinAllowedEntry
+ nil, // 172: api.v1.VPAContainerResourcePolicy.MaxAllowedEntry
+ nil, // 173: api.v1.VPAContainerRecommendation.TargetEntry
+ nil, // 174: api.v1.VPAContainerRecommendation.LowerBoundEntry
+ nil, // 175: api.v1.VPAContainerRecommendation.UpperBoundEntry
+ nil, // 176: api.v1.VPAContainerRecommendation.UncappedTargetEntry
+ nil, // 177: api.v1.LimitRangeItem.DefaultLimitsEntry
+ nil, // 178: api.v1.LimitRangeItem.DefaultRequestEntry
+ nil, // 179: api.v1.LimitRangeItem.MaxEntry
+ nil, // 180: api.v1.LimitRangeItem.MinEntry
+ nil, // 181: api.v1.LimitRangeItem.MaxLimitRequestRatioEntry
+ nil, // 182: api.v1.KedaScaledObjectTrigger.MetadataEntry
+ nil, // 183: api.v1.KarpenterResourceDetails.LimitsEntry
+ nil, // 184: api.v1.KarpenterCapacity.OtherEntry
+ nil, // 185: api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry
+ nil, // 186: api.v1.ResourceQuotaDetails.HardLimitsEntry
+ nil, // 187: api.v1.ResourceQuotaDetails.UsedEntry
+ nil, // 188: api.v1.ResourceQuotaDetails.ScopeSelectorEntry
+ nil, // 189: api.v1.Event.AnnotationsEntry
+ nil, // 190: api.v1.Event.LabelsEntry
+ (*timestamppb.Timestamp)(nil), // 191: google.protobuf.Timestamp
+ (*money.Money)(nil), // 192: google.type.Money
}
var file_api_v1_common_proto_depIdxs = []int32{
0, // 0: api.v1.AuditLogEntry.workload_type:type_name -> api.v1.K8sObjectKind
- 176, // 1: api.v1.AuditLogEntry.created_at:type_name -> google.protobuf.Timestamp
- 176, // 2: api.v1.AuditLogEntry.updated_at:type_name -> google.protobuf.Timestamp
+ 191, // 1: api.v1.AuditLogEntry.created_at:type_name -> google.protobuf.Timestamp
+ 191, // 2: api.v1.AuditLogEntry.updated_at:type_name -> google.protobuf.Timestamp
1, // 3: api.v1.Pagination.order_by:type_name -> api.v1.OrderByEnum
- 177, // 4: api.v1.CostInfo.money_cpu_cost_per_hour:type_name -> google.type.Money
- 177, // 5: api.v1.CostInfo.money_memory_cost_per_hour:type_name -> google.type.Money
- 177, // 6: api.v1.CostInfo.money_total_cost_per_hour:type_name -> google.type.Money
- 177, // 7: api.v1.CostInfo.money_total_cost_per_month:type_name -> google.type.Money
- 177, // 8: api.v1.CostInfo.money_total_cost_per_year:type_name -> google.type.Money
- 177, // 9: api.v1.CostInfo.money_optimized_cpu_cost_per_hour:type_name -> google.type.Money
- 177, // 10: api.v1.CostInfo.money_optimized_memory_cost_per_hour:type_name -> google.type.Money
- 177, // 11: api.v1.CostInfo.money_optimized_total_cost_per_hour:type_name -> google.type.Money
- 177, // 12: api.v1.CostInfo.money_optimized_total_cost_per_month:type_name -> google.type.Money
- 177, // 13: api.v1.CostInfo.money_optimized_total_cost_per_year:type_name -> google.type.Money
- 177, // 14: api.v1.CostInfo.money_cpu_cost_for_time_period:type_name -> google.type.Money
- 177, // 15: api.v1.CostInfo.money_memory_cost_for_time_period:type_name -> google.type.Money
- 177, // 16: api.v1.CostInfo.money_total_cost_for_time_period:type_name -> google.type.Money
- 177, // 17: api.v1.CostInfo.money_optimized_cpu_cost_for_time_period:type_name -> google.type.Money
- 177, // 18: api.v1.CostInfo.money_optimized_memory_cost_for_time_period:type_name -> google.type.Money
- 177, // 19: api.v1.CostInfo.money_optimized_total_cost_for_time_period:type_name -> google.type.Money
- 177, // 20: api.v1.CostInfo.money_optimized_gpu_cost_for_time_period:type_name -> google.type.Money
- 177, // 21: api.v1.CostInfo.money_gpu_cost_for_time_period:type_name -> google.type.Money
- 177, // 22: api.v1.CostInfo.money_gpu_cost_per_hour:type_name -> google.type.Money
- 177, // 23: api.v1.CostInfo.money_optimized_gpu_cost_per_hour:type_name -> google.type.Money
- 177, // 24: api.v1.CostInfo.money_cpu_cost_per_vcpu_per_hour:type_name -> google.type.Money
- 177, // 25: api.v1.CostInfo.money_memory_cost_per_gib_per_hour:type_name -> google.type.Money
- 8, // 26: api.v1.ContainerPercentileSummary.cpu_usage:type_name -> api.v1.MetricPercentiles
- 8, // 27: api.v1.ContainerPercentileSummary.memory_usage:type_name -> api.v1.MetricPercentiles
- 8, // 28: api.v1.ContainerPercentileSummary.cpu_request:type_name -> api.v1.MetricPercentiles
- 8, // 29: api.v1.ContainerPercentileSummary.memory_request:type_name -> api.v1.MetricPercentiles
- 8, // 30: api.v1.ContainerPercentileSummary.cpu_limit:type_name -> api.v1.MetricPercentiles
- 8, // 31: api.v1.ContainerPercentileSummary.memory_limit:type_name -> api.v1.MetricPercentiles
- 8, // 32: api.v1.ContainerPercentileSummary.gpu_usage:type_name -> api.v1.MetricPercentiles
- 8, // 33: api.v1.ContainerPercentileSummary.gpu_vram_usage:type_name -> api.v1.MetricPercentiles
- 8, // 34: api.v1.ContainerPercentileSummary.network_receive_bytes:type_name -> api.v1.MetricPercentiles
- 8, // 35: api.v1.ContainerPercentileSummary.network_transmit_bytes:type_name -> api.v1.MetricPercentiles
- 8, // 36: api.v1.ContainerPercentileSummary.fs_read_bytes:type_name -> api.v1.MetricPercentiles
- 8, // 37: api.v1.ContainerPercentileSummary.fs_write_bytes:type_name -> api.v1.MetricPercentiles
- 176, // 38: api.v1.ForecastResourceMetrics.timestamp:type_name -> google.protobuf.Timestamp
- 13, // 39: api.v1.WorkloadItem.children:type_name -> api.v1.WorkloadItem
- 136, // 40: api.v1.WorkloadItem.labels:type_name -> api.v1.WorkloadItem.LabelsEntry
- 137, // 41: api.v1.WorkloadItem.annotations:type_name -> api.v1.WorkloadItem.AnnotationsEntry
- 7, // 42: api.v1.WorkloadItem.resource_metrics:type_name -> api.v1.ResourceMetrics
- 6, // 43: api.v1.WorkloadItem.cost_info:type_name -> api.v1.CostInfo
- 20, // 44: api.v1.WorkloadItem.cost_data_points:type_name -> api.v1.CostDataPoint
- 21, // 45: api.v1.WorkloadItem.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 176, // 46: api.v1.WorkloadItem.created_at:type_name -> google.protobuf.Timestamp
- 176, // 47: api.v1.WorkloadItem.deleted_at:type_name -> google.protobuf.Timestamp
- 30, // 48: api.v1.WorkloadItem.resource_details:type_name -> api.v1.ResourceDetails
- 138, // 49: api.v1.NodeInfo.price_source_counts:type_name -> api.v1.NodeInfo.PriceSourceCountsEntry
- 7, // 50: api.v1.Node.resource_metrics:type_name -> api.v1.ResourceMetrics
- 6, // 51: api.v1.Node.cost_info:type_name -> api.v1.CostInfo
- 14, // 52: api.v1.Node.container_runtime:type_name -> api.v1.ContainerRuntimeInfo
- 30, // 53: api.v1.Node.resource_details:type_name -> api.v1.ResourceDetails
- 13, // 54: api.v1.Node.children:type_name -> api.v1.WorkloadItem
- 139, // 55: api.v1.Node.labels:type_name -> api.v1.Node.LabelsEntry
- 140, // 56: api.v1.Node.annotations:type_name -> api.v1.Node.AnnotationsEntry
- 177, // 57: api.v1.Node.money_price_per_hour:type_name -> google.type.Money
- 177, // 58: api.v1.Node.money_eff_period_total_cost:type_name -> google.type.Money
- 177, // 59: api.v1.Node.money_price_per_vcpu:type_name -> google.type.Money
- 177, // 60: api.v1.Node.money_price_per_gib:type_name -> google.type.Money
- 177, // 61: api.v1.Node.money_price_per_gpu:type_name -> google.type.Money
- 177, // 62: api.v1.Node.money_cpu_price:type_name -> google.type.Money
- 177, // 63: api.v1.Node.money_memory_price:type_name -> google.type.Money
- 177, // 64: api.v1.Node.money_gpu_price:type_name -> google.type.Money
- 177, // 65: api.v1.Node.money_on_demand_price_per_hour:type_name -> google.type.Money
- 18, // 66: api.v1.Node.volumes_attached:type_name -> api.v1.AttachedVolume
- 176, // 67: api.v1.Node.last_seen:type_name -> google.protobuf.Timestamp
- 176, // 68: api.v1.Node.collected_at:type_name -> google.protobuf.Timestamp
- 176, // 69: api.v1.Node.deletion_timestamp:type_name -> google.protobuf.Timestamp
- 17, // 70: api.v1.NodeGroup.nodes:type_name -> api.v1.Node
- 7, // 71: api.v1.NodeGroup.resource_metrics:type_name -> api.v1.ResourceMetrics
- 6, // 72: api.v1.NodeGroup.cost_info:type_name -> api.v1.CostInfo
- 15, // 73: api.v1.NodeGroup.node_info:type_name -> api.v1.NodeInfo
- 16, // 74: api.v1.NodeGroup.resource_info:type_name -> api.v1.ResourceInfo
- 20, // 75: api.v1.NodeGroup.cost_data_points:type_name -> api.v1.CostDataPoint
- 21, // 76: api.v1.NodeGroup.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 6, // 77: api.v1.CostDataPoint.cost_info:type_name -> api.v1.CostInfo
- 7, // 78: api.v1.ResourceDataPoint.resource_metrics:type_name -> api.v1.ResourceMetrics
- 21, // 79: api.v1.ContainerTimeSeries.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 23, // 80: api.v1.SavingsDataPoint.savings_data:type_name -> api.v1.SavingsData
- 24, // 81: api.v1.SavingsTimeSeries.savings_datapoints:type_name -> api.v1.SavingsDataPoint
- 2, // 82: api.v1.LabelSelectorRequirement.operator:type_name -> api.v1.LabelSelectorOperator
- 27, // 83: api.v1.LabelSelector.labels:type_name -> api.v1.Label
- 141, // 84: api.v1.LabelSelector.match_labels:type_name -> api.v1.LabelSelector.MatchLabelsEntry
- 26, // 85: api.v1.LabelSelector.match_expressions:type_name -> api.v1.LabelSelectorRequirement
- 31, // 86: api.v1.ResourceDetails.pod_details:type_name -> api.v1.PodDetails
- 33, // 87: api.v1.ResourceDetails.deployment_details:type_name -> api.v1.DeploymentDetails
- 36, // 88: api.v1.ResourceDetails.stateful_set_details:type_name -> api.v1.StatefulSetDetails
- 38, // 89: api.v1.ResourceDetails.daemon_set_details:type_name -> api.v1.DaemonSetDetails
- 39, // 90: api.v1.ResourceDetails.replica_set_details:type_name -> api.v1.ReplicaSetDetails
- 40, // 91: api.v1.ResourceDetails.job_details:type_name -> api.v1.JobDetails
- 42, // 92: api.v1.ResourceDetails.cron_job_details:type_name -> api.v1.CronJobDetails
- 45, // 93: api.v1.ResourceDetails.service_details:type_name -> api.v1.ServiceDetails
- 48, // 94: api.v1.ResourceDetails.ingress_details:type_name -> api.v1.IngressDetails
- 53, // 95: api.v1.ResourceDetails.pvc_details:type_name -> api.v1.PersistentVolumeClaimDetails
- 57, // 96: api.v1.ResourceDetails.pv_details:type_name -> api.v1.PersistentVolumeDetails
- 63, // 97: api.v1.ResourceDetails.sc_details:type_name -> api.v1.StorageClassDetails
- 64, // 98: api.v1.ResourceDetails.ns_details:type_name -> api.v1.NamespaceDetails
- 65, // 99: api.v1.ResourceDetails.node_details:type_name -> api.v1.NodeDetails
- 77, // 100: api.v1.ResourceDetails.hpa_details:type_name -> api.v1.HPADetails
- 95, // 101: api.v1.ResourceDetails.vpa_details:type_name -> api.v1.VPADetails
- 103, // 102: api.v1.ResourceDetails.limit_range_details:type_name -> api.v1.LimitRangeDetails
- 105, // 103: api.v1.ResourceDetails.service_account_details:type_name -> api.v1.ServiceAccountDetails
- 106, // 104: api.v1.ResourceDetails.role_details:type_name -> api.v1.RoleDetails
- 108, // 105: api.v1.ResourceDetails.role_binding_details:type_name -> api.v1.RoleBindingDetails
- 111, // 106: api.v1.ResourceDetails.keda_scaled_object_details:type_name -> api.v1.KedaScaledObjectDetails
- 114, // 107: api.v1.ResourceDetails.karpenter_resource_details:type_name -> api.v1.KarpenterResourceDetails
- 119, // 108: api.v1.ResourceDetails.pod_disruption_budget_details:type_name -> api.v1.PodDisruptionBudgetDetails
- 121, // 109: api.v1.ResourceDetails.resource_quota_details:type_name -> api.v1.ResourceQuotaDetails
- 123, // 110: api.v1.ResourceDetails.volcano_job_details:type_name -> api.v1.VolcanoJobDetails
- 126, // 111: api.v1.ResourceDetails.spark_application_details:type_name -> api.v1.SparkApplicationDetails
- 130, // 112: api.v1.ResourceDetails.scheduled_spark_application_details:type_name -> api.v1.ScheduledSparkApplicationDetails
- 46, // 113: api.v1.ResourceDetails.service_ports:type_name -> api.v1.ServicePort
- 142, // 114: api.v1.ResourceDetails.service_selector:type_name -> api.v1.ResourceDetails.ServiceSelectorEntry
- 143, // 115: api.v1.ResourceDetails.sc_parameters:type_name -> api.v1.ResourceDetails.ScParametersEntry
- 66, // 116: api.v1.ResourceDetails.node_taints:type_name -> api.v1.NodeTaint
- 32, // 117: api.v1.PodDetails.containers:type_name -> api.v1.ContainerSummary
- 34, // 118: api.v1.DeploymentDetails.containers:type_name -> api.v1.ContainerTemplate
- 35, // 119: api.v1.DeploymentDetails.conditions:type_name -> api.v1.DeploymentCondition
- 34, // 120: api.v1.StatefulSetDetails.containers:type_name -> api.v1.ContainerTemplate
- 37, // 121: api.v1.StatefulSetDetails.volume_claim_templates:type_name -> api.v1.VolumeClaimTemplate
- 34, // 122: api.v1.DaemonSetDetails.containers:type_name -> api.v1.ContainerTemplate
- 73, // 123: api.v1.DaemonSetDetails.tolerations:type_name -> api.v1.TolerationInfo
- 74, // 124: api.v1.DaemonSetDetails.node_selector:type_name -> api.v1.NodeSelector
- 34, // 125: api.v1.ReplicaSetDetails.containers:type_name -> api.v1.ContainerTemplate
- 28, // 126: api.v1.ReplicaSetDetails.selector:type_name -> api.v1.LabelSelector
- 34, // 127: api.v1.JobDetails.containers:type_name -> api.v1.ContainerTemplate
- 41, // 128: api.v1.JobDetails.conditions:type_name -> api.v1.JobCondition
- 28, // 129: api.v1.JobDetails.selector:type_name -> api.v1.LabelSelector
- 34, // 130: api.v1.CronJobDetails.containers:type_name -> api.v1.ContainerTemplate
- 43, // 131: api.v1.CronJobDetails.active_jobs:type_name -> api.v1.ActiveJobReference
- 44, // 132: api.v1.CronJobDetails.job_template:type_name -> api.v1.JobTemplate
- 34, // 133: api.v1.JobTemplate.containers:type_name -> api.v1.ContainerTemplate
- 46, // 134: api.v1.ServiceDetails.ports:type_name -> api.v1.ServicePort
- 144, // 135: api.v1.ServiceDetails.selector:type_name -> api.v1.ServiceDetails.SelectorEntry
- 47, // 136: api.v1.ServiceDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress
- 49, // 137: api.v1.IngressDetails.rules:type_name -> api.v1.IngressRule
- 52, // 138: api.v1.IngressDetails.tls:type_name -> api.v1.IngressTLS
- 51, // 139: api.v1.IngressDetails.default_backend:type_name -> api.v1.IngressBackend
- 47, // 140: api.v1.IngressDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress
- 50, // 141: api.v1.IngressRule.paths:type_name -> api.v1.IngressPath
- 51, // 142: api.v1.IngressPath.backend:type_name -> api.v1.IngressBackend
- 54, // 143: api.v1.PersistentVolumeClaimDetails.resource_requirements:type_name -> api.v1.ResourceRequirements
- 28, // 144: api.v1.PersistentVolumeClaimDetails.selector:type_name -> api.v1.LabelSelector
- 55, // 145: api.v1.PersistentVolumeClaimDetails.volume_node_affinity:type_name -> api.v1.VolumeNodeAffinity
- 56, // 146: api.v1.PersistentVolumeClaimDetails.conditions:type_name -> api.v1.PVCCondition
- 145, // 147: api.v1.ResourceRequirements.requests:type_name -> api.v1.ResourceRequirements.RequestsEntry
- 146, // 148: api.v1.ResourceRequirements.limits:type_name -> api.v1.ResourceRequirements.LimitsEntry
- 76, // 149: api.v1.VolumeNodeAffinity.required:type_name -> api.v1.NodeSelectorRequirement
- 76, // 150: api.v1.VolumeNodeAffinity.preferred:type_name -> api.v1.NodeSelectorRequirement
- 147, // 151: api.v1.PersistentVolumeDetails.capacity:type_name -> api.v1.PersistentVolumeDetails.CapacityEntry
- 58, // 152: api.v1.PersistentVolumeDetails.claim_ref:type_name -> api.v1.PVClaimReference
- 59, // 153: api.v1.PersistentVolumeDetails.volume_source:type_name -> api.v1.PVVolumeSource
- 74, // 154: api.v1.PersistentVolumeDetails.node_affinity:type_name -> api.v1.NodeSelector
- 60, // 155: api.v1.PVVolumeSource.csi:type_name -> api.v1.CSIVolumeSource
- 61, // 156: api.v1.PVVolumeSource.host_path:type_name -> api.v1.HostPathVolumeSource
- 62, // 157: api.v1.PVVolumeSource.nfs:type_name -> api.v1.NFSVolumeSource
- 148, // 158: api.v1.PVVolumeSource.volume_attributes:type_name -> api.v1.PVVolumeSource.VolumeAttributesEntry
- 149, // 159: api.v1.CSIVolumeSource.volume_attributes:type_name -> api.v1.CSIVolumeSource.VolumeAttributesEntry
- 150, // 160: api.v1.StorageClassDetails.parameters:type_name -> api.v1.StorageClassDetails.ParametersEntry
- 71, // 161: api.v1.StorageClassDetails.allowed_topologies:type_name -> api.v1.TopologySelector
- 151, // 162: api.v1.NamespaceDetails.conditions:type_name -> api.v1.NamespaceDetails.ConditionsEntry
- 67, // 163: api.v1.NodeDetails.addresses:type_name -> api.v1.NodeAddress
- 68, // 164: api.v1.NodeDetails.conditions:type_name -> api.v1.NodeCondition
- 69, // 165: api.v1.NodeDetails.system_info:type_name -> api.v1.NodeSystemInfo
- 152, // 166: api.v1.NodeDetails.capacity:type_name -> api.v1.NodeDetails.CapacityEntry
- 153, // 167: api.v1.NodeDetails.allocatable:type_name -> api.v1.NodeDetails.AllocatableEntry
- 70, // 168: api.v1.NodeDetails.images:type_name -> api.v1.NodeImage
- 72, // 169: api.v1.TopologySelector.match_label_expressions:type_name -> api.v1.TopologySelectorTerm
- 154, // 170: api.v1.TopologySelectorTerm.match_labels:type_name -> api.v1.TopologySelectorTerm.MatchLabelsEntry
- 75, // 171: api.v1.NodeSelector.terms:type_name -> api.v1.NodeSelectorTerm
- 76, // 172: api.v1.NodeSelectorTerm.match_expressions:type_name -> api.v1.NodeSelectorRequirement
- 76, // 173: api.v1.NodeSelectorTerm.match_fields:type_name -> api.v1.NodeSelectorRequirement
- 78, // 174: api.v1.HPADetails.scale_target_ref:type_name -> api.v1.ScaleTargetRef
- 79, // 175: api.v1.HPADetails.metrics:type_name -> api.v1.HPAMetric
- 91, // 176: api.v1.HPADetails.conditions:type_name -> api.v1.HPACondition
- 92, // 177: api.v1.HPADetails.behavior:type_name -> api.v1.HPABehavior
- 86, // 178: api.v1.HPADetails.current_metrics:type_name -> api.v1.HPACurrentMetric
- 80, // 179: api.v1.HPAMetric.resource:type_name -> api.v1.HPAResourceMetric
- 81, // 180: api.v1.HPAMetric.pods:type_name -> api.v1.HPAPodsMetric
- 82, // 181: api.v1.HPAMetric.object:type_name -> api.v1.HPAObjectMetric
- 83, // 182: api.v1.HPAMetric.external:type_name -> api.v1.HPAExternalMetric
- 84, // 183: api.v1.HPAPodsMetric.metric:type_name -> api.v1.HPAMetricSelector
- 85, // 184: api.v1.HPAObjectMetric.described_object:type_name -> api.v1.HPAObjectReference
- 84, // 185: api.v1.HPAObjectMetric.metric:type_name -> api.v1.HPAMetricSelector
- 84, // 186: api.v1.HPAExternalMetric.metric:type_name -> api.v1.HPAMetricSelector
- 155, // 187: api.v1.HPAMetricSelector.selector:type_name -> api.v1.HPAMetricSelector.SelectorEntry
- 87, // 188: api.v1.HPACurrentMetric.resource:type_name -> api.v1.HPACurrentResourceMetric
- 88, // 189: api.v1.HPACurrentMetric.pods:type_name -> api.v1.HPACurrentPodsMetric
- 89, // 190: api.v1.HPACurrentMetric.object:type_name -> api.v1.HPACurrentObjectMetric
- 90, // 191: api.v1.HPACurrentMetric.external:type_name -> api.v1.HPACurrentExternalMetric
- 84, // 192: api.v1.HPACurrentPodsMetric.metric:type_name -> api.v1.HPAMetricSelector
- 85, // 193: api.v1.HPACurrentObjectMetric.described_object:type_name -> api.v1.HPAObjectReference
- 84, // 194: api.v1.HPACurrentObjectMetric.metric:type_name -> api.v1.HPAMetricSelector
- 84, // 195: api.v1.HPACurrentExternalMetric.metric:type_name -> api.v1.HPAMetricSelector
- 93, // 196: api.v1.HPABehavior.scale_up:type_name -> api.v1.HPAScalingRules
- 93, // 197: api.v1.HPABehavior.scale_down:type_name -> api.v1.HPAScalingRules
- 94, // 198: api.v1.HPAScalingRules.policies:type_name -> api.v1.HPAScalingPolicy
- 96, // 199: api.v1.VPADetails.target_ref:type_name -> api.v1.VPATargetRef
- 97, // 200: api.v1.VPADetails.update_policy:type_name -> api.v1.VPAUpdatePolicy
- 98, // 201: api.v1.VPADetails.resource_policy:type_name -> api.v1.VPAResourcePolicy
- 100, // 202: api.v1.VPADetails.recommendation:type_name -> api.v1.VPARecommendation
- 102, // 203: api.v1.VPADetails.conditions:type_name -> api.v1.VPACondition
- 99, // 204: api.v1.VPAResourcePolicy.container_policies:type_name -> api.v1.VPAContainerResourcePolicy
- 156, // 205: api.v1.VPAContainerResourcePolicy.min_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MinAllowedEntry
- 157, // 206: api.v1.VPAContainerResourcePolicy.max_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MaxAllowedEntry
- 101, // 207: api.v1.VPARecommendation.container_recommendations:type_name -> api.v1.VPAContainerRecommendation
- 158, // 208: api.v1.VPAContainerRecommendation.target:type_name -> api.v1.VPAContainerRecommendation.TargetEntry
- 159, // 209: api.v1.VPAContainerRecommendation.lower_bound:type_name -> api.v1.VPAContainerRecommendation.LowerBoundEntry
- 160, // 210: api.v1.VPAContainerRecommendation.upper_bound:type_name -> api.v1.VPAContainerRecommendation.UpperBoundEntry
- 161, // 211: api.v1.VPAContainerRecommendation.uncapped_target:type_name -> api.v1.VPAContainerRecommendation.UncappedTargetEntry
- 104, // 212: api.v1.LimitRangeDetails.limits:type_name -> api.v1.LimitRangeItem
- 162, // 213: api.v1.LimitRangeItem.default_limits:type_name -> api.v1.LimitRangeItem.DefaultLimitsEntry
- 163, // 214: api.v1.LimitRangeItem.default_request:type_name -> api.v1.LimitRangeItem.DefaultRequestEntry
- 164, // 215: api.v1.LimitRangeItem.max:type_name -> api.v1.LimitRangeItem.MaxEntry
- 165, // 216: api.v1.LimitRangeItem.min:type_name -> api.v1.LimitRangeItem.MinEntry
- 166, // 217: api.v1.LimitRangeItem.max_limit_request_ratio:type_name -> api.v1.LimitRangeItem.MaxLimitRequestRatioEntry
- 107, // 218: api.v1.RoleDetails.rules:type_name -> api.v1.RoleRule
- 109, // 219: api.v1.RoleBindingDetails.subjects:type_name -> api.v1.RoleBindingSubject
- 110, // 220: api.v1.RoleBindingDetails.role_ref:type_name -> api.v1.RoleReference
- 112, // 221: api.v1.KedaScaledObjectDetails.triggers:type_name -> api.v1.KedaScaledObjectTrigger
- 113, // 222: api.v1.KedaScaledObjectDetails.conditions:type_name -> api.v1.KedaScaledObjectCondition
- 167, // 223: api.v1.KedaScaledObjectTrigger.metadata:type_name -> api.v1.KedaScaledObjectTrigger.MetadataEntry
- 115, // 224: api.v1.KarpenterResourceDetails.conditions:type_name -> api.v1.KarpenterResourceCondition
- 116, // 225: api.v1.KarpenterResourceDetails.capacity:type_name -> api.v1.KarpenterCapacity
- 117, // 226: api.v1.KarpenterResourceDetails.requirements:type_name -> api.v1.KarpenterRequirement
- 168, // 227: api.v1.KarpenterResourceDetails.limits:type_name -> api.v1.KarpenterResourceDetails.LimitsEntry
- 169, // 228: api.v1.KarpenterCapacity.other:type_name -> api.v1.KarpenterCapacity.OtherEntry
- 28, // 229: api.v1.WorkloadFilters.namespace_selector:type_name -> api.v1.LabelSelector
- 28, // 230: api.v1.WorkloadFilters.workload_selector:type_name -> api.v1.LabelSelector
- 0, // 231: api.v1.WorkloadFilters.kind_filter:type_name -> api.v1.K8sObjectKind
- 29, // 232: api.v1.WorkloadFilters.name_pattern:type_name -> api.v1.RegexPattern
- 28, // 233: api.v1.WorkloadFilters.annotation_selector:type_name -> api.v1.LabelSelector
- 3, // 234: api.v1.WorkloadFilters.status:type_name -> api.v1.WorkloadStatusFilter
- 170, // 235: api.v1.PodDisruptionBudgetDetails.selector_labels:type_name -> api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry
- 120, // 236: api.v1.PodDisruptionBudgetDetails.conditions:type_name -> api.v1.PodDisruptionBudgetCondition
- 171, // 237: api.v1.ResourceQuotaDetails.hard_limits:type_name -> api.v1.ResourceQuotaDetails.HardLimitsEntry
- 172, // 238: api.v1.ResourceQuotaDetails.used:type_name -> api.v1.ResourceQuotaDetails.UsedEntry
- 173, // 239: api.v1.ResourceQuotaDetails.scope_selector:type_name -> api.v1.ResourceQuotaDetails.ScopeSelectorEntry
- 122, // 240: api.v1.ResourceQuotaDetails.conditions:type_name -> api.v1.ResourceQuotaCondition
- 34, // 241: api.v1.VolcanoJobDetails.containers:type_name -> api.v1.ContainerTemplate
- 124, // 242: api.v1.VolcanoJobDetails.conditions:type_name -> api.v1.VolcanoJobCondition
- 125, // 243: api.v1.VolcanoJobDetails.tasks:type_name -> api.v1.VolcanoTask
- 34, // 244: api.v1.VolcanoTask.containers:type_name -> api.v1.ContainerTemplate
- 34, // 245: api.v1.SparkApplicationDetails.containers:type_name -> api.v1.ContainerTemplate
- 127, // 246: api.v1.SparkApplicationDetails.spark_driver_info:type_name -> api.v1.SparkDriverInfo
- 128, // 247: api.v1.SparkApplicationDetails.restart_policy:type_name -> api.v1.SparkRestartPolicyInfo
- 129, // 248: api.v1.SparkApplicationDetails.dynamic_allocation:type_name -> api.v1.SparkDynamicAllocationInfo
- 176, // 249: api.v1.ScheduledSparkApplicationDetails.last_run:type_name -> google.protobuf.Timestamp
- 176, // 250: api.v1.ScheduledSparkApplicationDetails.next_run:type_name -> google.protobuf.Timestamp
- 126, // 251: api.v1.ScheduledSparkApplicationDetails.template_details:type_name -> api.v1.SparkApplicationDetails
- 174, // 252: api.v1.Event.annotations:type_name -> api.v1.Event.AnnotationsEntry
- 175, // 253: api.v1.Event.labels:type_name -> api.v1.Event.LabelsEntry
- 176, // 254: api.v1.Event.created_at:type_name -> google.protobuf.Timestamp
- 176, // 255: api.v1.Event.updated_at:type_name -> google.protobuf.Timestamp
- 176, // 256: api.v1.Event.last_seen:type_name -> google.protobuf.Timestamp
- 176, // 257: api.v1.Event.deleted_at:type_name -> google.protobuf.Timestamp
- 132, // 258: api.v1.EventDatapoint.events:type_name -> api.v1.EventDatapointInfo
- 176, // 259: api.v1.EventGroup.first_seen:type_name -> google.protobuf.Timestamp
- 176, // 260: api.v1.EventGroup.last_seen:type_name -> google.protobuf.Timestamp
- 261, // [261:261] is the sub-list for method output_type
- 261, // [261:261] is the sub-list for method input_type
- 261, // [261:261] is the sub-list for extension type_name
- 261, // [261:261] is the sub-list for extension extendee
- 0, // [0:261] is the sub-list for field type_name
+ 192, // 4: api.v1.CostInfo.money_cpu_cost_per_hour:type_name -> google.type.Money
+ 192, // 5: api.v1.CostInfo.money_memory_cost_per_hour:type_name -> google.type.Money
+ 192, // 6: api.v1.CostInfo.money_total_cost_per_hour:type_name -> google.type.Money
+ 192, // 7: api.v1.CostInfo.money_total_cost_per_month:type_name -> google.type.Money
+ 192, // 8: api.v1.CostInfo.money_total_cost_per_year:type_name -> google.type.Money
+ 192, // 9: api.v1.CostInfo.money_optimized_cpu_cost_per_hour:type_name -> google.type.Money
+ 192, // 10: api.v1.CostInfo.money_optimized_memory_cost_per_hour:type_name -> google.type.Money
+ 192, // 11: api.v1.CostInfo.money_optimized_total_cost_per_hour:type_name -> google.type.Money
+ 192, // 12: api.v1.CostInfo.money_optimized_total_cost_per_month:type_name -> google.type.Money
+ 192, // 13: api.v1.CostInfo.money_optimized_total_cost_per_year:type_name -> google.type.Money
+ 192, // 14: api.v1.CostInfo.money_cpu_cost_for_time_period:type_name -> google.type.Money
+ 192, // 15: api.v1.CostInfo.money_memory_cost_for_time_period:type_name -> google.type.Money
+ 192, // 16: api.v1.CostInfo.money_total_cost_for_time_period:type_name -> google.type.Money
+ 192, // 17: api.v1.CostInfo.money_network_cost_for_time_period:type_name -> google.type.Money
+ 192, // 18: api.v1.CostInfo.money_optimized_cpu_cost_for_time_period:type_name -> google.type.Money
+ 192, // 19: api.v1.CostInfo.money_optimized_memory_cost_for_time_period:type_name -> google.type.Money
+ 192, // 20: api.v1.CostInfo.money_optimized_total_cost_for_time_period:type_name -> google.type.Money
+ 192, // 21: api.v1.CostInfo.money_optimized_gpu_cost_for_time_period:type_name -> google.type.Money
+ 192, // 22: api.v1.CostInfo.money_gpu_cost_for_time_period:type_name -> google.type.Money
+ 192, // 23: api.v1.CostInfo.money_gpu_cost_per_hour:type_name -> google.type.Money
+ 192, // 24: api.v1.CostInfo.money_optimized_gpu_cost_per_hour:type_name -> google.type.Money
+ 192, // 25: api.v1.CostInfo.money_cpu_cost_per_vcpu_per_hour:type_name -> google.type.Money
+ 192, // 26: api.v1.CostInfo.money_memory_cost_per_gib_per_hour:type_name -> google.type.Money
+ 9, // 27: api.v1.ContainerPercentileSummary.cpu_usage:type_name -> api.v1.MetricPercentiles
+ 9, // 28: api.v1.ContainerPercentileSummary.memory_usage:type_name -> api.v1.MetricPercentiles
+ 9, // 29: api.v1.ContainerPercentileSummary.cpu_request:type_name -> api.v1.MetricPercentiles
+ 9, // 30: api.v1.ContainerPercentileSummary.memory_request:type_name -> api.v1.MetricPercentiles
+ 9, // 31: api.v1.ContainerPercentileSummary.cpu_limit:type_name -> api.v1.MetricPercentiles
+ 9, // 32: api.v1.ContainerPercentileSummary.memory_limit:type_name -> api.v1.MetricPercentiles
+ 9, // 33: api.v1.ContainerPercentileSummary.gpu_usage:type_name -> api.v1.MetricPercentiles
+ 9, // 34: api.v1.ContainerPercentileSummary.gpu_vram_usage:type_name -> api.v1.MetricPercentiles
+ 9, // 35: api.v1.ContainerPercentileSummary.network_receive_bytes:type_name -> api.v1.MetricPercentiles
+ 9, // 36: api.v1.ContainerPercentileSummary.network_transmit_bytes:type_name -> api.v1.MetricPercentiles
+ 9, // 37: api.v1.ContainerPercentileSummary.fs_read_bytes:type_name -> api.v1.MetricPercentiles
+ 9, // 38: api.v1.ContainerPercentileSummary.fs_write_bytes:type_name -> api.v1.MetricPercentiles
+ 15, // 39: api.v1.ContainerRequestLimits.runtime_processes:type_name -> api.v1.RuntimeProcess
+ 13, // 40: api.v1.ContainerIndividualGPUMetrics.instances:type_name -> api.v1.IndividualGPUMetric
+ 191, // 41: api.v1.ContainerIndividualGPUMetrics.collected_at:type_name -> google.protobuf.Timestamp
+ 191, // 42: api.v1.ForecastResourceMetrics.timestamp:type_name -> google.protobuf.Timestamp
+ 18, // 43: api.v1.OptimizationStatus.legacy_policies:type_name -> api.v1.LegacyPolicyRef
+ 20, // 44: api.v1.WorkloadItem.children:type_name -> api.v1.WorkloadItem
+ 151, // 45: api.v1.WorkloadItem.labels:type_name -> api.v1.WorkloadItem.LabelsEntry
+ 152, // 46: api.v1.WorkloadItem.annotations:type_name -> api.v1.WorkloadItem.AnnotationsEntry
+ 8, // 47: api.v1.WorkloadItem.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 7, // 48: api.v1.WorkloadItem.cost_info:type_name -> api.v1.CostInfo
+ 27, // 49: api.v1.WorkloadItem.cost_data_points:type_name -> api.v1.CostDataPoint
+ 28, // 50: api.v1.WorkloadItem.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 191, // 51: api.v1.WorkloadItem.created_at:type_name -> google.protobuf.Timestamp
+ 191, // 52: api.v1.WorkloadItem.deleted_at:type_name -> google.protobuf.Timestamp
+ 37, // 53: api.v1.WorkloadItem.resource_details:type_name -> api.v1.ResourceDetails
+ 19, // 54: api.v1.WorkloadItem.optimization_status:type_name -> api.v1.OptimizationStatus
+ 153, // 55: api.v1.NodeInfo.price_source_counts:type_name -> api.v1.NodeInfo.PriceSourceCountsEntry
+ 8, // 56: api.v1.Node.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 7, // 57: api.v1.Node.cost_info:type_name -> api.v1.CostInfo
+ 21, // 58: api.v1.Node.container_runtime:type_name -> api.v1.ContainerRuntimeInfo
+ 37, // 59: api.v1.Node.resource_details:type_name -> api.v1.ResourceDetails
+ 20, // 60: api.v1.Node.children:type_name -> api.v1.WorkloadItem
+ 154, // 61: api.v1.Node.labels:type_name -> api.v1.Node.LabelsEntry
+ 155, // 62: api.v1.Node.annotations:type_name -> api.v1.Node.AnnotationsEntry
+ 192, // 63: api.v1.Node.money_price_per_hour:type_name -> google.type.Money
+ 192, // 64: api.v1.Node.money_eff_period_total_cost:type_name -> google.type.Money
+ 192, // 65: api.v1.Node.money_price_per_vcpu:type_name -> google.type.Money
+ 192, // 66: api.v1.Node.money_price_per_gib:type_name -> google.type.Money
+ 192, // 67: api.v1.Node.money_price_per_gpu:type_name -> google.type.Money
+ 192, // 68: api.v1.Node.money_cpu_price:type_name -> google.type.Money
+ 192, // 69: api.v1.Node.money_memory_price:type_name -> google.type.Money
+ 192, // 70: api.v1.Node.money_gpu_price:type_name -> google.type.Money
+ 192, // 71: api.v1.Node.money_on_demand_price_per_hour:type_name -> google.type.Money
+ 25, // 72: api.v1.Node.volumes_attached:type_name -> api.v1.AttachedVolume
+ 191, // 73: api.v1.Node.last_seen:type_name -> google.protobuf.Timestamp
+ 191, // 74: api.v1.Node.collected_at:type_name -> google.protobuf.Timestamp
+ 191, // 75: api.v1.Node.deletion_timestamp:type_name -> google.protobuf.Timestamp
+ 24, // 76: api.v1.NodeGroup.nodes:type_name -> api.v1.Node
+ 8, // 77: api.v1.NodeGroup.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 7, // 78: api.v1.NodeGroup.cost_info:type_name -> api.v1.CostInfo
+ 22, // 79: api.v1.NodeGroup.node_info:type_name -> api.v1.NodeInfo
+ 23, // 80: api.v1.NodeGroup.resource_info:type_name -> api.v1.ResourceInfo
+ 27, // 81: api.v1.NodeGroup.cost_data_points:type_name -> api.v1.CostDataPoint
+ 28, // 82: api.v1.NodeGroup.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 7, // 83: api.v1.CostDataPoint.cost_info:type_name -> api.v1.CostInfo
+ 8, // 84: api.v1.ResourceDataPoint.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 28, // 85: api.v1.ContainerTimeSeries.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 30, // 86: api.v1.SavingsDataPoint.savings_data:type_name -> api.v1.SavingsData
+ 31, // 87: api.v1.SavingsTimeSeries.savings_datapoints:type_name -> api.v1.SavingsDataPoint
+ 2, // 88: api.v1.LabelSelectorRequirement.operator:type_name -> api.v1.LabelSelectorOperator
+ 34, // 89: api.v1.LabelSelector.labels:type_name -> api.v1.Label
+ 156, // 90: api.v1.LabelSelector.match_labels:type_name -> api.v1.LabelSelector.MatchLabelsEntry
+ 33, // 91: api.v1.LabelSelector.match_expressions:type_name -> api.v1.LabelSelectorRequirement
+ 38, // 92: api.v1.ResourceDetails.pod_details:type_name -> api.v1.PodDetails
+ 40, // 93: api.v1.ResourceDetails.deployment_details:type_name -> api.v1.DeploymentDetails
+ 43, // 94: api.v1.ResourceDetails.stateful_set_details:type_name -> api.v1.StatefulSetDetails
+ 45, // 95: api.v1.ResourceDetails.daemon_set_details:type_name -> api.v1.DaemonSetDetails
+ 46, // 96: api.v1.ResourceDetails.replica_set_details:type_name -> api.v1.ReplicaSetDetails
+ 47, // 97: api.v1.ResourceDetails.job_details:type_name -> api.v1.JobDetails
+ 49, // 98: api.v1.ResourceDetails.cron_job_details:type_name -> api.v1.CronJobDetails
+ 52, // 99: api.v1.ResourceDetails.service_details:type_name -> api.v1.ServiceDetails
+ 55, // 100: api.v1.ResourceDetails.ingress_details:type_name -> api.v1.IngressDetails
+ 60, // 101: api.v1.ResourceDetails.pvc_details:type_name -> api.v1.PersistentVolumeClaimDetails
+ 64, // 102: api.v1.ResourceDetails.pv_details:type_name -> api.v1.PersistentVolumeDetails
+ 70, // 103: api.v1.ResourceDetails.sc_details:type_name -> api.v1.StorageClassDetails
+ 71, // 104: api.v1.ResourceDetails.ns_details:type_name -> api.v1.NamespaceDetails
+ 72, // 105: api.v1.ResourceDetails.node_details:type_name -> api.v1.NodeDetails
+ 84, // 106: api.v1.ResourceDetails.hpa_details:type_name -> api.v1.HPADetails
+ 102, // 107: api.v1.ResourceDetails.vpa_details:type_name -> api.v1.VPADetails
+ 110, // 108: api.v1.ResourceDetails.limit_range_details:type_name -> api.v1.LimitRangeDetails
+ 112, // 109: api.v1.ResourceDetails.service_account_details:type_name -> api.v1.ServiceAccountDetails
+ 113, // 110: api.v1.ResourceDetails.role_details:type_name -> api.v1.RoleDetails
+ 115, // 111: api.v1.ResourceDetails.role_binding_details:type_name -> api.v1.RoleBindingDetails
+ 118, // 112: api.v1.ResourceDetails.keda_scaled_object_details:type_name -> api.v1.KedaScaledObjectDetails
+ 121, // 113: api.v1.ResourceDetails.karpenter_resource_details:type_name -> api.v1.KarpenterResourceDetails
+ 128, // 114: api.v1.ResourceDetails.pod_disruption_budget_details:type_name -> api.v1.PodDisruptionBudgetDetails
+ 130, // 115: api.v1.ResourceDetails.resource_quota_details:type_name -> api.v1.ResourceQuotaDetails
+ 132, // 116: api.v1.ResourceDetails.volcano_job_details:type_name -> api.v1.VolcanoJobDetails
+ 135, // 117: api.v1.ResourceDetails.spark_application_details:type_name -> api.v1.SparkApplicationDetails
+ 139, // 118: api.v1.ResourceDetails.scheduled_spark_application_details:type_name -> api.v1.ScheduledSparkApplicationDetails
+ 140, // 119: api.v1.ResourceDetails.kyverno_policy_details:type_name -> api.v1.KyvernoPolicyDetails
+ 142, // 120: api.v1.ResourceDetails.kyverno_policy_report_details:type_name -> api.v1.KyvernoPolicyReportDetails
+ 143, // 121: api.v1.ResourceDetails.gatekeeper_constraint_template_details:type_name -> api.v1.GatekeeperConstraintTemplateDetails
+ 145, // 122: api.v1.ResourceDetails.gatekeeper_constraint_details:type_name -> api.v1.GatekeeperConstraintDetails
+ 53, // 123: api.v1.ResourceDetails.service_ports:type_name -> api.v1.ServicePort
+ 157, // 124: api.v1.ResourceDetails.service_selector:type_name -> api.v1.ResourceDetails.ServiceSelectorEntry
+ 158, // 125: api.v1.ResourceDetails.sc_parameters:type_name -> api.v1.ResourceDetails.ScParametersEntry
+ 73, // 126: api.v1.ResourceDetails.node_taints:type_name -> api.v1.NodeTaint
+ 39, // 127: api.v1.PodDetails.containers:type_name -> api.v1.ContainerSummary
+ 41, // 128: api.v1.DeploymentDetails.containers:type_name -> api.v1.ContainerTemplate
+ 42, // 129: api.v1.DeploymentDetails.conditions:type_name -> api.v1.DeploymentCondition
+ 41, // 130: api.v1.StatefulSetDetails.containers:type_name -> api.v1.ContainerTemplate
+ 44, // 131: api.v1.StatefulSetDetails.volume_claim_templates:type_name -> api.v1.VolumeClaimTemplate
+ 41, // 132: api.v1.DaemonSetDetails.containers:type_name -> api.v1.ContainerTemplate
+ 80, // 133: api.v1.DaemonSetDetails.tolerations:type_name -> api.v1.TolerationInfo
+ 81, // 134: api.v1.DaemonSetDetails.node_selector:type_name -> api.v1.NodeSelector
+ 41, // 135: api.v1.ReplicaSetDetails.containers:type_name -> api.v1.ContainerTemplate
+ 35, // 136: api.v1.ReplicaSetDetails.selector:type_name -> api.v1.LabelSelector
+ 41, // 137: api.v1.JobDetails.containers:type_name -> api.v1.ContainerTemplate
+ 48, // 138: api.v1.JobDetails.conditions:type_name -> api.v1.JobCondition
+ 35, // 139: api.v1.JobDetails.selector:type_name -> api.v1.LabelSelector
+ 41, // 140: api.v1.CronJobDetails.containers:type_name -> api.v1.ContainerTemplate
+ 50, // 141: api.v1.CronJobDetails.active_jobs:type_name -> api.v1.ActiveJobReference
+ 51, // 142: api.v1.CronJobDetails.job_template:type_name -> api.v1.JobTemplate
+ 41, // 143: api.v1.JobTemplate.containers:type_name -> api.v1.ContainerTemplate
+ 53, // 144: api.v1.ServiceDetails.ports:type_name -> api.v1.ServicePort
+ 159, // 145: api.v1.ServiceDetails.selector:type_name -> api.v1.ServiceDetails.SelectorEntry
+ 54, // 146: api.v1.ServiceDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress
+ 56, // 147: api.v1.IngressDetails.rules:type_name -> api.v1.IngressRule
+ 59, // 148: api.v1.IngressDetails.tls:type_name -> api.v1.IngressTLS
+ 58, // 149: api.v1.IngressDetails.default_backend:type_name -> api.v1.IngressBackend
+ 54, // 150: api.v1.IngressDetails.load_balancer_ingress:type_name -> api.v1.LoadBalancerIngress
+ 57, // 151: api.v1.IngressRule.paths:type_name -> api.v1.IngressPath
+ 58, // 152: api.v1.IngressPath.backend:type_name -> api.v1.IngressBackend
+ 61, // 153: api.v1.PersistentVolumeClaimDetails.resource_requirements:type_name -> api.v1.ResourceRequirements
+ 35, // 154: api.v1.PersistentVolumeClaimDetails.selector:type_name -> api.v1.LabelSelector
+ 62, // 155: api.v1.PersistentVolumeClaimDetails.volume_node_affinity:type_name -> api.v1.VolumeNodeAffinity
+ 63, // 156: api.v1.PersistentVolumeClaimDetails.conditions:type_name -> api.v1.PVCCondition
+ 160, // 157: api.v1.ResourceRequirements.requests:type_name -> api.v1.ResourceRequirements.RequestsEntry
+ 161, // 158: api.v1.ResourceRequirements.limits:type_name -> api.v1.ResourceRequirements.LimitsEntry
+ 83, // 159: api.v1.VolumeNodeAffinity.required:type_name -> api.v1.NodeSelectorRequirement
+ 83, // 160: api.v1.VolumeNodeAffinity.preferred:type_name -> api.v1.NodeSelectorRequirement
+ 162, // 161: api.v1.PersistentVolumeDetails.capacity:type_name -> api.v1.PersistentVolumeDetails.CapacityEntry
+ 65, // 162: api.v1.PersistentVolumeDetails.claim_ref:type_name -> api.v1.PVClaimReference
+ 66, // 163: api.v1.PersistentVolumeDetails.volume_source:type_name -> api.v1.PVVolumeSource
+ 81, // 164: api.v1.PersistentVolumeDetails.node_affinity:type_name -> api.v1.NodeSelector
+ 67, // 165: api.v1.PVVolumeSource.csi:type_name -> api.v1.CSIVolumeSource
+ 68, // 166: api.v1.PVVolumeSource.host_path:type_name -> api.v1.HostPathVolumeSource
+ 69, // 167: api.v1.PVVolumeSource.nfs:type_name -> api.v1.NFSVolumeSource
+ 163, // 168: api.v1.PVVolumeSource.volume_attributes:type_name -> api.v1.PVVolumeSource.VolumeAttributesEntry
+ 164, // 169: api.v1.CSIVolumeSource.volume_attributes:type_name -> api.v1.CSIVolumeSource.VolumeAttributesEntry
+ 165, // 170: api.v1.StorageClassDetails.parameters:type_name -> api.v1.StorageClassDetails.ParametersEntry
+ 78, // 171: api.v1.StorageClassDetails.allowed_topologies:type_name -> api.v1.TopologySelector
+ 166, // 172: api.v1.NamespaceDetails.conditions:type_name -> api.v1.NamespaceDetails.ConditionsEntry
+ 74, // 173: api.v1.NodeDetails.addresses:type_name -> api.v1.NodeAddress
+ 75, // 174: api.v1.NodeDetails.conditions:type_name -> api.v1.NodeCondition
+ 76, // 175: api.v1.NodeDetails.system_info:type_name -> api.v1.NodeSystemInfo
+ 167, // 176: api.v1.NodeDetails.capacity:type_name -> api.v1.NodeDetails.CapacityEntry
+ 168, // 177: api.v1.NodeDetails.allocatable:type_name -> api.v1.NodeDetails.AllocatableEntry
+ 77, // 178: api.v1.NodeDetails.images:type_name -> api.v1.NodeImage
+ 79, // 179: api.v1.TopologySelector.match_label_expressions:type_name -> api.v1.TopologySelectorTerm
+ 169, // 180: api.v1.TopologySelectorTerm.match_labels:type_name -> api.v1.TopologySelectorTerm.MatchLabelsEntry
+ 82, // 181: api.v1.NodeSelector.terms:type_name -> api.v1.NodeSelectorTerm
+ 83, // 182: api.v1.NodeSelectorTerm.match_expressions:type_name -> api.v1.NodeSelectorRequirement
+ 83, // 183: api.v1.NodeSelectorTerm.match_fields:type_name -> api.v1.NodeSelectorRequirement
+ 85, // 184: api.v1.HPADetails.scale_target_ref:type_name -> api.v1.ScaleTargetRef
+ 86, // 185: api.v1.HPADetails.metrics:type_name -> api.v1.HPAMetric
+ 98, // 186: api.v1.HPADetails.conditions:type_name -> api.v1.HPACondition
+ 99, // 187: api.v1.HPADetails.behavior:type_name -> api.v1.HPABehavior
+ 93, // 188: api.v1.HPADetails.current_metrics:type_name -> api.v1.HPACurrentMetric
+ 87, // 189: api.v1.HPAMetric.resource:type_name -> api.v1.HPAResourceMetric
+ 88, // 190: api.v1.HPAMetric.pods:type_name -> api.v1.HPAPodsMetric
+ 89, // 191: api.v1.HPAMetric.object:type_name -> api.v1.HPAObjectMetric
+ 90, // 192: api.v1.HPAMetric.external:type_name -> api.v1.HPAExternalMetric
+ 91, // 193: api.v1.HPAPodsMetric.metric:type_name -> api.v1.HPAMetricSelector
+ 92, // 194: api.v1.HPAObjectMetric.described_object:type_name -> api.v1.HPAObjectReference
+ 91, // 195: api.v1.HPAObjectMetric.metric:type_name -> api.v1.HPAMetricSelector
+ 91, // 196: api.v1.HPAExternalMetric.metric:type_name -> api.v1.HPAMetricSelector
+ 170, // 197: api.v1.HPAMetricSelector.selector:type_name -> api.v1.HPAMetricSelector.SelectorEntry
+ 94, // 198: api.v1.HPACurrentMetric.resource:type_name -> api.v1.HPACurrentResourceMetric
+ 95, // 199: api.v1.HPACurrentMetric.pods:type_name -> api.v1.HPACurrentPodsMetric
+ 96, // 200: api.v1.HPACurrentMetric.object:type_name -> api.v1.HPACurrentObjectMetric
+ 97, // 201: api.v1.HPACurrentMetric.external:type_name -> api.v1.HPACurrentExternalMetric
+ 91, // 202: api.v1.HPACurrentPodsMetric.metric:type_name -> api.v1.HPAMetricSelector
+ 92, // 203: api.v1.HPACurrentObjectMetric.described_object:type_name -> api.v1.HPAObjectReference
+ 91, // 204: api.v1.HPACurrentObjectMetric.metric:type_name -> api.v1.HPAMetricSelector
+ 91, // 205: api.v1.HPACurrentExternalMetric.metric:type_name -> api.v1.HPAMetricSelector
+ 100, // 206: api.v1.HPABehavior.scale_up:type_name -> api.v1.HPAScalingRules
+ 100, // 207: api.v1.HPABehavior.scale_down:type_name -> api.v1.HPAScalingRules
+ 101, // 208: api.v1.HPAScalingRules.policies:type_name -> api.v1.HPAScalingPolicy
+ 103, // 209: api.v1.VPADetails.target_ref:type_name -> api.v1.VPATargetRef
+ 104, // 210: api.v1.VPADetails.update_policy:type_name -> api.v1.VPAUpdatePolicy
+ 105, // 211: api.v1.VPADetails.resource_policy:type_name -> api.v1.VPAResourcePolicy
+ 107, // 212: api.v1.VPADetails.recommendation:type_name -> api.v1.VPARecommendation
+ 109, // 213: api.v1.VPADetails.conditions:type_name -> api.v1.VPACondition
+ 106, // 214: api.v1.VPAResourcePolicy.container_policies:type_name -> api.v1.VPAContainerResourcePolicy
+ 171, // 215: api.v1.VPAContainerResourcePolicy.min_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MinAllowedEntry
+ 172, // 216: api.v1.VPAContainerResourcePolicy.max_allowed:type_name -> api.v1.VPAContainerResourcePolicy.MaxAllowedEntry
+ 108, // 217: api.v1.VPARecommendation.container_recommendations:type_name -> api.v1.VPAContainerRecommendation
+ 173, // 218: api.v1.VPAContainerRecommendation.target:type_name -> api.v1.VPAContainerRecommendation.TargetEntry
+ 174, // 219: api.v1.VPAContainerRecommendation.lower_bound:type_name -> api.v1.VPAContainerRecommendation.LowerBoundEntry
+ 175, // 220: api.v1.VPAContainerRecommendation.upper_bound:type_name -> api.v1.VPAContainerRecommendation.UpperBoundEntry
+ 176, // 221: api.v1.VPAContainerRecommendation.uncapped_target:type_name -> api.v1.VPAContainerRecommendation.UncappedTargetEntry
+ 111, // 222: api.v1.LimitRangeDetails.limits:type_name -> api.v1.LimitRangeItem
+ 177, // 223: api.v1.LimitRangeItem.default_limits:type_name -> api.v1.LimitRangeItem.DefaultLimitsEntry
+ 178, // 224: api.v1.LimitRangeItem.default_request:type_name -> api.v1.LimitRangeItem.DefaultRequestEntry
+ 179, // 225: api.v1.LimitRangeItem.max:type_name -> api.v1.LimitRangeItem.MaxEntry
+ 180, // 226: api.v1.LimitRangeItem.min:type_name -> api.v1.LimitRangeItem.MinEntry
+ 181, // 227: api.v1.LimitRangeItem.max_limit_request_ratio:type_name -> api.v1.LimitRangeItem.MaxLimitRequestRatioEntry
+ 114, // 228: api.v1.RoleDetails.rules:type_name -> api.v1.RoleRule
+ 116, // 229: api.v1.RoleBindingDetails.subjects:type_name -> api.v1.RoleBindingSubject
+ 117, // 230: api.v1.RoleBindingDetails.role_ref:type_name -> api.v1.RoleReference
+ 119, // 231: api.v1.KedaScaledObjectDetails.triggers:type_name -> api.v1.KedaScaledObjectTrigger
+ 120, // 232: api.v1.KedaScaledObjectDetails.conditions:type_name -> api.v1.KedaScaledObjectCondition
+ 182, // 233: api.v1.KedaScaledObjectTrigger.metadata:type_name -> api.v1.KedaScaledObjectTrigger.MetadataEntry
+ 122, // 234: api.v1.KarpenterResourceDetails.conditions:type_name -> api.v1.KarpenterResourceCondition
+ 123, // 235: api.v1.KarpenterResourceDetails.capacity:type_name -> api.v1.KarpenterCapacity
+ 124, // 236: api.v1.KarpenterResourceDetails.requirements:type_name -> api.v1.KarpenterRequirement
+ 183, // 237: api.v1.KarpenterResourceDetails.limits:type_name -> api.v1.KarpenterResourceDetails.LimitsEntry
+ 184, // 238: api.v1.KarpenterCapacity.other:type_name -> api.v1.KarpenterCapacity.OtherEntry
+ 35, // 239: api.v1.WorkloadFilters.namespace_selector:type_name -> api.v1.LabelSelector
+ 35, // 240: api.v1.WorkloadFilters.workload_selector:type_name -> api.v1.LabelSelector
+ 0, // 241: api.v1.WorkloadFilters.kind_filter:type_name -> api.v1.K8sObjectKind
+ 36, // 242: api.v1.WorkloadFilters.name_pattern:type_name -> api.v1.RegexPattern
+ 35, // 243: api.v1.WorkloadFilters.annotation_selector:type_name -> api.v1.LabelSelector
+ 36, // 244: api.v1.WorkloadFilters.namespace_pattern:type_name -> api.v1.RegexPattern
+ 3, // 245: api.v1.WorkloadFilters.status:type_name -> api.v1.WorkloadStatusFilter
+ 185, // 246: api.v1.PodDisruptionBudgetDetails.selector_labels:type_name -> api.v1.PodDisruptionBudgetDetails.SelectorLabelsEntry
+ 129, // 247: api.v1.PodDisruptionBudgetDetails.conditions:type_name -> api.v1.PodDisruptionBudgetCondition
+ 186, // 248: api.v1.ResourceQuotaDetails.hard_limits:type_name -> api.v1.ResourceQuotaDetails.HardLimitsEntry
+ 187, // 249: api.v1.ResourceQuotaDetails.used:type_name -> api.v1.ResourceQuotaDetails.UsedEntry
+ 188, // 250: api.v1.ResourceQuotaDetails.scope_selector:type_name -> api.v1.ResourceQuotaDetails.ScopeSelectorEntry
+ 131, // 251: api.v1.ResourceQuotaDetails.conditions:type_name -> api.v1.ResourceQuotaCondition
+ 41, // 252: api.v1.VolcanoJobDetails.containers:type_name -> api.v1.ContainerTemplate
+ 133, // 253: api.v1.VolcanoJobDetails.conditions:type_name -> api.v1.VolcanoJobCondition
+ 134, // 254: api.v1.VolcanoJobDetails.tasks:type_name -> api.v1.VolcanoTask
+ 41, // 255: api.v1.VolcanoTask.containers:type_name -> api.v1.ContainerTemplate
+ 41, // 256: api.v1.SparkApplicationDetails.containers:type_name -> api.v1.ContainerTemplate
+ 136, // 257: api.v1.SparkApplicationDetails.spark_driver_info:type_name -> api.v1.SparkDriverInfo
+ 137, // 258: api.v1.SparkApplicationDetails.restart_policy:type_name -> api.v1.SparkRestartPolicyInfo
+ 138, // 259: api.v1.SparkApplicationDetails.dynamic_allocation:type_name -> api.v1.SparkDynamicAllocationInfo
+ 191, // 260: api.v1.ScheduledSparkApplicationDetails.last_run:type_name -> google.protobuf.Timestamp
+ 191, // 261: api.v1.ScheduledSparkApplicationDetails.next_run:type_name -> google.protobuf.Timestamp
+ 135, // 262: api.v1.ScheduledSparkApplicationDetails.template_details:type_name -> api.v1.SparkApplicationDetails
+ 141, // 263: api.v1.KyvernoPolicyReportDetails.results:type_name -> api.v1.PolicyReportResult
+ 191, // 264: api.v1.GatekeeperConstraintDetails.audit_timestamp:type_name -> google.protobuf.Timestamp
+ 144, // 265: api.v1.GatekeeperConstraintDetails.violations:type_name -> api.v1.ConstraintViolation
+ 189, // 266: api.v1.Event.annotations:type_name -> api.v1.Event.AnnotationsEntry
+ 190, // 267: api.v1.Event.labels:type_name -> api.v1.Event.LabelsEntry
+ 4, // 268: api.v1.Event.disruption_block_reason:type_name -> api.v1.DisruptionBlockReason
+ 191, // 269: api.v1.Event.created_at:type_name -> google.protobuf.Timestamp
+ 191, // 270: api.v1.Event.updated_at:type_name -> google.protobuf.Timestamp
+ 191, // 271: api.v1.Event.last_seen:type_name -> google.protobuf.Timestamp
+ 191, // 272: api.v1.Event.deleted_at:type_name -> google.protobuf.Timestamp
+ 147, // 273: api.v1.EventDatapoint.events:type_name -> api.v1.EventDatapointInfo
+ 191, // 274: api.v1.EventGroup.first_seen:type_name -> google.protobuf.Timestamp
+ 191, // 275: api.v1.EventGroup.last_seen:type_name -> google.protobuf.Timestamp
+ 276, // [276:276] is the sub-list for method output_type
+ 276, // [276:276] is the sub-list for method input_type
+ 276, // [276:276] is the sub-list for extension type_name
+ 276, // [276:276] is the sub-list for extension extendee
+ 0, // [0:276] is the sub-list for field type_name
}
func init() { file_api_v1_common_proto_init() }
@@ -17882,7 +20140,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ForecastResourceMetrics); i {
+ switch v := v.(*GPUMigInstance); i {
case 0:
return &v.state
case 1:
@@ -17894,7 +20152,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceSummary); i {
+ switch v := v.(*IndividualGPUMetric); i {
case 0:
return &v.state
case 1:
@@ -17906,7 +20164,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadItem); i {
+ switch v := v.(*ContainerIndividualGPUMetrics); i {
case 0:
return &v.state
case 1:
@@ -17918,7 +20176,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerRuntimeInfo); i {
+ switch v := v.(*RuntimeProcess); i {
case 0:
return &v.state
case 1:
@@ -17930,7 +20188,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeInfo); i {
+ switch v := v.(*ForecastResourceMetrics); i {
case 0:
return &v.state
case 1:
@@ -17942,7 +20200,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceInfo); i {
+ switch v := v.(*ResourceSummary); i {
case 0:
return &v.state
case 1:
@@ -17954,7 +20212,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Node); i {
+ switch v := v.(*LegacyPolicyRef); i {
case 0:
return &v.state
case 1:
@@ -17966,7 +20224,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachedVolume); i {
+ switch v := v.(*OptimizationStatus); i {
case 0:
return &v.state
case 1:
@@ -17978,7 +20236,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroup); i {
+ switch v := v.(*WorkloadItem); i {
case 0:
return &v.state
case 1:
@@ -17990,7 +20248,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CostDataPoint); i {
+ switch v := v.(*ContainerRuntimeInfo); i {
case 0:
return &v.state
case 1:
@@ -18002,7 +20260,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceDataPoint); i {
+ switch v := v.(*NodeInfo); i {
case 0:
return &v.state
case 1:
@@ -18014,7 +20272,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerTimeSeries); i {
+ switch v := v.(*ResourceInfo); i {
case 0:
return &v.state
case 1:
@@ -18026,7 +20284,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SavingsData); i {
+ switch v := v.(*Node); i {
case 0:
return &v.state
case 1:
@@ -18038,7 +20296,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SavingsDataPoint); i {
+ switch v := v.(*AttachedVolume); i {
case 0:
return &v.state
case 1:
@@ -18050,7 +20308,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SavingsTimeSeries); i {
+ switch v := v.(*NodeGroup); i {
case 0:
return &v.state
case 1:
@@ -18062,7 +20320,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LabelSelectorRequirement); i {
+ switch v := v.(*CostDataPoint); i {
case 0:
return &v.state
case 1:
@@ -18074,7 +20332,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Label); i {
+ switch v := v.(*ResourceDataPoint); i {
case 0:
return &v.state
case 1:
@@ -18086,7 +20344,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LabelSelector); i {
+ switch v := v.(*ContainerTimeSeries); i {
case 0:
return &v.state
case 1:
@@ -18098,7 +20356,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegexPattern); i {
+ switch v := v.(*SavingsData); i {
case 0:
return &v.state
case 1:
@@ -18110,7 +20368,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceDetails); i {
+ switch v := v.(*SavingsDataPoint); i {
case 0:
return &v.state
case 1:
@@ -18122,7 +20380,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PodDetails); i {
+ switch v := v.(*SavingsTimeSeries); i {
case 0:
return &v.state
case 1:
@@ -18134,7 +20392,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerSummary); i {
+ switch v := v.(*LabelSelectorRequirement); i {
case 0:
return &v.state
case 1:
@@ -18146,7 +20404,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeploymentDetails); i {
+ switch v := v.(*Label); i {
case 0:
return &v.state
case 1:
@@ -18158,7 +20416,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerTemplate); i {
+ switch v := v.(*LabelSelector); i {
case 0:
return &v.state
case 1:
@@ -18170,7 +20428,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeploymentCondition); i {
+ switch v := v.(*RegexPattern); i {
case 0:
return &v.state
case 1:
@@ -18182,7 +20440,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StatefulSetDetails); i {
+ switch v := v.(*ResourceDetails); i {
case 0:
return &v.state
case 1:
@@ -18194,7 +20452,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VolumeClaimTemplate); i {
+ switch v := v.(*PodDetails); i {
case 0:
return &v.state
case 1:
@@ -18206,7 +20464,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DaemonSetDetails); i {
+ switch v := v.(*ContainerSummary); i {
case 0:
return &v.state
case 1:
@@ -18218,7 +20476,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReplicaSetDetails); i {
+ switch v := v.(*DeploymentDetails); i {
case 0:
return &v.state
case 1:
@@ -18230,7 +20488,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*JobDetails); i {
+ switch v := v.(*ContainerTemplate); i {
case 0:
return &v.state
case 1:
@@ -18242,7 +20500,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*JobCondition); i {
+ switch v := v.(*DeploymentCondition); i {
case 0:
return &v.state
case 1:
@@ -18254,7 +20512,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CronJobDetails); i {
+ switch v := v.(*StatefulSetDetails); i {
case 0:
return &v.state
case 1:
@@ -18266,7 +20524,7 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ActiveJobReference); i {
+ switch v := v.(*VolumeClaimTemplate); i {
case 0:
return &v.state
case 1:
@@ -18278,6 +20536,78 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DaemonSetDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReplicaSetDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*JobDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*JobCondition); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CronJobDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ActiveJobReference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JobTemplate); i {
case 0:
return &v.state
@@ -18289,7 +20619,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServiceDetails); i {
case 0:
return &v.state
@@ -18301,7 +20631,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServicePort); i {
case 0:
return &v.state
@@ -18313,7 +20643,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LoadBalancerIngress); i {
case 0:
return &v.state
@@ -18325,7 +20655,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IngressDetails); i {
case 0:
return &v.state
@@ -18337,7 +20667,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IngressRule); i {
case 0:
return &v.state
@@ -18349,7 +20679,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IngressPath); i {
case 0:
return &v.state
@@ -18361,7 +20691,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IngressBackend); i {
case 0:
return &v.state
@@ -18373,7 +20703,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IngressTLS); i {
case 0:
return &v.state
@@ -18385,7 +20715,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PersistentVolumeClaimDetails); i {
case 0:
return &v.state
@@ -18397,7 +20727,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResourceRequirements); i {
case 0:
return &v.state
@@ -18409,7 +20739,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolumeNodeAffinity); i {
case 0:
return &v.state
@@ -18421,7 +20751,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PVCCondition); i {
case 0:
return &v.state
@@ -18433,7 +20763,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PersistentVolumeDetails); i {
case 0:
return &v.state
@@ -18445,7 +20775,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PVClaimReference); i {
case 0:
return &v.state
@@ -18457,7 +20787,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PVVolumeSource); i {
case 0:
return &v.state
@@ -18469,7 +20799,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CSIVolumeSource); i {
case 0:
return &v.state
@@ -18481,7 +20811,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HostPathVolumeSource); i {
case 0:
return &v.state
@@ -18493,7 +20823,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NFSVolumeSource); i {
case 0:
return &v.state
@@ -18505,7 +20835,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StorageClassDetails); i {
case 0:
return &v.state
@@ -18517,7 +20847,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NamespaceDetails); i {
case 0:
return &v.state
@@ -18529,7 +20859,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeDetails); i {
case 0:
return &v.state
@@ -18541,7 +20871,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeTaint); i {
case 0:
return &v.state
@@ -18553,7 +20883,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeAddress); i {
case 0:
return &v.state
@@ -18565,7 +20895,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeCondition); i {
case 0:
return &v.state
@@ -18577,7 +20907,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeSystemInfo); i {
case 0:
return &v.state
@@ -18589,7 +20919,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeImage); i {
case 0:
return &v.state
@@ -18601,7 +20931,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TopologySelector); i {
case 0:
return &v.state
@@ -18613,7 +20943,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TopologySelectorTerm); i {
case 0:
return &v.state
@@ -18625,7 +20955,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TolerationInfo); i {
case 0:
return &v.state
@@ -18637,7 +20967,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeSelector); i {
case 0:
return &v.state
@@ -18649,7 +20979,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeSelectorTerm); i {
case 0:
return &v.state
@@ -18661,7 +20991,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeSelectorRequirement); i {
case 0:
return &v.state
@@ -18673,7 +21003,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPADetails); i {
case 0:
return &v.state
@@ -18685,7 +21015,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScaleTargetRef); i {
case 0:
return &v.state
@@ -18697,7 +21027,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAMetric); i {
case 0:
return &v.state
@@ -18709,7 +21039,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAResourceMetric); i {
case 0:
return &v.state
@@ -18721,7 +21051,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAPodsMetric); i {
case 0:
return &v.state
@@ -18733,7 +21063,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAObjectMetric); i {
case 0:
return &v.state
@@ -18745,7 +21075,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAExternalMetric); i {
case 0:
return &v.state
@@ -18757,7 +21087,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAMetricSelector); i {
case 0:
return &v.state
@@ -18769,7 +21099,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAObjectReference); i {
case 0:
return &v.state
@@ -18781,7 +21111,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPACurrentMetric); i {
case 0:
return &v.state
@@ -18793,7 +21123,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPACurrentResourceMetric); i {
case 0:
return &v.state
@@ -18805,7 +21135,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPACurrentPodsMetric); i {
case 0:
return &v.state
@@ -18817,7 +21147,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPACurrentObjectMetric); i {
case 0:
return &v.state
@@ -18829,7 +21159,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPACurrentExternalMetric); i {
case 0:
return &v.state
@@ -18841,7 +21171,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPACondition); i {
case 0:
return &v.state
@@ -18853,7 +21183,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPABehavior); i {
case 0:
return &v.state
@@ -18865,7 +21195,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAScalingRules); i {
case 0:
return &v.state
@@ -18877,7 +21207,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HPAScalingPolicy); i {
case 0:
return &v.state
@@ -18889,7 +21219,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPADetails); i {
case 0:
return &v.state
@@ -18901,7 +21231,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPATargetRef); i {
case 0:
return &v.state
@@ -18913,7 +21243,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPAUpdatePolicy); i {
case 0:
return &v.state
@@ -18925,7 +21255,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPAResourcePolicy); i {
case 0:
return &v.state
@@ -18937,7 +21267,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPAContainerResourcePolicy); i {
case 0:
return &v.state
@@ -18949,7 +21279,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPARecommendation); i {
case 0:
return &v.state
@@ -18961,7 +21291,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPAContainerRecommendation); i {
case 0:
return &v.state
@@ -18973,7 +21303,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VPACondition); i {
case 0:
return &v.state
@@ -18985,7 +21315,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LimitRangeDetails); i {
case 0:
return &v.state
@@ -18997,7 +21327,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LimitRangeItem); i {
case 0:
return &v.state
@@ -19009,7 +21339,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServiceAccountDetails); i {
case 0:
return &v.state
@@ -19021,7 +21351,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RoleDetails); i {
case 0:
return &v.state
@@ -19033,7 +21363,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RoleRule); i {
case 0:
return &v.state
@@ -19045,7 +21375,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RoleBindingDetails); i {
case 0:
return &v.state
@@ -19057,7 +21387,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RoleBindingSubject); i {
case 0:
return &v.state
@@ -19069,7 +21399,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RoleReference); i {
case 0:
return &v.state
@@ -19081,7 +21411,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KedaScaledObjectDetails); i {
case 0:
return &v.state
@@ -19093,7 +21423,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KedaScaledObjectTrigger); i {
case 0:
return &v.state
@@ -19105,7 +21435,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KedaScaledObjectCondition); i {
case 0:
return &v.state
@@ -19117,7 +21447,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KarpenterResourceDetails); i {
case 0:
return &v.state
@@ -19129,7 +21459,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KarpenterResourceCondition); i {
case 0:
return &v.state
@@ -19141,7 +21471,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KarpenterCapacity); i {
case 0:
return &v.state
@@ -19153,7 +21483,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KarpenterRequirement); i {
case 0:
return &v.state
@@ -19165,7 +21495,31 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResourceFieldFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResourceFilterFieldOptions); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WorkloadFilters); i {
case 0:
return &v.state
@@ -19177,7 +21531,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PodDisruptionBudgetDetails); i {
case 0:
return &v.state
@@ -19189,7 +21543,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PodDisruptionBudgetCondition); i {
case 0:
return &v.state
@@ -19201,7 +21555,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResourceQuotaDetails); i {
case 0:
return &v.state
@@ -19213,7 +21567,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResourceQuotaCondition); i {
case 0:
return &v.state
@@ -19225,7 +21579,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolcanoJobDetails); i {
case 0:
return &v.state
@@ -19237,7 +21591,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolcanoJobCondition); i {
case 0:
return &v.state
@@ -19249,7 +21603,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VolcanoTask); i {
case 0:
return &v.state
@@ -19261,7 +21615,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SparkApplicationDetails); i {
case 0:
return &v.state
@@ -19273,7 +21627,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SparkDriverInfo); i {
case 0:
return &v.state
@@ -19285,7 +21639,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SparkRestartPolicyInfo); i {
case 0:
return &v.state
@@ -19297,7 +21651,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SparkDynamicAllocationInfo); i {
case 0:
return &v.state
@@ -19309,7 +21663,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScheduledSparkApplicationDetails); i {
case 0:
return &v.state
@@ -19321,7 +21675,79 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KyvernoPolicyDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyReportResult); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KyvernoPolicyReportDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GatekeeperConstraintTemplateDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ConstraintViolation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GatekeeperConstraintDetails); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_common_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Event); i {
case 0:
return &v.state
@@ -19333,7 +21759,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventDatapointInfo); i {
case 0:
return &v.state
@@ -19345,7 +21771,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventDatapoint); i {
case 0:
return &v.state
@@ -19357,7 +21783,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DimensionCount); i {
case 0:
return &v.state
@@ -19369,7 +21795,7 @@ func file_api_v1_common_proto_init() {
return nil
}
}
- file_api_v1_common_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_common_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventGroup); i {
case 0:
return &v.state
@@ -19383,9 +21809,11 @@ func file_api_v1_common_proto_init() {
}
}
file_api_v1_common_proto_msgTypes[3].OneofWrappers = []interface{}{}
+ file_api_v1_common_proto_msgTypes[6].OneofWrappers = []interface{}{}
file_api_v1_common_proto_msgTypes[9].OneofWrappers = []interface{}{}
- file_api_v1_common_proto_msgTypes[13].OneofWrappers = []interface{}{}
- file_api_v1_common_proto_msgTypes[26].OneofWrappers = []interface{}{
+ file_api_v1_common_proto_msgTypes[15].OneofWrappers = []interface{}{}
+ file_api_v1_common_proto_msgTypes[19].OneofWrappers = []interface{}{}
+ file_api_v1_common_proto_msgTypes[32].OneofWrappers = []interface{}{
(*ResourceDetails_PodDetails)(nil),
(*ResourceDetails_DeploymentDetails)(nil),
(*ResourceDetails_StatefulSetDetails)(nil),
@@ -19413,15 +21841,20 @@ func file_api_v1_common_proto_init() {
(*ResourceDetails_VolcanoJobDetails)(nil),
(*ResourceDetails_SparkApplicationDetails)(nil),
(*ResourceDetails_ScheduledSparkApplicationDetails)(nil),
+ (*ResourceDetails_KyvernoPolicyDetails)(nil),
+ (*ResourceDetails_KyvernoPolicyReportDetails)(nil),
+ (*ResourceDetails_GatekeeperConstraintTemplateDetails)(nil),
+ (*ResourceDetails_GatekeeperConstraintDetails)(nil),
}
- file_api_v1_common_proto_msgTypes[114].OneofWrappers = []interface{}{}
+ file_api_v1_common_proto_msgTypes[122].OneofWrappers = []interface{}{}
+ file_api_v1_common_proto_msgTypes[141].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_common_proto_rawDesc,
- NumEnums: 4,
- NumMessages: 172,
+ NumEnums: 5,
+ NumMessages: 186,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/internal/gen/api/v1/hpa_connector.pb.go b/internal/gen/api/v1/hpa_connector.pb.go
new file mode 100644
index 0000000..b8a127b
--- /dev/null
+++ b/internal/gen/api/v1/hpa_connector.pb.go
@@ -0,0 +1,850 @@
+// dakr/proto/api/v1/hpa_connector.proto
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: api/v1/hpa_connector.proto
+
+package apiv1
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type HPAConnector struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,3,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"`
+ Config map[string]string `protobuf:"bytes,6,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ AuthSecretRef *string `protobuf:"bytes,7,opt,name=auth_secret_ref,json=authSecretRef,proto3,oneof" json:"auth_secret_ref,omitempty"`
+ Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
+ LastHealthCheck *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_health_check,json=lastHealthCheck,proto3,oneof" json:"last_health_check,omitempty"`
+ HealthError *string `protobuf:"bytes,10,opt,name=health_error,json=healthError,proto3,oneof" json:"health_error,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ AuthSecretNamespace *string `protobuf:"bytes,13,opt,name=auth_secret_namespace,json=authSecretNamespace,proto3,oneof" json:"auth_secret_namespace,omitempty"`
+}
+
+func (x *HPAConnector) Reset() {
+ *x = HPAConnector{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *HPAConnector) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HPAConnector) ProtoMessage() {}
+
+func (x *HPAConnector) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use HPAConnector.ProtoReflect.Descriptor instead.
+func (*HPAConnector) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *HPAConnector) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetConfig() map[string]string {
+ if x != nil {
+ return x.Config
+ }
+ return nil
+}
+
+func (x *HPAConnector) GetAuthSecretRef() string {
+ if x != nil && x.AuthSecretRef != nil {
+ return *x.AuthSecretRef
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetLastHealthCheck() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastHealthCheck
+ }
+ return nil
+}
+
+func (x *HPAConnector) GetHealthError() string {
+ if x != nil && x.HealthError != nil {
+ return *x.HealthError
+ }
+ return ""
+}
+
+func (x *HPAConnector) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *HPAConnector) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (x *HPAConnector) GetAuthSecretNamespace() string {
+ if x != nil && x.AuthSecretNamespace != nil {
+ return *x.AuthSecretNamespace
+ }
+ return ""
+}
+
+type CreateHPAConnectorRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
+ Config map[string]string `protobuf:"bytes,4,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ AuthSecretRef *string `protobuf:"bytes,5,opt,name=auth_secret_ref,json=authSecretRef,proto3,oneof" json:"auth_secret_ref,omitempty"`
+ AuthSecretNamespace *string `protobuf:"bytes,6,opt,name=auth_secret_namespace,json=authSecretNamespace,proto3,oneof" json:"auth_secret_namespace,omitempty"`
+}
+
+func (x *CreateHPAConnectorRequest) Reset() {
+ *x = CreateHPAConnectorRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateHPAConnectorRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateHPAConnectorRequest) ProtoMessage() {}
+
+func (x *CreateHPAConnectorRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateHPAConnectorRequest.ProtoReflect.Descriptor instead.
+func (*CreateHPAConnectorRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CreateHPAConnectorRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *CreateHPAConnectorRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *CreateHPAConnectorRequest) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *CreateHPAConnectorRequest) GetConfig() map[string]string {
+ if x != nil {
+ return x.Config
+ }
+ return nil
+}
+
+func (x *CreateHPAConnectorRequest) GetAuthSecretRef() string {
+ if x != nil && x.AuthSecretRef != nil {
+ return *x.AuthSecretRef
+ }
+ return ""
+}
+
+func (x *CreateHPAConnectorRequest) GetAuthSecretNamespace() string {
+ if x != nil && x.AuthSecretNamespace != nil {
+ return *x.AuthSecretNamespace
+ }
+ return ""
+}
+
+type UpdateHPAConnectorRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Config map[string]string `protobuf:"bytes,3,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ AuthSecretRef *string `protobuf:"bytes,4,opt,name=auth_secret_ref,json=authSecretRef,proto3,oneof" json:"auth_secret_ref,omitempty"`
+ AuthSecretNamespace *string `protobuf:"bytes,5,opt,name=auth_secret_namespace,json=authSecretNamespace,proto3,oneof" json:"auth_secret_namespace,omitempty"`
+}
+
+func (x *UpdateHPAConnectorRequest) Reset() {
+ *x = UpdateHPAConnectorRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateHPAConnectorRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateHPAConnectorRequest) ProtoMessage() {}
+
+func (x *UpdateHPAConnectorRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateHPAConnectorRequest.ProtoReflect.Descriptor instead.
+func (*UpdateHPAConnectorRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *UpdateHPAConnectorRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *UpdateHPAConnectorRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *UpdateHPAConnectorRequest) GetConfig() map[string]string {
+ if x != nil {
+ return x.Config
+ }
+ return nil
+}
+
+func (x *UpdateHPAConnectorRequest) GetAuthSecretRef() string {
+ if x != nil && x.AuthSecretRef != nil {
+ return *x.AuthSecretRef
+ }
+ return ""
+}
+
+func (x *UpdateHPAConnectorRequest) GetAuthSecretNamespace() string {
+ if x != nil && x.AuthSecretNamespace != nil {
+ return *x.AuthSecretNamespace
+ }
+ return ""
+}
+
+type GetHPAConnectorRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *GetHPAConnectorRequest) Reset() {
+ *x = GetHPAConnectorRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetHPAConnectorRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetHPAConnectorRequest) ProtoMessage() {}
+
+func (x *GetHPAConnectorRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetHPAConnectorRequest.ProtoReflect.Descriptor instead.
+func (*GetHPAConnectorRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *GetHPAConnectorRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type ListHPAConnectorsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Type *string `protobuf:"bytes,2,opt,name=type,proto3,oneof" json:"type,omitempty"`
+}
+
+func (x *ListHPAConnectorsRequest) Reset() {
+ *x = ListHPAConnectorsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListHPAConnectorsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListHPAConnectorsRequest) ProtoMessage() {}
+
+func (x *ListHPAConnectorsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListHPAConnectorsRequest.ProtoReflect.Descriptor instead.
+func (*ListHPAConnectorsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ListHPAConnectorsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *ListHPAConnectorsRequest) GetType() string {
+ if x != nil && x.Type != nil {
+ return *x.Type
+ }
+ return ""
+}
+
+type ListHPAConnectorsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Connectors []*HPAConnector `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"`
+}
+
+func (x *ListHPAConnectorsResponse) Reset() {
+ *x = ListHPAConnectorsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListHPAConnectorsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListHPAConnectorsResponse) ProtoMessage() {}
+
+func (x *ListHPAConnectorsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListHPAConnectorsResponse.ProtoReflect.Descriptor instead.
+func (*ListHPAConnectorsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *ListHPAConnectorsResponse) GetConnectors() []*HPAConnector {
+ if x != nil {
+ return x.Connectors
+ }
+ return nil
+}
+
+type DeleteHPAConnectorRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteHPAConnectorRequest) Reset() {
+ *x = DeleteHPAConnectorRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteHPAConnectorRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteHPAConnectorRequest) ProtoMessage() {}
+
+func (x *DeleteHPAConnectorRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_hpa_connector_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteHPAConnectorRequest.ProtoReflect.Descriptor instead.
+func (*DeleteHPAConnectorRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_hpa_connector_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *DeleteHPAConnectorRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+var File_api_v1_hpa_connector_proto protoreflect.FileDescriptor
+
+var file_api_v1_hpa_connector_proto_rawDesc = []byte{
+ 0x0a, 0x1a, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x70, 0x61, 0x5f, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x22, 0xb1, 0x05, 0x0a, 0x0c, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2b, 0x0a,
+ 0x0f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65,
+ 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0f, 0x6c, 0x61, 0x73,
+ 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12,
+ 0x26, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
+ 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a,
+ 0x15, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x13,
+ 0x61, 0x75, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 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, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65,
+ 0x74, 0x5f, 0x72, 0x65, 0x66, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68,
+ 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
+ 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x18, 0x0a, 0x16,
+ 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xf8, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65,
+ 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x61,
+ 0x75, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x88, 0x01, 0x01, 0x12,
+ 0x37, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
+ 0x52, 0x13, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 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, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63,
+ 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x75, 0x74, 0x68,
+ 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x22, 0xd5, 0x02, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x75,
+ 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65,
+ 0x74, 0x52, 0x65, 0x66, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x68, 0x5f,
+ 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x13, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65,
+ 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01,
+ 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x12, 0x0a, 0x10, 0x5f,
+ 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x42,
+ 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74,
+ 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04,
+ 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x22, 0x51, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a,
+ 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x73, 0x22, 0x2b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x32, 0xa7, 0x03, 0x0a, 0x13, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x21,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x50,
+ 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4d, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x21, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x21, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 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, 0x58, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x48,
+ 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x20, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50,
+ 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x8f, 0x01, 0x0a, 0x0a, 0x63,
+ 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x48, 0x70, 0x61, 0x43, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35,
+ 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65,
+ 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f,
+ 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b,
+ 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70,
+ 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12,
+ 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_api_v1_hpa_connector_proto_rawDescOnce sync.Once
+ file_api_v1_hpa_connector_proto_rawDescData = file_api_v1_hpa_connector_proto_rawDesc
+)
+
+func file_api_v1_hpa_connector_proto_rawDescGZIP() []byte {
+ file_api_v1_hpa_connector_proto_rawDescOnce.Do(func() {
+ file_api_v1_hpa_connector_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_v1_hpa_connector_proto_rawDescData)
+ })
+ return file_api_v1_hpa_connector_proto_rawDescData
+}
+
+var file_api_v1_hpa_connector_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_api_v1_hpa_connector_proto_goTypes = []interface{}{
+ (*HPAConnector)(nil), // 0: api.v1.HPAConnector
+ (*CreateHPAConnectorRequest)(nil), // 1: api.v1.CreateHPAConnectorRequest
+ (*UpdateHPAConnectorRequest)(nil), // 2: api.v1.UpdateHPAConnectorRequest
+ (*GetHPAConnectorRequest)(nil), // 3: api.v1.GetHPAConnectorRequest
+ (*ListHPAConnectorsRequest)(nil), // 4: api.v1.ListHPAConnectorsRequest
+ (*ListHPAConnectorsResponse)(nil), // 5: api.v1.ListHPAConnectorsResponse
+ (*DeleteHPAConnectorRequest)(nil), // 6: api.v1.DeleteHPAConnectorRequest
+ nil, // 7: api.v1.HPAConnector.ConfigEntry
+ nil, // 8: api.v1.CreateHPAConnectorRequest.ConfigEntry
+ nil, // 9: api.v1.UpdateHPAConnectorRequest.ConfigEntry
+ (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
+ (*emptypb.Empty)(nil), // 11: google.protobuf.Empty
+}
+var file_api_v1_hpa_connector_proto_depIdxs = []int32{
+ 7, // 0: api.v1.HPAConnector.config:type_name -> api.v1.HPAConnector.ConfigEntry
+ 10, // 1: api.v1.HPAConnector.last_health_check:type_name -> google.protobuf.Timestamp
+ 10, // 2: api.v1.HPAConnector.created_at:type_name -> google.protobuf.Timestamp
+ 10, // 3: api.v1.HPAConnector.updated_at:type_name -> google.protobuf.Timestamp
+ 8, // 4: api.v1.CreateHPAConnectorRequest.config:type_name -> api.v1.CreateHPAConnectorRequest.ConfigEntry
+ 9, // 5: api.v1.UpdateHPAConnectorRequest.config:type_name -> api.v1.UpdateHPAConnectorRequest.ConfigEntry
+ 0, // 6: api.v1.ListHPAConnectorsResponse.connectors:type_name -> api.v1.HPAConnector
+ 1, // 7: api.v1.HPAConnectorService.CreateHPAConnector:input_type -> api.v1.CreateHPAConnectorRequest
+ 2, // 8: api.v1.HPAConnectorService.UpdateHPAConnector:input_type -> api.v1.UpdateHPAConnectorRequest
+ 6, // 9: api.v1.HPAConnectorService.DeleteHPAConnector:input_type -> api.v1.DeleteHPAConnectorRequest
+ 4, // 10: api.v1.HPAConnectorService.ListHPAConnectors:input_type -> api.v1.ListHPAConnectorsRequest
+ 3, // 11: api.v1.HPAConnectorService.GetHPAConnector:input_type -> api.v1.GetHPAConnectorRequest
+ 0, // 12: api.v1.HPAConnectorService.CreateHPAConnector:output_type -> api.v1.HPAConnector
+ 0, // 13: api.v1.HPAConnectorService.UpdateHPAConnector:output_type -> api.v1.HPAConnector
+ 11, // 14: api.v1.HPAConnectorService.DeleteHPAConnector:output_type -> google.protobuf.Empty
+ 5, // 15: api.v1.HPAConnectorService.ListHPAConnectors:output_type -> api.v1.ListHPAConnectorsResponse
+ 0, // 16: api.v1.HPAConnectorService.GetHPAConnector:output_type -> api.v1.HPAConnector
+ 12, // [12:17] is the sub-list for method output_type
+ 7, // [7:12] is the sub-list for method input_type
+ 7, // [7:7] is the sub-list for extension type_name
+ 7, // [7:7] is the sub-list for extension extendee
+ 0, // [0:7] is the sub-list for field type_name
+}
+
+func init() { file_api_v1_hpa_connector_proto_init() }
+func file_api_v1_hpa_connector_proto_init() {
+ if File_api_v1_hpa_connector_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_api_v1_hpa_connector_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HPAConnector); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateHPAConnectorRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateHPAConnectorRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetHPAConnectorRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListHPAConnectorsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListHPAConnectorsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteHPAConnectorRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_api_v1_hpa_connector_proto_msgTypes[0].OneofWrappers = []interface{}{}
+ file_api_v1_hpa_connector_proto_msgTypes[1].OneofWrappers = []interface{}{}
+ file_api_v1_hpa_connector_proto_msgTypes[2].OneofWrappers = []interface{}{}
+ file_api_v1_hpa_connector_proto_msgTypes[4].OneofWrappers = []interface{}{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_api_v1_hpa_connector_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 10,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_api_v1_hpa_connector_proto_goTypes,
+ DependencyIndexes: file_api_v1_hpa_connector_proto_depIdxs,
+ MessageInfos: file_api_v1_hpa_connector_proto_msgTypes,
+ }.Build()
+ File_api_v1_hpa_connector_proto = out.File
+ file_api_v1_hpa_connector_proto_rawDesc = nil
+ file_api_v1_hpa_connector_proto_goTypes = nil
+ file_api_v1_hpa_connector_proto_depIdxs = nil
+}
diff --git a/internal/gen/api/v1/k8s.pb.go b/internal/gen/api/v1/k8s.pb.go
index 39ab4b8..3916dfc 100644
--- a/internal/gen/api/v1/k8s.pb.go
+++ b/internal/gen/api/v1/k8s.pb.go
@@ -586,6 +586,16 @@ type GetWorkloadsRequest struct {
// Deprecated: Marked as deprecated in api/v1/k8s.proto.
NodeGroupNames []string `protobuf:"bytes,25,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Prefer filters.status instead
Filters *WorkloadFilters `protobuf:"bytes,31,opt,name=filters,proto3,oneof" json:"filters,omitempty"` // Optional advanced filters; when set, overrides show_deleted behavior via filters.status
+ // The two flags below independently control which half of
+ // WorkloadItem.optimization_status gets computed. Split because a team on
+ // MPA_V2 with is_enabled=false is permanently locked into exactly one
+ // system (is_active=true -> v2-only, is_active=false -> legacy-only) and
+ // the unused system should never be queried; only when is_enabled=true
+ // (team is in a self-service/transition state) does the caller request
+ // both. Adds batched lookups — leave both false unless the caller renders
+ // optimization status.
+ IncludeLegacyOptimizationStatus bool `protobuf:"varint,32,opt,name=include_legacy_optimization_status,json=includeLegacyOptimizationStatus,proto3" json:"include_legacy_optimization_status,omitempty"`
+ IncludeV2OptimizationStatus bool `protobuf:"varint,33,opt,name=include_v2_optimization_status,json=includeV2OptimizationStatus,proto3" json:"include_v2_optimization_status,omitempty"`
}
func (x *GetWorkloadsRequest) Reset() {
@@ -671,21 +681,43 @@ func (x *GetWorkloadsRequest) GetFilters() *WorkloadFilters {
return nil
}
-// GetResourcesRequest is uset to fetch resources from db.
-type GetResourcesRequest struct {
+func (x *GetWorkloadsRequest) GetIncludeLegacyOptimizationStatus() bool {
+ if x != nil {
+ return x.IncludeLegacyOptimizationStatus
+ }
+ return false
+}
+
+func (x *GetWorkloadsRequest) GetIncludeV2OptimizationStatus() bool {
+ if x != nil {
+ return x.IncludeV2OptimizationStatus
+ }
+ return false
+}
+
+// ListWorkloadsPaginatedRequest fetches a single keyset-paginated page of
+// top-level workloads for a cluster+timerange. Additive alternative to
+// GetWorkloads for large clusters; existing GetWorkloads callers are unaffected.
+type ListWorkloadsPaginatedRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- Kind K8SObjectKind `protobuf:"varint,3,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"` // Type of object to get.
- Search *string `protobuf:"bytes,4,opt,name=search,proto3,oneof" json:"search,omitempty"` // Search term to filter resources by name
- Pagination *Pagination `protobuf:"bytes,11,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination parameters
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ Filters *WorkloadFilters `protobuf:"bytes,5,opt,name=filters,proto3,oneof" json:"filters,omitempty"` // Optional advanced filters (same message GetWorkloads uses).
+ IncludeLegacyOptimizationStatus bool `protobuf:"varint,6,opt,name=include_legacy_optimization_status,json=includeLegacyOptimizationStatus,proto3" json:"include_legacy_optimization_status,omitempty"`
+ IncludeV2OptimizationStatus bool `protobuf:"varint,7,opt,name=include_v2_optimization_status,json=includeV2OptimizationStatus,proto3" json:"include_v2_optimization_status,omitempty"`
+ PageSize int32 `protobuf:"varint,8,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Max items per page; server clamps to a sane range.
+ PageToken string `protobuf:"bytes,9,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Opaque cursor from a prior response; empty = first page.
+ SortOrder string `protobuf:"bytes,10,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` // "asc" | "desc" (default "desc": highest sort_field value first).
+ SortField string `protobuf:"bytes,11,opt,name=sort_field,json=sortField,proto3" json:"sort_field,omitempty"` // "cost" | "cpu" | "memory" | "gpu" (default "cost"). Selects which metric orders the page.
}
-func (x *GetResourcesRequest) Reset() {
- *x = GetResourcesRequest{}
+func (x *ListWorkloadsPaginatedRequest) Reset() {
+ *x = ListWorkloadsPaginatedRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v1_k8s_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -693,13 +725,13 @@ func (x *GetResourcesRequest) Reset() {
}
}
-func (x *GetResourcesRequest) String() string {
+func (x *ListWorkloadsPaginatedRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetResourcesRequest) ProtoMessage() {}
+func (*ListWorkloadsPaginatedRequest) ProtoMessage() {}
-func (x *GetResourcesRequest) ProtoReflect() protoreflect.Message {
+func (x *ListWorkloadsPaginatedRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_k8s_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -711,177 +743,122 @@ func (x *GetResourcesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetResourcesRequest.ProtoReflect.Descriptor instead.
-func (*GetResourcesRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use ListWorkloadsPaginatedRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadsPaginatedRequest) Descriptor() ([]byte, []int) {
return file_api_v1_k8s_proto_rawDescGZIP(), []int{5}
}
-func (x *GetResourcesRequest) GetTeamId() string {
+func (x *ListWorkloadsPaginatedRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetResourcesRequest) GetClusterId() string {
- if x != nil && x.ClusterId != nil {
- return *x.ClusterId
- }
- return ""
-}
-
-func (x *GetResourcesRequest) GetKind() K8SObjectKind {
+func (x *ListWorkloadsPaginatedRequest) GetClusterId() string {
if x != nil {
- return x.Kind
- }
- return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
-}
-
-func (x *GetResourcesRequest) GetSearch() string {
- if x != nil && x.Search != nil {
- return *x.Search
+ return x.ClusterId
}
return ""
}
-func (x *GetResourcesRequest) GetPagination() *Pagination {
+func (x *ListWorkloadsPaginatedRequest) GetStartTime() *timestamppb.Timestamp {
if x != nil {
- return x.Pagination
+ return x.StartTime
}
return nil
}
-// GetPodsRequest is used to fetch Pod resources from db.
-type GetPodsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- Search *string `protobuf:"bytes,4,opt,name=search,proto3,oneof" json:"search,omitempty"` // Search term to filter pods by name
- Pagination *Pagination `protobuf:"bytes,11,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination parameters
- NodeGroupNames []string `protobuf:"bytes,25,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional filter for node groups
- NodeIds []string `protobuf:"bytes,26,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` // Optional filter for specific node IDs
- StartTime *timestamppb.Timestamp `protobuf:"bytes,27,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // Start time for metrics query
- EndTime *timestamppb.Timestamp `protobuf:"bytes,28,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // End time for metrics query
-}
-
-func (x *GetPodsRequest) Reset() {
- *x = GetPodsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetPodsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetPodsRequest) ProtoMessage() {}
-
-func (x *GetPodsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetPodsRequest.ProtoReflect.Descriptor instead.
-func (*GetPodsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *GetPodsRequest) GetTeamId() string {
+func (x *ListWorkloadsPaginatedRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
- return x.TeamId
+ return x.EndTime
}
- return ""
+ return nil
}
-func (x *GetPodsRequest) GetClusterId() string {
- if x != nil && x.ClusterId != nil {
- return *x.ClusterId
+func (x *ListWorkloadsPaginatedRequest) GetFilters() *WorkloadFilters {
+ if x != nil {
+ return x.Filters
}
- return ""
+ return nil
}
-func (x *GetPodsRequest) GetSearch() string {
- if x != nil && x.Search != nil {
- return *x.Search
+func (x *ListWorkloadsPaginatedRequest) GetIncludeLegacyOptimizationStatus() bool {
+ if x != nil {
+ return x.IncludeLegacyOptimizationStatus
}
- return ""
+ return false
}
-func (x *GetPodsRequest) GetPagination() *Pagination {
+func (x *ListWorkloadsPaginatedRequest) GetIncludeV2OptimizationStatus() bool {
if x != nil {
- return x.Pagination
+ return x.IncludeV2OptimizationStatus
}
- return nil
+ return false
}
-func (x *GetPodsRequest) GetNodeGroupNames() []string {
+func (x *ListWorkloadsPaginatedRequest) GetPageSize() int32 {
if x != nil {
- return x.NodeGroupNames
+ return x.PageSize
}
- return nil
+ return 0
}
-func (x *GetPodsRequest) GetNodeIds() []string {
+func (x *ListWorkloadsPaginatedRequest) GetPageToken() string {
if x != nil {
- return x.NodeIds
+ return x.PageToken
}
- return nil
+ return ""
}
-func (x *GetPodsRequest) GetStartTime() *timestamppb.Timestamp {
+func (x *ListWorkloadsPaginatedRequest) GetSortOrder() string {
if x != nil {
- return x.StartTime
+ return x.SortOrder
}
- return nil
+ return ""
}
-func (x *GetPodsRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *ListWorkloadsPaginatedRequest) GetSortField() string {
if x != nil {
- return x.EndTime
+ return x.SortField
}
- return nil
+ return ""
}
-// GetPodsResponse is the response for getting pod resources.
-type GetPodsResponse struct {
+// GetWorkloadsSummaryRequest computes cluster-wide aggregate breakdowns (summary
+// cards, top-N lists, treemaps) over the FULL filtered workload set in a single
+// pass. Companion to ListWorkloadsPaginated: this pays the full-scan cost once
+// per page load, while ListWorkloadsPaginated serves the cheap table body per
+// scroll.
+type GetWorkloadsSummaryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // List of pods.
- Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination information
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ Filters *WorkloadFilters `protobuf:"bytes,5,opt,name=filters,proto3,oneof" json:"filters,omitempty"` // Same WorkloadFilters message as ListWorkloadsPaginatedRequest.
}
-func (x *GetPodsResponse) Reset() {
- *x = GetPodsResponse{}
+func (x *GetWorkloadsSummaryRequest) Reset() {
+ *x = GetWorkloadsSummaryRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[7]
+ mi := &file_api_v1_k8s_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetPodsResponse) String() string {
+func (x *GetWorkloadsSummaryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetPodsResponse) ProtoMessage() {}
+func (*GetWorkloadsSummaryRequest) ProtoMessage() {}
-func (x *GetPodsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[7]
+func (x *GetWorkloadsSummaryRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -892,59 +869,85 @@ func (x *GetPodsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetPodsResponse.ProtoReflect.Descriptor instead.
-func (*GetPodsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{7}
+// Deprecated: Use GetWorkloadsSummaryRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadsSummaryRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{6}
}
-func (x *GetPodsResponse) GetWorkloadItems() []*WorkloadItem {
+func (x *GetWorkloadsSummaryRequest) GetTeamId() string {
if x != nil {
- return x.WorkloadItems
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadsSummaryRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetWorkloadsSummaryRequest) GetStartTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.StartTime
}
return nil
}
-func (x *GetPodsResponse) GetPagination() *Pagination {
+func (x *GetWorkloadsSummaryRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
- return x.Pagination
+ return x.EndTime
}
return nil
}
-// GetWorkloadRequest is used to fetch details of a specific workload in a cluster.
-type GetWorkloadRequest struct {
+func (x *GetWorkloadsSummaryRequest) GetFilters() *WorkloadFilters {
+ if x != nil {
+ return x.Filters
+ }
+ return nil
+}
+
+// WorkloadMetricEntry is a single workload's contribution to one metric. value
+// is whatever the enclosing breakdown is sorted by; requested/limit/usage carry
+// the full picture so the frontend can render tooltips and compute utilization
+// without a second round-trip. For the cost breakdown, requested is the
+// requested cost, usage is the usage cost, and limit is 0 (no limit-cost
+// concept).
+type WorkloadMetricEntry struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"` // Kind of the workload (e.g., Deployment, StatefulSet).
- Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"` // Unique identifier for the workload.
- IncludeDeleted bool `protobuf:"varint,11,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
- WithDetails bool `protobuf:"varint,12,opt,name=with_details,json=withDetails,proto3" json:"with_details,omitempty"` // Optional flag to include additional resource details
- WithMetadata bool `protobuf:"varint,13,opt,name=with_metadata,json=withMetadata,proto3" json:"with_metadata,omitempty"` // Optional flag to include metadata
- StartTime *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,22,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Value float64 `protobuf:"fixed64,5,opt,name=value,proto3" json:"value,omitempty"` // The metric this breakdown is sorted by (usage for cpu/mem/gpu, requested cost for cost, overprovisioned amount for optimization_potential).
+ Requested float64 `protobuf:"fixed64,6,opt,name=requested,proto3" json:"requested,omitempty"` // Cluster-wide requested amount for this workload (millicores / bytes / gpu-count / requested cost).
+ Limit float64 `protobuf:"fixed64,7,opt,name=limit,proto3" json:"limit,omitempty"` // Configured limit for this workload (0 for the cost breakdown).
+ Usage float64 `protobuf:"fixed64,8,opt,name=usage,proto3" json:"usage,omitempty"` // Observed usage for this workload (millicores / bytes / gpu-count / usage cost).
+ IsDeleted bool `protobuf:"varint,9,opt,name=is_deleted,json=isDeleted,proto3" json:"is_deleted,omitempty"` // Whether this workload is soft-deleted. The frontend needs this to open the workload drawer correctly when a caller clicks a treemap/top-N node built from this entry, the same way it already does for table rows sourced from WorkloadItem.deleted_at.
}
-func (x *GetWorkloadRequest) Reset() {
- *x = GetWorkloadRequest{}
+func (x *WorkloadMetricEntry) Reset() {
+ *x = WorkloadMetricEntry{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[8]
+ mi := &file_api_v1_k8s_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadRequest) String() string {
+func (x *WorkloadMetricEntry) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadRequest) ProtoMessage() {}
+func (*WorkloadMetricEntry) ProtoMessage() {}
-func (x *GetWorkloadRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[8]
+func (x *WorkloadMetricEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -955,104 +958,107 @@ func (x *GetWorkloadRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{8}
+// Deprecated: Use WorkloadMetricEntry.ProtoReflect.Descriptor instead.
+func (*WorkloadMetricEntry) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{7}
}
-func (x *GetWorkloadRequest) GetTeamId() string {
+func (x *WorkloadMetricEntry) GetUid() string {
if x != nil {
- return x.TeamId
+ return x.Uid
}
return ""
}
-func (x *GetWorkloadRequest) GetClusterId() string {
+func (x *WorkloadMetricEntry) GetName() string {
if x != nil {
- return x.ClusterId
+ return x.Name
}
return ""
}
-func (x *GetWorkloadRequest) GetKind() string {
+func (x *WorkloadMetricEntry) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
-func (x *GetWorkloadRequest) GetUid() string {
+func (x *WorkloadMetricEntry) GetNamespace() string {
if x != nil {
- return x.Uid
+ return x.Namespace
}
return ""
}
-func (x *GetWorkloadRequest) GetIncludeDeleted() bool {
+func (x *WorkloadMetricEntry) GetValue() float64 {
if x != nil {
- return x.IncludeDeleted
+ return x.Value
}
- return false
+ return 0
}
-func (x *GetWorkloadRequest) GetWithDetails() bool {
+func (x *WorkloadMetricEntry) GetRequested() float64 {
if x != nil {
- return x.WithDetails
+ return x.Requested
}
- return false
+ return 0
}
-func (x *GetWorkloadRequest) GetWithMetadata() bool {
+func (x *WorkloadMetricEntry) GetLimit() float64 {
if x != nil {
- return x.WithMetadata
+ return x.Limit
}
- return false
+ return 0
}
-func (x *GetWorkloadRequest) GetStartTime() *timestamppb.Timestamp {
+func (x *WorkloadMetricEntry) GetUsage() float64 {
if x != nil {
- return x.StartTime
+ return x.Usage
}
- return nil
+ return 0
}
-func (x *GetWorkloadRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *WorkloadMetricEntry) GetIsDeleted() bool {
if x != nil {
- return x.EndTime
+ return x.IsDeleted
}
- return nil
+ return false
}
-// GetClustersRequest is used to fetch clusters for a specific team.
-type GetClustersRequest struct {
+// WorkloadMetricBreakdown is a top-N + "other" rollup of one metric across all
+// top-level workloads matching the filters.
+type WorkloadMetricBreakdown struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
- BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
- NodeGroupNames []string `protobuf:"bytes,14,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional filter for node groups
+ TopEntries []*WorkloadMetricEntry `protobuf:"bytes,1,rep,name=top_entries,json=topEntries,proto3" json:"top_entries,omitempty"` // Top N by this metric, descending.
+ OtherValue float64 `protobuf:"fixed64,2,opt,name=other_value,json=otherValue,proto3" json:"other_value,omitempty"` // Sum of value across everything NOT in top_entries.
+ OtherCount int32 `protobuf:"varint,3,opt,name=other_count,json=otherCount,proto3" json:"other_count,omitempty"` // How many workloads are folded into other_value.
+ Total float64 `protobuf:"fixed64,4,opt,name=total,proto3" json:"total,omitempty"` // Sum of value across ALL workloads (top_entries + other).
+ RequestedTotal float64 `protobuf:"fixed64,5,opt,name=requested_total,json=requestedTotal,proto3" json:"requested_total,omitempty"` // Sum of requested across ALL workloads; pair with total (usage) for request-utilization %.
+ PositiveCount int32 `protobuf:"varint,6,opt,name=positive_count,json=positiveCount,proto3" json:"positive_count,omitempty"` // How many workloads (top_entries + other, combined) have value > 0 for this metric. Use this, not top_entries+other_count, as the denominator for "N% of workloads account for ~80%" style displays — other_count includes workloads with zero value for this metric (e.g. a workload with no CPU usage still gets folded into "other"), which understates the percentage.
+ Top80Count int32 `protobuf:"varint,7,opt,name=top80_count,json=top80Count,proto3" json:"top80_count,omitempty"` // How many workloads, ranked by this metric descending, are needed to reach ~80% of total. Computed server-side over the FULL dataset, not just top_entries (which is capped at 50) — use this instead of walking top_entries client-side, which silently caps at 50 and under-reports on flatter distributions where more than 50 workloads are needed to reach 80%.
}
-func (x *GetClustersRequest) Reset() {
- *x = GetClustersRequest{}
+func (x *WorkloadMetricBreakdown) Reset() {
+ *x = WorkloadMetricBreakdown{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[9]
+ mi := &file_api_v1_k8s_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetClustersRequest) String() string {
+func (x *WorkloadMetricBreakdown) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetClustersRequest) ProtoMessage() {}
+func (*WorkloadMetricBreakdown) ProtoMessage() {}
-func (x *GetClustersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[9]
+func (x *WorkloadMetricBreakdown) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1063,77 +1069,98 @@ func (x *GetClustersRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetClustersRequest.ProtoReflect.Descriptor instead.
-func (*GetClustersRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{9}
+// Deprecated: Use WorkloadMetricBreakdown.ProtoReflect.Descriptor instead.
+func (*WorkloadMetricBreakdown) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{8}
}
-func (x *GetClustersRequest) GetTeamId() string {
+func (x *WorkloadMetricBreakdown) GetTopEntries() []*WorkloadMetricEntry {
if x != nil {
- return x.TeamId
+ return x.TopEntries
}
- return ""
+ return nil
}
-func (x *GetClustersRequest) GetStartTime() *timestamppb.Timestamp {
+func (x *WorkloadMetricBreakdown) GetOtherValue() float64 {
if x != nil {
- return x.StartTime
+ return x.OtherValue
}
- return nil
+ return 0
}
-func (x *GetClustersRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *WorkloadMetricBreakdown) GetOtherCount() int32 {
if x != nil {
- return x.EndTime
+ return x.OtherCount
}
- return nil
+ return 0
}
-func (x *GetClustersRequest) GetBucketSize() int32 {
- if x != nil && x.BucketSize != nil {
- return *x.BucketSize
+func (x *WorkloadMetricBreakdown) GetTotal() float64 {
+ if x != nil {
+ return x.Total
}
return 0
}
-func (x *GetClustersRequest) GetNodeGroupNames() []string {
+func (x *WorkloadMetricBreakdown) GetRequestedTotal() float64 {
if x != nil {
- return x.NodeGroupNames
+ return x.RequestedTotal
}
- return nil
+ return 0
}
-// ListClustersRequest is used to fetch clusters for a specific team with pagination.
-// Deprecated: Use GetClustersRequest instead.
-//
-// Deprecated: Marked as deprecated in api/v1/k8s.proto.
-type ListClustersRequest struct {
+func (x *WorkloadMetricBreakdown) GetPositiveCount() int32 {
+ if x != nil {
+ return x.PositiveCount
+ }
+ return 0
+}
+
+func (x *WorkloadMetricBreakdown) GetTop80Count() int32 {
+ if x != nil {
+ return x.Top80Count
+ }
+ return 0
+}
+
+// GetWorkloadsSummaryResponse carries one usage/cost breakdown per metric plus
+// the total matching top-level workload count. The optimization_potential_*
+// breakdowns re-rank the same workloads by the overprovisioned amount
+// (requested - usage) for that metric, feeding each treemap's "show
+// optimization potential" toggle without an approximation.
+type GetWorkloadsSummaryResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- Search *string `protobuf:"bytes,2,opt,name=search,proto3,oneof" json:"search,omitempty"` // Search term to filter clusters by name or ID
- Pagination *Pagination `protobuf:"bytes,11,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination parameters
+ Cost *WorkloadMetricBreakdown `protobuf:"bytes,1,opt,name=cost,proto3" json:"cost,omitempty"`
+ CpuUsage *WorkloadMetricBreakdown `protobuf:"bytes,2,opt,name=cpu_usage,json=cpuUsage,proto3" json:"cpu_usage,omitempty"`
+ MemoryUsage *WorkloadMetricBreakdown `protobuf:"bytes,3,opt,name=memory_usage,json=memoryUsage,proto3" json:"memory_usage,omitempty"`
+ GpuUsage *WorkloadMetricBreakdown `protobuf:"bytes,4,opt,name=gpu_usage,json=gpuUsage,proto3" json:"gpu_usage,omitempty"`
+ TotalWorkloadCount int32 `protobuf:"varint,5,opt,name=total_workload_count,json=totalWorkloadCount,proto3" json:"total_workload_count,omitempty"` // Total top-level workloads matching filters.
+ OptimizationPotentialCost *WorkloadMetricBreakdown `protobuf:"bytes,6,opt,name=optimization_potential_cost,json=optimizationPotentialCost,proto3" json:"optimization_potential_cost,omitempty"` // Ranked by overprovisioned cost (requested cost - usage cost), descending.
+ OptimizationPotentialCpu *WorkloadMetricBreakdown `protobuf:"bytes,7,opt,name=optimization_potential_cpu,json=optimizationPotentialCpu,proto3" json:"optimization_potential_cpu,omitempty"` // Ranked by overprovisioned cpu (cpu request - cpu usage, millicores), descending.
+ OptimizationPotentialMemory *WorkloadMetricBreakdown `protobuf:"bytes,8,opt,name=optimization_potential_memory,json=optimizationPotentialMemory,proto3" json:"optimization_potential_memory,omitempty"` // Ranked by overprovisioned memory (memory request - memory usage, bytes), descending.
+ OptimizationPotentialGpu *WorkloadMetricBreakdown `protobuf:"bytes,9,opt,name=optimization_potential_gpu,json=optimizationPotentialGpu,proto3" json:"optimization_potential_gpu,omitempty"` // Ranked by overprovisioned gpu (gpu request - gpu usage, gpu-count), descending.
}
-func (x *ListClustersRequest) Reset() {
- *x = ListClustersRequest{}
+func (x *GetWorkloadsSummaryResponse) Reset() {
+ *x = GetWorkloadsSummaryResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[10]
+ mi := &file_api_v1_k8s_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListClustersRequest) String() string {
+func (x *GetWorkloadsSummaryResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListClustersRequest) ProtoMessage() {}
+func (*GetWorkloadsSummaryResponse) ProtoMessage() {}
-func (x *ListClustersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[10]
+func (x *GetWorkloadsSummaryResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1144,147 +1171,104 @@ func (x *ListClustersRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListClustersRequest.ProtoReflect.Descriptor instead.
-func (*ListClustersRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{10}
+// Deprecated: Use GetWorkloadsSummaryResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadsSummaryResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{9}
}
-func (x *ListClustersRequest) GetTeamId() string {
+func (x *GetWorkloadsSummaryResponse) GetCost() *WorkloadMetricBreakdown {
if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *ListClustersRequest) GetSearch() string {
- if x != nil && x.Search != nil {
- return *x.Search
+ return x.Cost
}
- return ""
+ return nil
}
-func (x *ListClustersRequest) GetPagination() *Pagination {
+func (x *GetWorkloadsSummaryResponse) GetCpuUsage() *WorkloadMetricBreakdown {
if x != nil {
- return x.Pagination
+ return x.CpuUsage
}
return nil
}
-// GetClusterRequest is used to fetch details of a specific cluster for a team.
-type GetClusterRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
- BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
- NodeGroupNames []string `protobuf:"bytes,14,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional filter for node groups
-}
-
-func (x *GetClusterRequest) Reset() {
- *x = GetClusterRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetClusterRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetClusterRequest) ProtoMessage() {}
-
-func (x *GetClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *GetWorkloadsSummaryResponse) GetMemoryUsage() *WorkloadMetricBreakdown {
+ if x != nil {
+ return x.MemoryUsage
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetClusterRequest.ProtoReflect.Descriptor instead.
-func (*GetClusterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{11}
+ return nil
}
-func (x *GetClusterRequest) GetTeamId() string {
+func (x *GetWorkloadsSummaryResponse) GetGpuUsage() *WorkloadMetricBreakdown {
if x != nil {
- return x.TeamId
+ return x.GpuUsage
}
- return ""
+ return nil
}
-func (x *GetClusterRequest) GetClusterId() string {
+func (x *GetWorkloadsSummaryResponse) GetTotalWorkloadCount() int32 {
if x != nil {
- return x.ClusterId
+ return x.TotalWorkloadCount
}
- return ""
+ return 0
}
-func (x *GetClusterRequest) GetStartTime() *timestamppb.Timestamp {
+func (x *GetWorkloadsSummaryResponse) GetOptimizationPotentialCost() *WorkloadMetricBreakdown {
if x != nil {
- return x.StartTime
+ return x.OptimizationPotentialCost
}
return nil
}
-func (x *GetClusterRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *GetWorkloadsSummaryResponse) GetOptimizationPotentialCpu() *WorkloadMetricBreakdown {
if x != nil {
- return x.EndTime
+ return x.OptimizationPotentialCpu
}
return nil
}
-func (x *GetClusterRequest) GetBucketSize() int32 {
- if x != nil && x.BucketSize != nil {
- return *x.BucketSize
+func (x *GetWorkloadsSummaryResponse) GetOptimizationPotentialMemory() *WorkloadMetricBreakdown {
+ if x != nil {
+ return x.OptimizationPotentialMemory
}
- return 0
+ return nil
}
-func (x *GetClusterRequest) GetNodeGroupNames() []string {
+func (x *GetWorkloadsSummaryResponse) GetOptimizationPotentialGpu() *WorkloadMetricBreakdown {
if x != nil {
- return x.NodeGroupNames
+ return x.OptimizationPotentialGpu
}
return nil
}
-// DeleteClusterRequest is used to delete a cluster and all its resources.
-type DeleteClusterRequest struct {
+// ListWorkloadsPaginatedResponse is one page of workloads plus the cursor for
+// the next page and the total matching count (before pagination).
+type ListWorkloadsPaginatedResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // This page's workloads.
+ NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Opaque cursor for the next page; empty = no more data.
+ TotalCount int64 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total workloads matching the filters, before pagination.
+ PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Effective page size applied after clamping; reflects the requested/clamped size, not len(workload_items).
}
-func (x *DeleteClusterRequest) Reset() {
- *x = DeleteClusterRequest{}
+func (x *ListWorkloadsPaginatedResponse) Reset() {
+ *x = ListWorkloadsPaginatedResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[12]
+ mi := &file_api_v1_k8s_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteClusterRequest) String() string {
+func (x *ListWorkloadsPaginatedResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteClusterRequest) ProtoMessage() {}
+func (*ListWorkloadsPaginatedResponse) ProtoMessage() {}
-func (x *DeleteClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[12]
+func (x *ListWorkloadsPaginatedResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1295,96 +1279,70 @@ func (x *DeleteClusterRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteClusterRequest.ProtoReflect.Descriptor instead.
-func (*DeleteClusterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{12}
+// Deprecated: Use ListWorkloadsPaginatedResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadsPaginatedResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{10}
}
-func (x *DeleteClusterRequest) GetTeamId() string {
+func (x *ListWorkloadsPaginatedResponse) GetWorkloadItems() []*WorkloadItem {
if x != nil {
- return x.TeamId
+ return x.WorkloadItems
}
- return ""
+ return nil
}
-func (x *DeleteClusterRequest) GetClusterId() string {
+func (x *ListWorkloadsPaginatedResponse) GetNextPageToken() string {
if x != nil {
- return x.ClusterId
+ return x.NextPageToken
}
return ""
}
-// DeleteClusterResponse is the response for a delete cluster request.
-type DeleteClusterResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *DeleteClusterResponse) Reset() {
- *x = DeleteClusterResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *ListWorkloadsPaginatedResponse) GetTotalCount() int64 {
+ if x != nil {
+ return x.TotalCount
}
+ return 0
}
-func (x *DeleteClusterResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteClusterResponse) ProtoMessage() {}
-
-func (x *DeleteClusterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *ListWorkloadsPaginatedResponse) GetPageSize() int32 {
+ if x != nil {
+ return x.PageSize
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteClusterResponse.ProtoReflect.Descriptor instead.
-func (*DeleteClusterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{13}
+ return 0
}
-// UpdateClusterRequest is used to update the configuration of an existing cluster.
-// only certain fields can be updated, such as name
-type UpdateClusterRequest struct {
+// GetResourcesRequest is uset to fetch resources from db.
+type GetResourcesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // Updated cluster details.
- CpuCostPerHour float64 `protobuf:"fixed64,4,opt,name=cpu_cost_per_hour,json=cpuCostPerHour,proto3" json:"cpu_cost_per_hour,omitempty"` // Estimated CPU cost per hour for one vcpu.
- MemoryCostPerHour float64 `protobuf:"fixed64,5,opt,name=memory_cost_per_hour,json=memoryCostPerHour,proto3" json:"memory_cost_per_hour,omitempty"` // Estimated memory cost per hour for one GiB of memory.
- GpuCostPerHour float64 `protobuf:"fixed64,6,opt,name=gpu_cost_per_hour,json=gpuCostPerHour,proto3" json:"gpu_cost_per_hour,omitempty"` // Estimate GPU cost per hour for one GPU.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ Kind K8SObjectKind `protobuf:"varint,3,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"` // Type of object to get.
+ Search *string `protobuf:"bytes,4,opt,name=search,proto3,oneof" json:"search,omitempty"` // Search term to filter resources by name
+ Pagination *Pagination `protobuf:"bytes,11,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination parameters
+ Filters []*ResourceFieldFilter `protobuf:"bytes,12,rep,name=filters,proto3" json:"filters,omitempty"` // Optional field-level filters; multiple filters AND together
}
-func (x *UpdateClusterRequest) Reset() {
- *x = UpdateClusterRequest{}
+func (x *GetResourcesRequest) Reset() {
+ *x = GetResourcesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[14]
+ mi := &file_api_v1_k8s_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateClusterRequest) String() string {
+func (x *GetResourcesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateClusterRequest) ProtoMessage() {}
+func (*GetResourcesRequest) ProtoMessage() {}
-func (x *UpdateClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[14]
+func (x *GetResourcesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1395,79 +1353,86 @@ func (x *UpdateClusterRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateClusterRequest.ProtoReflect.Descriptor instead.
-func (*UpdateClusterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{14}
+// Deprecated: Use GetResourcesRequest.ProtoReflect.Descriptor instead.
+func (*GetResourcesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{11}
}
-func (x *UpdateClusterRequest) GetTeamId() string {
+func (x *GetResourcesRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *UpdateClusterRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
+func (x *GetResourcesRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
}
return ""
}
-func (x *UpdateClusterRequest) GetClusterName() string {
+func (x *GetResourcesRequest) GetKind() K8SObjectKind {
if x != nil {
- return x.ClusterName
+ return x.Kind
}
- return ""
+ return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
}
-func (x *UpdateClusterRequest) GetCpuCostPerHour() float64 {
- if x != nil {
- return x.CpuCostPerHour
+func (x *GetResourcesRequest) GetSearch() string {
+ if x != nil && x.Search != nil {
+ return *x.Search
}
- return 0
+ return ""
}
-func (x *UpdateClusterRequest) GetMemoryCostPerHour() float64 {
+func (x *GetResourcesRequest) GetPagination() *Pagination {
if x != nil {
- return x.MemoryCostPerHour
+ return x.Pagination
}
- return 0
+ return nil
}
-func (x *UpdateClusterRequest) GetGpuCostPerHour() float64 {
+func (x *GetResourcesRequest) GetFilters() []*ResourceFieldFilter {
if x != nil {
- return x.GpuCostPerHour
+ return x.Filters
}
- return 0
+ return nil
}
-// UpdateClusterResponse is the response for an update cluster request.
-type UpdateClusterResponse struct {
+// GetPodsRequest is used to fetch Pod resources from db.
+type GetPodsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Updated cluster details.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ Search *string `protobuf:"bytes,4,opt,name=search,proto3,oneof" json:"search,omitempty"` // Search term to filter pods by name
+ Pagination *Pagination `protobuf:"bytes,11,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination parameters
+ NodeGroupNames []string `protobuf:"bytes,25,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional filter for node groups
+ NodeIds []string `protobuf:"bytes,26,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` // Optional filter for specific node IDs
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,27,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // Start time for metrics query
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,28,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // End time for metrics query
}
-func (x *UpdateClusterResponse) Reset() {
- *x = UpdateClusterResponse{}
+func (x *GetPodsRequest) Reset() {
+ *x = GetPodsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[15]
+ mi := &file_api_v1_k8s_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateClusterResponse) String() string {
+func (x *GetPodsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateClusterResponse) ProtoMessage() {}
+func (*GetPodsRequest) ProtoMessage() {}
-func (x *UpdateClusterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[15]
+func (x *GetPodsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1478,45 +1443,94 @@ func (x *UpdateClusterResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateClusterResponse.ProtoReflect.Descriptor instead.
-func (*UpdateClusterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{15}
+// Deprecated: Use GetPodsRequest.ProtoReflect.Descriptor instead.
+func (*GetPodsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{12}
}
-func (x *UpdateClusterResponse) GetCluster() *Cluster {
+func (x *GetPodsRequest) GetTeamId() string {
if x != nil {
- return x.Cluster
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetPodsRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetPodsRequest) GetSearch() string {
+ if x != nil && x.Search != nil {
+ return *x.Search
+ }
+ return ""
+}
+
+func (x *GetPodsRequest) GetPagination() *Pagination {
+ if x != nil {
+ return x.Pagination
}
return nil
}
-// GetResourcesResponse is the response for getting k8s resources.
-type GetResourcesResponse struct {
+func (x *GetPodsRequest) GetNodeGroupNames() []string {
+ if x != nil {
+ return x.NodeGroupNames
+ }
+ return nil
+}
+
+func (x *GetPodsRequest) GetNodeIds() []string {
+ if x != nil {
+ return x.NodeIds
+ }
+ return nil
+}
+
+func (x *GetPodsRequest) GetStartTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.StartTime
+ }
+ return nil
+}
+
+func (x *GetPodsRequest) GetEndTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EndTime
+ }
+ return nil
+}
+
+// GetPodsResponse is the response for getting pod resources.
+type GetPodsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // Return list of resources requested
+ WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // List of pods.
Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination information
}
-func (x *GetResourcesResponse) Reset() {
- *x = GetResourcesResponse{}
+func (x *GetPodsResponse) Reset() {
+ *x = GetPodsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[16]
+ mi := &file_api_v1_k8s_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetResourcesResponse) String() string {
+func (x *GetPodsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetResourcesResponse) ProtoMessage() {}
+func (*GetPodsResponse) ProtoMessage() {}
-func (x *GetResourcesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[16]
+func (x *GetPodsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1527,52 +1541,59 @@ func (x *GetResourcesResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetResourcesResponse.ProtoReflect.Descriptor instead.
-func (*GetResourcesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{16}
+// Deprecated: Use GetPodsResponse.ProtoReflect.Descriptor instead.
+func (*GetPodsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{13}
}
-func (x *GetResourcesResponse) GetWorkloadItems() []*WorkloadItem {
+func (x *GetPodsResponse) GetWorkloadItems() []*WorkloadItem {
if x != nil {
return x.WorkloadItems
}
return nil
}
-func (x *GetResourcesResponse) GetPagination() *Pagination {
+func (x *GetPodsResponse) GetPagination() *Pagination {
if x != nil {
return x.Pagination
}
return nil
}
-// CreateClusterRequest is used to create a new cluster.
-type CreateClusterRequest struct {
+// GetWorkloadRequest is used to fetch details of a specific workload in a cluster.
+type GetWorkloadRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // Name of the new cluster.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"` // Kind of the workload (e.g., Deployment, StatefulSet).
+ Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"` // Unique identifier for the workload.
+ IncludeDeleted bool `protobuf:"varint,11,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
+ WithDetails bool `protobuf:"varint,12,opt,name=with_details,json=withDetails,proto3" json:"with_details,omitempty"` // Optional flag to include additional resource details
+ WithMetadata bool `protobuf:"varint,13,opt,name=with_metadata,json=withMetadata,proto3" json:"with_metadata,omitempty"` // Optional flag to include metadata
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,22,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
}
-func (x *CreateClusterRequest) Reset() {
- *x = CreateClusterRequest{}
+func (x *GetWorkloadRequest) Reset() {
+ *x = GetWorkloadRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[17]
+ mi := &file_api_v1_k8s_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateClusterRequest) String() string {
+func (x *GetWorkloadRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateClusterRequest) ProtoMessage() {}
+func (*GetWorkloadRequest) ProtoMessage() {}
-func (x *CreateClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[17]
+func (x *GetWorkloadRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1583,108 +1604,104 @@ func (x *CreateClusterRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CreateClusterRequest.ProtoReflect.Descriptor instead.
-func (*CreateClusterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{17}
+// Deprecated: Use GetWorkloadRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{14}
}
-func (x *CreateClusterRequest) GetTeamId() string {
+func (x *GetWorkloadRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *CreateClusterRequest) GetClusterName() string {
+func (x *GetWorkloadRequest) GetClusterId() string {
if x != nil {
- return x.ClusterName
+ return x.ClusterId
}
return ""
}
-// CreateClusterResponse is the response for a create cluster request.
-type CreateClusterResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Details of the created cluster.
- Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` // Token for the new cluster.
+func (x *GetWorkloadRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
}
-func (x *CreateClusterResponse) Reset() {
- *x = CreateClusterResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *GetWorkloadRequest) GetUid() string {
+ if x != nil {
+ return x.Uid
}
+ return ""
}
-func (x *CreateClusterResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *GetWorkloadRequest) GetIncludeDeleted() bool {
+ if x != nil {
+ return x.IncludeDeleted
+ }
+ return false
}
-func (*CreateClusterResponse) ProtoMessage() {}
-
-func (x *CreateClusterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *GetWorkloadRequest) GetWithDetails() bool {
+ if x != nil {
+ return x.WithDetails
}
- return mi.MessageOf(x)
+ return false
}
-// Deprecated: Use CreateClusterResponse.ProtoReflect.Descriptor instead.
-func (*CreateClusterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{18}
+func (x *GetWorkloadRequest) GetWithMetadata() bool {
+ if x != nil {
+ return x.WithMetadata
+ }
+ return false
}
-func (x *CreateClusterResponse) GetCluster() *Cluster {
+func (x *GetWorkloadRequest) GetStartTime() *timestamppb.Timestamp {
if x != nil {
- return x.Cluster
+ return x.StartTime
}
return nil
}
-func (x *CreateClusterResponse) GetToken() string {
+func (x *GetWorkloadRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
- return x.Token
+ return x.EndTime
}
- return ""
+ return nil
}
-// ResetClusterTokenRequest is used to reset the token for a cluster.
-type ResetClusterTokenRequest struct {
+// GetClustersRequest is used to fetch clusters for a specific team.
+type GetClustersRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
+ NodeGroupNames []string `protobuf:"bytes,14,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional filter for node groups
}
-func (x *ResetClusterTokenRequest) Reset() {
- *x = ResetClusterTokenRequest{}
+func (x *GetClustersRequest) Reset() {
+ *x = GetClustersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[19]
+ mi := &file_api_v1_k8s_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResetClusterTokenRequest) String() string {
+func (x *GetClustersRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResetClusterTokenRequest) ProtoMessage() {}
+func (*GetClustersRequest) ProtoMessage() {}
-func (x *ResetClusterTokenRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[19]
+func (x *GetClustersRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1695,51 +1712,77 @@ func (x *ResetClusterTokenRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResetClusterTokenRequest.ProtoReflect.Descriptor instead.
-func (*ResetClusterTokenRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{19}
+// Deprecated: Use GetClustersRequest.ProtoReflect.Descriptor instead.
+func (*GetClustersRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{15}
}
-func (x *ResetClusterTokenRequest) GetTeamId() string {
+func (x *GetClustersRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *ResetClusterTokenRequest) GetClusterId() string {
+func (x *GetClustersRequest) GetStartTime() *timestamppb.Timestamp {
if x != nil {
- return x.ClusterId
+ return x.StartTime
}
- return ""
-}
-
-// ResetClusterTokenResponse is the response for a reset cluster token request.
-type ResetClusterTokenResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` // Token for the new cluster.
+ return nil
}
-func (x *ResetClusterTokenResponse) Reset() {
- *x = ResetClusterTokenResponse{}
+func (x *GetClustersRequest) GetEndTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EndTime
+ }
+ return nil
+}
+
+func (x *GetClustersRequest) GetBucketSize() int32 {
+ if x != nil && x.BucketSize != nil {
+ return *x.BucketSize
+ }
+ return 0
+}
+
+func (x *GetClustersRequest) GetNodeGroupNames() []string {
+ if x != nil {
+ return x.NodeGroupNames
+ }
+ return nil
+}
+
+// ListClustersRequest is used to fetch clusters for a specific team with pagination.
+// Deprecated: Use GetClustersRequest instead.
+//
+// Deprecated: Marked as deprecated in api/v1/k8s.proto.
+type ListClustersRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ Search *string `protobuf:"bytes,2,opt,name=search,proto3,oneof" json:"search,omitempty"` // Search term to filter clusters by name or ID
+ Pagination *Pagination `protobuf:"bytes,11,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination parameters
+}
+
+func (x *ListClustersRequest) Reset() {
+ *x = ListClustersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[20]
+ mi := &file_api_v1_k8s_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResetClusterTokenResponse) String() string {
+func (x *ListClustersRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResetClusterTokenResponse) ProtoMessage() {}
+func (*ListClustersRequest) ProtoMessage() {}
-func (x *ResetClusterTokenResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[20]
+func (x *ListClustersRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1750,49 +1793,63 @@ func (x *ResetClusterTokenResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResetClusterTokenResponse.ProtoReflect.Descriptor instead.
-func (*ResetClusterTokenResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{20}
+// Deprecated: Use ListClustersRequest.ProtoReflect.Descriptor instead.
+func (*ListClustersRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{16}
}
-func (x *ResetClusterTokenResponse) GetToken() string {
+func (x *ListClustersRequest) GetTeamId() string {
if x != nil {
- return x.Token
+ return x.TeamId
}
return ""
}
-// GetNodeGroupsRequest is used to fetch node groups for a specific cluster.
-type GetNodeGroupsRequest struct {
+func (x *ListClustersRequest) GetSearch() string {
+ if x != nil && x.Search != nil {
+ return *x.Search
+ }
+ return ""
+}
+
+func (x *ListClustersRequest) GetPagination() *Pagination {
+ if x != nil {
+ return x.Pagination
+ }
+ return nil
+}
+
+// GetClusterRequest is used to fetch details of a specific cluster for a team.
+type GetClusterRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
- BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
- ShowDeleted bool `protobuf:"varint,21,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
+ NodeGroupNames []string `protobuf:"bytes,14,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional filter for node groups
}
-func (x *GetNodeGroupsRequest) Reset() {
- *x = GetNodeGroupsRequest{}
+func (x *GetClusterRequest) Reset() {
+ *x = GetClusterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[21]
+ mi := &file_api_v1_k8s_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupsRequest) String() string {
+func (x *GetClusterRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupsRequest) ProtoMessage() {}
+func (*GetClusterRequest) ProtoMessage() {}
-func (x *GetNodeGroupsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[21]
+func (x *GetClusterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1803,79 +1860,80 @@ func (x *GetNodeGroupsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupsRequest.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{21}
+// Deprecated: Use GetClusterRequest.ProtoReflect.Descriptor instead.
+func (*GetClusterRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{17}
}
-func (x *GetNodeGroupsRequest) GetTeamId() string {
+func (x *GetClusterRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetNodeGroupsRequest) GetClusterId() string {
+func (x *GetClusterRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *GetNodeGroupsRequest) GetStartTime() *timestamppb.Timestamp {
+func (x *GetClusterRequest) GetStartTime() *timestamppb.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
-func (x *GetNodeGroupsRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *GetClusterRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
return x.EndTime
}
return nil
}
-func (x *GetNodeGroupsRequest) GetBucketSize() int32 {
+func (x *GetClusterRequest) GetBucketSize() int32 {
if x != nil && x.BucketSize != nil {
return *x.BucketSize
}
return 0
}
-func (x *GetNodeGroupsRequest) GetShowDeleted() bool {
+func (x *GetClusterRequest) GetNodeGroupNames() []string {
if x != nil {
- return x.ShowDeleted
+ return x.NodeGroupNames
}
- return false
+ return nil
}
-// GetAllNodeGroupsRequest is used to fetch all node groups for a specific team.
-type GetAllNodeGroupsRequest struct {
+// DeleteClusterRequest is used to delete a cluster and all its resources.
+type DeleteClusterRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
}
-func (x *GetAllNodeGroupsRequest) Reset() {
- *x = GetAllNodeGroupsRequest{}
+func (x *DeleteClusterRequest) Reset() {
+ *x = DeleteClusterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[22]
+ mi := &file_api_v1_k8s_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAllNodeGroupsRequest) String() string {
+func (x *DeleteClusterRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAllNodeGroupsRequest) ProtoMessage() {}
+func (*DeleteClusterRequest) ProtoMessage() {}
-func (x *GetAllNodeGroupsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[22]
+func (x *DeleteClusterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1886,44 +1944,49 @@ func (x *GetAllNodeGroupsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetAllNodeGroupsRequest.ProtoReflect.Descriptor instead.
-func (*GetAllNodeGroupsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{22}
+// Deprecated: Use DeleteClusterRequest.ProtoReflect.Descriptor instead.
+func (*DeleteClusterRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{18}
}
-func (x *GetAllNodeGroupsRequest) GetTeamId() string {
+func (x *DeleteClusterRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-// GetNodeGroupsResponse contains the list of node groups for a specific cluster.
-type GetNodeGroupsResponse struct {
+func (x *DeleteClusterRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+// DeleteClusterResponse is the response for a delete cluster request.
+type DeleteClusterResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
-
- NodeGroups []*NodeGroup `protobuf:"bytes,1,rep,name=node_groups,json=nodeGroups,proto3" json:"node_groups,omitempty"` // List of node groups.
}
-func (x *GetNodeGroupsResponse) Reset() {
- *x = GetNodeGroupsResponse{}
+func (x *DeleteClusterResponse) Reset() {
+ *x = DeleteClusterResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[23]
+ mi := &file_api_v1_k8s_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupsResponse) String() string {
+func (x *DeleteClusterResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupsResponse) ProtoMessage() {}
+func (*DeleteClusterResponse) ProtoMessage() {}
-func (x *GetNodeGroupsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[23]
+func (x *DeleteClusterResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1934,44 +1997,43 @@ func (x *GetNodeGroupsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupsResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *GetNodeGroupsResponse) GetNodeGroups() []*NodeGroup {
- if x != nil {
- return x.NodeGroups
- }
- return nil
+// Deprecated: Use DeleteClusterResponse.ProtoReflect.Descriptor instead.
+func (*DeleteClusterResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{19}
}
-// GetAllNodeGroupsResponse contains the list of all node groups for a specific team.
-type GetAllNodeGroupsResponse struct {
+// UpdateClusterRequest is used to update the configuration of an existing cluster.
+// only certain fields can be updated, such as name
+type UpdateClusterRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodeGroupMap map[string]*NodeGroup `protobuf:"bytes,1,rep,name=node_group_map,json=nodeGroupMap,proto3" json:"node_group_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of clusterId+nodeGroupName to NodeGroup.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // Updated cluster details.
+ CpuCostPerHour float64 `protobuf:"fixed64,4,opt,name=cpu_cost_per_hour,json=cpuCostPerHour,proto3" json:"cpu_cost_per_hour,omitempty"` // Estimated CPU cost per hour for one vcpu.
+ MemoryCostPerHour float64 `protobuf:"fixed64,5,opt,name=memory_cost_per_hour,json=memoryCostPerHour,proto3" json:"memory_cost_per_hour,omitempty"` // Estimated memory cost per hour for one GiB of memory.
+ GpuCostPerHour float64 `protobuf:"fixed64,6,opt,name=gpu_cost_per_hour,json=gpuCostPerHour,proto3" json:"gpu_cost_per_hour,omitempty"` // Estimate GPU cost per hour for one GPU.
}
-func (x *GetAllNodeGroupsResponse) Reset() {
- *x = GetAllNodeGroupsResponse{}
+func (x *UpdateClusterRequest) Reset() {
+ *x = UpdateClusterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[24]
+ mi := &file_api_v1_k8s_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAllNodeGroupsResponse) String() string {
+func (x *UpdateClusterRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAllNodeGroupsResponse) ProtoMessage() {}
+func (*UpdateClusterRequest) ProtoMessage() {}
-func (x *GetAllNodeGroupsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[24]
+func (x *UpdateClusterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1982,43 +2044,79 @@ func (x *GetAllNodeGroupsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetAllNodeGroupsResponse.ProtoReflect.Descriptor instead.
-func (*GetAllNodeGroupsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{24}
+// Deprecated: Use UpdateClusterRequest.ProtoReflect.Descriptor instead.
+func (*UpdateClusterRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{20}
}
-func (x *GetAllNodeGroupsResponse) GetNodeGroupMap() map[string]*NodeGroup {
+func (x *UpdateClusterRequest) GetTeamId() string {
if x != nil {
- return x.NodeGroupMap
+ return x.TeamId
}
- return nil
-}
-
-type NodeGroupSet struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- NodeGroups []*NodeGroup `protobuf:"bytes,1,rep,name=node_groups,json=nodeGroups,proto3" json:"node_groups,omitempty"` // List of node groups.
+ return ""
}
-func (x *NodeGroupSet) Reset() {
- *x = NodeGroupSet{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *UpdateClusterRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
}
+ return ""
}
-func (x *NodeGroupSet) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *UpdateClusterRequest) GetClusterName() string {
+ if x != nil {
+ return x.ClusterName
+ }
+ return ""
}
-func (*NodeGroupSet) ProtoMessage() {}
+func (x *UpdateClusterRequest) GetCpuCostPerHour() float64 {
+ if x != nil {
+ return x.CpuCostPerHour
+ }
+ return 0
+}
-func (x *NodeGroupSet) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[25]
+func (x *UpdateClusterRequest) GetMemoryCostPerHour() float64 {
+ if x != nil {
+ return x.MemoryCostPerHour
+ }
+ return 0
+}
+
+func (x *UpdateClusterRequest) GetGpuCostPerHour() float64 {
+ if x != nil {
+ return x.GpuCostPerHour
+ }
+ return 0
+}
+
+// UpdateClusterResponse is the response for an update cluster request.
+type UpdateClusterResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Updated cluster details.
+}
+
+func (x *UpdateClusterResponse) Reset() {
+ *x = UpdateClusterResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateClusterResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateClusterResponse) ProtoMessage() {}
+
+func (x *UpdateClusterResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2029,48 +2127,45 @@ func (x *NodeGroupSet) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeGroupSet.ProtoReflect.Descriptor instead.
-func (*NodeGroupSet) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{25}
+// Deprecated: Use UpdateClusterResponse.ProtoReflect.Descriptor instead.
+func (*UpdateClusterResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{21}
}
-func (x *NodeGroupSet) GetNodeGroups() []*NodeGroup {
+func (x *UpdateClusterResponse) GetCluster() *Cluster {
if x != nil {
- return x.NodeGroups
+ return x.Cluster
}
return nil
}
-// GetNodeGroupsUtilizationRequest is used to fetch timeseries utilization data for node groups for a specific cluster.
-type GetNodeGroupsUtilizationRequest struct {
+// GetResourcesResponse is the response for getting k8s resources.
+type GetResourcesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
- BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
+ WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // Return list of resources requested
+ Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination information
}
-func (x *GetNodeGroupsUtilizationRequest) Reset() {
- *x = GetNodeGroupsUtilizationRequest{}
+func (x *GetResourcesResponse) Reset() {
+ *x = GetResourcesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[26]
+ mi := &file_api_v1_k8s_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupsUtilizationRequest) String() string {
+func (x *GetResourcesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupsUtilizationRequest) ProtoMessage() {}
+func (*GetResourcesResponse) ProtoMessage() {}
-func (x *GetNodeGroupsUtilizationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[26]
+func (x *GetResourcesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2081,75 +2176,53 @@ func (x *GetNodeGroupsUtilizationRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupsUtilizationRequest.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupsUtilizationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *GetNodeGroupsUtilizationRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *GetNodeGroupsUtilizationRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
+// Deprecated: Use GetResourcesResponse.ProtoReflect.Descriptor instead.
+func (*GetResourcesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{22}
}
-func (x *GetNodeGroupsUtilizationRequest) GetStartTime() *timestamppb.Timestamp {
+func (x *GetResourcesResponse) GetWorkloadItems() []*WorkloadItem {
if x != nil {
- return x.StartTime
+ return x.WorkloadItems
}
return nil
}
-func (x *GetNodeGroupsUtilizationRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *GetResourcesResponse) GetPagination() *Pagination {
if x != nil {
- return x.EndTime
+ return x.Pagination
}
return nil
}
-func (x *GetNodeGroupsUtilizationRequest) GetBucketSize() int32 {
- if x != nil && x.BucketSize != nil {
- return *x.BucketSize
- }
- return 0
-}
-
-// GetNodeGroupsResponse contains the list of node groups for a specific cluster.
-type GetNodeGroupsUtilizationResponse struct {
+// GetResourceFilterOptionsRequest asks for the distinct filterable field values for a resource kind.
+type GetResourceFilterOptionsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodeGroupToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,1,rep,name=node_group_to_util_metrics,json=nodeGroupToUtilMetrics,proto3" json:"node_group_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- InstanceTypeToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,6,rep,name=instance_type_to_util_metrics,json=instanceTypeToUtilMetrics,proto3" json:"instance_type_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- ReservationTypeToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,11,rep,name=reservation_type_to_util_metrics,json=reservationTypeToUtilMetrics,proto3" json:"reservation_type_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- LogicalAzToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,16,rep,name=logical_az_to_util_metrics,json=logicalAzToUtilMetrics,proto3" json:"logical_az_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
+ Kind K8SObjectKind `protobuf:"varint,3,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"`
}
-func (x *GetNodeGroupsUtilizationResponse) Reset() {
- *x = GetNodeGroupsUtilizationResponse{}
+func (x *GetResourceFilterOptionsRequest) Reset() {
+ *x = GetResourceFilterOptionsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[27]
+ mi := &file_api_v1_k8s_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupsUtilizationResponse) String() string {
+func (x *GetResourceFilterOptionsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupsUtilizationResponse) ProtoMessage() {}
+func (*GetResourceFilterOptionsRequest) ProtoMessage() {}
-func (x *GetNodeGroupsUtilizationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[27]
+func (x *GetResourceFilterOptionsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2160,81 +2233,58 @@ func (x *GetNodeGroupsUtilizationResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupsUtilizationResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupsUtilizationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *GetNodeGroupsUtilizationResponse) GetNodeGroupToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
- if x != nil {
- return x.NodeGroupToUtilMetrics
- }
- return nil
+// Deprecated: Use GetResourceFilterOptionsRequest.ProtoReflect.Descriptor instead.
+func (*GetResourceFilterOptionsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{23}
}
-func (x *GetNodeGroupsUtilizationResponse) GetInstanceTypeToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
+func (x *GetResourceFilterOptionsRequest) GetTeamId() string {
if x != nil {
- return x.InstanceTypeToUtilMetrics
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *GetNodeGroupsUtilizationResponse) GetReservationTypeToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
- if x != nil {
- return x.ReservationTypeToUtilMetrics
+func (x *GetResourceFilterOptionsRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
}
- return nil
+ return ""
}
-func (x *GetNodeGroupsUtilizationResponse) GetLogicalAzToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
+func (x *GetResourceFilterOptionsRequest) GetKind() K8SObjectKind {
if x != nil {
- return x.LogicalAzToUtilMetrics
+ return x.Kind
}
- return nil
+ return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
}
-type NodeGroupMetric struct {
+// GetResourceFilterOptionsResponse returns the available filter options per field.
+type GetResourceFilterOptionsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodeCount int32 `protobuf:"varint,1,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
- MaxConcurrentNodeCount int32 `protobuf:"varint,2,opt,name=max_concurrent_node_count,json=maxConcurrentNodeCount,proto3" json:"max_concurrent_node_count,omitempty"`
- CapacityCpu int64 `protobuf:"varint,11,opt,name=capacity_cpu,json=capacityCpu,proto3" json:"capacity_cpu,omitempty"` // millicores
- CapacityMemory int64 `protobuf:"varint,12,opt,name=capacity_memory,json=capacityMemory,proto3" json:"capacity_memory,omitempty"` // bytes
- CapacityGpuVram int64 `protobuf:"varint,13,opt,name=capacity_gpu_vram,json=capacityGpuVram,proto3" json:"capacity_gpu_vram,omitempty"` // bytes
- CapacityGpuDevices int64 `protobuf:"varint,14,opt,name=capacity_gpu_devices,json=capacityGpuDevices,proto3" json:"capacity_gpu_devices,omitempty"` // number
- AggrCpuReq int64 `protobuf:"varint,21,opt,name=aggr_cpu_req,json=aggrCpuReq,proto3" json:"aggr_cpu_req,omitempty"` // millicores
- AggrMemoryReq int64 `protobuf:"varint,22,opt,name=aggr_memory_req,json=aggrMemoryReq,proto3" json:"aggr_memory_req,omitempty"` // bytes
- AggrGpuReq int64 `protobuf:"varint,23,opt,name=aggr_gpu_req,json=aggrGpuReq,proto3" json:"aggr_gpu_req,omitempty"` // number
- UtilCpuAvgUsage float32 `protobuf:"fixed32,31,opt,name=util_cpu_avg_usage,json=utilCpuAvgUsage,proto3" json:"util_cpu_avg_usage,omitempty"` // millicores
- UtilMemoryAvgUsage float32 `protobuf:"fixed32,32,opt,name=util_memory_avg_usage,json=utilMemoryAvgUsage,proto3" json:"util_memory_avg_usage,omitempty"` // bytes
- UtilGpuVramAvgUsage float32 `protobuf:"fixed32,33,opt,name=util_gpu_vram_avg_usage,json=utilGpuVramAvgUsage,proto3" json:"util_gpu_vram_avg_usage,omitempty"` // bytes
- UtilGpuDevice float32 `protobuf:"fixed32,34,opt,name=util_gpu_device,json=utilGpuDevice,proto3" json:"util_gpu_device,omitempty"` // pct
- HourlyCost *money.Money `protobuf:"bytes,50,opt,name=hourly_cost,json=hourlyCost,proto3" json:"hourly_cost,omitempty"` // average hourly cost within the time bucket
- HourlyCpuCost *money.Money `protobuf:"bytes,51,opt,name=hourly_cpu_cost,json=hourlyCpuCost,proto3" json:"hourly_cpu_cost,omitempty"` // cost for cpu
- HourlyMemoryCost *money.Money `protobuf:"bytes,52,opt,name=hourly_memory_cost,json=hourlyMemoryCost,proto3" json:"hourly_memory_cost,omitempty"` // cost for memory
- HourlyGpuCost *money.Money `protobuf:"bytes,53,opt,name=hourly_gpu_cost,json=hourlyGpuCost,proto3" json:"hourly_gpu_cost,omitempty"` // cost for gpu
- BucketTime *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=bucket_time,json=bucketTime,proto3" json:"bucket_time,omitempty"`
+ Options []*ResourceFilterFieldOptions `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"`
}
-func (x *NodeGroupMetric) Reset() {
- *x = NodeGroupMetric{}
+func (x *GetResourceFilterOptionsResponse) Reset() {
+ *x = GetResourceFilterOptionsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[28]
+ mi := &file_api_v1_k8s_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeGroupMetric) String() string {
+func (x *GetResourceFilterOptionsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeGroupMetric) ProtoMessage() {}
+func (*GetResourceFilterOptionsResponse) ProtoMessage() {}
-func (x *NodeGroupMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[28]
+func (x *GetResourceFilterOptionsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2245,163 +2295,1581 @@ func (x *NodeGroupMetric) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeGroupMetric.ProtoReflect.Descriptor instead.
-func (*NodeGroupMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{28}
+// Deprecated: Use GetResourceFilterOptionsResponse.ProtoReflect.Descriptor instead.
+func (*GetResourceFilterOptionsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{24}
}
-func (x *NodeGroupMetric) GetNodeCount() int32 {
+func (x *GetResourceFilterOptionsResponse) GetOptions() []*ResourceFilterFieldOptions {
if x != nil {
- return x.NodeCount
+ return x.Options
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetMaxConcurrentNodeCount() int32 {
- if x != nil {
- return x.MaxConcurrentNodeCount
- }
- return 0
+// CreateClusterRequest is used to create a new cluster.
+type CreateClusterRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // Name of the new cluster.
}
-func (x *NodeGroupMetric) GetCapacityCpu() int64 {
- if x != nil {
- return x.CapacityCpu
+func (x *CreateClusterRequest) Reset() {
+ *x = CreateClusterRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *NodeGroupMetric) GetCapacityMemory() int64 {
- if x != nil {
- return x.CapacityMemory
- }
- return 0
+func (x *CreateClusterRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *NodeGroupMetric) GetCapacityGpuVram() int64 {
- if x != nil {
- return x.CapacityGpuVram
+func (*CreateClusterRequest) ProtoMessage() {}
+
+func (x *CreateClusterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *NodeGroupMetric) GetCapacityGpuDevices() int64 {
+// Deprecated: Use CreateClusterRequest.ProtoReflect.Descriptor instead.
+func (*CreateClusterRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *CreateClusterRequest) GetTeamId() string {
if x != nil {
- return x.CapacityGpuDevices
+ return x.TeamId
}
- return 0
+ return ""
}
-func (x *NodeGroupMetric) GetAggrCpuReq() int64 {
+func (x *CreateClusterRequest) GetClusterName() string {
+ if x != nil {
+ return x.ClusterName
+ }
+ return ""
+}
+
+// CreateClusterResponse is the response for a create cluster request.
+type CreateClusterResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Details of the created cluster.
+ Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` // Token for the new cluster.
+}
+
+func (x *CreateClusterResponse) Reset() {
+ *x = CreateClusterResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateClusterResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateClusterResponse) ProtoMessage() {}
+
+func (x *CreateClusterResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateClusterResponse.ProtoReflect.Descriptor instead.
+func (*CreateClusterResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *CreateClusterResponse) GetCluster() *Cluster {
+ if x != nil {
+ return x.Cluster
+ }
+ return nil
+}
+
+func (x *CreateClusterResponse) GetToken() string {
+ if x != nil {
+ return x.Token
+ }
+ return ""
+}
+
+// ResetClusterTokenRequest is used to reset the token for a cluster.
+type ResetClusterTokenRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+}
+
+func (x *ResetClusterTokenRequest) Reset() {
+ *x = ResetClusterTokenRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ResetClusterTokenRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResetClusterTokenRequest) ProtoMessage() {}
+
+func (x *ResetClusterTokenRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResetClusterTokenRequest.ProtoReflect.Descriptor instead.
+func (*ResetClusterTokenRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *ResetClusterTokenRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ResetClusterTokenRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+// ResetClusterTokenResponse is the response for a reset cluster token request.
+type ResetClusterTokenResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` // Token for the new cluster.
+}
+
+func (x *ResetClusterTokenResponse) Reset() {
+ *x = ResetClusterTokenResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ResetClusterTokenResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResetClusterTokenResponse) ProtoMessage() {}
+
+func (x *ResetClusterTokenResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResetClusterTokenResponse.ProtoReflect.Descriptor instead.
+func (*ResetClusterTokenResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *ResetClusterTokenResponse) GetToken() string {
+ if x != nil {
+ return x.Token
+ }
+ return ""
+}
+
+// GetNodeGroupsRequest is used to fetch node groups for a specific cluster.
+type GetNodeGroupsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
+ ShowDeleted bool `protobuf:"varint,21,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"`
+}
+
+func (x *GetNodeGroupsRequest) Reset() {
+ *x = GetNodeGroupsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeGroupsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeGroupsRequest) ProtoMessage() {}
+
+func (x *GetNodeGroupsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeGroupsRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *GetNodeGroupsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetNodeGroupsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetNodeGroupsRequest) GetStartTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.StartTime
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsRequest) GetEndTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EndTime
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsRequest) GetBucketSize() int32 {
+ if x != nil && x.BucketSize != nil {
+ return *x.BucketSize
+ }
+ return 0
+}
+
+func (x *GetNodeGroupsRequest) GetShowDeleted() bool {
+ if x != nil {
+ return x.ShowDeleted
+ }
+ return false
+}
+
+// GetAllNodeGroupsRequest is used to fetch all node groups for a specific team.
+type GetAllNodeGroupsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+}
+
+func (x *GetAllNodeGroupsRequest) Reset() {
+ *x = GetAllNodeGroupsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetAllNodeGroupsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetAllNodeGroupsRequest) ProtoMessage() {}
+
+func (x *GetAllNodeGroupsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetAllNodeGroupsRequest.ProtoReflect.Descriptor instead.
+func (*GetAllNodeGroupsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *GetAllNodeGroupsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+// GetNodeGroupsResponse contains the list of node groups for a specific cluster.
+type GetNodeGroupsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeGroups []*NodeGroup `protobuf:"bytes,1,rep,name=node_groups,json=nodeGroups,proto3" json:"node_groups,omitempty"` // List of node groups.
+}
+
+func (x *GetNodeGroupsResponse) Reset() {
+ *x = GetNodeGroupsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeGroupsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeGroupsResponse) ProtoMessage() {}
+
+func (x *GetNodeGroupsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeGroupsResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *GetNodeGroupsResponse) GetNodeGroups() []*NodeGroup {
+ if x != nil {
+ return x.NodeGroups
+ }
+ return nil
+}
+
+// GetAllNodeGroupsResponse contains the list of all node groups for a specific team.
+type GetAllNodeGroupsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeGroupMap map[string]*NodeGroup `protobuf:"bytes,1,rep,name=node_group_map,json=nodeGroupMap,proto3" json:"node_group_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of clusterId+nodeGroupName to NodeGroup.
+}
+
+func (x *GetAllNodeGroupsResponse) Reset() {
+ *x = GetAllNodeGroupsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetAllNodeGroupsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetAllNodeGroupsResponse) ProtoMessage() {}
+
+func (x *GetAllNodeGroupsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[32]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetAllNodeGroupsResponse.ProtoReflect.Descriptor instead.
+func (*GetAllNodeGroupsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *GetAllNodeGroupsResponse) GetNodeGroupMap() map[string]*NodeGroup {
+ if x != nil {
+ return x.NodeGroupMap
+ }
+ return nil
+}
+
+type NodeGroupSet struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeGroups []*NodeGroup `protobuf:"bytes,1,rep,name=node_groups,json=nodeGroups,proto3" json:"node_groups,omitempty"` // List of node groups.
+}
+
+func (x *NodeGroupSet) Reset() {
+ *x = NodeGroupSet{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeGroupSet) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeGroupSet) ProtoMessage() {}
+
+func (x *NodeGroupSet) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[33]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeGroupSet.ProtoReflect.Descriptor instead.
+func (*NodeGroupSet) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *NodeGroupSet) GetNodeGroups() []*NodeGroup {
+ if x != nil {
+ return x.NodeGroups
+ }
+ return nil
+}
+
+// GetNodeGroupsUtilizationRequest is used to fetch timeseries utilization data for node groups for a specific cluster.
+type GetNodeGroupsUtilizationRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ BucketSize *int32 `protobuf:"varint,13,opt,name=bucket_size,json=bucketSize,proto3,oneof" json:"bucket_size,omitempty"`
+}
+
+func (x *GetNodeGroupsUtilizationRequest) Reset() {
+ *x = GetNodeGroupsUtilizationRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[34]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeGroupsUtilizationRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeGroupsUtilizationRequest) ProtoMessage() {}
+
+func (x *GetNodeGroupsUtilizationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[34]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeGroupsUtilizationRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupsUtilizationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *GetNodeGroupsUtilizationRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetNodeGroupsUtilizationRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetNodeGroupsUtilizationRequest) GetStartTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.StartTime
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsUtilizationRequest) GetEndTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EndTime
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsUtilizationRequest) GetBucketSize() int32 {
+ if x != nil && x.BucketSize != nil {
+ return *x.BucketSize
+ }
+ return 0
+}
+
+// GetNodeGroupsResponse contains the list of node groups for a specific cluster.
+type GetNodeGroupsUtilizationResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeGroupToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,1,rep,name=node_group_to_util_metrics,json=nodeGroupToUtilMetrics,proto3" json:"node_group_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ InstanceTypeToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,6,rep,name=instance_type_to_util_metrics,json=instanceTypeToUtilMetrics,proto3" json:"instance_type_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ ReservationTypeToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,11,rep,name=reservation_type_to_util_metrics,json=reservationTypeToUtilMetrics,proto3" json:"reservation_type_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ LogicalAzToUtilMetrics map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics `protobuf:"bytes,16,rep,name=logical_az_to_util_metrics,json=logicalAzToUtilMetrics,proto3" json:"logical_az_to_util_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *GetNodeGroupsUtilizationResponse) Reset() {
+ *x = GetNodeGroupsUtilizationResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[35]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeGroupsUtilizationResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeGroupsUtilizationResponse) ProtoMessage() {}
+
+func (x *GetNodeGroupsUtilizationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[35]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeGroupsUtilizationResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupsUtilizationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *GetNodeGroupsUtilizationResponse) GetNodeGroupToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
+ if x != nil {
+ return x.NodeGroupToUtilMetrics
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsUtilizationResponse) GetInstanceTypeToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
+ if x != nil {
+ return x.InstanceTypeToUtilMetrics
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsUtilizationResponse) GetReservationTypeToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
+ if x != nil {
+ return x.ReservationTypeToUtilMetrics
+ }
+ return nil
+}
+
+func (x *GetNodeGroupsUtilizationResponse) GetLogicalAzToUtilMetrics() map[string]*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics {
+ if x != nil {
+ return x.LogicalAzToUtilMetrics
+ }
+ return nil
+}
+
+type NodeGroupMetric struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeCount int32 `protobuf:"varint,1,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
+ MaxConcurrentNodeCount int32 `protobuf:"varint,2,opt,name=max_concurrent_node_count,json=maxConcurrentNodeCount,proto3" json:"max_concurrent_node_count,omitempty"`
+ CapacityCpu int64 `protobuf:"varint,11,opt,name=capacity_cpu,json=capacityCpu,proto3" json:"capacity_cpu,omitempty"` // millicores
+ CapacityMemory int64 `protobuf:"varint,12,opt,name=capacity_memory,json=capacityMemory,proto3" json:"capacity_memory,omitempty"` // bytes
+ CapacityGpuVram int64 `protobuf:"varint,13,opt,name=capacity_gpu_vram,json=capacityGpuVram,proto3" json:"capacity_gpu_vram,omitempty"` // bytes
+ CapacityGpuDevices int64 `protobuf:"varint,14,opt,name=capacity_gpu_devices,json=capacityGpuDevices,proto3" json:"capacity_gpu_devices,omitempty"` // number
+ AggrCpuReq int64 `protobuf:"varint,21,opt,name=aggr_cpu_req,json=aggrCpuReq,proto3" json:"aggr_cpu_req,omitempty"` // millicores
+ AggrMemoryReq int64 `protobuf:"varint,22,opt,name=aggr_memory_req,json=aggrMemoryReq,proto3" json:"aggr_memory_req,omitempty"` // bytes
+ AggrGpuReq int64 `protobuf:"varint,23,opt,name=aggr_gpu_req,json=aggrGpuReq,proto3" json:"aggr_gpu_req,omitempty"` // number
+ UtilCpuAvgUsage float32 `protobuf:"fixed32,31,opt,name=util_cpu_avg_usage,json=utilCpuAvgUsage,proto3" json:"util_cpu_avg_usage,omitempty"` // millicores
+ UtilMemoryAvgUsage float32 `protobuf:"fixed32,32,opt,name=util_memory_avg_usage,json=utilMemoryAvgUsage,proto3" json:"util_memory_avg_usage,omitempty"` // bytes
+ UtilGpuVramAvgUsage float32 `protobuf:"fixed32,33,opt,name=util_gpu_vram_avg_usage,json=utilGpuVramAvgUsage,proto3" json:"util_gpu_vram_avg_usage,omitempty"` // bytes
+ UtilGpuDevice float32 `protobuf:"fixed32,34,opt,name=util_gpu_device,json=utilGpuDevice,proto3" json:"util_gpu_device,omitempty"` // pct
+ HourlyCost *money.Money `protobuf:"bytes,50,opt,name=hourly_cost,json=hourlyCost,proto3" json:"hourly_cost,omitempty"` // average hourly cost within the time bucket
+ HourlyCpuCost *money.Money `protobuf:"bytes,51,opt,name=hourly_cpu_cost,json=hourlyCpuCost,proto3" json:"hourly_cpu_cost,omitempty"` // cost for cpu
+ HourlyMemoryCost *money.Money `protobuf:"bytes,52,opt,name=hourly_memory_cost,json=hourlyMemoryCost,proto3" json:"hourly_memory_cost,omitempty"` // cost for memory
+ HourlyGpuCost *money.Money `protobuf:"bytes,53,opt,name=hourly_gpu_cost,json=hourlyGpuCost,proto3" json:"hourly_gpu_cost,omitempty"` // cost for gpu
+ BucketTime *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=bucket_time,json=bucketTime,proto3" json:"bucket_time,omitempty"`
+}
+
+func (x *NodeGroupMetric) Reset() {
+ *x = NodeGroupMetric{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[36]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeGroupMetric) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeGroupMetric) ProtoMessage() {}
+
+func (x *NodeGroupMetric) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[36]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeGroupMetric.ProtoReflect.Descriptor instead.
+func (*NodeGroupMetric) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *NodeGroupMetric) GetNodeCount() int32 {
+ if x != nil {
+ return x.NodeCount
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetMaxConcurrentNodeCount() int32 {
+ if x != nil {
+ return x.MaxConcurrentNodeCount
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetCapacityCpu() int64 {
+ if x != nil {
+ return x.CapacityCpu
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetCapacityMemory() int64 {
+ if x != nil {
+ return x.CapacityMemory
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetCapacityGpuVram() int64 {
+ if x != nil {
+ return x.CapacityGpuVram
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetCapacityGpuDevices() int64 {
+ if x != nil {
+ return x.CapacityGpuDevices
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetAggrCpuReq() int64 {
if x != nil {
return x.AggrCpuReq
}
- return 0
+ return 0
+}
+
+func (x *NodeGroupMetric) GetAggrMemoryReq() int64 {
+ if x != nil {
+ return x.AggrMemoryReq
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetAggrGpuReq() int64 {
+ if x != nil {
+ return x.AggrGpuReq
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetUtilCpuAvgUsage() float32 {
+ if x != nil {
+ return x.UtilCpuAvgUsage
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetUtilMemoryAvgUsage() float32 {
+ if x != nil {
+ return x.UtilMemoryAvgUsage
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetUtilGpuVramAvgUsage() float32 {
+ if x != nil {
+ return x.UtilGpuVramAvgUsage
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetUtilGpuDevice() float32 {
+ if x != nil {
+ return x.UtilGpuDevice
+ }
+ return 0
+}
+
+func (x *NodeGroupMetric) GetHourlyCost() *money.Money {
+ if x != nil {
+ return x.HourlyCost
+ }
+ return nil
+}
+
+func (x *NodeGroupMetric) GetHourlyCpuCost() *money.Money {
+ if x != nil {
+ return x.HourlyCpuCost
+ }
+ return nil
+}
+
+func (x *NodeGroupMetric) GetHourlyMemoryCost() *money.Money {
+ if x != nil {
+ return x.HourlyMemoryCost
+ }
+ return nil
+}
+
+func (x *NodeGroupMetric) GetHourlyGpuCost() *money.Money {
+ if x != nil {
+ return x.HourlyGpuCost
+ }
+ return nil
+}
+
+func (x *NodeGroupMetric) GetBucketTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.BucketTime
+ }
+ return nil
+}
+
+// GetNodeGroupResponse contains node group for a specific cluster.
+type GetNodeGroupResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeGroup *NodeGroup `protobuf:"bytes,1,opt,name=node_group,json=nodeGroup,proto3" json:"node_group,omitempty"` // Node Group
+}
+
+func (x *GetNodeGroupResponse) Reset() {
+ *x = GetNodeGroupResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[37]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeGroupResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeGroupResponse) ProtoMessage() {}
+
+func (x *GetNodeGroupResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[37]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeGroupResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{37}
+}
+
+func (x *GetNodeGroupResponse) GetNodeGroup() *NodeGroup {
+ if x != nil {
+ return x.NodeGroup
+ }
+ return nil
+}
+
+// GetClusterResponse contains details of a specific cluster for a team.
+type GetClusterResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Details of the cluster.
+}
+
+func (x *GetClusterResponse) Reset() {
+ *x = GetClusterResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[38]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetClusterResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClusterResponse) ProtoMessage() {}
+
+func (x *GetClusterResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[38]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClusterResponse.ProtoReflect.Descriptor instead.
+func (*GetClusterResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *GetClusterResponse) GetCluster() *Cluster {
+ if x != nil {
+ return x.Cluster
+ }
+ return nil
+}
+
+// GetClustersResponse contains the list of clusters and aggregated metrics for a team.
+type GetClustersResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // List of clusters.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,2,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics across clusters.
+ CostInfo *CostInfo `protobuf:"bytes,3,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information across clusters.
+ NodeInfo *NodeInfo `protobuf:"bytes,4,opt,name=node_info,json=nodeInfo,proto3" json:"node_info,omitempty"` // Aggregated node information across clusters.
+ CostDataPoints []*CostDataPoint `protobuf:"bytes,5,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points.
+ ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,6,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource utilization data points.
+}
+
+func (x *GetClustersResponse) Reset() {
+ *x = GetClustersResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[39]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetClustersResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClustersResponse) ProtoMessage() {}
+
+func (x *GetClustersResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[39]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClustersResponse.ProtoReflect.Descriptor instead.
+func (*GetClustersResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *GetClustersResponse) GetClusters() []*Cluster {
+ if x != nil {
+ return x.Clusters
+ }
+ return nil
+}
+
+func (x *GetClustersResponse) GetResourceMetrics() *ResourceMetrics {
+ if x != nil {
+ return x.ResourceMetrics
+ }
+ return nil
+}
+
+func (x *GetClustersResponse) GetCostInfo() *CostInfo {
+ if x != nil {
+ return x.CostInfo
+ }
+ return nil
+}
+
+func (x *GetClustersResponse) GetNodeInfo() *NodeInfo {
+ if x != nil {
+ return x.NodeInfo
+ }
+ return nil
+}
+
+func (x *GetClustersResponse) GetCostDataPoints() []*CostDataPoint {
+ if x != nil {
+ return x.CostDataPoints
+ }
+ return nil
+}
+
+func (x *GetClustersResponse) GetResourceDataPoints() []*ResourceDataPoint {
+ if x != nil {
+ return x.ResourceDataPoints
+ }
+ return nil
+}
+
+// ListClustersResponse contains the paginated list of clusters for a team.
+// Deprecated: Use GetClustersResponse instead.
+//
+// Deprecated: Marked as deprecated in api/v1/k8s.proto.
+type ListClustersResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // List of clusters.
+ Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination information.
+}
+
+func (x *ListClustersResponse) Reset() {
+ *x = ListClustersResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[40]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListClustersResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListClustersResponse) ProtoMessage() {}
+
+func (x *ListClustersResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[40]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListClustersResponse.ProtoReflect.Descriptor instead.
+func (*ListClustersResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *ListClustersResponse) GetClusters() []*Cluster {
+ if x != nil {
+ return x.Clusters
+ }
+ return nil
+}
+
+func (x *ListClustersResponse) GetPagination() *Pagination {
+ if x != nil {
+ return x.Pagination
+ }
+ return nil
+}
+
+// GetNodeResponse contains details and metrics for a specific node in a cluster.
+type GetNodeResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the node.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,2,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource metrics for the node.
+ CostInfo *CostInfo `protobuf:"bytes,3,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost details for the node.
+ CostDataPoints []*CostDataPoint `protobuf:"bytes,4,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the node.
+ ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,5,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the node.
+}
+
+func (x *GetNodeResponse) Reset() {
+ *x = GetNodeResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[41]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeResponse) ProtoMessage() {}
+
+func (x *GetNodeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[41]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *GetNodeResponse) GetNode() *Node {
+ if x != nil {
+ return x.Node
+ }
+ return nil
+}
+
+func (x *GetNodeResponse) GetResourceMetrics() *ResourceMetrics {
+ if x != nil {
+ return x.ResourceMetrics
+ }
+ return nil
+}
+
+func (x *GetNodeResponse) GetCostInfo() *CostInfo {
+ if x != nil {
+ return x.CostInfo
+ }
+ return nil
+}
+
+func (x *GetNodeResponse) GetCostDataPoints() []*CostDataPoint {
+ if x != nil {
+ return x.CostDataPoints
+ }
+ return nil
+}
+
+func (x *GetNodeResponse) GetResourceDataPoints() []*ResourceDataPoint {
+ if x != nil {
+ return x.ResourceDataPoints
+ }
+ return nil
+}
+
+// GetWorkloadsResponse contains a list of workloads and aggregated metrics for a cluster.
+type GetWorkloadsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // List of workload hierarchy items.
+ CostInfo *CostInfo `protobuf:"bytes,2,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information for workloads.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,3,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics for workloads.
+ ResourceSummary *ResourceSummary `protobuf:"bytes,4,opt,name=resource_summary,json=resourceSummary,proto3" json:"resource_summary,omitempty"` // Summary of resource counts and pod statuses.
+}
+
+func (x *GetWorkloadsResponse) Reset() {
+ *x = GetWorkloadsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[42]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadsResponse) ProtoMessage() {}
+
+func (x *GetWorkloadsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[42]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadsResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *GetWorkloadsResponse) GetWorkloadItems() []*WorkloadItem {
+ if x != nil {
+ return x.WorkloadItems
+ }
+ return nil
+}
+
+func (x *GetWorkloadsResponse) GetCostInfo() *CostInfo {
+ if x != nil {
+ return x.CostInfo
+ }
+ return nil
+}
+
+func (x *GetWorkloadsResponse) GetResourceMetrics() *ResourceMetrics {
+ if x != nil {
+ return x.ResourceMetrics
+ }
+ return nil
+}
+
+func (x *GetWorkloadsResponse) GetResourceSummary() *ResourceSummary {
+ if x != nil {
+ return x.ResourceSummary
+ }
+ return nil
+}
+
+// GetWorkloadResponse contains details and metrics for a specific workload in a cluster.
+type GetWorkloadResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ WorkloadItem *WorkloadItem `protobuf:"bytes,1,opt,name=workload_item,json=workloadItem,proto3" json:"workload_item,omitempty"` // Details of the workload hierarchy.
+ CostInfo *CostInfo `protobuf:"bytes,2,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information for the workload.
+ ResourceMetrics *ResourceMetrics `protobuf:"bytes,3,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics for the workload.
+ ResourceSummary *ResourceSummary `protobuf:"bytes,4,opt,name=resource_summary,json=resourceSummary,proto3" json:"resource_summary,omitempty"` // Summary of resource counts and pod statuses for the workload.
+ CostDataPoints []*CostDataPoint `protobuf:"bytes,5,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the workload.
+ ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,6,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the workload.
+}
+
+func (x *GetWorkloadResponse) Reset() {
+ *x = GetWorkloadResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[43]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadResponse) ProtoMessage() {}
+
+func (x *GetWorkloadResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[43]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-func (x *NodeGroupMetric) GetAggrMemoryReq() int64 {
+// Deprecated: Use GetWorkloadResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *GetWorkloadResponse) GetWorkloadItem() *WorkloadItem {
if x != nil {
- return x.AggrMemoryReq
+ return x.WorkloadItem
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetAggrGpuReq() int64 {
+func (x *GetWorkloadResponse) GetCostInfo() *CostInfo {
if x != nil {
- return x.AggrGpuReq
+ return x.CostInfo
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetUtilCpuAvgUsage() float32 {
+func (x *GetWorkloadResponse) GetResourceMetrics() *ResourceMetrics {
if x != nil {
- return x.UtilCpuAvgUsage
+ return x.ResourceMetrics
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetUtilMemoryAvgUsage() float32 {
+func (x *GetWorkloadResponse) GetResourceSummary() *ResourceSummary {
if x != nil {
- return x.UtilMemoryAvgUsage
+ return x.ResourceSummary
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetUtilGpuVramAvgUsage() float32 {
+func (x *GetWorkloadResponse) GetCostDataPoints() []*CostDataPoint {
if x != nil {
- return x.UtilGpuVramAvgUsage
+ return x.CostDataPoints
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetUtilGpuDevice() float32 {
+func (x *GetWorkloadResponse) GetResourceDataPoints() []*ResourceDataPoint {
if x != nil {
- return x.UtilGpuDevice
+ return x.ResourceDataPoints
}
- return 0
+ return nil
}
-func (x *NodeGroupMetric) GetHourlyCost() *money.Money {
+// GetWorkloadContainerPercentilesRequest requests per-container percentile metrics for a workload.
+type GetWorkloadContainerPercentilesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) Reset() {
+ *x = GetWorkloadContainerPercentilesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[44]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadContainerPercentilesRequest) ProtoMessage() {}
+
+func (x *GetWorkloadContainerPercentilesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[44]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadContainerPercentilesRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadContainerPercentilesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) GetTeamId() string {
if x != nil {
- return x.HourlyCost
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerPercentilesRequest) GetStartTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.StartTime
}
return nil
}
-func (x *NodeGroupMetric) GetHourlyCpuCost() *money.Money {
+func (x *GetWorkloadContainerPercentilesRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
- return x.HourlyCpuCost
+ return x.EndTime
}
return nil
}
-func (x *NodeGroupMetric) GetHourlyMemoryCost() *money.Money {
+// GetWorkloadContainerPercentilesResponse returns per-container percentile statistics.
+type GetWorkloadContainerPercentilesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Containers []*ContainerPercentileSummary `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
+}
+
+func (x *GetWorkloadContainerPercentilesResponse) Reset() {
+ *x = GetWorkloadContainerPercentilesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[45]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadContainerPercentilesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadContainerPercentilesResponse) ProtoMessage() {}
+
+func (x *GetWorkloadContainerPercentilesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[45]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadContainerPercentilesResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadContainerPercentilesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *GetWorkloadContainerPercentilesResponse) GetContainers() []*ContainerPercentileSummary {
+ if x != nil {
+ return x.Containers
+ }
+ return nil
+}
+
+// GetWorkloadContainerTimeSeriesRequest requests per-container time-series metrics for a workload.
+type GetWorkloadContainerTimeSeriesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) Reset() {
+ *x = GetWorkloadContainerTimeSeriesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[46]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadContainerTimeSeriesRequest) ProtoMessage() {}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[46]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadContainerTimeSeriesRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadContainerTimeSeriesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerTimeSeriesRequest) GetUid() string {
if x != nil {
- return x.HourlyMemoryCost
+ return x.Uid
}
- return nil
+ return ""
}
-func (x *NodeGroupMetric) GetHourlyGpuCost() *money.Money {
+func (x *GetWorkloadContainerTimeSeriesRequest) GetStartTime() *timestamppb.Timestamp {
if x != nil {
- return x.HourlyGpuCost
+ return x.StartTime
}
return nil
}
-func (x *NodeGroupMetric) GetBucketTime() *timestamppb.Timestamp {
+func (x *GetWorkloadContainerTimeSeriesRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
- return x.BucketTime
+ return x.EndTime
}
return nil
}
-// GetNodeGroupResponse contains node group for a specific cluster.
-type GetNodeGroupResponse struct {
+// GetWorkloadContainerTimeSeriesResponse returns per-container time-series data.
+type GetWorkloadContainerTimeSeriesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodeGroup *NodeGroup `protobuf:"bytes,1,opt,name=node_group,json=nodeGroup,proto3" json:"node_group,omitempty"` // Node Group
+ Containers []*ContainerTimeSeries `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
}
-func (x *GetNodeGroupResponse) Reset() {
- *x = GetNodeGroupResponse{}
+func (x *GetWorkloadContainerTimeSeriesResponse) Reset() {
+ *x = GetWorkloadContainerTimeSeriesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[29]
+ mi := &file_api_v1_k8s_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupResponse) String() string {
+func (x *GetWorkloadContainerTimeSeriesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupResponse) ProtoMessage() {}
+func (*GetWorkloadContainerTimeSeriesResponse) ProtoMessage() {}
-func (x *GetNodeGroupResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[29]
+func (x *GetWorkloadContainerTimeSeriesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[47]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2412,44 +3880,46 @@ func (x *GetNodeGroupResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{29}
+// Deprecated: Use GetWorkloadContainerTimeSeriesResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadContainerTimeSeriesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{47}
}
-func (x *GetNodeGroupResponse) GetNodeGroup() *NodeGroup {
+func (x *GetWorkloadContainerTimeSeriesResponse) GetContainers() []*ContainerTimeSeries {
if x != nil {
- return x.NodeGroup
+ return x.Containers
}
return nil
}
-// GetClusterResponse contains details of a specific cluster for a team.
-type GetClusterResponse struct {
+// GetLatestContainerRequestLimitsRequest requests the most recent request/limit values per container.
+type GetLatestContainerRequestLimitsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Details of the cluster.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"`
}
-func (x *GetClusterResponse) Reset() {
- *x = GetClusterResponse{}
+func (x *GetLatestContainerRequestLimitsRequest) Reset() {
+ *x = GetLatestContainerRequestLimitsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[30]
+ mi := &file_api_v1_k8s_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetClusterResponse) String() string {
+func (x *GetLatestContainerRequestLimitsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetClusterResponse) ProtoMessage() {}
+func (*GetLatestContainerRequestLimitsRequest) ProtoMessage() {}
-func (x *GetClusterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[30]
+func (x *GetLatestContainerRequestLimitsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[48]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2460,49 +3930,58 @@ func (x *GetClusterResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetClusterResponse.ProtoReflect.Descriptor instead.
-func (*GetClusterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{30}
+// Deprecated: Use GetLatestContainerRequestLimitsRequest.ProtoReflect.Descriptor instead.
+func (*GetLatestContainerRequestLimitsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{48}
}
-func (x *GetClusterResponse) GetCluster() *Cluster {
+func (x *GetLatestContainerRequestLimitsRequest) GetTeamId() string {
if x != nil {
- return x.Cluster
+ return x.TeamId
}
- return nil
+ return ""
}
-// GetClustersResponse contains the list of clusters and aggregated metrics for a team.
-type GetClustersResponse struct {
+func (x *GetLatestContainerRequestLimitsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetLatestContainerRequestLimitsRequest) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+// GetLatestContainerRequestLimitsResponse returns per-container request/limit values.
+type GetLatestContainerRequestLimitsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // List of clusters.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,2,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics across clusters.
- CostInfo *CostInfo `protobuf:"bytes,3,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information across clusters.
- NodeInfo *NodeInfo `protobuf:"bytes,4,opt,name=node_info,json=nodeInfo,proto3" json:"node_info,omitempty"` // Aggregated node information across clusters.
- CostDataPoints []*CostDataPoint `protobuf:"bytes,5,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points.
- ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,6,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource utilization data points.
+ Containers []*ContainerRequestLimits `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
}
-func (x *GetClustersResponse) Reset() {
- *x = GetClustersResponse{}
+func (x *GetLatestContainerRequestLimitsResponse) Reset() {
+ *x = GetLatestContainerRequestLimitsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[31]
+ mi := &file_api_v1_k8s_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetClustersResponse) String() string {
+func (x *GetLatestContainerRequestLimitsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetClustersResponse) ProtoMessage() {}
+func (*GetLatestContainerRequestLimitsResponse) ProtoMessage() {}
-func (x *GetClustersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[31]
+func (x *GetLatestContainerRequestLimitsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2513,83 +3992,47 @@ func (x *GetClustersResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetClustersResponse.ProtoReflect.Descriptor instead.
-func (*GetClustersResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *GetClustersResponse) GetClusters() []*Cluster {
- if x != nil {
- return x.Clusters
- }
- return nil
-}
-
-func (x *GetClustersResponse) GetResourceMetrics() *ResourceMetrics {
- if x != nil {
- return x.ResourceMetrics
- }
- return nil
-}
-
-func (x *GetClustersResponse) GetCostInfo() *CostInfo {
- if x != nil {
- return x.CostInfo
- }
- return nil
-}
-
-func (x *GetClustersResponse) GetNodeInfo() *NodeInfo {
- if x != nil {
- return x.NodeInfo
- }
- return nil
-}
-
-func (x *GetClustersResponse) GetCostDataPoints() []*CostDataPoint {
- if x != nil {
- return x.CostDataPoints
- }
- return nil
+// Deprecated: Use GetLatestContainerRequestLimitsResponse.ProtoReflect.Descriptor instead.
+func (*GetLatestContainerRequestLimitsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{49}
}
-func (x *GetClustersResponse) GetResourceDataPoints() []*ResourceDataPoint {
+func (x *GetLatestContainerRequestLimitsResponse) GetContainers() []*ContainerRequestLimits {
if x != nil {
- return x.ResourceDataPoints
+ return x.Containers
}
return nil
}
-// ListClustersResponse contains the paginated list of clusters for a team.
-// Deprecated: Use GetClustersResponse instead.
-//
-// Deprecated: Marked as deprecated in api/v1/k8s.proto.
-type ListClustersResponse struct {
+// GetNodeGPUMigInstancesRequest requests the most recent MIG-instance telemetry for a node.
+type GetNodeGPUMigInstancesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // List of clusters.
- Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // Pagination information.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ NodeId *string `protobuf:"bytes,3,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` // Unique identifier for the node.
+ NodeUid *string `protobuf:"bytes,4,opt,name=node_uid,json=nodeUid,proto3,oneof" json:"node_uid,omitempty"` // alternatively -> Unique identifier for the node.
}
-func (x *ListClustersResponse) Reset() {
- *x = ListClustersResponse{}
+func (x *GetNodeGPUMigInstancesRequest) Reset() {
+ *x = GetNodeGPUMigInstancesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[32]
+ mi := &file_api_v1_k8s_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListClustersResponse) String() string {
+func (x *GetNodeGPUMigInstancesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListClustersResponse) ProtoMessage() {}
+func (*GetNodeGPUMigInstancesRequest) ProtoMessage() {}
-func (x *ListClustersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[32]
+func (x *GetNodeGPUMigInstancesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[50]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2600,55 +4043,66 @@ func (x *ListClustersResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListClustersResponse.ProtoReflect.Descriptor instead.
-func (*ListClustersResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{32}
+// Deprecated: Use GetNodeGPUMigInstancesRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeGPUMigInstancesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{50}
}
-func (x *ListClustersResponse) GetClusters() []*Cluster {
+func (x *GetNodeGPUMigInstancesRequest) GetTeamId() string {
if x != nil {
- return x.Clusters
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *ListClustersResponse) GetPagination() *Pagination {
+func (x *GetNodeGPUMigInstancesRequest) GetClusterId() string {
if x != nil {
- return x.Pagination
+ return x.ClusterId
}
- return nil
+ return ""
}
-// GetNodeResponse contains details and metrics for a specific node in a cluster.
-type GetNodeResponse struct {
+func (x *GetNodeGPUMigInstancesRequest) GetNodeId() string {
+ if x != nil && x.NodeId != nil {
+ return *x.NodeId
+ }
+ return ""
+}
+
+func (x *GetNodeGPUMigInstancesRequest) GetNodeUid() string {
+ if x != nil && x.NodeUid != nil {
+ return *x.NodeUid
+ }
+ return ""
+}
+
+// GetNodeGPUMigInstancesResponse returns the node's most recent MIG-instance telemetry.
+type GetNodeGPUMigInstancesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the node.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,2,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Resource metrics for the node.
- CostInfo *CostInfo `protobuf:"bytes,3,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Cost details for the node.
- CostDataPoints []*CostDataPoint `protobuf:"bytes,4,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the node.
- ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,5,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the node.
+ Instances []*GPUMigInstance `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"`
+ CollectedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=collected_at,json=collectedAt,proto3,oneof" json:"collected_at,omitempty"`
}
-func (x *GetNodeResponse) Reset() {
- *x = GetNodeResponse{}
+func (x *GetNodeGPUMigInstancesResponse) Reset() {
+ *x = GetNodeGPUMigInstancesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[33]
+ mi := &file_api_v1_k8s_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeResponse) String() string {
+func (x *GetNodeGPUMigInstancesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeResponse) ProtoMessage() {}
+func (*GetNodeGPUMigInstancesResponse) ProtoMessage() {}
-func (x *GetNodeResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[33]
+func (x *GetNodeGPUMigInstancesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[51]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2659,75 +4113,57 @@ func (x *GetNodeResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *GetNodeResponse) GetNode() *Node {
- if x != nil {
- return x.Node
- }
- return nil
-}
-
-func (x *GetNodeResponse) GetResourceMetrics() *ResourceMetrics {
- if x != nil {
- return x.ResourceMetrics
- }
- return nil
-}
-
-func (x *GetNodeResponse) GetCostInfo() *CostInfo {
- if x != nil {
- return x.CostInfo
- }
- return nil
+// Deprecated: Use GetNodeGPUMigInstancesResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeGPUMigInstancesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{51}
}
-func (x *GetNodeResponse) GetCostDataPoints() []*CostDataPoint {
+func (x *GetNodeGPUMigInstancesResponse) GetInstances() []*GPUMigInstance {
if x != nil {
- return x.CostDataPoints
+ return x.Instances
}
return nil
}
-func (x *GetNodeResponse) GetResourceDataPoints() []*ResourceDataPoint {
+func (x *GetNodeGPUMigInstancesResponse) GetCollectedAt() *timestamppb.Timestamp {
if x != nil {
- return x.ResourceDataPoints
+ return x.CollectedAt
}
return nil
}
-// GetWorkloadsResponse contains a list of workloads and aggregated metrics for a cluster.
-type GetWorkloadsResponse struct {
+// GetNodeGPUMigInstanceTimeseriesRequest requests per-MIG-instance
+// utilization as a time series for a node over a time range.
+type GetNodeGPUMigInstanceTimeseriesRequest struct {
state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- WorkloadItems []*WorkloadItem `protobuf:"bytes,1,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"` // List of workload hierarchy items.
- CostInfo *CostInfo `protobuf:"bytes,2,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information for workloads.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,3,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics for workloads.
- ResourceSummary *ResourceSummary `protobuf:"bytes,4,opt,name=resource_summary,json=resourceSummary,proto3" json:"resource_summary,omitempty"` // Summary of resource counts and pod statuses.
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ NodeId *string `protobuf:"bytes,3,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"`
+ NodeUid *string `protobuf:"bytes,4,opt,name=node_uid,json=nodeUid,proto3,oneof" json:"node_uid,omitempty"`
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}
-func (x *GetWorkloadsResponse) Reset() {
- *x = GetWorkloadsResponse{}
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) Reset() {
+ *x = GetNodeGPUMigInstanceTimeseriesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[34]
+ mi := &file_api_v1_k8s_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadsResponse) String() string {
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadsResponse) ProtoMessage() {}
+func (*GetNodeGPUMigInstanceTimeseriesRequest) ProtoMessage() {}
-func (x *GetWorkloadsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[34]
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[52]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2738,70 +4174,85 @@ func (x *GetWorkloadsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadsResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{34}
+// Deprecated: Use GetNodeGPUMigInstanceTimeseriesRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeGPUMigInstanceTimeseriesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{52}
}
-func (x *GetWorkloadsResponse) GetWorkloadItems() []*WorkloadItem {
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) GetTeamId() string {
if x != nil {
- return x.WorkloadItems
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *GetWorkloadsResponse) GetCostInfo() *CostInfo {
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) GetClusterId() string {
if x != nil {
- return x.CostInfo
+ return x.ClusterId
}
- return nil
+ return ""
}
-func (x *GetWorkloadsResponse) GetResourceMetrics() *ResourceMetrics {
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) GetNodeId() string {
+ if x != nil && x.NodeId != nil {
+ return *x.NodeId
+ }
+ return ""
+}
+
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) GetNodeUid() string {
+ if x != nil && x.NodeUid != nil {
+ return *x.NodeUid
+ }
+ return ""
+}
+
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) GetStartTime() *timestamppb.Timestamp {
if x != nil {
- return x.ResourceMetrics
+ return x.StartTime
}
return nil
}
-func (x *GetWorkloadsResponse) GetResourceSummary() *ResourceSummary {
+func (x *GetNodeGPUMigInstanceTimeseriesRequest) GetEndTime() *timestamppb.Timestamp {
if x != nil {
- return x.ResourceSummary
+ return x.EndTime
}
return nil
}
-// GetWorkloadResponse contains details and metrics for a specific workload in a cluster.
-type GetWorkloadResponse struct {
+// GPUMigInstanceDataPoint is one timestamped sample of a single MIG
+// instance's utilization.
+type GPUMigInstanceDataPoint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- WorkloadItem *WorkloadItem `protobuf:"bytes,1,opt,name=workload_item,json=workloadItem,proto3" json:"workload_item,omitempty"` // Details of the workload hierarchy.
- CostInfo *CostInfo `protobuf:"bytes,2,opt,name=cost_info,json=costInfo,proto3" json:"cost_info,omitempty"` // Aggregated cost information for the workload.
- ResourceMetrics *ResourceMetrics `protobuf:"bytes,3,opt,name=resource_metrics,json=resourceMetrics,proto3" json:"resource_metrics,omitempty"` // Aggregated resource metrics for the workload.
- ResourceSummary *ResourceSummary `protobuf:"bytes,4,opt,name=resource_summary,json=resourceSummary,proto3" json:"resource_summary,omitempty"` // Summary of resource counts and pod statuses for the workload.
- CostDataPoints []*CostDataPoint `protobuf:"bytes,5,rep,name=cost_data_points,json=costDataPoints,proto3" json:"cost_data_points,omitempty"` // Time-series cost data points for the workload.
- ResourceDataPoints []*ResourceDataPoint `protobuf:"bytes,6,rep,name=resource_data_points,json=resourceDataPoints,proto3" json:"resource_data_points,omitempty"` // Time-series resource metrics for the workload.
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ TensorActive float64 `protobuf:"fixed64,2,opt,name=tensor_active,json=tensorActive,proto3" json:"tensor_active,omitempty"`
+ DramActive float64 `protobuf:"fixed64,3,opt,name=dram_active,json=dramActive,proto3" json:"dram_active,omitempty"`
+ GraphicsEngineActive float64 `protobuf:"fixed64,4,opt,name=graphics_engine_active,json=graphicsEngineActive,proto3" json:"graphics_engine_active,omitempty"`
+ FramebufferUsed float64 `protobuf:"fixed64,5,opt,name=framebuffer_used,json=framebufferUsed,proto3" json:"framebuffer_used,omitempty"`
+ FramebufferTotal float64 `protobuf:"fixed64,6,opt,name=framebuffer_total,json=framebufferTotal,proto3" json:"framebuffer_total,omitempty"`
}
-func (x *GetWorkloadResponse) Reset() {
- *x = GetWorkloadResponse{}
+func (x *GPUMigInstanceDataPoint) Reset() {
+ *x = GPUMigInstanceDataPoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[35]
+ mi := &file_api_v1_k8s_proto_msgTypes[53]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadResponse) String() string {
+func (x *GPUMigInstanceDataPoint) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadResponse) ProtoMessage() {}
+func (*GPUMigInstanceDataPoint) ProtoMessage() {}
-func (x *GetWorkloadResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[35]
+func (x *GPUMigInstanceDataPoint) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[53]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2812,84 +4263,84 @@ func (x *GetWorkloadResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{35}
+// Deprecated: Use GPUMigInstanceDataPoint.ProtoReflect.Descriptor instead.
+func (*GPUMigInstanceDataPoint) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{53}
}
-func (x *GetWorkloadResponse) GetWorkloadItem() *WorkloadItem {
+func (x *GPUMigInstanceDataPoint) GetTimestamp() *timestamppb.Timestamp {
if x != nil {
- return x.WorkloadItem
+ return x.Timestamp
}
return nil
}
-func (x *GetWorkloadResponse) GetCostInfo() *CostInfo {
+func (x *GPUMigInstanceDataPoint) GetTensorActive() float64 {
if x != nil {
- return x.CostInfo
+ return x.TensorActive
}
- return nil
+ return 0
}
-func (x *GetWorkloadResponse) GetResourceMetrics() *ResourceMetrics {
+func (x *GPUMigInstanceDataPoint) GetDramActive() float64 {
if x != nil {
- return x.ResourceMetrics
+ return x.DramActive
}
- return nil
+ return 0
}
-func (x *GetWorkloadResponse) GetResourceSummary() *ResourceSummary {
+func (x *GPUMigInstanceDataPoint) GetGraphicsEngineActive() float64 {
if x != nil {
- return x.ResourceSummary
+ return x.GraphicsEngineActive
}
- return nil
+ return 0
}
-func (x *GetWorkloadResponse) GetCostDataPoints() []*CostDataPoint {
+func (x *GPUMigInstanceDataPoint) GetFramebufferUsed() float64 {
if x != nil {
- return x.CostDataPoints
+ return x.FramebufferUsed
}
- return nil
+ return 0
}
-func (x *GetWorkloadResponse) GetResourceDataPoints() []*ResourceDataPoint {
+func (x *GPUMigInstanceDataPoint) GetFramebufferTotal() float64 {
if x != nil {
- return x.ResourceDataPoints
+ return x.FramebufferTotal
}
- return nil
+ return 0
}
-// GetWorkloadContainerPercentilesRequest requests per-container percentile metrics for a workload.
-type GetWorkloadContainerPercentilesRequest struct {
+// GPUMigInstanceTimeseries is one MIG instance's identity plus its
+// utilization samples over the requested time range.
+type GPUMigInstanceTimeseries struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
- Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
- StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ MigInstanceId string `protobuf:"bytes,1,opt,name=mig_instance_id,json=migInstanceId,proto3" json:"mig_instance_id,omitempty"`
+ MigProfile string `protobuf:"bytes,2,opt,name=mig_profile,json=migProfile,proto3" json:"mig_profile,omitempty"`
+ DeviceUuid string `protobuf:"bytes,3,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+ ModelName string `protobuf:"bytes,4,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
+ Points []*GPUMigInstanceDataPoint `protobuf:"bytes,5,rep,name=points,proto3" json:"points,omitempty"`
}
-func (x *GetWorkloadContainerPercentilesRequest) Reset() {
- *x = GetWorkloadContainerPercentilesRequest{}
+func (x *GPUMigInstanceTimeseries) Reset() {
+ *x = GPUMigInstanceTimeseries{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[36]
+ mi := &file_api_v1_k8s_proto_msgTypes[54]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadContainerPercentilesRequest) String() string {
+func (x *GPUMigInstanceTimeseries) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadContainerPercentilesRequest) ProtoMessage() {}
+func (*GPUMigInstanceTimeseries) ProtoMessage() {}
-func (x *GetWorkloadContainerPercentilesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[36]
+func (x *GPUMigInstanceTimeseries) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[54]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2900,79 +4351,73 @@ func (x *GetWorkloadContainerPercentilesRequest) ProtoReflect() protoreflect.Mes
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadContainerPercentilesRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadContainerPercentilesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{36}
+// Deprecated: Use GPUMigInstanceTimeseries.ProtoReflect.Descriptor instead.
+func (*GPUMigInstanceTimeseries) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{54}
}
-func (x *GetWorkloadContainerPercentilesRequest) GetTeamId() string {
+func (x *GPUMigInstanceTimeseries) GetMigInstanceId() string {
if x != nil {
- return x.TeamId
+ return x.MigInstanceId
}
return ""
}
-func (x *GetWorkloadContainerPercentilesRequest) GetClusterId() string {
+func (x *GPUMigInstanceTimeseries) GetMigProfile() string {
if x != nil {
- return x.ClusterId
+ return x.MigProfile
}
return ""
}
-func (x *GetWorkloadContainerPercentilesRequest) GetKind() string {
+func (x *GPUMigInstanceTimeseries) GetDeviceUuid() string {
if x != nil {
- return x.Kind
+ return x.DeviceUuid
}
return ""
}
-func (x *GetWorkloadContainerPercentilesRequest) GetUid() string {
+func (x *GPUMigInstanceTimeseries) GetModelName() string {
if x != nil {
- return x.Uid
+ return x.ModelName
}
return ""
}
-func (x *GetWorkloadContainerPercentilesRequest) GetStartTime() *timestamppb.Timestamp {
- if x != nil {
- return x.StartTime
- }
- return nil
-}
-
-func (x *GetWorkloadContainerPercentilesRequest) GetEndTime() *timestamppb.Timestamp {
+func (x *GPUMigInstanceTimeseries) GetPoints() []*GPUMigInstanceDataPoint {
if x != nil {
- return x.EndTime
+ return x.Points
}
return nil
}
-// GetWorkloadContainerPercentilesResponse returns per-container percentile statistics.
-type GetWorkloadContainerPercentilesResponse struct {
+// GetNodeGPUMigInstanceTimeseriesResponse returns one series per MIG
+// instance present on the node during the requested range.
+type GetNodeGPUMigInstanceTimeseriesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerPercentileSummary `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
+ Instances []*GPUMigInstanceTimeseries `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"`
}
-func (x *GetWorkloadContainerPercentilesResponse) Reset() {
- *x = GetWorkloadContainerPercentilesResponse{}
+func (x *GetNodeGPUMigInstanceTimeseriesResponse) Reset() {
+ *x = GetNodeGPUMigInstanceTimeseriesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[37]
+ mi := &file_api_v1_k8s_proto_msgTypes[55]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadContainerPercentilesResponse) String() string {
+func (x *GetNodeGPUMigInstanceTimeseriesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadContainerPercentilesResponse) ProtoMessage() {}
+func (*GetNodeGPUMigInstanceTimeseriesResponse) ProtoMessage() {}
-func (x *GetWorkloadContainerPercentilesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[37]
+func (x *GetNodeGPUMigInstanceTimeseriesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[55]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2983,49 +4428,46 @@ func (x *GetWorkloadContainerPercentilesResponse) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadContainerPercentilesResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadContainerPercentilesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{37}
+// Deprecated: Use GetNodeGPUMigInstanceTimeseriesResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeGPUMigInstanceTimeseriesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{55}
}
-func (x *GetWorkloadContainerPercentilesResponse) GetContainers() []*ContainerPercentileSummary {
+func (x *GetNodeGPUMigInstanceTimeseriesResponse) GetInstances() []*GPUMigInstanceTimeseries {
if x != nil {
- return x.Containers
+ return x.Instances
}
return nil
}
-// GetWorkloadContainerTimeSeriesRequest requests per-container time-series metrics for a workload.
-type GetWorkloadContainerTimeSeriesRequest struct {
+// GetContainerIndividualGPUMetricsRequest requests the most recent per-GPU breakdown per container.
+type GetContainerIndividualGPUMetricsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
- Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
- StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"`
}
-func (x *GetWorkloadContainerTimeSeriesRequest) Reset() {
- *x = GetWorkloadContainerTimeSeriesRequest{}
+func (x *GetContainerIndividualGPUMetricsRequest) Reset() {
+ *x = GetContainerIndividualGPUMetricsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[38]
+ mi := &file_api_v1_k8s_proto_msgTypes[56]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadContainerTimeSeriesRequest) String() string {
+func (x *GetContainerIndividualGPUMetricsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadContainerTimeSeriesRequest) ProtoMessage() {}
+func (*GetContainerIndividualGPUMetricsRequest) ProtoMessage() {}
-func (x *GetWorkloadContainerTimeSeriesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[38]
+func (x *GetContainerIndividualGPUMetricsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[56]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3036,79 +4478,108 @@ func (x *GetWorkloadContainerTimeSeriesRequest) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadContainerTimeSeriesRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadContainerTimeSeriesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{38}
+// Deprecated: Use GetContainerIndividualGPUMetricsRequest.ProtoReflect.Descriptor instead.
+func (*GetContainerIndividualGPUMetricsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{56}
}
-func (x *GetWorkloadContainerTimeSeriesRequest) GetTeamId() string {
+func (x *GetContainerIndividualGPUMetricsRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetWorkloadContainerTimeSeriesRequest) GetClusterId() string {
+func (x *GetContainerIndividualGPUMetricsRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *GetWorkloadContainerTimeSeriesRequest) GetKind() string {
+func (x *GetContainerIndividualGPUMetricsRequest) GetUid() string {
if x != nil {
- return x.Kind
+ return x.Uid
}
return ""
}
-func (x *GetWorkloadContainerTimeSeriesRequest) GetUid() string {
- if x != nil {
- return x.Uid
+// GetContainerIndividualGPUMetricsResponse returns per-container per-GPU breakdowns.
+type GetContainerIndividualGPUMetricsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Containers []*ContainerIndividualGPUMetrics `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
+}
+
+func (x *GetContainerIndividualGPUMetricsResponse) Reset() {
+ *x = GetContainerIndividualGPUMetricsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[57]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *GetWorkloadContainerTimeSeriesRequest) GetStartTime() *timestamppb.Timestamp {
- if x != nil {
- return x.StartTime
+func (x *GetContainerIndividualGPUMetricsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetContainerIndividualGPUMetricsResponse) ProtoMessage() {}
+
+func (x *GetContainerIndividualGPUMetricsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[57]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *GetWorkloadContainerTimeSeriesRequest) GetEndTime() *timestamppb.Timestamp {
+// Deprecated: Use GetContainerIndividualGPUMetricsResponse.ProtoReflect.Descriptor instead.
+func (*GetContainerIndividualGPUMetricsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{57}
+}
+
+func (x *GetContainerIndividualGPUMetricsResponse) GetContainers() []*ContainerIndividualGPUMetrics {
if x != nil {
- return x.EndTime
+ return x.Containers
}
return nil
}
-// GetWorkloadContainerTimeSeriesResponse returns per-container time-series data.
-type GetWorkloadContainerTimeSeriesResponse struct {
+// LanguageVersions holds every distinct version detected for one language
+// across a cluster's workloads.
+type LanguageVersions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerTimeSeries `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
+ Language string `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"`
+ Versions []string `protobuf:"bytes,2,rep,name=versions,proto3" json:"versions,omitempty"`
}
-func (x *GetWorkloadContainerTimeSeriesResponse) Reset() {
- *x = GetWorkloadContainerTimeSeriesResponse{}
+func (x *LanguageVersions) Reset() {
+ *x = LanguageVersions{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[39]
+ mi := &file_api_v1_k8s_proto_msgTypes[58]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadContainerTimeSeriesResponse) String() string {
+func (x *LanguageVersions) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadContainerTimeSeriesResponse) ProtoMessage() {}
+func (*LanguageVersions) ProtoMessage() {}
-func (x *GetWorkloadContainerTimeSeriesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[39]
+func (x *LanguageVersions) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[58]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3119,46 +4590,53 @@ func (x *GetWorkloadContainerTimeSeriesResponse) ProtoReflect() protoreflect.Mes
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadContainerTimeSeriesResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadContainerTimeSeriesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{39}
+// Deprecated: Use LanguageVersions.ProtoReflect.Descriptor instead.
+func (*LanguageVersions) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{58}
}
-func (x *GetWorkloadContainerTimeSeriesResponse) GetContainers() []*ContainerTimeSeries {
+func (x *LanguageVersions) GetLanguage() string {
if x != nil {
- return x.Containers
+ return x.Language
+ }
+ return ""
+}
+
+func (x *LanguageVersions) GetVersions() []string {
+ if x != nil {
+ return x.Versions
}
return nil
}
-// GetLatestContainerRequestLimitsRequest requests the most recent request/limit values per container.
-type GetLatestContainerRequestLimitsRequest struct {
+// GetWorkloadLanguagesRequest requests the distinct languages/versions
+// detected across a cluster's workloads (used to populate filter dropdowns).
+type GetWorkloadLanguagesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"`
}
-func (x *GetLatestContainerRequestLimitsRequest) Reset() {
- *x = GetLatestContainerRequestLimitsRequest{}
+func (x *GetWorkloadLanguagesRequest) Reset() {
+ *x = GetWorkloadLanguagesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[40]
+ mi := &file_api_v1_k8s_proto_msgTypes[59]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetLatestContainerRequestLimitsRequest) String() string {
+func (x *GetWorkloadLanguagesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetLatestContainerRequestLimitsRequest) ProtoMessage() {}
+func (*GetWorkloadLanguagesRequest) ProtoMessage() {}
-func (x *GetLatestContainerRequestLimitsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[40]
+func (x *GetWorkloadLanguagesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[59]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3169,58 +4647,52 @@ func (x *GetLatestContainerRequestLimitsRequest) ProtoReflect() protoreflect.Mes
return mi.MessageOf(x)
}
-// Deprecated: Use GetLatestContainerRequestLimitsRequest.ProtoReflect.Descriptor instead.
-func (*GetLatestContainerRequestLimitsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{40}
-}
-
-func (x *GetLatestContainerRequestLimitsRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use GetWorkloadLanguagesRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadLanguagesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{59}
}
-func (x *GetLatestContainerRequestLimitsRequest) GetClusterId() string {
+func (x *GetWorkloadLanguagesRequest) GetTeamId() string {
if x != nil {
- return x.ClusterId
+ return x.TeamId
}
return ""
}
-func (x *GetLatestContainerRequestLimitsRequest) GetUid() string {
+func (x *GetWorkloadLanguagesRequest) GetClusterId() string {
if x != nil {
- return x.Uid
+ return x.ClusterId
}
return ""
}
-// GetLatestContainerRequestLimitsResponse returns per-container request/limit values.
-type GetLatestContainerRequestLimitsResponse struct {
+// GetWorkloadLanguagesResponse returns every distinct language and its
+// detected versions for the requested cluster.
+type GetWorkloadLanguagesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Containers []*ContainerRequestLimits `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
+ Languages []*LanguageVersions `protobuf:"bytes,1,rep,name=languages,proto3" json:"languages,omitempty"`
}
-func (x *GetLatestContainerRequestLimitsResponse) Reset() {
- *x = GetLatestContainerRequestLimitsResponse{}
+func (x *GetWorkloadLanguagesResponse) Reset() {
+ *x = GetWorkloadLanguagesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[41]
+ mi := &file_api_v1_k8s_proto_msgTypes[60]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetLatestContainerRequestLimitsResponse) String() string {
+func (x *GetWorkloadLanguagesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetLatestContainerRequestLimitsResponse) ProtoMessage() {}
+func (*GetWorkloadLanguagesResponse) ProtoMessage() {}
-func (x *GetLatestContainerRequestLimitsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[41]
+func (x *GetWorkloadLanguagesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[60]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3231,14 +4703,14 @@ func (x *GetLatestContainerRequestLimitsResponse) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use GetLatestContainerRequestLimitsResponse.ProtoReflect.Descriptor instead.
-func (*GetLatestContainerRequestLimitsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{41}
+// Deprecated: Use GetWorkloadLanguagesResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadLanguagesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{60}
}
-func (x *GetLatestContainerRequestLimitsResponse) GetContainers() []*ContainerRequestLimits {
+func (x *GetWorkloadLanguagesResponse) GetLanguages() []*LanguageVersions {
if x != nil {
- return x.Containers
+ return x.Languages
}
return nil
}
@@ -3259,7 +4731,7 @@ type GetForecastWorkloadsRequest struct {
func (x *GetForecastWorkloadsRequest) Reset() {
*x = GetForecastWorkloadsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[42]
+ mi := &file_api_v1_k8s_proto_msgTypes[61]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3272,7 +4744,7 @@ func (x *GetForecastWorkloadsRequest) String() string {
func (*GetForecastWorkloadsRequest) ProtoMessage() {}
func (x *GetForecastWorkloadsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[42]
+ mi := &file_api_v1_k8s_proto_msgTypes[61]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3285,7 +4757,7 @@ func (x *GetForecastWorkloadsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetForecastWorkloadsRequest.ProtoReflect.Descriptor instead.
func (*GetForecastWorkloadsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{42}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{61}
}
func (x *GetForecastWorkloadsRequest) GetTeamId() string {
@@ -3338,7 +4810,7 @@ type GetForecastWorkloadsResponse struct {
func (x *GetForecastWorkloadsResponse) Reset() {
*x = GetForecastWorkloadsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[43]
+ mi := &file_api_v1_k8s_proto_msgTypes[62]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3351,7 +4823,7 @@ func (x *GetForecastWorkloadsResponse) String() string {
func (*GetForecastWorkloadsResponse) ProtoMessage() {}
func (x *GetForecastWorkloadsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[43]
+ mi := &file_api_v1_k8s_proto_msgTypes[62]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3364,7 +4836,7 @@ func (x *GetForecastWorkloadsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetForecastWorkloadsResponse.ProtoReflect.Descriptor instead.
func (*GetForecastWorkloadsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{43}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{62}
}
func (x *GetForecastWorkloadsResponse) GetWorkloadItems() []*WorkloadItem {
@@ -3413,7 +4885,7 @@ type GetForecastWorkloadRequest struct {
func (x *GetForecastWorkloadRequest) Reset() {
*x = GetForecastWorkloadRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[44]
+ mi := &file_api_v1_k8s_proto_msgTypes[63]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3426,7 +4898,7 @@ func (x *GetForecastWorkloadRequest) String() string {
func (*GetForecastWorkloadRequest) ProtoMessage() {}
func (x *GetForecastWorkloadRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[44]
+ mi := &file_api_v1_k8s_proto_msgTypes[63]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3439,7 +4911,7 @@ func (x *GetForecastWorkloadRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetForecastWorkloadRequest.ProtoReflect.Descriptor instead.
func (*GetForecastWorkloadRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{44}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{63}
}
func (x *GetForecastWorkloadRequest) GetTeamId() string {
@@ -3508,7 +4980,7 @@ type GetForecastWorkloadResponse struct {
func (x *GetForecastWorkloadResponse) Reset() {
*x = GetForecastWorkloadResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[45]
+ mi := &file_api_v1_k8s_proto_msgTypes[64]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3521,7 +4993,7 @@ func (x *GetForecastWorkloadResponse) String() string {
func (*GetForecastWorkloadResponse) ProtoMessage() {}
func (x *GetForecastWorkloadResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[45]
+ mi := &file_api_v1_k8s_proto_msgTypes[64]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3534,7 +5006,7 @@ func (x *GetForecastWorkloadResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetForecastWorkloadResponse.ProtoReflect.Descriptor instead.
func (*GetForecastWorkloadResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{45}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{64}
}
func (x *GetForecastWorkloadResponse) GetWorkloadItem() *WorkloadItem {
@@ -3591,7 +5063,7 @@ type GetClusterMetadataResponse struct {
func (x *GetClusterMetadataResponse) Reset() {
*x = GetClusterMetadataResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[46]
+ mi := &file_api_v1_k8s_proto_msgTypes[65]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3604,7 +5076,7 @@ func (x *GetClusterMetadataResponse) String() string {
func (*GetClusterMetadataResponse) ProtoMessage() {}
func (x *GetClusterMetadataResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[46]
+ mi := &file_api_v1_k8s_proto_msgTypes[65]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3617,7 +5089,7 @@ func (x *GetClusterMetadataResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetClusterMetadataResponse.ProtoReflect.Descriptor instead.
func (*GetClusterMetadataResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{46}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{65}
}
func (x *GetClusterMetadataResponse) GetClusters() []*Cluster {
@@ -3639,7 +5111,7 @@ type ClusterElement struct {
func (x *ClusterElement) Reset() {
*x = ClusterElement{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[47]
+ mi := &file_api_v1_k8s_proto_msgTypes[66]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3652,7 +5124,7 @@ func (x *ClusterElement) String() string {
func (*ClusterElement) ProtoMessage() {}
func (x *ClusterElement) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[47]
+ mi := &file_api_v1_k8s_proto_msgTypes[66]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3665,7 +5137,7 @@ func (x *ClusterElement) ProtoReflect() protoreflect.Message {
// Deprecated: Use ClusterElement.ProtoReflect.Descriptor instead.
func (*ClusterElement) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{47}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{66}
}
func (x *ClusterElement) GetClusterId() string {
@@ -3696,7 +5168,7 @@ type GetAllNamespacesRequest struct {
func (x *GetAllNamespacesRequest) Reset() {
*x = GetAllNamespacesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[48]
+ mi := &file_api_v1_k8s_proto_msgTypes[67]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3709,7 +5181,7 @@ func (x *GetAllNamespacesRequest) String() string {
func (*GetAllNamespacesRequest) ProtoMessage() {}
func (x *GetAllNamespacesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[48]
+ mi := &file_api_v1_k8s_proto_msgTypes[67]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3722,7 +5194,7 @@ func (x *GetAllNamespacesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllNamespacesRequest.ProtoReflect.Descriptor instead.
func (*GetAllNamespacesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{48}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{67}
}
func (x *GetAllNamespacesRequest) GetTeamId() string {
@@ -3764,7 +5236,7 @@ type GetAllNamespacesResponse struct {
func (x *GetAllNamespacesResponse) Reset() {
*x = GetAllNamespacesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[49]
+ mi := &file_api_v1_k8s_proto_msgTypes[68]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3777,7 +5249,7 @@ func (x *GetAllNamespacesResponse) String() string {
func (*GetAllNamespacesResponse) ProtoMessage() {}
func (x *GetAllNamespacesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[49]
+ mi := &file_api_v1_k8s_proto_msgTypes[68]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3790,7 +5262,7 @@ func (x *GetAllNamespacesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllNamespacesResponse.ProtoReflect.Descriptor instead.
func (*GetAllNamespacesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{49}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{68}
}
func (x *GetAllNamespacesResponse) GetClusterIdWithNamespaces() []*ClusterElement {
@@ -3814,7 +5286,7 @@ type SearchNamespacesByClusterRequest struct {
func (x *SearchNamespacesByClusterRequest) Reset() {
*x = SearchNamespacesByClusterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[50]
+ mi := &file_api_v1_k8s_proto_msgTypes[69]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3827,7 +5299,7 @@ func (x *SearchNamespacesByClusterRequest) String() string {
func (*SearchNamespacesByClusterRequest) ProtoMessage() {}
func (x *SearchNamespacesByClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[50]
+ mi := &file_api_v1_k8s_proto_msgTypes[69]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3840,7 +5312,7 @@ func (x *SearchNamespacesByClusterRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SearchNamespacesByClusterRequest.ProtoReflect.Descriptor instead.
func (*SearchNamespacesByClusterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{50}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{69}
}
func (x *SearchNamespacesByClusterRequest) GetTeamId() string {
@@ -3876,7 +5348,7 @@ type SearchNamespacesByClusterResponse struct {
func (x *SearchNamespacesByClusterResponse) Reset() {
*x = SearchNamespacesByClusterResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[51]
+ mi := &file_api_v1_k8s_proto_msgTypes[70]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3889,7 +5361,7 @@ func (x *SearchNamespacesByClusterResponse) String() string {
func (*SearchNamespacesByClusterResponse) ProtoMessage() {}
func (x *SearchNamespacesByClusterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[51]
+ mi := &file_api_v1_k8s_proto_msgTypes[70]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3902,7 +5374,7 @@ func (x *SearchNamespacesByClusterResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use SearchNamespacesByClusterResponse.ProtoReflect.Descriptor instead.
func (*SearchNamespacesByClusterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{51}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{70}
}
func (x *SearchNamespacesByClusterResponse) GetNamespaces() []string {
@@ -3925,7 +5397,7 @@ type ListNamespacesByClusterRequest struct {
func (x *ListNamespacesByClusterRequest) Reset() {
*x = ListNamespacesByClusterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[52]
+ mi := &file_api_v1_k8s_proto_msgTypes[71]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3938,7 +5410,7 @@ func (x *ListNamespacesByClusterRequest) String() string {
func (*ListNamespacesByClusterRequest) ProtoMessage() {}
func (x *ListNamespacesByClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[52]
+ mi := &file_api_v1_k8s_proto_msgTypes[71]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3951,7 +5423,7 @@ func (x *ListNamespacesByClusterRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListNamespacesByClusterRequest.ProtoReflect.Descriptor instead.
func (*ListNamespacesByClusterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{52}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{71}
}
func (x *ListNamespacesByClusterRequest) GetTeamId() string {
@@ -3980,7 +5452,7 @@ type ListNamespacesByClusterResponse struct {
func (x *ListNamespacesByClusterResponse) Reset() {
*x = ListNamespacesByClusterResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[53]
+ mi := &file_api_v1_k8s_proto_msgTypes[72]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3993,7 +5465,7 @@ func (x *ListNamespacesByClusterResponse) String() string {
func (*ListNamespacesByClusterResponse) ProtoMessage() {}
func (x *ListNamespacesByClusterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[53]
+ mi := &file_api_v1_k8s_proto_msgTypes[72]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4006,7 +5478,7 @@ func (x *ListNamespacesByClusterResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListNamespacesByClusterResponse.ProtoReflect.Descriptor instead.
func (*ListNamespacesByClusterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{53}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{72}
}
func (x *ListNamespacesByClusterResponse) GetNamespaces() []*NamespaceItem {
@@ -4029,7 +5501,7 @@ type NamespaceItem struct {
func (x *NamespaceItem) Reset() {
*x = NamespaceItem{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[54]
+ mi := &file_api_v1_k8s_proto_msgTypes[73]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4042,7 +5514,7 @@ func (x *NamespaceItem) String() string {
func (*NamespaceItem) ProtoMessage() {}
func (x *NamespaceItem) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[54]
+ mi := &file_api_v1_k8s_proto_msgTypes[73]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4055,7 +5527,7 @@ func (x *NamespaceItem) ProtoReflect() protoreflect.Message {
// Deprecated: Use NamespaceItem.ProtoReflect.Descriptor instead.
func (*NamespaceItem) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{54}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{73}
}
func (x *NamespaceItem) GetId() string {
@@ -4091,7 +5563,7 @@ type GetAllWorkloadNamesRequest struct {
func (x *GetAllWorkloadNamesRequest) Reset() {
*x = GetAllWorkloadNamesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[55]
+ mi := &file_api_v1_k8s_proto_msgTypes[74]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4104,7 +5576,7 @@ func (x *GetAllWorkloadNamesRequest) String() string {
func (*GetAllWorkloadNamesRequest) ProtoMessage() {}
func (x *GetAllWorkloadNamesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[55]
+ mi := &file_api_v1_k8s_proto_msgTypes[74]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4117,7 +5589,7 @@ func (x *GetAllWorkloadNamesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllWorkloadNamesRequest.ProtoReflect.Descriptor instead.
func (*GetAllWorkloadNamesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{55}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{74}
}
func (x *GetAllWorkloadNamesRequest) GetTeamId() string {
@@ -4194,7 +5666,7 @@ type GetAllWorkloadNamesResponse struct {
func (x *GetAllWorkloadNamesResponse) Reset() {
*x = GetAllWorkloadNamesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[56]
+ mi := &file_api_v1_k8s_proto_msgTypes[75]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4207,7 +5679,7 @@ func (x *GetAllWorkloadNamesResponse) String() string {
func (*GetAllWorkloadNamesResponse) ProtoMessage() {}
func (x *GetAllWorkloadNamesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[56]
+ mi := &file_api_v1_k8s_proto_msgTypes[75]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4220,7 +5692,7 @@ func (x *GetAllWorkloadNamesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllWorkloadNamesResponse.ProtoReflect.Descriptor instead.
func (*GetAllWorkloadNamesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{56}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{75}
}
func (x *GetAllWorkloadNamesResponse) GetClusterIdWithWorkloadName() []*ClusterElement {
@@ -4248,7 +5720,7 @@ type GetAllWorkloadLabelsRequest struct {
func (x *GetAllWorkloadLabelsRequest) Reset() {
*x = GetAllWorkloadLabelsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[57]
+ mi := &file_api_v1_k8s_proto_msgTypes[76]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4261,7 +5733,7 @@ func (x *GetAllWorkloadLabelsRequest) String() string {
func (*GetAllWorkloadLabelsRequest) ProtoMessage() {}
func (x *GetAllWorkloadLabelsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[57]
+ mi := &file_api_v1_k8s_proto_msgTypes[76]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4274,7 +5746,7 @@ func (x *GetAllWorkloadLabelsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllWorkloadLabelsRequest.ProtoReflect.Descriptor instead.
func (*GetAllWorkloadLabelsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{57}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{76}
}
func (x *GetAllWorkloadLabelsRequest) GetTeamId() string {
@@ -4344,7 +5816,7 @@ type GetAllWorkloadLabelsResponse struct {
func (x *GetAllWorkloadLabelsResponse) Reset() {
*x = GetAllWorkloadLabelsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[58]
+ mi := &file_api_v1_k8s_proto_msgTypes[77]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4357,7 +5829,7 @@ func (x *GetAllWorkloadLabelsResponse) String() string {
func (*GetAllWorkloadLabelsResponse) ProtoMessage() {}
func (x *GetAllWorkloadLabelsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[58]
+ mi := &file_api_v1_k8s_proto_msgTypes[77]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4370,7 +5842,7 @@ func (x *GetAllWorkloadLabelsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllWorkloadLabelsResponse.ProtoReflect.Descriptor instead.
func (*GetAllWorkloadLabelsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{58}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{77}
}
func (x *GetAllWorkloadLabelsResponse) GetClusterIdWithLabels() []*ClusterElement {
@@ -4395,7 +5867,7 @@ type GetAllNodeGroupNamesRequest struct {
func (x *GetAllNodeGroupNamesRequest) Reset() {
*x = GetAllNodeGroupNamesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[59]
+ mi := &file_api_v1_k8s_proto_msgTypes[78]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4408,7 +5880,7 @@ func (x *GetAllNodeGroupNamesRequest) String() string {
func (*GetAllNodeGroupNamesRequest) ProtoMessage() {}
func (x *GetAllNodeGroupNamesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[59]
+ mi := &file_api_v1_k8s_proto_msgTypes[78]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4421,7 +5893,7 @@ func (x *GetAllNodeGroupNamesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllNodeGroupNamesRequest.ProtoReflect.Descriptor instead.
func (*GetAllNodeGroupNamesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{59}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{78}
}
func (x *GetAllNodeGroupNamesRequest) GetTeamId() string {
@@ -4470,7 +5942,7 @@ type GetAllNodeGroupNamesResponse struct {
func (x *GetAllNodeGroupNamesResponse) Reset() {
*x = GetAllNodeGroupNamesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[60]
+ mi := &file_api_v1_k8s_proto_msgTypes[79]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4483,7 +5955,7 @@ func (x *GetAllNodeGroupNamesResponse) String() string {
func (*GetAllNodeGroupNamesResponse) ProtoMessage() {}
func (x *GetAllNodeGroupNamesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[60]
+ mi := &file_api_v1_k8s_proto_msgTypes[79]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4496,7 +5968,7 @@ func (x *GetAllNodeGroupNamesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetAllNodeGroupNamesResponse.ProtoReflect.Descriptor instead.
func (*GetAllNodeGroupNamesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{60}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{79}
}
func (x *GetAllNodeGroupNamesResponse) GetClusterIdWithNodeGroupNames() []*ClusterElement {
@@ -4554,7 +6026,7 @@ type Cluster struct {
func (x *Cluster) Reset() {
*x = Cluster{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[61]
+ mi := &file_api_v1_k8s_proto_msgTypes[80]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4567,7 +6039,7 @@ func (x *Cluster) String() string {
func (*Cluster) ProtoMessage() {}
func (x *Cluster) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[61]
+ mi := &file_api_v1_k8s_proto_msgTypes[80]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4580,7 +6052,7 @@ func (x *Cluster) ProtoReflect() protoreflect.Message {
// Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
func (*Cluster) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{61}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{80}
}
func (x *Cluster) GetId() string {
@@ -4855,7 +6327,7 @@ type OperatorInfo struct {
func (x *OperatorInfo) Reset() {
*x = OperatorInfo{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[62]
+ mi := &file_api_v1_k8s_proto_msgTypes[81]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4868,7 +6340,7 @@ func (x *OperatorInfo) String() string {
func (*OperatorInfo) ProtoMessage() {}
func (x *OperatorInfo) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[62]
+ mi := &file_api_v1_k8s_proto_msgTypes[81]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4881,7 +6353,7 @@ func (x *OperatorInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use OperatorInfo.ProtoReflect.Descriptor instead.
func (*OperatorInfo) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{62}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{81}
}
func (x *OperatorInfo) GetVersion() string {
@@ -4919,7 +6391,7 @@ type Container struct {
func (x *Container) Reset() {
*x = Container{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[63]
+ mi := &file_api_v1_k8s_proto_msgTypes[82]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4932,7 +6404,7 @@ func (x *Container) String() string {
func (*Container) ProtoMessage() {}
func (x *Container) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[63]
+ mi := &file_api_v1_k8s_proto_msgTypes[82]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4945,7 +6417,7 @@ func (x *Container) ProtoReflect() protoreflect.Message {
// Deprecated: Use Container.ProtoReflect.Descriptor instead.
func (*Container) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{63}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{82}
}
func (x *Container) GetId() string {
@@ -4978,7 +6450,7 @@ type GetLatestOperatorVersionRequest struct {
func (x *GetLatestOperatorVersionRequest) Reset() {
*x = GetLatestOperatorVersionRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[64]
+ mi := &file_api_v1_k8s_proto_msgTypes[83]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4991,7 +6463,7 @@ func (x *GetLatestOperatorVersionRequest) String() string {
func (*GetLatestOperatorVersionRequest) ProtoMessage() {}
func (x *GetLatestOperatorVersionRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[64]
+ mi := &file_api_v1_k8s_proto_msgTypes[83]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5004,7 +6476,7 @@ func (x *GetLatestOperatorVersionRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetLatestOperatorVersionRequest.ProtoReflect.Descriptor instead.
func (*GetLatestOperatorVersionRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{64}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{83}
}
type GetLatestOperatorVersionResponse struct {
@@ -5026,12 +6498,15 @@ type GetLatestOperatorVersionResponse struct {
SecurityOpHelmInfo *OperatorInfo `protobuf:"bytes,32,opt,name=security_op_helm_info,json=securityOpHelmInfo,proto3" json:"security_op_helm_info,omitempty"`
TrezrInfo *OperatorInfo `protobuf:"bytes,41,opt,name=trezr_info,json=trezrInfo,proto3" json:"trezr_info,omitempty"`
TrezrHelmInfo *OperatorInfo `protobuf:"bytes,42,opt,name=trezr_helm_info,json=trezrHelmInfo,proto3" json:"trezr_helm_info,omitempty"`
+ // checkpoint-restore-operator helm chart (snapshot policies). Placeholder
+ // version until the DevZero-authored chart is published.
+ SnapshotHelmInfo *OperatorInfo `protobuf:"bytes,51,opt,name=snapshot_helm_info,json=snapshotHelmInfo,proto3" json:"snapshot_helm_info,omitempty"`
}
func (x *GetLatestOperatorVersionResponse) Reset() {
*x = GetLatestOperatorVersionResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[65]
+ mi := &file_api_v1_k8s_proto_msgTypes[84]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5044,7 +6519,7 @@ func (x *GetLatestOperatorVersionResponse) String() string {
func (*GetLatestOperatorVersionResponse) ProtoMessage() {}
func (x *GetLatestOperatorVersionResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[65]
+ mi := &file_api_v1_k8s_proto_msgTypes[84]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5057,7 +6532,7 @@ func (x *GetLatestOperatorVersionResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetLatestOperatorVersionResponse.ProtoReflect.Descriptor instead.
func (*GetLatestOperatorVersionResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{65}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{84}
}
func (x *GetLatestOperatorVersionResponse) GetZxpInfo() *OperatorInfo {
@@ -5158,6 +6633,13 @@ func (x *GetLatestOperatorVersionResponse) GetTrezrHelmInfo() *OperatorInfo {
return nil
}
+func (x *GetLatestOperatorVersionResponse) GetSnapshotHelmInfo() *OperatorInfo {
+ if x != nil {
+ return x.SnapshotHelmInfo
+ }
+ return nil
+}
+
type GalaxyGetWorkloadPerspectiveRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -5172,7 +6654,7 @@ type GalaxyGetWorkloadPerspectiveRequest struct {
func (x *GalaxyGetWorkloadPerspectiveRequest) Reset() {
*x = GalaxyGetWorkloadPerspectiveRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[66]
+ mi := &file_api_v1_k8s_proto_msgTypes[85]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5185,7 +6667,7 @@ func (x *GalaxyGetWorkloadPerspectiveRequest) String() string {
func (*GalaxyGetWorkloadPerspectiveRequest) ProtoMessage() {}
func (x *GalaxyGetWorkloadPerspectiveRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[66]
+ mi := &file_api_v1_k8s_proto_msgTypes[85]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5198,7 +6680,7 @@ func (x *GalaxyGetWorkloadPerspectiveRequest) ProtoReflect() protoreflect.Messag
// Deprecated: Use GalaxyGetWorkloadPerspectiveRequest.ProtoReflect.Descriptor instead.
func (*GalaxyGetWorkloadPerspectiveRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{66}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{85}
}
func (x *GalaxyGetWorkloadPerspectiveRequest) GetTeamId() string {
@@ -5242,7 +6724,7 @@ type GalaxyGetWorkloadPerspectiveResponse struct {
func (x *GalaxyGetWorkloadPerspectiveResponse) Reset() {
*x = GalaxyGetWorkloadPerspectiveResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[67]
+ mi := &file_api_v1_k8s_proto_msgTypes[86]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5255,7 +6737,7 @@ func (x *GalaxyGetWorkloadPerspectiveResponse) String() string {
func (*GalaxyGetWorkloadPerspectiveResponse) ProtoMessage() {}
func (x *GalaxyGetWorkloadPerspectiveResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[67]
+ mi := &file_api_v1_k8s_proto_msgTypes[86]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5268,7 +6750,7 @@ func (x *GalaxyGetWorkloadPerspectiveResponse) ProtoReflect() protoreflect.Messa
// Deprecated: Use GalaxyGetWorkloadPerspectiveResponse.ProtoReflect.Descriptor instead.
func (*GalaxyGetWorkloadPerspectiveResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{67}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{86}
}
func (x *GalaxyGetWorkloadPerspectiveResponse) GetGroupings() []*GalaxyWorkloadGroup {
@@ -5310,7 +6792,7 @@ type GalaxyWorkloadGroup struct {
func (x *GalaxyWorkloadGroup) Reset() {
*x = GalaxyWorkloadGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[68]
+ mi := &file_api_v1_k8s_proto_msgTypes[87]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5323,7 +6805,7 @@ func (x *GalaxyWorkloadGroup) String() string {
func (*GalaxyWorkloadGroup) ProtoMessage() {}
func (x *GalaxyWorkloadGroup) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[68]
+ mi := &file_api_v1_k8s_proto_msgTypes[87]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5336,7 +6818,7 @@ func (x *GalaxyWorkloadGroup) ProtoReflect() protoreflect.Message {
// Deprecated: Use GalaxyWorkloadGroup.ProtoReflect.Descriptor instead.
func (*GalaxyWorkloadGroup) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{68}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{87}
}
func (x *GalaxyWorkloadGroup) GetGroupKey() string {
@@ -5394,7 +6876,7 @@ type PerspectiveDatapointOpts struct {
func (x *PerspectiveDatapointOpts) Reset() {
*x = PerspectiveDatapointOpts{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[69]
+ mi := &file_api_v1_k8s_proto_msgTypes[88]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5407,7 +6889,7 @@ func (x *PerspectiveDatapointOpts) String() string {
func (*PerspectiveDatapointOpts) ProtoMessage() {}
func (x *PerspectiveDatapointOpts) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[69]
+ mi := &file_api_v1_k8s_proto_msgTypes[88]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5420,7 +6902,7 @@ func (x *PerspectiveDatapointOpts) ProtoReflect() protoreflect.Message {
// Deprecated: Use PerspectiveDatapointOpts.ProtoReflect.Descriptor instead.
func (*PerspectiveDatapointOpts) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{69}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{88}
}
func (x *PerspectiveDatapointOpts) GetTimeStart() int64 {
@@ -5471,7 +6953,7 @@ type ListAuditLogsRequest struct {
func (x *ListAuditLogsRequest) Reset() {
*x = ListAuditLogsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[70]
+ mi := &file_api_v1_k8s_proto_msgTypes[89]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5484,7 +6966,7 @@ func (x *ListAuditLogsRequest) String() string {
func (*ListAuditLogsRequest) ProtoMessage() {}
func (x *ListAuditLogsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[70]
+ mi := &file_api_v1_k8s_proto_msgTypes[89]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5497,7 +6979,7 @@ func (x *ListAuditLogsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListAuditLogsRequest.ProtoReflect.Descriptor instead.
func (*ListAuditLogsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{70}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{89}
}
func (x *ListAuditLogsRequest) GetTeamId() string {
@@ -5619,7 +7101,7 @@ type ListAuditLogsResponse struct {
func (x *ListAuditLogsResponse) Reset() {
*x = ListAuditLogsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[71]
+ mi := &file_api_v1_k8s_proto_msgTypes[90]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5632,7 +7114,7 @@ func (x *ListAuditLogsResponse) String() string {
func (*ListAuditLogsResponse) ProtoMessage() {}
func (x *ListAuditLogsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[71]
+ mi := &file_api_v1_k8s_proto_msgTypes[90]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5645,7 +7127,7 @@ func (x *ListAuditLogsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListAuditLogsResponse.ProtoReflect.Descriptor instead.
func (*ListAuditLogsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{71}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{90}
}
func (x *ListAuditLogsResponse) GetLogs() []*AuditLogEntry {
@@ -5687,7 +7169,7 @@ type ListAuditLogOriginatorsRequest struct {
func (x *ListAuditLogOriginatorsRequest) Reset() {
*x = ListAuditLogOriginatorsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[72]
+ mi := &file_api_v1_k8s_proto_msgTypes[91]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5700,7 +7182,7 @@ func (x *ListAuditLogOriginatorsRequest) String() string {
func (*ListAuditLogOriginatorsRequest) ProtoMessage() {}
func (x *ListAuditLogOriginatorsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[72]
+ mi := &file_api_v1_k8s_proto_msgTypes[91]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5713,7 +7195,7 @@ func (x *ListAuditLogOriginatorsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListAuditLogOriginatorsRequest.ProtoReflect.Descriptor instead.
func (*ListAuditLogOriginatorsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{72}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{91}
}
func (x *ListAuditLogOriginatorsRequest) GetTeamId() string {
@@ -5820,7 +7302,7 @@ type ListAuditLogOriginatorsResponse struct {
func (x *ListAuditLogOriginatorsResponse) Reset() {
*x = ListAuditLogOriginatorsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[73]
+ mi := &file_api_v1_k8s_proto_msgTypes[92]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5833,7 +7315,7 @@ func (x *ListAuditLogOriginatorsResponse) String() string {
func (*ListAuditLogOriginatorsResponse) ProtoMessage() {}
func (x *ListAuditLogOriginatorsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[73]
+ mi := &file_api_v1_k8s_proto_msgTypes[92]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5846,7 +7328,7 @@ func (x *ListAuditLogOriginatorsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListAuditLogOriginatorsResponse.ProtoReflect.Descriptor instead.
func (*ListAuditLogOriginatorsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{73}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{92}
}
func (x *ListAuditLogOriginatorsResponse) GetEmailAddresses() []string {
@@ -5872,7 +7354,7 @@ type SendWorkloadEmailRequest struct {
func (x *SendWorkloadEmailRequest) Reset() {
*x = SendWorkloadEmailRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[74]
+ mi := &file_api_v1_k8s_proto_msgTypes[93]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5885,7 +7367,7 @@ func (x *SendWorkloadEmailRequest) String() string {
func (*SendWorkloadEmailRequest) ProtoMessage() {}
func (x *SendWorkloadEmailRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[74]
+ mi := &file_api_v1_k8s_proto_msgTypes[93]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5898,7 +7380,7 @@ func (x *SendWorkloadEmailRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SendWorkloadEmailRequest.ProtoReflect.Descriptor instead.
func (*SendWorkloadEmailRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{74}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{93}
}
func (x *SendWorkloadEmailRequest) GetTeamId() string {
@@ -5948,7 +7430,7 @@ type SendWorkloadEmailResponse struct {
func (x *SendWorkloadEmailResponse) Reset() {
*x = SendWorkloadEmailResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[75]
+ mi := &file_api_v1_k8s_proto_msgTypes[94]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5961,7 +7443,7 @@ func (x *SendWorkloadEmailResponse) String() string {
func (*SendWorkloadEmailResponse) ProtoMessage() {}
func (x *SendWorkloadEmailResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[75]
+ mi := &file_api_v1_k8s_proto_msgTypes[94]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5974,7 +7456,7 @@ func (x *SendWorkloadEmailResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SendWorkloadEmailResponse.ProtoReflect.Descriptor instead.
func (*SendWorkloadEmailResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{75}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{94}
}
func (x *SendWorkloadEmailResponse) GetMessage() string {
@@ -5996,7 +7478,7 @@ type SendWeeklySummaryEmailRequest struct {
func (x *SendWeeklySummaryEmailRequest) Reset() {
*x = SendWeeklySummaryEmailRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[76]
+ mi := &file_api_v1_k8s_proto_msgTypes[95]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6009,7 +7491,7 @@ func (x *SendWeeklySummaryEmailRequest) String() string {
func (*SendWeeklySummaryEmailRequest) ProtoMessage() {}
func (x *SendWeeklySummaryEmailRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[76]
+ mi := &file_api_v1_k8s_proto_msgTypes[95]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6022,7 +7504,7 @@ func (x *SendWeeklySummaryEmailRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SendWeeklySummaryEmailRequest.ProtoReflect.Descriptor instead.
func (*SendWeeklySummaryEmailRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{76}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{95}
}
func (x *SendWeeklySummaryEmailRequest) GetRequest() *SendWeeklySummaryEmailRequestData {
@@ -6045,7 +7527,7 @@ type SendWeeklySummaryEmailRequestData struct {
func (x *SendWeeklySummaryEmailRequestData) Reset() {
*x = SendWeeklySummaryEmailRequestData{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[77]
+ mi := &file_api_v1_k8s_proto_msgTypes[96]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6058,7 +7540,7 @@ func (x *SendWeeklySummaryEmailRequestData) String() string {
func (*SendWeeklySummaryEmailRequestData) ProtoMessage() {}
func (x *SendWeeklySummaryEmailRequestData) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[77]
+ mi := &file_api_v1_k8s_proto_msgTypes[96]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6071,7 +7553,7 @@ func (x *SendWeeklySummaryEmailRequestData) ProtoReflect() protoreflect.Message
// Deprecated: Use SendWeeklySummaryEmailRequestData.ProtoReflect.Descriptor instead.
func (*SendWeeklySummaryEmailRequestData) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{77}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{96}
}
func (x *SendWeeklySummaryEmailRequestData) GetTeamId() string {
@@ -6100,7 +7582,7 @@ type SendWeeklySummaryEmailResponse struct {
func (x *SendWeeklySummaryEmailResponse) Reset() {
*x = SendWeeklySummaryEmailResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[78]
+ mi := &file_api_v1_k8s_proto_msgTypes[97]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6113,7 +7595,7 @@ func (x *SendWeeklySummaryEmailResponse) String() string {
func (*SendWeeklySummaryEmailResponse) ProtoMessage() {}
func (x *SendWeeklySummaryEmailResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[78]
+ mi := &file_api_v1_k8s_proto_msgTypes[97]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6126,7 +7608,7 @@ func (x *SendWeeklySummaryEmailResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SendWeeklySummaryEmailResponse.ProtoReflect.Descriptor instead.
func (*SendWeeklySummaryEmailResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{78}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{97}
}
func (x *SendWeeklySummaryEmailResponse) GetMessage() string {
@@ -6154,7 +7636,7 @@ type GetClustersNodeInfoRequest struct {
func (x *GetClustersNodeInfoRequest) Reset() {
*x = GetClustersNodeInfoRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[79]
+ mi := &file_api_v1_k8s_proto_msgTypes[98]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6167,7 +7649,7 @@ func (x *GetClustersNodeInfoRequest) String() string {
func (*GetClustersNodeInfoRequest) ProtoMessage() {}
func (x *GetClustersNodeInfoRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[79]
+ mi := &file_api_v1_k8s_proto_msgTypes[98]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6180,7 +7662,7 @@ func (x *GetClustersNodeInfoRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetClustersNodeInfoRequest.ProtoReflect.Descriptor instead.
func (*GetClustersNodeInfoRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{79}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{98}
}
func (x *GetClustersNodeInfoRequest) GetTeamId() string {
@@ -6247,7 +7729,7 @@ type GetClustersNodeInfoResponse struct {
func (x *GetClustersNodeInfoResponse) Reset() {
*x = GetClustersNodeInfoResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[80]
+ mi := &file_api_v1_k8s_proto_msgTypes[99]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6260,7 +7742,7 @@ func (x *GetClustersNodeInfoResponse) String() string {
func (*GetClustersNodeInfoResponse) ProtoMessage() {}
func (x *GetClustersNodeInfoResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[80]
+ mi := &file_api_v1_k8s_proto_msgTypes[99]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6273,7 +7755,7 @@ func (x *GetClustersNodeInfoResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetClustersNodeInfoResponse.ProtoReflect.Descriptor instead.
func (*GetClustersNodeInfoResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{80}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{99}
}
func (x *GetClustersNodeInfoResponse) GetNodeInfo() *NodeInfo {
@@ -6318,7 +7800,7 @@ type SearchK8SResourcesRequest struct {
func (x *SearchK8SResourcesRequest) Reset() {
*x = SearchK8SResourcesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[81]
+ mi := &file_api_v1_k8s_proto_msgTypes[100]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6331,7 +7813,7 @@ func (x *SearchK8SResourcesRequest) String() string {
func (*SearchK8SResourcesRequest) ProtoMessage() {}
func (x *SearchK8SResourcesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[81]
+ mi := &file_api_v1_k8s_proto_msgTypes[100]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6344,7 +7826,7 @@ func (x *SearchK8SResourcesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SearchK8SResourcesRequest.ProtoReflect.Descriptor instead.
func (*SearchK8SResourcesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{81}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{100}
}
func (x *SearchK8SResourcesRequest) GetTeamId() string {
@@ -6386,7 +7868,7 @@ type SearchK8SResourcesResponse struct {
func (x *SearchK8SResourcesResponse) Reset() {
*x = SearchK8SResourcesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[82]
+ mi := &file_api_v1_k8s_proto_msgTypes[101]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6399,7 +7881,7 @@ func (x *SearchK8SResourcesResponse) String() string {
func (*SearchK8SResourcesResponse) ProtoMessage() {}
func (x *SearchK8SResourcesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[82]
+ mi := &file_api_v1_k8s_proto_msgTypes[101]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6412,7 +7894,7 @@ func (x *SearchK8SResourcesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SearchK8SResourcesResponse.ProtoReflect.Descriptor instead.
func (*SearchK8SResourcesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{82}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{101}
}
func (x *SearchK8SResourcesResponse) GetResults() []*K8SSearchResult {
@@ -6437,7 +7919,7 @@ type K8SSearchResult struct {
func (x *K8SSearchResult) Reset() {
*x = K8SSearchResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[83]
+ mi := &file_api_v1_k8s_proto_msgTypes[102]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6450,7 +7932,7 @@ func (x *K8SSearchResult) String() string {
func (*K8SSearchResult) ProtoMessage() {}
func (x *K8SSearchResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[83]
+ mi := &file_api_v1_k8s_proto_msgTypes[102]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6463,7 +7945,7 @@ func (x *K8SSearchResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use K8SSearchResult.ProtoReflect.Descriptor instead.
func (*K8SSearchResult) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{83}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{102}
}
func (x *K8SSearchResult) GetUid() string {
@@ -6514,7 +7996,7 @@ type SearchK8SWorkloadsRequest struct {
func (x *SearchK8SWorkloadsRequest) Reset() {
*x = SearchK8SWorkloadsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[84]
+ mi := &file_api_v1_k8s_proto_msgTypes[103]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6527,7 +8009,7 @@ func (x *SearchK8SWorkloadsRequest) String() string {
func (*SearchK8SWorkloadsRequest) ProtoMessage() {}
func (x *SearchK8SWorkloadsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[84]
+ mi := &file_api_v1_k8s_proto_msgTypes[103]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6540,7 +8022,7 @@ func (x *SearchK8SWorkloadsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SearchK8SWorkloadsRequest.ProtoReflect.Descriptor instead.
func (*SearchK8SWorkloadsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{84}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{103}
}
func (x *SearchK8SWorkloadsRequest) GetTeamId() string {
@@ -6575,7 +8057,7 @@ type SearchK8SWorkloadsResponse struct {
func (x *SearchK8SWorkloadsResponse) Reset() {
*x = SearchK8SWorkloadsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[85]
+ mi := &file_api_v1_k8s_proto_msgTypes[104]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6588,7 +8070,7 @@ func (x *SearchK8SWorkloadsResponse) String() string {
func (*SearchK8SWorkloadsResponse) ProtoMessage() {}
func (x *SearchK8SWorkloadsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[85]
+ mi := &file_api_v1_k8s_proto_msgTypes[104]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6601,7 +8083,7 @@ func (x *SearchK8SWorkloadsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SearchK8SWorkloadsResponse.ProtoReflect.Descriptor instead.
func (*SearchK8SWorkloadsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{85}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{104}
}
func (x *SearchK8SWorkloadsResponse) GetResults() []*K8SWorkloadSearchResult {
@@ -6623,7 +8105,7 @@ type K8SWorkloadSearchResult struct {
func (x *K8SWorkloadSearchResult) Reset() {
*x = K8SWorkloadSearchResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[86]
+ mi := &file_api_v1_k8s_proto_msgTypes[105]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6636,7 +8118,7 @@ func (x *K8SWorkloadSearchResult) String() string {
func (*K8SWorkloadSearchResult) ProtoMessage() {}
func (x *K8SWorkloadSearchResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[86]
+ mi := &file_api_v1_k8s_proto_msgTypes[105]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6649,7 +8131,7 @@ func (x *K8SWorkloadSearchResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use K8SWorkloadSearchResult.ProtoReflect.Descriptor instead.
func (*K8SWorkloadSearchResult) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{86}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{105}
}
func (x *K8SWorkloadSearchResult) GetKind() string {
@@ -6680,7 +8162,7 @@ type MetadataForWorkloadsRequest struct {
func (x *MetadataForWorkloadsRequest) Reset() {
*x = MetadataForWorkloadsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[87]
+ mi := &file_api_v1_k8s_proto_msgTypes[106]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6693,7 +8175,7 @@ func (x *MetadataForWorkloadsRequest) String() string {
func (*MetadataForWorkloadsRequest) ProtoMessage() {}
func (x *MetadataForWorkloadsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[87]
+ mi := &file_api_v1_k8s_proto_msgTypes[106]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6706,7 +8188,7 @@ func (x *MetadataForWorkloadsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use MetadataForWorkloadsRequest.ProtoReflect.Descriptor instead.
func (*MetadataForWorkloadsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{87}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{106}
}
func (x *MetadataForWorkloadsRequest) GetTeamId() string {
@@ -6748,7 +8230,7 @@ type MetadataForWorkloadsResponse struct {
func (x *MetadataForWorkloadsResponse) Reset() {
*x = MetadataForWorkloadsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[88]
+ mi := &file_api_v1_k8s_proto_msgTypes[107]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6761,7 +8243,7 @@ func (x *MetadataForWorkloadsResponse) String() string {
func (*MetadataForWorkloadsResponse) ProtoMessage() {}
func (x *MetadataForWorkloadsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[88]
+ mi := &file_api_v1_k8s_proto_msgTypes[107]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6774,7 +8256,7 @@ func (x *MetadataForWorkloadsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use MetadataForWorkloadsResponse.ProtoReflect.Descriptor instead.
func (*MetadataForWorkloadsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{88}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{107}
}
func (x *MetadataForWorkloadsResponse) GetWorkloadUidToMetadata() map[string]*WorkloadMetadata {
@@ -6797,7 +8279,7 @@ type AddClusterTagsRequest struct {
func (x *AddClusterTagsRequest) Reset() {
*x = AddClusterTagsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[89]
+ mi := &file_api_v1_k8s_proto_msgTypes[108]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6810,7 +8292,7 @@ func (x *AddClusterTagsRequest) String() string {
func (*AddClusterTagsRequest) ProtoMessage() {}
func (x *AddClusterTagsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[89]
+ mi := &file_api_v1_k8s_proto_msgTypes[108]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6823,7 +8305,7 @@ func (x *AddClusterTagsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use AddClusterTagsRequest.ProtoReflect.Descriptor instead.
func (*AddClusterTagsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{89}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{108}
}
func (x *AddClusterTagsRequest) GetTeamId() string {
@@ -6858,7 +8340,7 @@ type AddClusterTagsResponse struct {
func (x *AddClusterTagsResponse) Reset() {
*x = AddClusterTagsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[90]
+ mi := &file_api_v1_k8s_proto_msgTypes[109]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6871,7 +8353,7 @@ func (x *AddClusterTagsResponse) String() string {
func (*AddClusterTagsResponse) ProtoMessage() {}
func (x *AddClusterTagsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[90]
+ mi := &file_api_v1_k8s_proto_msgTypes[109]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6884,7 +8366,7 @@ func (x *AddClusterTagsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use AddClusterTagsResponse.ProtoReflect.Descriptor instead.
func (*AddClusterTagsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{90}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{109}
}
func (x *AddClusterTagsResponse) GetCluster() *Cluster {
@@ -6907,7 +8389,7 @@ type RemoveClusterTagsRequest struct {
func (x *RemoveClusterTagsRequest) Reset() {
*x = RemoveClusterTagsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[91]
+ mi := &file_api_v1_k8s_proto_msgTypes[110]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6920,7 +8402,7 @@ func (x *RemoveClusterTagsRequest) String() string {
func (*RemoveClusterTagsRequest) ProtoMessage() {}
func (x *RemoveClusterTagsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[91]
+ mi := &file_api_v1_k8s_proto_msgTypes[110]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6933,7 +8415,7 @@ func (x *RemoveClusterTagsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use RemoveClusterTagsRequest.ProtoReflect.Descriptor instead.
func (*RemoveClusterTagsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{91}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{110}
}
func (x *RemoveClusterTagsRequest) GetTeamId() string {
@@ -6968,7 +8450,7 @@ type RemoveClusterTagsResponse struct {
func (x *RemoveClusterTagsResponse) Reset() {
*x = RemoveClusterTagsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[92]
+ mi := &file_api_v1_k8s_proto_msgTypes[111]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6981,7 +8463,7 @@ func (x *RemoveClusterTagsResponse) String() string {
func (*RemoveClusterTagsResponse) ProtoMessage() {}
func (x *RemoveClusterTagsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[92]
+ mi := &file_api_v1_k8s_proto_msgTypes[111]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6994,7 +8476,7 @@ func (x *RemoveClusterTagsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RemoveClusterTagsResponse.ProtoReflect.Descriptor instead.
func (*RemoveClusterTagsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{92}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{111}
}
func (x *RemoveClusterTagsResponse) GetCluster() *Cluster {
@@ -7015,7 +8497,7 @@ type ListTagsRequest struct {
func (x *ListTagsRequest) Reset() {
*x = ListTagsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[93]
+ mi := &file_api_v1_k8s_proto_msgTypes[112]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7028,7 +8510,7 @@ func (x *ListTagsRequest) String() string {
func (*ListTagsRequest) ProtoMessage() {}
func (x *ListTagsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[93]
+ mi := &file_api_v1_k8s_proto_msgTypes[112]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7041,7 +8523,7 @@ func (x *ListTagsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListTagsRequest.ProtoReflect.Descriptor instead.
func (*ListTagsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{93}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{112}
}
func (x *ListTagsRequest) GetTeamId() string {
@@ -7063,7 +8545,7 @@ type TagSummary struct {
func (x *TagSummary) Reset() {
*x = TagSummary{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[94]
+ mi := &file_api_v1_k8s_proto_msgTypes[113]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7076,7 +8558,7 @@ func (x *TagSummary) String() string {
func (*TagSummary) ProtoMessage() {}
func (x *TagSummary) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[94]
+ mi := &file_api_v1_k8s_proto_msgTypes[113]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7089,7 +8571,7 @@ func (x *TagSummary) ProtoReflect() protoreflect.Message {
// Deprecated: Use TagSummary.ProtoReflect.Descriptor instead.
func (*TagSummary) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{94}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{113}
}
func (x *TagSummary) GetTag() string {
@@ -7117,7 +8599,7 @@ type ListTagsResponse struct {
func (x *ListTagsResponse) Reset() {
*x = ListTagsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[95]
+ mi := &file_api_v1_k8s_proto_msgTypes[114]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7130,7 +8612,7 @@ func (x *ListTagsResponse) String() string {
func (*ListTagsResponse) ProtoMessage() {}
func (x *ListTagsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[95]
+ mi := &file_api_v1_k8s_proto_msgTypes[114]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7143,7 +8625,7 @@ func (x *ListTagsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListTagsResponse.ProtoReflect.Descriptor instead.
func (*ListTagsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{95}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{114}
}
func (x *ListTagsResponse) GetTags() []*TagSummary {
@@ -7171,7 +8653,7 @@ type WorkloadMetadata struct {
func (x *WorkloadMetadata) Reset() {
*x = WorkloadMetadata{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[96]
+ mi := &file_api_v1_k8s_proto_msgTypes[115]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7184,7 +8666,7 @@ func (x *WorkloadMetadata) String() string {
func (*WorkloadMetadata) ProtoMessage() {}
func (x *WorkloadMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[96]
+ mi := &file_api_v1_k8s_proto_msgTypes[115]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7197,7 +8679,7 @@ func (x *WorkloadMetadata) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadMetadata.ProtoReflect.Descriptor instead.
func (*WorkloadMetadata) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{96}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{115}
}
func (x *WorkloadMetadata) GetPodUidToNodeMetadata() map[string]*NodeMetadata {
@@ -7272,7 +8754,7 @@ type PodMetadata struct {
func (x *PodMetadata) Reset() {
*x = PodMetadata{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[97]
+ mi := &file_api_v1_k8s_proto_msgTypes[116]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7285,7 +8767,7 @@ func (x *PodMetadata) String() string {
func (*PodMetadata) ProtoMessage() {}
func (x *PodMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[97]
+ mi := &file_api_v1_k8s_proto_msgTypes[116]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7298,7 +8780,7 @@ func (x *PodMetadata) ProtoReflect() protoreflect.Message {
// Deprecated: Use PodMetadata.ProtoReflect.Descriptor instead.
func (*PodMetadata) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{97}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{116}
}
func (x *PodMetadata) GetName() string {
@@ -7362,7 +8844,7 @@ type NodeMetadata struct {
func (x *NodeMetadata) Reset() {
*x = NodeMetadata{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[98]
+ mi := &file_api_v1_k8s_proto_msgTypes[117]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7375,7 +8857,7 @@ func (x *NodeMetadata) String() string {
func (*NodeMetadata) ProtoMessage() {}
func (x *NodeMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[98]
+ mi := &file_api_v1_k8s_proto_msgTypes[117]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7388,7 +8870,7 @@ func (x *NodeMetadata) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeMetadata.ProtoReflect.Descriptor instead.
func (*NodeMetadata) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{98}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{117}
}
func (x *NodeMetadata) GetNodeName() string {
@@ -7470,7 +8952,7 @@ type GetRelatedResourcesRequest struct {
func (x *GetRelatedResourcesRequest) Reset() {
*x = GetRelatedResourcesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[99]
+ mi := &file_api_v1_k8s_proto_msgTypes[118]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7483,7 +8965,7 @@ func (x *GetRelatedResourcesRequest) String() string {
func (*GetRelatedResourcesRequest) ProtoMessage() {}
func (x *GetRelatedResourcesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[99]
+ mi := &file_api_v1_k8s_proto_msgTypes[118]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7496,7 +8978,7 @@ func (x *GetRelatedResourcesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetRelatedResourcesRequest.ProtoReflect.Descriptor instead.
func (*GetRelatedResourcesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{99}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{118}
}
func (x *GetRelatedResourcesRequest) GetTeamId() string {
@@ -7548,7 +9030,7 @@ type GetWorkloadPodHistoryResponse struct {
func (x *GetWorkloadPodHistoryResponse) Reset() {
*x = GetWorkloadPodHistoryResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[100]
+ mi := &file_api_v1_k8s_proto_msgTypes[119]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7561,7 +9043,7 @@ func (x *GetWorkloadPodHistoryResponse) String() string {
func (*GetWorkloadPodHistoryResponse) ProtoMessage() {}
func (x *GetWorkloadPodHistoryResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[100]
+ mi := &file_api_v1_k8s_proto_msgTypes[119]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7574,7 +9056,7 @@ func (x *GetWorkloadPodHistoryResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetWorkloadPodHistoryResponse.ProtoReflect.Descriptor instead.
func (*GetWorkloadPodHistoryResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{100}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{119}
}
func (x *GetWorkloadPodHistoryResponse) GetWorkloadUid() string {
@@ -7621,7 +9103,7 @@ type JobHistory struct {
func (x *JobHistory) Reset() {
*x = JobHistory{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[101]
+ mi := &file_api_v1_k8s_proto_msgTypes[120]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7634,7 +9116,7 @@ func (x *JobHistory) String() string {
func (*JobHistory) ProtoMessage() {}
func (x *JobHistory) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[101]
+ mi := &file_api_v1_k8s_proto_msgTypes[120]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7647,7 +9129,7 @@ func (x *JobHistory) ProtoReflect() protoreflect.Message {
// Deprecated: Use JobHistory.ProtoReflect.Descriptor instead.
func (*JobHistory) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{101}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{120}
}
func (x *JobHistory) GetUid() string {
@@ -7708,7 +9190,7 @@ type ReplicaSetHistory struct {
func (x *ReplicaSetHistory) Reset() {
*x = ReplicaSetHistory{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[102]
+ mi := &file_api_v1_k8s_proto_msgTypes[121]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7721,7 +9203,7 @@ func (x *ReplicaSetHistory) String() string {
func (*ReplicaSetHistory) ProtoMessage() {}
func (x *ReplicaSetHistory) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[102]
+ mi := &file_api_v1_k8s_proto_msgTypes[121]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7734,7 +9216,7 @@ func (x *ReplicaSetHistory) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReplicaSetHistory.ProtoReflect.Descriptor instead.
func (*ReplicaSetHistory) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{102}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{121}
}
func (x *ReplicaSetHistory) GetUid() string {
@@ -7796,7 +9278,7 @@ type PodHistory struct {
func (x *PodHistory) Reset() {
*x = PodHistory{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[103]
+ mi := &file_api_v1_k8s_proto_msgTypes[122]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7809,7 +9291,7 @@ func (x *PodHistory) String() string {
func (*PodHistory) ProtoMessage() {}
func (x *PodHistory) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[103]
+ mi := &file_api_v1_k8s_proto_msgTypes[122]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7822,7 +9304,7 @@ func (x *PodHistory) ProtoReflect() protoreflect.Message {
// Deprecated: Use PodHistory.ProtoReflect.Descriptor instead.
func (*PodHistory) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{103}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{122}
}
func (x *PodHistory) GetUid() string {
@@ -7887,7 +9369,7 @@ type GetRelatedResourcesResponse struct {
func (x *GetRelatedResourcesResponse) Reset() {
*x = GetRelatedResourcesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[104]
+ mi := &file_api_v1_k8s_proto_msgTypes[123]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7900,7 +9382,7 @@ func (x *GetRelatedResourcesResponse) String() string {
func (*GetRelatedResourcesResponse) ProtoMessage() {}
func (x *GetRelatedResourcesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[104]
+ mi := &file_api_v1_k8s_proto_msgTypes[123]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7913,7 +9395,7 @@ func (x *GetRelatedResourcesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetRelatedResourcesResponse.ProtoReflect.Descriptor instead.
func (*GetRelatedResourcesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{104}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{123}
}
func (x *GetRelatedResourcesResponse) GetRelations() []*K8SRelatedResource {
@@ -7955,7 +9437,7 @@ type K8SRelatedResource struct {
func (x *K8SRelatedResource) Reset() {
*x = K8SRelatedResource{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[105]
+ mi := &file_api_v1_k8s_proto_msgTypes[124]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7968,7 +9450,7 @@ func (x *K8SRelatedResource) String() string {
func (*K8SRelatedResource) ProtoMessage() {}
func (x *K8SRelatedResource) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[105]
+ mi := &file_api_v1_k8s_proto_msgTypes[124]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7981,7 +9463,7 @@ func (x *K8SRelatedResource) ProtoReflect() protoreflect.Message {
// Deprecated: Use K8SRelatedResource.ProtoReflect.Descriptor instead.
func (*K8SRelatedResource) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{105}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{124}
}
func (x *K8SRelatedResource) GetSourceKind() string {
@@ -8047,7 +9529,7 @@ type K8SResourceNode struct {
func (x *K8SResourceNode) Reset() {
*x = K8SResourceNode{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[106]
+ mi := &file_api_v1_k8s_proto_msgTypes[125]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8060,7 +9542,7 @@ func (x *K8SResourceNode) String() string {
func (*K8SResourceNode) ProtoMessage() {}
func (x *K8SResourceNode) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[106]
+ mi := &file_api_v1_k8s_proto_msgTypes[125]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8073,7 +9555,7 @@ func (x *K8SResourceNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use K8SResourceNode.ProtoReflect.Descriptor instead.
func (*K8SResourceNode) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{106}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{125}
}
func (x *K8SResourceNode) GetId() string {
@@ -8112,7 +9594,7 @@ type K8SResourceEdge struct {
func (x *K8SResourceEdge) Reset() {
*x = K8SResourceEdge{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[107]
+ mi := &file_api_v1_k8s_proto_msgTypes[126]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8125,7 +9607,7 @@ func (x *K8SResourceEdge) String() string {
func (*K8SResourceEdge) ProtoMessage() {}
func (x *K8SResourceEdge) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[107]
+ mi := &file_api_v1_k8s_proto_msgTypes[126]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8138,7 +9620,7 @@ func (x *K8SResourceEdge) ProtoReflect() protoreflect.Message {
// Deprecated: Use K8SResourceEdge.ProtoReflect.Descriptor instead.
func (*K8SResourceEdge) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{107}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{126}
}
func (x *K8SResourceEdge) GetId() string {
@@ -8155,47 +9637,158 @@ func (x *K8SResourceEdge) GetSource() string {
return ""
}
-func (x *K8SResourceEdge) GetTarget() string {
+func (x *K8SResourceEdge) GetTarget() string {
+ if x != nil {
+ return x.Target
+ }
+ return ""
+}
+
+func (x *K8SResourceEdge) GetLabel() string {
+ if x != nil {
+ return x.Label
+ }
+ return ""
+}
+
+// GetClusterTypeRequest is used to determine the cluster type based on kubelet version
+type GetClusterTypeRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+}
+
+func (x *GetClusterTypeRequest) Reset() {
+ *x = GetClusterTypeRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[127]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetClusterTypeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClusterTypeRequest) ProtoMessage() {}
+
+func (x *GetClusterTypeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[127]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClusterTypeRequest.ProtoReflect.Descriptor instead.
+func (*GetClusterTypeRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{127}
+}
+
+func (x *GetClusterTypeRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetClusterTypeRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+// GetClusterTypeResponse returns the determined cluster type
+type GetClusterTypeResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterType ClusterType `protobuf:"varint,1,opt,name=cluster_type,json=clusterType,proto3,enum=api.v1.ClusterType" json:"cluster_type,omitempty"` // Detected cluster type
+ KubeletVersion string `protobuf:"bytes,2,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"` // The raw kubelet version string
+}
+
+func (x *GetClusterTypeResponse) Reset() {
+ *x = GetClusterTypeResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_k8s_proto_msgTypes[128]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetClusterTypeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClusterTypeResponse) ProtoMessage() {}
+
+func (x *GetClusterTypeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[128]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClusterTypeResponse.ProtoReflect.Descriptor instead.
+func (*GetClusterTypeResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{128}
+}
+
+func (x *GetClusterTypeResponse) GetClusterType() ClusterType {
if x != nil {
- return x.Target
+ return x.ClusterType
}
- return ""
+ return ClusterType_CLUSTER_TYPE_UNSPECIFIED
}
-func (x *K8SResourceEdge) GetLabel() string {
+func (x *GetClusterTypeResponse) GetKubeletVersion() string {
if x != nil {
- return x.Label
+ return x.KubeletVersion
}
return ""
}
-// GetClusterTypeRequest is used to determine the cluster type based on kubelet version
-type GetClusterTypeRequest struct {
+type GetMigPartedConfigRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *GetClusterTypeRequest) Reset() {
- *x = GetClusterTypeRequest{}
+func (x *GetMigPartedConfigRequest) Reset() {
+ *x = GetMigPartedConfigRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[108]
+ mi := &file_api_v1_k8s_proto_msgTypes[129]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetClusterTypeRequest) String() string {
+func (x *GetMigPartedConfigRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetClusterTypeRequest) ProtoMessage() {}
+func (*GetMigPartedConfigRequest) ProtoMessage() {}
-func (x *GetClusterTypeRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[108]
+func (x *GetMigPartedConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[129]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8206,52 +9799,62 @@ func (x *GetClusterTypeRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetClusterTypeRequest.ProtoReflect.Descriptor instead.
-func (*GetClusterTypeRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{108}
+// Deprecated: Use GetMigPartedConfigRequest.ProtoReflect.Descriptor instead.
+func (*GetMigPartedConfigRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{129}
}
-func (x *GetClusterTypeRequest) GetTeamId() string {
+func (x *GetMigPartedConfigRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetClusterTypeRequest) GetClusterId() string {
+func (x *GetMigPartedConfigRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-// GetClusterTypeResponse returns the determined cluster type
-type GetClusterTypeResponse struct {
+type GetMigPartedConfigResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ClusterType ClusterType `protobuf:"varint,1,opt,name=cluster_type,json=clusterType,proto3,enum=api.v1.ClusterType" json:"cluster_type,omitempty"` // Detected cluster type
- KubeletVersion string `protobuf:"bytes,2,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"` // The raw kubelet version string
+ // Whether a mig-parted ConfigMap has been collected for this cluster.
+ Found bool `protobuf:"varint,1,opt,name=found,proto3" json:"found,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ // Config schema version (e.g. v1).
+ Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
+ // Parsed profile map from config.yaml as JSON:
+ // {profile-name: [{devices, mig-enabled, mig-devices}, ...]}.
+ MigConfigsJson string `protobuf:"bytes,5,opt,name=mig_configs_json,json=migConfigsJson,proto3" json:"mig_configs_json,omitempty"`
+ // Original config.yaml text; authoritative when parse_error is set.
+ Raw string `protobuf:"bytes,6,opt,name=raw,proto3" json:"raw,omitempty"`
+ ParseError string `protobuf:"bytes,7,opt,name=parse_error,json=parseError,proto3" json:"parse_error,omitempty"`
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
}
-func (x *GetClusterTypeResponse) Reset() {
- *x = GetClusterTypeResponse{}
+func (x *GetMigPartedConfigResponse) Reset() {
+ *x = GetMigPartedConfigResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[109]
+ mi := &file_api_v1_k8s_proto_msgTypes[130]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetClusterTypeResponse) String() string {
+func (x *GetMigPartedConfigResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetClusterTypeResponse) ProtoMessage() {}
+func (*GetMigPartedConfigResponse) ProtoMessage() {}
-func (x *GetClusterTypeResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[109]
+func (x *GetMigPartedConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_k8s_proto_msgTypes[130]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8262,25 +9865,67 @@ func (x *GetClusterTypeResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetClusterTypeResponse.ProtoReflect.Descriptor instead.
-func (*GetClusterTypeResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{109}
+// Deprecated: Use GetMigPartedConfigResponse.ProtoReflect.Descriptor instead.
+func (*GetMigPartedConfigResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{130}
}
-func (x *GetClusterTypeResponse) GetClusterType() ClusterType {
+func (x *GetMigPartedConfigResponse) GetFound() bool {
if x != nil {
- return x.ClusterType
+ return x.Found
}
- return ClusterType_CLUSTER_TYPE_UNSPECIFIED
+ return false
}
-func (x *GetClusterTypeResponse) GetKubeletVersion() string {
+func (x *GetMigPartedConfigResponse) GetName() string {
if x != nil {
- return x.KubeletVersion
+ return x.Name
+ }
+ return ""
+}
+
+func (x *GetMigPartedConfigResponse) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *GetMigPartedConfigResponse) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *GetMigPartedConfigResponse) GetMigConfigsJson() string {
+ if x != nil {
+ return x.MigConfigsJson
+ }
+ return ""
+}
+
+func (x *GetMigPartedConfigResponse) GetRaw() string {
+ if x != nil {
+ return x.Raw
+ }
+ return ""
+}
+
+func (x *GetMigPartedConfigResponse) GetParseError() string {
+ if x != nil {
+ return x.ParseError
}
return ""
}
+func (x *GetMigPartedConfigResponse) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
type GetWorkloadsStatsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -8295,7 +9940,7 @@ type GetWorkloadsStatsRequest struct {
func (x *GetWorkloadsStatsRequest) Reset() {
*x = GetWorkloadsStatsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[110]
+ mi := &file_api_v1_k8s_proto_msgTypes[131]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8308,7 +9953,7 @@ func (x *GetWorkloadsStatsRequest) String() string {
func (*GetWorkloadsStatsRequest) ProtoMessage() {}
func (x *GetWorkloadsStatsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[110]
+ mi := &file_api_v1_k8s_proto_msgTypes[131]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8321,7 +9966,7 @@ func (x *GetWorkloadsStatsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetWorkloadsStatsRequest.ProtoReflect.Descriptor instead.
func (*GetWorkloadsStatsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{110}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{131}
}
func (x *GetWorkloadsStatsRequest) GetTeamId() string {
@@ -8367,7 +10012,7 @@ type GetWorkloadsStatsResponse struct {
func (x *GetWorkloadsStatsResponse) Reset() {
*x = GetWorkloadsStatsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[111]
+ mi := &file_api_v1_k8s_proto_msgTypes[132]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8380,7 +10025,7 @@ func (x *GetWorkloadsStatsResponse) String() string {
func (*GetWorkloadsStatsResponse) ProtoMessage() {}
func (x *GetWorkloadsStatsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[111]
+ mi := &file_api_v1_k8s_proto_msgTypes[132]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8393,7 +10038,7 @@ func (x *GetWorkloadsStatsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetWorkloadsStatsResponse.ProtoReflect.Descriptor instead.
func (*GetWorkloadsStatsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{111}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{132}
}
func (x *GetWorkloadsStatsResponse) GetTotal() int32 {
@@ -8445,7 +10090,7 @@ type DailyUtilizationRequest struct {
func (x *DailyUtilizationRequest) Reset() {
*x = DailyUtilizationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[112]
+ mi := &file_api_v1_k8s_proto_msgTypes[133]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8458,7 +10103,7 @@ func (x *DailyUtilizationRequest) String() string {
func (*DailyUtilizationRequest) ProtoMessage() {}
func (x *DailyUtilizationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[112]
+ mi := &file_api_v1_k8s_proto_msgTypes[133]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8471,7 +10116,7 @@ func (x *DailyUtilizationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DailyUtilizationRequest.ProtoReflect.Descriptor instead.
func (*DailyUtilizationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{112}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{133}
}
func (x *DailyUtilizationRequest) GetTeamId() string {
@@ -8515,7 +10160,7 @@ type DailyUtilizationResponse struct {
func (x *DailyUtilizationResponse) Reset() {
*x = DailyUtilizationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[113]
+ mi := &file_api_v1_k8s_proto_msgTypes[134]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8528,7 +10173,7 @@ func (x *DailyUtilizationResponse) String() string {
func (*DailyUtilizationResponse) ProtoMessage() {}
func (x *DailyUtilizationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[113]
+ mi := &file_api_v1_k8s_proto_msgTypes[134]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8541,7 +10186,7 @@ func (x *DailyUtilizationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DailyUtilizationResponse.ProtoReflect.Descriptor instead.
func (*DailyUtilizationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{113}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{134}
}
func (x *DailyUtilizationResponse) GetClusterIdToDailyTotalCoreMinutes() map[string]*DailyUtilizationResponse_Datapoints {
@@ -8579,7 +10224,7 @@ type DailyUtilizationInstanceTypeRequest struct {
func (x *DailyUtilizationInstanceTypeRequest) Reset() {
*x = DailyUtilizationInstanceTypeRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[114]
+ mi := &file_api_v1_k8s_proto_msgTypes[135]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8592,7 +10237,7 @@ func (x *DailyUtilizationInstanceTypeRequest) String() string {
func (*DailyUtilizationInstanceTypeRequest) ProtoMessage() {}
func (x *DailyUtilizationInstanceTypeRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[114]
+ mi := &file_api_v1_k8s_proto_msgTypes[135]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8605,7 +10250,7 @@ func (x *DailyUtilizationInstanceTypeRequest) ProtoReflect() protoreflect.Messag
// Deprecated: Use DailyUtilizationInstanceTypeRequest.ProtoReflect.Descriptor instead.
func (*DailyUtilizationInstanceTypeRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{114}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{135}
}
func (x *DailyUtilizationInstanceTypeRequest) GetTeamId() string {
@@ -8648,7 +10293,7 @@ type DailyUtilizationInstanceTypeResponse struct {
func (x *DailyUtilizationInstanceTypeResponse) Reset() {
*x = DailyUtilizationInstanceTypeResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[115]
+ mi := &file_api_v1_k8s_proto_msgTypes[136]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8661,7 +10306,7 @@ func (x *DailyUtilizationInstanceTypeResponse) String() string {
func (*DailyUtilizationInstanceTypeResponse) ProtoMessage() {}
func (x *DailyUtilizationInstanceTypeResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[115]
+ mi := &file_api_v1_k8s_proto_msgTypes[136]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8674,7 +10319,7 @@ func (x *DailyUtilizationInstanceTypeResponse) ProtoReflect() protoreflect.Messa
// Deprecated: Use DailyUtilizationInstanceTypeResponse.ProtoReflect.Descriptor instead.
func (*DailyUtilizationInstanceTypeResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{115}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{136}
}
func (x *DailyUtilizationInstanceTypeResponse) GetClusterIdToDatapoints() map[string]*DailyUtilizationInstanceTypeResponse_Datapoints {
@@ -8705,7 +10350,7 @@ type DailyUtilizationNodeTypeRequest struct {
func (x *DailyUtilizationNodeTypeRequest) Reset() {
*x = DailyUtilizationNodeTypeRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[116]
+ mi := &file_api_v1_k8s_proto_msgTypes[137]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8718,7 +10363,7 @@ func (x *DailyUtilizationNodeTypeRequest) String() string {
func (*DailyUtilizationNodeTypeRequest) ProtoMessage() {}
func (x *DailyUtilizationNodeTypeRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[116]
+ mi := &file_api_v1_k8s_proto_msgTypes[137]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8731,7 +10376,7 @@ func (x *DailyUtilizationNodeTypeRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DailyUtilizationNodeTypeRequest.ProtoReflect.Descriptor instead.
func (*DailyUtilizationNodeTypeRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{116}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{137}
}
func (x *DailyUtilizationNodeTypeRequest) GetTeamId() string {
@@ -8774,7 +10419,7 @@ type DailyUtilizationNodeTypeResponse struct {
func (x *DailyUtilizationNodeTypeResponse) Reset() {
*x = DailyUtilizationNodeTypeResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[117]
+ mi := &file_api_v1_k8s_proto_msgTypes[138]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8787,7 +10432,7 @@ func (x *DailyUtilizationNodeTypeResponse) String() string {
func (*DailyUtilizationNodeTypeResponse) ProtoMessage() {}
func (x *DailyUtilizationNodeTypeResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[117]
+ mi := &file_api_v1_k8s_proto_msgTypes[138]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8800,7 +10445,7 @@ func (x *DailyUtilizationNodeTypeResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DailyUtilizationNodeTypeResponse.ProtoReflect.Descriptor instead.
func (*DailyUtilizationNodeTypeResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{117}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{138}
}
func (x *DailyUtilizationNodeTypeResponse) GetClusterIdToDatapoints() map[string]*DailyUtilizationNodeTypeResponse_Datapoints {
@@ -8831,7 +10476,7 @@ type LookupNodeInstanceRequest struct {
func (x *LookupNodeInstanceRequest) Reset() {
*x = LookupNodeInstanceRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[118]
+ mi := &file_api_v1_k8s_proto_msgTypes[139]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8844,7 +10489,7 @@ func (x *LookupNodeInstanceRequest) String() string {
func (*LookupNodeInstanceRequest) ProtoMessage() {}
func (x *LookupNodeInstanceRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[118]
+ mi := &file_api_v1_k8s_proto_msgTypes[139]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8857,7 +10502,7 @@ func (x *LookupNodeInstanceRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use LookupNodeInstanceRequest.ProtoReflect.Descriptor instead.
func (*LookupNodeInstanceRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{118}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{139}
}
func (x *LookupNodeInstanceRequest) GetTeamId() string {
@@ -8897,7 +10542,7 @@ type InstanceLookupParams struct {
func (x *InstanceLookupParams) Reset() {
*x = InstanceLookupParams{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[119]
+ mi := &file_api_v1_k8s_proto_msgTypes[140]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8910,7 +10555,7 @@ func (x *InstanceLookupParams) String() string {
func (*InstanceLookupParams) ProtoMessage() {}
func (x *InstanceLookupParams) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[119]
+ mi := &file_api_v1_k8s_proto_msgTypes[140]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8923,7 +10568,7 @@ func (x *InstanceLookupParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use InstanceLookupParams.ProtoReflect.Descriptor instead.
func (*InstanceLookupParams) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{119}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{140}
}
func (x *InstanceLookupParams) GetCloudProviderId() int64 {
@@ -8977,7 +10622,7 @@ type LookupNodeInstanceResponse struct {
func (x *LookupNodeInstanceResponse) Reset() {
*x = LookupNodeInstanceResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[120]
+ mi := &file_api_v1_k8s_proto_msgTypes[141]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8990,7 +10635,7 @@ func (x *LookupNodeInstanceResponse) String() string {
func (*LookupNodeInstanceResponse) ProtoMessage() {}
func (x *LookupNodeInstanceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[120]
+ mi := &file_api_v1_k8s_proto_msgTypes[141]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9003,7 +10648,7 @@ func (x *LookupNodeInstanceResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use LookupNodeInstanceResponse.ProtoReflect.Descriptor instead.
func (*LookupNodeInstanceResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{120}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{141}
}
func (x *LookupNodeInstanceResponse) GetDynamicInstance() *Instance {
@@ -9052,7 +10697,7 @@ type GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics struct {
func (x *GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) Reset() {
*x = GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[122]
+ mi := &file_api_v1_k8s_proto_msgTypes[143]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9065,7 +10710,7 @@ func (x *GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) String() string
func (*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) ProtoMessage() {}
func (x *GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[122]
+ mi := &file_api_v1_k8s_proto_msgTypes[143]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9078,7 +10723,7 @@ func (x *GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) ProtoReflect() p
// Deprecated: Use GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics.ProtoReflect.Descriptor instead.
func (*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{27, 0}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{35, 0}
}
func (x *GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics) GetNodeGroupMetrics() []*NodeGroupMetric {
@@ -9099,7 +10744,7 @@ type DailyUtilizationResponse_Datapoints struct {
func (x *DailyUtilizationResponse_Datapoints) Reset() {
*x = DailyUtilizationResponse_Datapoints{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[133]
+ mi := &file_api_v1_k8s_proto_msgTypes[154]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9112,7 +10757,7 @@ func (x *DailyUtilizationResponse_Datapoints) String() string {
func (*DailyUtilizationResponse_Datapoints) ProtoMessage() {}
func (x *DailyUtilizationResponse_Datapoints) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[133]
+ mi := &file_api_v1_k8s_proto_msgTypes[154]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9125,7 +10770,7 @@ func (x *DailyUtilizationResponse_Datapoints) ProtoReflect() protoreflect.Messag
// Deprecated: Use DailyUtilizationResponse_Datapoints.ProtoReflect.Descriptor instead.
func (*DailyUtilizationResponse_Datapoints) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{113, 0}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{134, 0}
}
func (x *DailyUtilizationResponse_Datapoints) GetDatapoints() []*DailyUtilizationResponse_Datapoint {
@@ -9147,7 +10792,7 @@ type DailyUtilizationResponse_Datapoint struct {
func (x *DailyUtilizationResponse_Datapoint) Reset() {
*x = DailyUtilizationResponse_Datapoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[134]
+ mi := &file_api_v1_k8s_proto_msgTypes[155]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9160,7 +10805,7 @@ func (x *DailyUtilizationResponse_Datapoint) String() string {
func (*DailyUtilizationResponse_Datapoint) ProtoMessage() {}
func (x *DailyUtilizationResponse_Datapoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[134]
+ mi := &file_api_v1_k8s_proto_msgTypes[155]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9173,7 +10818,7 @@ func (x *DailyUtilizationResponse_Datapoint) ProtoReflect() protoreflect.Message
// Deprecated: Use DailyUtilizationResponse_Datapoint.ProtoReflect.Descriptor instead.
func (*DailyUtilizationResponse_Datapoint) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{113, 1}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{134, 1}
}
func (x *DailyUtilizationResponse_Datapoint) GetTimestamp() int64 {
@@ -9201,7 +10846,7 @@ type DailyUtilizationInstanceTypeResponse_Datapoints struct {
func (x *DailyUtilizationInstanceTypeResponse_Datapoints) Reset() {
*x = DailyUtilizationInstanceTypeResponse_Datapoints{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[137]
+ mi := &file_api_v1_k8s_proto_msgTypes[158]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9214,7 +10859,7 @@ func (x *DailyUtilizationInstanceTypeResponse_Datapoints) String() string {
func (*DailyUtilizationInstanceTypeResponse_Datapoints) ProtoMessage() {}
func (x *DailyUtilizationInstanceTypeResponse_Datapoints) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[137]
+ mi := &file_api_v1_k8s_proto_msgTypes[158]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9227,7 +10872,7 @@ func (x *DailyUtilizationInstanceTypeResponse_Datapoints) ProtoReflect() protore
// Deprecated: Use DailyUtilizationInstanceTypeResponse_Datapoints.ProtoReflect.Descriptor instead.
func (*DailyUtilizationInstanceTypeResponse_Datapoints) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{115, 0}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{136, 0}
}
func (x *DailyUtilizationInstanceTypeResponse_Datapoints) GetDatapoints() []*DailyUtilizationInstanceTypeResponse_Datapoint {
@@ -9249,7 +10894,7 @@ type DailyUtilizationInstanceTypeResponse_Datapoint struct {
func (x *DailyUtilizationInstanceTypeResponse_Datapoint) Reset() {
*x = DailyUtilizationInstanceTypeResponse_Datapoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[138]
+ mi := &file_api_v1_k8s_proto_msgTypes[159]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9262,7 +10907,7 @@ func (x *DailyUtilizationInstanceTypeResponse_Datapoint) String() string {
func (*DailyUtilizationInstanceTypeResponse_Datapoint) ProtoMessage() {}
func (x *DailyUtilizationInstanceTypeResponse_Datapoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[138]
+ mi := &file_api_v1_k8s_proto_msgTypes[159]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9275,7 +10920,7 @@ func (x *DailyUtilizationInstanceTypeResponse_Datapoint) ProtoReflect() protoref
// Deprecated: Use DailyUtilizationInstanceTypeResponse_Datapoint.ProtoReflect.Descriptor instead.
func (*DailyUtilizationInstanceTypeResponse_Datapoint) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{115, 1}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{136, 1}
}
func (x *DailyUtilizationInstanceTypeResponse_Datapoint) GetTimestamp() int64 {
@@ -9303,7 +10948,7 @@ type DailyUtilizationNodeTypeResponse_Datapoints struct {
func (x *DailyUtilizationNodeTypeResponse_Datapoints) Reset() {
*x = DailyUtilizationNodeTypeResponse_Datapoints{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[142]
+ mi := &file_api_v1_k8s_proto_msgTypes[163]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9316,7 +10961,7 @@ func (x *DailyUtilizationNodeTypeResponse_Datapoints) String() string {
func (*DailyUtilizationNodeTypeResponse_Datapoints) ProtoMessage() {}
func (x *DailyUtilizationNodeTypeResponse_Datapoints) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[142]
+ mi := &file_api_v1_k8s_proto_msgTypes[163]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9329,7 +10974,7 @@ func (x *DailyUtilizationNodeTypeResponse_Datapoints) ProtoReflect() protoreflec
// Deprecated: Use DailyUtilizationNodeTypeResponse_Datapoints.ProtoReflect.Descriptor instead.
func (*DailyUtilizationNodeTypeResponse_Datapoints) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{117, 0}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{138, 0}
}
func (x *DailyUtilizationNodeTypeResponse_Datapoints) GetDatapoints() []*DailyUtilizationNodeTypeResponse_Datapoint {
@@ -9351,7 +10996,7 @@ type DailyUtilizationNodeTypeResponse_Datapoint struct {
func (x *DailyUtilizationNodeTypeResponse_Datapoint) Reset() {
*x = DailyUtilizationNodeTypeResponse_Datapoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_k8s_proto_msgTypes[143]
+ mi := &file_api_v1_k8s_proto_msgTypes[164]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9364,7 +11009,7 @@ func (x *DailyUtilizationNodeTypeResponse_Datapoint) String() string {
func (*DailyUtilizationNodeTypeResponse_Datapoint) ProtoMessage() {}
func (x *DailyUtilizationNodeTypeResponse_Datapoint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_k8s_proto_msgTypes[143]
+ mi := &file_api_v1_k8s_proto_msgTypes[164]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9377,7 +11022,7 @@ func (x *DailyUtilizationNodeTypeResponse_Datapoint) ProtoReflect() protoreflect
// Deprecated: Use DailyUtilizationNodeTypeResponse_Datapoint.ProtoReflect.Descriptor instead.
func (*DailyUtilizationNodeTypeResponse_Datapoint) Descriptor() ([]byte, []int) {
- return file_api_v1_k8s_proto_rawDescGZIP(), []int{117, 1}
+ return file_api_v1_k8s_proto_rawDescGZIP(), []int{138, 1}
}
func (x *DailyUtilizationNodeTypeResponse_Datapoint) GetTimestamp() int64 {
@@ -9471,7 +11116,7 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e,
0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61,
0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfe, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x74, 0x69, 0x6d, 0x65, 0x22, 0x90, 0x04, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
@@ -9492,48 +11137,313 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x48,
- 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a,
- 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09,
- 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a,
+ 0x22, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f,
+ 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x69, 0x6e,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x21, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x1b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x32, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42,
+ 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b,
+ 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xbf, 0x04, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
+ 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48,
+ 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a,
+ 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x48, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x22, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x1f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x32,
+ 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x56, 0x32, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
+ 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
+ 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64,
+ 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c,
+ 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a,
+ 0x08, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xb0, 0x02, 0x0a, 0x1a, 0x47, 0x65,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
+ 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01,
+ 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x07,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x48, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xec, 0x01, 0x0a,
+ 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c,
+ 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xa0, 0x02, 0x0a, 0x17,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x72,
+ 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x5f, 0x65,
+ 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x45, 0x6e,
+ 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x74, 0x68,
+ 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a,
+ 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
+ 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+ 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x74, 0x6f, 0x70, 0x38, 0x30, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x38, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc8,
+ 0x05, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53,
+ 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33,
+ 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x04, 0x63,
+ 0x6f, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x72,
+ 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67,
+ 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42,
+ 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61,
+ 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x42, 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x1b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f,
+ 0x63, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x19, 0x6f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69,
+ 0x61, 0x6c, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x1a, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
+ 0x5f, 0x63, 0x70, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x18, 0x6f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69,
+ 0x61, 0x6c, 0x43, 0x70, 0x75, 0x12, 0x63, 0x0a, 0x1d, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x1b, 0x6f,
+ 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x74, 0x65, 0x6e,
+ 0x74, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x5d, 0x0a, 0x1a, 0x6f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e,
+ 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x52,
+ 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x74,
+ 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x47, 0x70, 0x75, 0x22, 0xc3, 0x01, 0x0a, 0x1e, 0x4c, 0x69,
+ 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x50, 0x61, 0x67, 0x69, 0x6e,
+ 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
+ 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22,
+ 0x9f, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
+ 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x01, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0a,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x35, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x22, 0xef, 0x02, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01,
+ 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x32,
+ 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
+ 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
+ 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61,
+ 0x72, 0x63, 0x68, 0x22, 0x82, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49,
+ 0x74, 0x65, 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75,
+ 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x27, 0x0a,
+ 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64,
+ 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69,
+ 0x74, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x74,
+ 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e,
+ 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00,
+ 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a,
+ 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07,
+ 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e,
+ 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xa5, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88,
- 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
- 0x22, 0xef, 0x02, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01,
- 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x01, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a,
- 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e,
- 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
+ 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1c, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72,
- 0x63, 0x68, 0x22, 0x82, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54,
+ 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69,
+ 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a,
+ 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65,
+ 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e,
+ 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x8e,
+ 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0a,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x3a, 0x02, 0x18, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22,
+ 0xc3, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a,
+ 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52,
+ 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a,
+ 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65,
+ 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63,
+ 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02,
+ 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4e, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf8,
+ 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
+ 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70,
+ 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x63,
+ 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2f, 0x0a,
+ 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x29,
+ 0x0a, 0x11, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68,
+ 0x6f, 0x75, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x67, 0x70, 0x75, 0x43, 0x6f,
+ 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x22, 0x42, 0x0a, 0x15, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x87, 0x01,
+ 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
0x61, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
@@ -9541,249 +11451,149 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x65, 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
- 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74,
- 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68,
- 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0c, 0x77, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a,
- 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52,
- 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a,
- 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65,
- 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xa5, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
- 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
- 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
- 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65,
- 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a,
- 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x8e, 0x01,
- 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b,
- 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0a, 0x70,
- 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
- 0x02, 0x18, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0xc3,
- 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08,
- 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e,
- 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52,
- 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28,
- 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f,
- 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4e, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x22, 0x60, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x46,
+ 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x52, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf8, 0x01,
- 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21,
- 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65,
- 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x63, 0x70,
- 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2f, 0x0a, 0x14,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f,
- 0x68, 0x6f, 0x75, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x29, 0x0a,
- 0x11, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f,
- 0x75, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x73,
- 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x22, 0x42, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x87, 0x01, 0x0a,
- 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49,
- 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65,
- 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x14,
- 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
- 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x65,
- 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbf, 0x02, 0x0a, 0x14,
- 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08,
- 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e,
- 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52,
- 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21,
- 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x15,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a,
- 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x32, 0x0a,
- 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x22, 0x4b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xc8,
- 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d,
- 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x52, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0c, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xa7, 0x02,
- 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55,
- 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69,
- 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f,
- 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x75,
- 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65,
- 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xdd, 0x09, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a,
- 0x1a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x75,
- 0x74, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x44, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12,
- 0x89, 0x01, 0x0a, 0x1d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74,
- 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f,
- 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x19, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f,
- 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x20,
- 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
- 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05,
+ 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbf, 0x02, 0x0a, 0x14, 0x47, 0x65,
+ 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e,
+ 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54,
+ 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62,
+ 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c,
+ 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42,
+ 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b,
+ 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
+ 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x32, 0x0a, 0x17, 0x47,
+ 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22,
+ 0x4b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xc8, 0x01, 0x0a,
+ 0x18, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c,
+ 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x4d, 0x61, 0x70, 0x1a, 0x52, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x1f,
0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
- 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x1c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x79, 0x70, 0x65, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x12, 0x80, 0x01, 0x0a, 0x1a, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x7a, 0x5f,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
+ 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69,
+ 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b,
+ 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xdd, 0x09, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x1a, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x74, 0x69,
+ 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x44, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x89, 0x01,
+ 0x0a, 0x1d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x74, 0x6f, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18,
- 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c,
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
- 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x7a, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6c, 0x6f, 0x67,
- 0x69, 0x63, 0x61, 0x6c, 0x41, 0x7a, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x1a, 0x5d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x45, 0x0a, 0x12, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x52, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x1a, 0x88, 0x01, 0x0a, 0x1b, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f, 0x55, 0x74,
+ 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f, 0x55, 0x74,
+ 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x20, 0x72, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74,
+ 0x6f, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0b,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52,
+ 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f,
+ 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x1c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
+ 0x65, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x80,
+ 0x01, 0x0a, 0x1a, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x7a, 0x5f, 0x74, 0x6f,
+ 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x10, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69,
- 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8b, 0x01,
- 0x0a, 0x1e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x6f,
+ 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x7a, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6c, 0x6f, 0x67, 0x69, 0x63,
+ 0x61, 0x6c, 0x41, 0x7a, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x73, 0x1a, 0x5d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x45, 0x0a, 0x12, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x10,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x1a, 0x88, 0x01, 0x0a, 0x1b, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x6f,
0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
@@ -9791,245 +11601,364 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8e, 0x01, 0x0a, 0x21,
- 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x54,
- 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x88, 0x01, 0x0a,
- 0x1b, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x7a, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xeb, 0x06, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x6d, 0x61,
- 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d,
- 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
- 0x79, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x43, 0x70, 0x75, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x70,
- 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x12, 0x30, 0x0a,
- 0x14, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x64, 0x65,
- 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x47, 0x70, 0x75, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12,
- 0x20, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x18,
- 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x67, 0x67, 0x72, 0x43, 0x70, 0x75, 0x52, 0x65,
- 0x71, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x72, 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x67, 0x67, 0x72,
- 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x67, 0x67,
- 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x0a, 0x61, 0x67, 0x67, 0x72, 0x47, 0x70, 0x75, 0x52, 0x65, 0x71, 0x12, 0x2b, 0x0a, 0x12, 0x75,
- 0x74, 0x69, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x75, 0x74, 0x69, 0x6c, 0x43, 0x70, 0x75,
- 0x41, 0x76, 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x75, 0x74, 0x69, 0x6c,
- 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x75, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x41, 0x76, 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x17, 0x75,
- 0x74, 0x69, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x61, 0x76, 0x67,
- 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x75, 0x74,
- 0x69, 0x6c, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x41, 0x76, 0x67, 0x55, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x64, 0x65,
- 0x76, 0x69, 0x63, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x75, 0x74, 0x69, 0x6c,
- 0x47, 0x70, 0x75, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x68, 0x6f, 0x75,
- 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e,
- 0x65, 0x79, 0x52, 0x0a, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3a,
- 0x0a, 0x0f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73,
- 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x68, 0x6f, 0x75,
- 0x72, 0x6c, 0x79, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x12, 0x68, 0x6f,
- 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74,
- 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72,
- 0x6c, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0f,
- 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18,
- 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8b, 0x01, 0x0a, 0x1e,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f, 0x55, 0x74,
+ 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8e, 0x01, 0x0a, 0x21, 0x52, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x54, 0x6f, 0x55,
+ 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x88, 0x01, 0x0a, 0x1b, 0x4c,
+ 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x7a, 0x54, 0x6f, 0x55, 0x74, 0x69, 0x6c, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x73, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xeb, 0x06, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e,
+ 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x6d, 0x61, 0x78, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d, 0x61, 0x78,
+ 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f,
+ 0x63, 0x70, 0x75, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x43, 0x70, 0x75, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69,
+ 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12,
+ 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f,
+ 0x76, 0x72, 0x61, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x63,
+ 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x64, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x47, 0x70, 0x75, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x20, 0x0a,
+ 0x0c, 0x61, 0x67, 0x67, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x15, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x67, 0x67, 0x72, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x12,
+ 0x26, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72,
+ 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x67, 0x67, 0x72, 0x4d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x5f,
+ 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61,
+ 0x67, 0x67, 0x72, 0x47, 0x70, 0x75, 0x52, 0x65, 0x71, 0x12, 0x2b, 0x0a, 0x12, 0x75, 0x74, 0x69,
+ 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x1f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x75, 0x74, 0x69, 0x6c, 0x43, 0x70, 0x75, 0x41, 0x76,
+ 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x20, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x75, 0x74, 0x69, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x41, 0x76, 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x17, 0x75, 0x74, 0x69,
+ 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x75,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x75, 0x74, 0x69, 0x6c,
+ 0x47, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x41, 0x76, 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12,
+ 0x26, 0x0a, 0x0f, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x64, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x75, 0x74, 0x69, 0x6c, 0x47, 0x70,
+ 0x75, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x68, 0x6f, 0x75, 0x72, 0x6c,
+ 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x52, 0x0a, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0f,
+ 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18,
+ 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74,
0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x68, 0x6f, 0x75, 0x72, 0x6c,
- 0x79, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x48, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a,
- 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22,
- 0x3f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x22, 0xf2, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73,
- 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
- 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e,
- 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f,
- 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x44,
- 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x61,
- 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e,
- 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50,
- 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x7b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a,
- 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61,
- 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x02,
- 0x18, 0x01, 0x22, 0xb4, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x09,
- 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66,
- 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x10, 0x63,
- 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6f,
- 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61,
- 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44,
- 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x47, 0x65,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d,
- 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12,
- 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74,
- 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42,
- 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73,
- 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75,
- 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53,
- 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x95, 0x03, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39,
- 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73,
- 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
- 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x10,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
- 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
- 0x12, 0x3f, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e,
- 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74,
- 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61,
- 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x9e,
- 0x02, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x79, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x12, 0x68, 0x6f, 0x75, 0x72,
+ 0x6c, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x34,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79,
+ 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0f, 0x68, 0x6f,
+ 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x35, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
+ 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x47,
+ 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54,
+ 0x69, 0x6d, 0x65, 0x22, 0x48, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x3f, 0x0a,
+ 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0xf2,
+ 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
+ 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+ 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f,
+ 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69,
+ 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f, 0x64,
+ 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61,
+ 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74,
+ 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61,
+ 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52,
+ 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69,
+ 0x6e, 0x74, 0x73, 0x22, 0x7b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x08,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x02, 0x18, 0x01,
+ 0x22, 0xb4, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f,
+ 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x10, 0x63, 0x6f, 0x73,
+ 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73,
+ 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x73, 0x74,
+ 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f,
+ 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74,
+ 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x3b, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2d, 0x0a,
+ 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x10,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52,
+ 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d,
+ 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d,
+ 0x61, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d,
+ 0x6d, 0x61, 0x72, 0x79, 0x22, 0x95, 0x03, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0d,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+ 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f,
+ 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3f,
+ 0x0a, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52,
+ 0x0e, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12,
+ 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61,
+ 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44,
+ 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x9e, 0x02, 0x0a,
+ 0x26, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
- 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22,
- 0x6d, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x9d,
- 0x02, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54,
- 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
+ 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
+ 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x6d, 0x0a,
+ 0x27, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
+ 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x9d, 0x02, 0x0a,
+ 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x75, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
+ 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88,
- 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x65,
- 0x0a, 0x26, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54,
- 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65,
- 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x27, 0x47, 0x65, 0x74,
- 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x73, 0x22, 0x90, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65,
+ 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
+ 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
+ 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42,
+ 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x65, 0x0a, 0x26,
+ 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d,
+ 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4c, 0x61,
+ 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x50,
+ 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x07,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07,
+ 0x6e, 0x6f, 0x64, 0x65, 0x55, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x75, 0x69, 0x64, 0x22, 0xab, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c,
+ 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00,
+ 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01,
+ 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x22, 0xa9, 0x02, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x50, 0x55,
+ 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88,
+ 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x55, 0x69, 0x64, 0x88,
+ 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a,
+ 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64,
+ 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64,
+ 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xa7, 0x02,
+ 0x0a, 0x17, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x5f, 0x61, 0x63,
+ 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x74, 0x65, 0x6e, 0x73,
+ 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x72, 0x61, 0x6d,
+ 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64,
+ 0x72, 0x61, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x67, 0x72, 0x61,
+ 0x70, 0x68, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x63, 0x74,
+ 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x67, 0x72, 0x61, 0x70, 0x68,
+ 0x69, 0x63, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12,
+ 0x29, 0x0a, 0x10, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x75,
+ 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65,
+ 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x55, 0x73, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x72,
+ 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xdc, 0x01, 0x0a, 0x18, 0x47, 0x50, 0x55, 0x4d,
+ 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65,
+ 0x72, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d,
+ 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x6d, 0x69, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a,
+ 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x69, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x50,
+ 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x73, 0x22, 0x73, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x71, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c,
+ 0x47, 0x50, 0x55, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64,
+ 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x4c, 0x61, 0x6e,
+ 0x67, 0x75, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a,
+ 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x55, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x1c,
+ 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75,
+ 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x09,
+ 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
+ 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75,
+ 0x61, 0x67, 0x65, 0x73, 0x22, 0x90, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65,
0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
@@ -10362,7 +12291,7 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x21, 0x0a, 0x1f,
0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
- 0x87, 0x07, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65,
+ 0xcb, 0x07, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65,
0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x7a, 0x78, 0x70, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
@@ -10418,543 +12347,570 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x72, 0x65, 0x7a, 0x72, 0x5f, 0x68, 0x65, 0x6c, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x2a,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70,
0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x74, 0x72, 0x65, 0x7a,
- 0x72, 0x48, 0x65, 0x6c, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe5, 0x01, 0x0a, 0x23, 0x47, 0x61,
- 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
- 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x50, 0x4f, 0x56,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x52,
- 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x47, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65,
- 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70,
- 0x74, 0x73, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74,
- 0x73, 0x22, 0xb6, 0x03, 0x0a, 0x24, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x56, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a,
- 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79,
+ 0x72, 0x48, 0x65, 0x6c, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x12, 0x73, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
+ 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
+ 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x73, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x48, 0x65, 0x6c, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe5, 0x01,
+ 0x0a, 0x23, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12,
+ 0x3b, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78,
+ 0x79, 0x50, 0x4f, 0x56, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x42, 0x79, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x47, 0x0a, 0x0e,
+ 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65,
+ 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x4f, 0x70, 0x74, 0x73, 0x22, 0xb6, 0x03, 0x0a, 0x24, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70,
- 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x4c, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x52, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf, 0x02, 0x0a, 0x13, 0x47,
- 0x61, 0x6c, 0x61, 0x78, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12,
- 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x55, 0x69, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e,
- 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74,
- 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01,
+ 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39,
+ 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78,
+ 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x09,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x56, 0x0a, 0x08, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x73, 0x12, 0x59, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61,
+ 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x4c, 0x0a, 0x0d,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x52, 0x0a, 0x0e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49,
+ 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf,
+ 0x02, 0x0a, 0x13, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
+ 0x75, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6f, 0x73,
+ 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
+ 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x98, 0x01, 0x0a,
- 0x18, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d,
- 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
- 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
- 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x69, 0x6d,
- 0x65, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x40, 0x0a, 0x1d, 0x6e, 0x75, 0x6d, 0x5f, 0x64, 0x61, 0x74,
- 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
- 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6e, 0x75,
- 0x6d, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d,
- 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0xa3, 0x05, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
- 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
- 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64,
- 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38,
- 0x0a, 0x18, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x55,
- 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18,
- 0x01, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a,
- 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0d,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x65, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f,
- 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61,
- 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65,
- 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x76, 0x0a,
- 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75,
- 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6c, 0x6f, 0x67,
- 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd5, 0x04, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75,
- 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
- 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0d, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a,
- 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a,
- 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6d, 0x61,
- 0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a,
- 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76,
- 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35,
- 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e,
- 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6d,
- 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d,
- 0x61, 0x69, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65,
- 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x4a, 0x0a,
- 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72, 0x69,
- 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c,
- 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x18, 0x53, 0x65,
- 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a,
- 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f,
- 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x19, 0x53, 0x65,
- 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x22, 0x64, 0x0a, 0x1d, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53,
- 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e,
- 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d,
- 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5c, 0x0a, 0x21, 0x53, 0x65, 0x6e, 0x64, 0x57,
- 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69,
- 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65,
- 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70,
- 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x1e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65,
- 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x22, 0x95, 0x03, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e,
+ 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x10,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
+ 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
+ 0x22, 0x98, 0x01, 0x0a, 0x18, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65,
+ 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09,
+ 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x08, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x40, 0x0a, 0x1d, 0x6e, 0x75, 0x6d,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x19, 0x6e, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49,
+ 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0xa3, 0x05, 0x0a, 0x14,
+ 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e,
+ 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
+ 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0e, 0x65, 0x6d, 0x61,
+ 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12,
+ 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e,
0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54,
- 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x15, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x5f, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18,
- 0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x6f,
- 0x73, 0x74, 0x45, 0x78, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x65, 0x78, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6e,
- 0x6f, 0x64, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75,
- 0x64, 0x65, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3d,
- 0x0a, 0x1b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x75,
- 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x2b, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x18, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x6f, 0x73, 0x74,
- 0x55, 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x0d, 0x0a,
- 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09,
- 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x1b, 0x47, 0x65,
- 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
- 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
- 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x13, 0x6d, 0x6f, 0x73, 0x74,
- 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
- 0x6f, 0x64, 0x65, 0x52, 0x11, 0x6d, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69,
- 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x14, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x5f,
- 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x52, 0x12, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69,
- 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x17, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x75,
- 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x15, 0x6d, 0x6f, 0x73, 0x74, 0x55, 0x6e, 0x64, 0x65, 0x72,
- 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x9f, 0x01, 0x0a,
- 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68,
+ 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x75,
+ 0x64, 0x69, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x73, 0x42, 0x11,
+ 0x0a, 0x0f, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x73, 0x22, 0x76, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f,
+ 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x6f,
+ 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70,
+ 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd5, 0x04, 0x0a, 0x1e, 0x4c, 0x69,
+ 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e,
+ 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x3a,
+ 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+ 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0c, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67,
+ 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11,
+ 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x2e, 0x0a, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52,
+ 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x88, 0x01,
+ 0x01, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
+ 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61,
+ 0x69, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x42, 0x11,
+ 0x0a, 0x0f, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x73, 0x22, 0x4a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f,
+ 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65,
+ 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x9e, 0x01,
+ 0x0a, 0x18, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d,
+ 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65,
- 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x4f,
- 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07,
- 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22,
- 0x8e, 0x01, 0x0a, 0x0f, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a,
- 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x65,
- 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x22, 0x78, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
- 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63,
- 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73,
- 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x57, 0x0a, 0x1a, 0x53, 0x65,
- 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65,
+ 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x35,
+ 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d,
+ 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x64, 0x0a, 0x1d, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65,
+ 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61,
+ 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5c, 0x0a, 0x21, 0x53,
+ 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
+ 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63,
+ 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72,
+ 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x1e, 0x53, 0x65, 0x6e,
+ 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d,
+ 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x95, 0x03, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x3e,
+ 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00,
+ 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a,
+ 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07,
+ 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x15, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x4d, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a,
+ 0x16, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x65,
+ 0x78, 0x70, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65,
+ 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x4e, 0x6f,
+ 0x64, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x6f,
+ 0x73, 0x74, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x64,
+ 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x4d, 0x6f, 0x73, 0x74, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x4e, 0x6f, 0x64,
+ 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x90, 0x02,
+ 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64,
+ 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a,
+ 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x13,
+ 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x11, 0x6d, 0x6f, 0x73, 0x74, 0x45, 0x78, 0x70,
+ 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x14, 0x6c, 0x65,
+ 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70,
+ 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x17, 0x6d, 0x6f,
+ 0x73, 0x74, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x65, 0x64,
+ 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x15, 0x6d, 0x6f, 0x73, 0x74, 0x55,
+ 0x6e, 0x64, 0x65, 0x72, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65,
+ 0x22, 0x9f, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+ 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65,
+ 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65,
0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x73, 0x22, 0x41, 0x0a, 0x17, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12,
- 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x1b, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x6b,
- 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x5f, 0x74,
- 0x6f, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f,
- 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4b,
- 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69,
- 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x64, 0x1a, 0x5b, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x22, 0xfc, 0x01, 0x0a, 0x1c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f,
- 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x78, 0x0a, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
- 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6c, 0x74, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x0f, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65,
+ 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
+ 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x22, 0x78, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38,
+ 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x57,
+ 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x41, 0x0a, 0x17, 0x4b, 0x38, 0x73, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x1b, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x6b, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
+ 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69,
+ 0x64, 0x54, 0x6f, 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4b, 0x69, 0x6e, 0x64, 0x12,
+ 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x5b, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73,
+ 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfc, 0x01, 0x0a, 0x1c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55,
- 0x69, 0x64, 0x54, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x62, 0x0a, 0x1a,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0x63, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61,
- 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x66, 0x0a, 0x18, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61,
- 0x67, 0x73, 0x22, 0x46, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x2a, 0x0a, 0x0f, 0x4c, 0x69,
- 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x1a, 0x62, 0x0a, 0x1a, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x54,
+ 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0x63, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x53, 0x75, 0x6d,
- 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54,
- 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x74,
- 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x04, 0x74,
- 0x61, 0x67, 0x73, 0x22, 0xcc, 0x04, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6a, 0x0a, 0x18, 0x70, 0x6f, 0x64, 0x5f,
- 0x75, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4e, 0x6f, 0x64,
- 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14,
- 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x12, 0x67, 0x0a, 0x17, 0x70, 0x6f, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x5f,
- 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
- 0x50, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64,
- 0x54, 0x6f, 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a,
- 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61,
- 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64,
- 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0x5d, 0x0a, 0x19, 0x50, 0x6f, 0x64, 0x55, 0x69, 0x64,
- 0x54, 0x6f, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x18, 0x50, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54,
- 0x6f, 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
- 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63,
- 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x22, 0xaa, 0x02, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79,
- 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x69, 0x6e, 0x73, 0x74,
- 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65,
- 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a,
- 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0xce, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x0d, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
- 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d,
- 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01,
- 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4b, 0x69,
- 0x6e, 0x64, 0x22, 0xdd, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65,
- 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x53, 0x65, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f,
- 0x70, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a,
- 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x04, 0x6a, 0x6f,
- 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x6a, 0x6f,
- 0x62, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x22, 0xf3, 0x01,
- 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74,
- 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f,
- 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
- 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x04, 0x70,
- 0x6f, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x70,
- 0x6f, 0x64, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09,
- 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f,
- 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22,
- 0xb5, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x38, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x52,
- 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09,
- 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x6e, 0x6f, 0x64,
- 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x64,
- 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65,
- 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65,
- 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x12, 0x4b, 0x38, 0x73, 0x52,
- 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
- 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x69, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x64, 0x12,
- 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70,
- 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x6c,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a,
- 0x0f, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x67, 0x0a, 0x0f, 0x4b, 0x38, 0x73, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c,
- 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x22, 0x4f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54,
- 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x16, 0x41, 0x64, 0x64,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x66,
+ 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54,
+ 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x22, 0x79, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0c,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f,
- 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b,
- 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xea, 0x01,
+ 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x46, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x2a,
+ 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x0a, 0x54, 0x61,
+ 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x4c,
+ 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x26, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
+ 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xcc, 0x04, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6a, 0x0a, 0x18,
+ 0x70, 0x6f, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54,
+ 0x6f, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x14, 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4e, 0x6f, 0x64, 0x65,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x67, 0x0a, 0x17, 0x70, 0x6f, 0x64, 0x5f,
+ 0x75, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x50, 0x6f, 0x64, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x70, 0x6f,
+ 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
+ 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0x5d, 0x0a, 0x19, 0x50, 0x6f,
+ 0x64, 0x55, 0x69, 0x64, 0x54, 0x6f, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x18, 0x50, 0x6f, 0x64,
+ 0x55, 0x69, 0x64, 0x54, 0x6f, 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x50, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x73, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xaa, 0x02, 0x0a, 0x0c, 0x4e, 0x6f, 0x64,
+ 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f,
+ 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26,
+ 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f,
+ 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x54,
+ 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+ 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65,
+ 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xce, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c,
+ 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x04,
+ 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e,
+ 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x0d, 0x6b, 0x61, 0x72,
+ 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x0d, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4b, 0x69, 0x6e,
+ 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x22, 0xdd, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0c, 0x72,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x53, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0b, 0x72, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x52, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x26,
+ 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x48, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
+ 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f, 0x64,
+ 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x70, 0x6f, 0x64,
+ 0x73, 0x22, 0xf3, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a,
+ 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x26, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x48,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68,
+ 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65,
+ 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a,
+ 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x22, 0xb5, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4b, 0x38, 0x73, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a,
+ 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05,
+ 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x12,
+ 0x4b, 0x38, 0x73, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b,
+ 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55,
+ 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6b, 0x69,
+ 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75,
+ 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x55, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x68, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70,
+ 0x65, 0x22, 0x49, 0x0a, 0x0f, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x67, 0x0a, 0x0f,
+ 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x4f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x79, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x36, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65,
+ 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x22, 0x53, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x50, 0x61, 0x72, 0x74, 0x65,
+ 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x94, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4d, 0x69,
+ 0x67, 0x50, 0x61, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a,
+ 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x69, 0x67, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x4a, 0x73, 0x6f,
+ 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x72, 0x61, 0x77, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x73, 0x65, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65,
+ 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0xea, 0x01,
0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74,
0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
@@ -11308,7 +13264,7 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4b, 0x45, 0x32,
0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59,
0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x44, 0x10, 0x03, 0x32,
- 0xca, 0x1e, 0x0a, 0x0a, 0x4b, 0x38, 0x53, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58,
+ 0xb8, 0x25, 0x0a, 0x0a, 0x4b, 0x38, 0x53, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58,
0x0a, 0x11, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74,
0x61, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
@@ -11408,204 +13364,259 @@ var file_api_v1_k8s_proto_rawDesc = []byte{
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82,
- 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64,
+ 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x50, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53,
+ 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x75, 0x6d, 0x6d,
+ 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
+ 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x46, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57,
0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x1e,
+ 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65,
+ 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53,
- 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65,
- 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01,
+ 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61,
0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, 0x74,
+ 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61,
+ 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61,
+ 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x50, 0x55,
+ 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x50, 0x55,
+ 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f,
+ 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12,
+ 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x50, 0x55, 0x4d, 0x69, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x85, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x76,
+ 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x69,
+ 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x50, 0x55, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73,
+ 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61,
+ 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x14, 0x47,
+ 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f,
- 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02,
- 0x01, 0x12, 0x63, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a,
- 0x18, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c,
- 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c,
- 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41,
- 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64,
- 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73,
- 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03,
+ 0x88, 0x02, 0x01, 0x12, 0x63, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61,
+ 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63,
+ 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d,
+ 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61,
+ 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a,
+ 0x1c, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74,
+ 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74,
+ 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75,
0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72,
- 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x58, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d, 0x61, 0x69,
- 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d,
- 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x53,
- 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
- 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
- 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
- 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79,
- 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
- 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38,
- 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f,
- 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
- 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46,
- 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x5b, 0x0a, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
- 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15,
+ 0x73, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41,
+ 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f,
+ 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x4f,
+ 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6d, 0x61,
+ 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45,
+ 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16,
+ 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
+ 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
+ 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x65, 0x65, 0x6b, 0x6c,
+ 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b,
+ 0x38, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38,
+ 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x38, 0x73, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x4f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x46, 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x5b, 0x0a, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a,
+ 0x15, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x64, 0x48,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x64, 0x48, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x54, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
- 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54,
- 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a,
- 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdc, 0x02, 0x0a,
- 0x16, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x6f, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+ 0x64, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
+ 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d,
+ 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
+ 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a,
+ 0x12, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x50, 0x61, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4d, 0x69, 0x67, 0x50, 0x61, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x50, 0x61, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdc, 0x02, 0x0a, 0x16, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x58, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x58, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f,
- 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd5, 0x02, 0x0a, 0x12,
- 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd5, 0x02, 0x0a, 0x12, 0x55, 0x74,
+ 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x12, 0x55, 0x0a, 0x10, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61,
+ 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
+ 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x44, 0x61, 0x69, 0x6c, 0x79,
+ 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x44, 0x61, 0x69,
- 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69,
+ 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61,
+ 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69,
0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55,
- 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79,
- 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x42, 0x86, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x42, 0x08, 0x4b, 0x38, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35,
- 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65,
- 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f,
- 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b,
- 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70,
- 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12,
- 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x42, 0x86, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x42, 0x08, 0x4b, 0x38, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69,
+ 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f,
+ 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61,
+ 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70,
+ 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e,
+ 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70,
+ 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -11621,7 +13632,7 @@ func file_api_v1_k8s_proto_rawDescGZIP() []byte {
}
var file_api_v1_k8s_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_api_v1_k8s_proto_msgTypes = make([]protoimpl.MessageInfo, 147)
+var file_api_v1_k8s_proto_msgTypes = make([]protoimpl.MessageInfo, 168)
var file_api_v1_k8s_proto_goTypes = []interface{}{
(GalaxyPOVNodeGroupBy)(0), // 0: api.v1.GalaxyPOVNodeGroupBy
(GalaxyPOVWorkloadGroupBy)(0), // 1: api.v1.GalaxyPOVWorkloadGroupBy
@@ -11631,490 +13642,561 @@ var file_api_v1_k8s_proto_goTypes = []interface{}{
(*GetClusterMetadataRequest)(nil), // 5: api.v1.GetClusterMetadataRequest
(*GetNodeGroupRequest)(nil), // 6: api.v1.GetNodeGroupRequest
(*GetWorkloadsRequest)(nil), // 7: api.v1.GetWorkloadsRequest
- (*GetResourcesRequest)(nil), // 8: api.v1.GetResourcesRequest
- (*GetPodsRequest)(nil), // 9: api.v1.GetPodsRequest
- (*GetPodsResponse)(nil), // 10: api.v1.GetPodsResponse
- (*GetWorkloadRequest)(nil), // 11: api.v1.GetWorkloadRequest
- (*GetClustersRequest)(nil), // 12: api.v1.GetClustersRequest
- (*ListClustersRequest)(nil), // 13: api.v1.ListClustersRequest
- (*GetClusterRequest)(nil), // 14: api.v1.GetClusterRequest
- (*DeleteClusterRequest)(nil), // 15: api.v1.DeleteClusterRequest
- (*DeleteClusterResponse)(nil), // 16: api.v1.DeleteClusterResponse
- (*UpdateClusterRequest)(nil), // 17: api.v1.UpdateClusterRequest
- (*UpdateClusterResponse)(nil), // 18: api.v1.UpdateClusterResponse
- (*GetResourcesResponse)(nil), // 19: api.v1.GetResourcesResponse
- (*CreateClusterRequest)(nil), // 20: api.v1.CreateClusterRequest
- (*CreateClusterResponse)(nil), // 21: api.v1.CreateClusterResponse
- (*ResetClusterTokenRequest)(nil), // 22: api.v1.ResetClusterTokenRequest
- (*ResetClusterTokenResponse)(nil), // 23: api.v1.ResetClusterTokenResponse
- (*GetNodeGroupsRequest)(nil), // 24: api.v1.GetNodeGroupsRequest
- (*GetAllNodeGroupsRequest)(nil), // 25: api.v1.GetAllNodeGroupsRequest
- (*GetNodeGroupsResponse)(nil), // 26: api.v1.GetNodeGroupsResponse
- (*GetAllNodeGroupsResponse)(nil), // 27: api.v1.GetAllNodeGroupsResponse
- (*NodeGroupSet)(nil), // 28: api.v1.NodeGroupSet
- (*GetNodeGroupsUtilizationRequest)(nil), // 29: api.v1.GetNodeGroupsUtilizationRequest
- (*GetNodeGroupsUtilizationResponse)(nil), // 30: api.v1.GetNodeGroupsUtilizationResponse
- (*NodeGroupMetric)(nil), // 31: api.v1.NodeGroupMetric
- (*GetNodeGroupResponse)(nil), // 32: api.v1.GetNodeGroupResponse
- (*GetClusterResponse)(nil), // 33: api.v1.GetClusterResponse
- (*GetClustersResponse)(nil), // 34: api.v1.GetClustersResponse
- (*ListClustersResponse)(nil), // 35: api.v1.ListClustersResponse
- (*GetNodeResponse)(nil), // 36: api.v1.GetNodeResponse
- (*GetWorkloadsResponse)(nil), // 37: api.v1.GetWorkloadsResponse
- (*GetWorkloadResponse)(nil), // 38: api.v1.GetWorkloadResponse
- (*GetWorkloadContainerPercentilesRequest)(nil), // 39: api.v1.GetWorkloadContainerPercentilesRequest
- (*GetWorkloadContainerPercentilesResponse)(nil), // 40: api.v1.GetWorkloadContainerPercentilesResponse
- (*GetWorkloadContainerTimeSeriesRequest)(nil), // 41: api.v1.GetWorkloadContainerTimeSeriesRequest
- (*GetWorkloadContainerTimeSeriesResponse)(nil), // 42: api.v1.GetWorkloadContainerTimeSeriesResponse
- (*GetLatestContainerRequestLimitsRequest)(nil), // 43: api.v1.GetLatestContainerRequestLimitsRequest
- (*GetLatestContainerRequestLimitsResponse)(nil), // 44: api.v1.GetLatestContainerRequestLimitsResponse
- (*GetForecastWorkloadsRequest)(nil), // 45: api.v1.GetForecastWorkloadsRequest
- (*GetForecastWorkloadsResponse)(nil), // 46: api.v1.GetForecastWorkloadsResponse
- (*GetForecastWorkloadRequest)(nil), // 47: api.v1.GetForecastWorkloadRequest
- (*GetForecastWorkloadResponse)(nil), // 48: api.v1.GetForecastWorkloadResponse
- (*GetClusterMetadataResponse)(nil), // 49: api.v1.GetClusterMetadataResponse
- (*ClusterElement)(nil), // 50: api.v1.ClusterElement
- (*GetAllNamespacesRequest)(nil), // 51: api.v1.GetAllNamespacesRequest
- (*GetAllNamespacesResponse)(nil), // 52: api.v1.GetAllNamespacesResponse
- (*SearchNamespacesByClusterRequest)(nil), // 53: api.v1.SearchNamespacesByClusterRequest
- (*SearchNamespacesByClusterResponse)(nil), // 54: api.v1.SearchNamespacesByClusterResponse
- (*ListNamespacesByClusterRequest)(nil), // 55: api.v1.ListNamespacesByClusterRequest
- (*ListNamespacesByClusterResponse)(nil), // 56: api.v1.ListNamespacesByClusterResponse
- (*NamespaceItem)(nil), // 57: api.v1.NamespaceItem
- (*GetAllWorkloadNamesRequest)(nil), // 58: api.v1.GetAllWorkloadNamesRequest
- (*GetAllWorkloadNamesResponse)(nil), // 59: api.v1.GetAllWorkloadNamesResponse
- (*GetAllWorkloadLabelsRequest)(nil), // 60: api.v1.GetAllWorkloadLabelsRequest
- (*GetAllWorkloadLabelsResponse)(nil), // 61: api.v1.GetAllWorkloadLabelsResponse
- (*GetAllNodeGroupNamesRequest)(nil), // 62: api.v1.GetAllNodeGroupNamesRequest
- (*GetAllNodeGroupNamesResponse)(nil), // 63: api.v1.GetAllNodeGroupNamesResponse
- (*Cluster)(nil), // 64: api.v1.Cluster
- (*OperatorInfo)(nil), // 65: api.v1.OperatorInfo
- (*Container)(nil), // 66: api.v1.Container
- (*GetLatestOperatorVersionRequest)(nil), // 67: api.v1.GetLatestOperatorVersionRequest
- (*GetLatestOperatorVersionResponse)(nil), // 68: api.v1.GetLatestOperatorVersionResponse
- (*GalaxyGetWorkloadPerspectiveRequest)(nil), // 69: api.v1.GalaxyGetWorkloadPerspectiveRequest
- (*GalaxyGetWorkloadPerspectiveResponse)(nil), // 70: api.v1.GalaxyGetWorkloadPerspectiveResponse
- (*GalaxyWorkloadGroup)(nil), // 71: api.v1.GalaxyWorkloadGroup
- (*PerspectiveDatapointOpts)(nil), // 72: api.v1.PerspectiveDatapointOpts
- (*ListAuditLogsRequest)(nil), // 73: api.v1.ListAuditLogsRequest
- (*ListAuditLogsResponse)(nil), // 74: api.v1.ListAuditLogsResponse
- (*ListAuditLogOriginatorsRequest)(nil), // 75: api.v1.ListAuditLogOriginatorsRequest
- (*ListAuditLogOriginatorsResponse)(nil), // 76: api.v1.ListAuditLogOriginatorsResponse
- (*SendWorkloadEmailRequest)(nil), // 77: api.v1.SendWorkloadEmailRequest
- (*SendWorkloadEmailResponse)(nil), // 78: api.v1.SendWorkloadEmailResponse
- (*SendWeeklySummaryEmailRequest)(nil), // 79: api.v1.SendWeeklySummaryEmailRequest
- (*SendWeeklySummaryEmailRequestData)(nil), // 80: api.v1.SendWeeklySummaryEmailRequestData
- (*SendWeeklySummaryEmailResponse)(nil), // 81: api.v1.SendWeeklySummaryEmailResponse
- (*GetClustersNodeInfoRequest)(nil), // 82: api.v1.GetClustersNodeInfoRequest
- (*GetClustersNodeInfoResponse)(nil), // 83: api.v1.GetClustersNodeInfoResponse
- (*SearchK8SResourcesRequest)(nil), // 84: api.v1.SearchK8sResourcesRequest
- (*SearchK8SResourcesResponse)(nil), // 85: api.v1.SearchK8sResourcesResponse
- (*K8SSearchResult)(nil), // 86: api.v1.K8sSearchResult
- (*SearchK8SWorkloadsRequest)(nil), // 87: api.v1.SearchK8sWorkloadsRequest
- (*SearchK8SWorkloadsResponse)(nil), // 88: api.v1.SearchK8sWorkloadsResponse
- (*K8SWorkloadSearchResult)(nil), // 89: api.v1.K8sWorkloadSearchResult
- (*MetadataForWorkloadsRequest)(nil), // 90: api.v1.MetadataForWorkloadsRequest
- (*MetadataForWorkloadsResponse)(nil), // 91: api.v1.MetadataForWorkloadsResponse
- (*AddClusterTagsRequest)(nil), // 92: api.v1.AddClusterTagsRequest
- (*AddClusterTagsResponse)(nil), // 93: api.v1.AddClusterTagsResponse
- (*RemoveClusterTagsRequest)(nil), // 94: api.v1.RemoveClusterTagsRequest
- (*RemoveClusterTagsResponse)(nil), // 95: api.v1.RemoveClusterTagsResponse
- (*ListTagsRequest)(nil), // 96: api.v1.ListTagsRequest
- (*TagSummary)(nil), // 97: api.v1.TagSummary
- (*ListTagsResponse)(nil), // 98: api.v1.ListTagsResponse
- (*WorkloadMetadata)(nil), // 99: api.v1.WorkloadMetadata
- (*PodMetadata)(nil), // 100: api.v1.PodMetadata
- (*NodeMetadata)(nil), // 101: api.v1.NodeMetadata
- (*GetRelatedResourcesRequest)(nil), // 102: api.v1.GetRelatedResourcesRequest
- (*GetWorkloadPodHistoryResponse)(nil), // 103: api.v1.GetWorkloadPodHistoryResponse
- (*JobHistory)(nil), // 104: api.v1.JobHistory
- (*ReplicaSetHistory)(nil), // 105: api.v1.ReplicaSetHistory
- (*PodHistory)(nil), // 106: api.v1.PodHistory
- (*GetRelatedResourcesResponse)(nil), // 107: api.v1.GetRelatedResourcesResponse
- (*K8SRelatedResource)(nil), // 108: api.v1.K8sRelatedResource
- (*K8SResourceNode)(nil), // 109: api.v1.K8sResourceNode
- (*K8SResourceEdge)(nil), // 110: api.v1.K8sResourceEdge
- (*GetClusterTypeRequest)(nil), // 111: api.v1.GetClusterTypeRequest
- (*GetClusterTypeResponse)(nil), // 112: api.v1.GetClusterTypeResponse
- (*GetWorkloadsStatsRequest)(nil), // 113: api.v1.GetWorkloadsStatsRequest
- (*GetWorkloadsStatsResponse)(nil), // 114: api.v1.GetWorkloadsStatsResponse
- (*DailyUtilizationRequest)(nil), // 115: api.v1.DailyUtilizationRequest
- (*DailyUtilizationResponse)(nil), // 116: api.v1.DailyUtilizationResponse
- (*DailyUtilizationInstanceTypeRequest)(nil), // 117: api.v1.DailyUtilizationInstanceTypeRequest
- (*DailyUtilizationInstanceTypeResponse)(nil), // 118: api.v1.DailyUtilizationInstanceTypeResponse
- (*DailyUtilizationNodeTypeRequest)(nil), // 119: api.v1.DailyUtilizationNodeTypeRequest
- (*DailyUtilizationNodeTypeResponse)(nil), // 120: api.v1.DailyUtilizationNodeTypeResponse
- (*LookupNodeInstanceRequest)(nil), // 121: api.v1.LookupNodeInstanceRequest
- (*InstanceLookupParams)(nil), // 122: api.v1.InstanceLookupParams
- (*LookupNodeInstanceResponse)(nil), // 123: api.v1.LookupNodeInstanceResponse
- nil, // 124: api.v1.GetAllNodeGroupsResponse.NodeGroupMapEntry
- (*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics)(nil), // 125: api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
- nil, // 126: api.v1.GetNodeGroupsUtilizationResponse.NodeGroupToUtilMetricsEntry
- nil, // 127: api.v1.GetNodeGroupsUtilizationResponse.InstanceTypeToUtilMetricsEntry
- nil, // 128: api.v1.GetNodeGroupsUtilizationResponse.ReservationTypeToUtilMetricsEntry
- nil, // 129: api.v1.GetNodeGroupsUtilizationResponse.LogicalAzToUtilMetricsEntry
- nil, // 130: api.v1.GalaxyGetWorkloadPerspectiveResponse.ClustersEntry
- nil, // 131: api.v1.GalaxyGetWorkloadPerspectiveResponse.WorkloadsEntry
- nil, // 132: api.v1.MetadataForWorkloadsRequest.WorkloadUidToKindEntry
- nil, // 133: api.v1.MetadataForWorkloadsResponse.WorkloadUidToMetadataEntry
- nil, // 134: api.v1.WorkloadMetadata.PodUidToNodeMetadataEntry
- nil, // 135: api.v1.WorkloadMetadata.PodUidToPodMetadataEntry
- (*DailyUtilizationResponse_Datapoints)(nil), // 136: api.v1.DailyUtilizationResponse.Datapoints
- (*DailyUtilizationResponse_Datapoint)(nil), // 137: api.v1.DailyUtilizationResponse.Datapoint
- nil, // 138: api.v1.DailyUtilizationResponse.ClusterIdToDailyTotalCoreMinutesEntry
- nil, // 139: api.v1.DailyUtilizationResponse.ClusterIdToMetaEntry
- (*DailyUtilizationInstanceTypeResponse_Datapoints)(nil), // 140: api.v1.DailyUtilizationInstanceTypeResponse.Datapoints
- (*DailyUtilizationInstanceTypeResponse_Datapoint)(nil), // 141: api.v1.DailyUtilizationInstanceTypeResponse.Datapoint
- nil, // 142: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToDatapointsEntry
- nil, // 143: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToMetaEntry
- nil, // 144: api.v1.DailyUtilizationInstanceTypeResponse.Datapoint.InstanceTypeToDailyTotalCoreMinutesEntry
- (*DailyUtilizationNodeTypeResponse_Datapoints)(nil), // 145: api.v1.DailyUtilizationNodeTypeResponse.Datapoints
- (*DailyUtilizationNodeTypeResponse_Datapoint)(nil), // 146: api.v1.DailyUtilizationNodeTypeResponse.Datapoint
- nil, // 147: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToDatapointsEntry
- nil, // 148: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToMetaEntry
- nil, // 149: api.v1.DailyUtilizationNodeTypeResponse.Datapoint.NodeTypeToDailyTotalCoreMinutesEntry
- (*timestamppb.Timestamp)(nil), // 150: google.protobuf.Timestamp
- (*WorkloadFilters)(nil), // 151: api.v1.WorkloadFilters
- (K8SObjectKind)(0), // 152: api.v1.K8sObjectKind
- (*Pagination)(nil), // 153: api.v1.Pagination
- (*WorkloadItem)(nil), // 154: api.v1.WorkloadItem
- (*NodeGroup)(nil), // 155: api.v1.NodeGroup
- (*money.Money)(nil), // 156: google.type.Money
- (*ResourceMetrics)(nil), // 157: api.v1.ResourceMetrics
- (*CostInfo)(nil), // 158: api.v1.CostInfo
- (*NodeInfo)(nil), // 159: api.v1.NodeInfo
- (*CostDataPoint)(nil), // 160: api.v1.CostDataPoint
- (*ResourceDataPoint)(nil), // 161: api.v1.ResourceDataPoint
- (*Node)(nil), // 162: api.v1.Node
- (*ResourceSummary)(nil), // 163: api.v1.ResourceSummary
- (*ContainerPercentileSummary)(nil), // 164: api.v1.ContainerPercentileSummary
- (*ContainerTimeSeries)(nil), // 165: api.v1.ContainerTimeSeries
- (*ContainerRequestLimits)(nil), // 166: api.v1.ContainerRequestLimits
- (*ForecastResourceMetrics)(nil), // 167: api.v1.ForecastResourceMetrics
- (*AuditLogEntry)(nil), // 168: api.v1.AuditLogEntry
- (*Instance)(nil), // 169: api.v1.Instance
+ (*ListWorkloadsPaginatedRequest)(nil), // 8: api.v1.ListWorkloadsPaginatedRequest
+ (*GetWorkloadsSummaryRequest)(nil), // 9: api.v1.GetWorkloadsSummaryRequest
+ (*WorkloadMetricEntry)(nil), // 10: api.v1.WorkloadMetricEntry
+ (*WorkloadMetricBreakdown)(nil), // 11: api.v1.WorkloadMetricBreakdown
+ (*GetWorkloadsSummaryResponse)(nil), // 12: api.v1.GetWorkloadsSummaryResponse
+ (*ListWorkloadsPaginatedResponse)(nil), // 13: api.v1.ListWorkloadsPaginatedResponse
+ (*GetResourcesRequest)(nil), // 14: api.v1.GetResourcesRequest
+ (*GetPodsRequest)(nil), // 15: api.v1.GetPodsRequest
+ (*GetPodsResponse)(nil), // 16: api.v1.GetPodsResponse
+ (*GetWorkloadRequest)(nil), // 17: api.v1.GetWorkloadRequest
+ (*GetClustersRequest)(nil), // 18: api.v1.GetClustersRequest
+ (*ListClustersRequest)(nil), // 19: api.v1.ListClustersRequest
+ (*GetClusterRequest)(nil), // 20: api.v1.GetClusterRequest
+ (*DeleteClusterRequest)(nil), // 21: api.v1.DeleteClusterRequest
+ (*DeleteClusterResponse)(nil), // 22: api.v1.DeleteClusterResponse
+ (*UpdateClusterRequest)(nil), // 23: api.v1.UpdateClusterRequest
+ (*UpdateClusterResponse)(nil), // 24: api.v1.UpdateClusterResponse
+ (*GetResourcesResponse)(nil), // 25: api.v1.GetResourcesResponse
+ (*GetResourceFilterOptionsRequest)(nil), // 26: api.v1.GetResourceFilterOptionsRequest
+ (*GetResourceFilterOptionsResponse)(nil), // 27: api.v1.GetResourceFilterOptionsResponse
+ (*CreateClusterRequest)(nil), // 28: api.v1.CreateClusterRequest
+ (*CreateClusterResponse)(nil), // 29: api.v1.CreateClusterResponse
+ (*ResetClusterTokenRequest)(nil), // 30: api.v1.ResetClusterTokenRequest
+ (*ResetClusterTokenResponse)(nil), // 31: api.v1.ResetClusterTokenResponse
+ (*GetNodeGroupsRequest)(nil), // 32: api.v1.GetNodeGroupsRequest
+ (*GetAllNodeGroupsRequest)(nil), // 33: api.v1.GetAllNodeGroupsRequest
+ (*GetNodeGroupsResponse)(nil), // 34: api.v1.GetNodeGroupsResponse
+ (*GetAllNodeGroupsResponse)(nil), // 35: api.v1.GetAllNodeGroupsResponse
+ (*NodeGroupSet)(nil), // 36: api.v1.NodeGroupSet
+ (*GetNodeGroupsUtilizationRequest)(nil), // 37: api.v1.GetNodeGroupsUtilizationRequest
+ (*GetNodeGroupsUtilizationResponse)(nil), // 38: api.v1.GetNodeGroupsUtilizationResponse
+ (*NodeGroupMetric)(nil), // 39: api.v1.NodeGroupMetric
+ (*GetNodeGroupResponse)(nil), // 40: api.v1.GetNodeGroupResponse
+ (*GetClusterResponse)(nil), // 41: api.v1.GetClusterResponse
+ (*GetClustersResponse)(nil), // 42: api.v1.GetClustersResponse
+ (*ListClustersResponse)(nil), // 43: api.v1.ListClustersResponse
+ (*GetNodeResponse)(nil), // 44: api.v1.GetNodeResponse
+ (*GetWorkloadsResponse)(nil), // 45: api.v1.GetWorkloadsResponse
+ (*GetWorkloadResponse)(nil), // 46: api.v1.GetWorkloadResponse
+ (*GetWorkloadContainerPercentilesRequest)(nil), // 47: api.v1.GetWorkloadContainerPercentilesRequest
+ (*GetWorkloadContainerPercentilesResponse)(nil), // 48: api.v1.GetWorkloadContainerPercentilesResponse
+ (*GetWorkloadContainerTimeSeriesRequest)(nil), // 49: api.v1.GetWorkloadContainerTimeSeriesRequest
+ (*GetWorkloadContainerTimeSeriesResponse)(nil), // 50: api.v1.GetWorkloadContainerTimeSeriesResponse
+ (*GetLatestContainerRequestLimitsRequest)(nil), // 51: api.v1.GetLatestContainerRequestLimitsRequest
+ (*GetLatestContainerRequestLimitsResponse)(nil), // 52: api.v1.GetLatestContainerRequestLimitsResponse
+ (*GetNodeGPUMigInstancesRequest)(nil), // 53: api.v1.GetNodeGPUMigInstancesRequest
+ (*GetNodeGPUMigInstancesResponse)(nil), // 54: api.v1.GetNodeGPUMigInstancesResponse
+ (*GetNodeGPUMigInstanceTimeseriesRequest)(nil), // 55: api.v1.GetNodeGPUMigInstanceTimeseriesRequest
+ (*GPUMigInstanceDataPoint)(nil), // 56: api.v1.GPUMigInstanceDataPoint
+ (*GPUMigInstanceTimeseries)(nil), // 57: api.v1.GPUMigInstanceTimeseries
+ (*GetNodeGPUMigInstanceTimeseriesResponse)(nil), // 58: api.v1.GetNodeGPUMigInstanceTimeseriesResponse
+ (*GetContainerIndividualGPUMetricsRequest)(nil), // 59: api.v1.GetContainerIndividualGPUMetricsRequest
+ (*GetContainerIndividualGPUMetricsResponse)(nil), // 60: api.v1.GetContainerIndividualGPUMetricsResponse
+ (*LanguageVersions)(nil), // 61: api.v1.LanguageVersions
+ (*GetWorkloadLanguagesRequest)(nil), // 62: api.v1.GetWorkloadLanguagesRequest
+ (*GetWorkloadLanguagesResponse)(nil), // 63: api.v1.GetWorkloadLanguagesResponse
+ (*GetForecastWorkloadsRequest)(nil), // 64: api.v1.GetForecastWorkloadsRequest
+ (*GetForecastWorkloadsResponse)(nil), // 65: api.v1.GetForecastWorkloadsResponse
+ (*GetForecastWorkloadRequest)(nil), // 66: api.v1.GetForecastWorkloadRequest
+ (*GetForecastWorkloadResponse)(nil), // 67: api.v1.GetForecastWorkloadResponse
+ (*GetClusterMetadataResponse)(nil), // 68: api.v1.GetClusterMetadataResponse
+ (*ClusterElement)(nil), // 69: api.v1.ClusterElement
+ (*GetAllNamespacesRequest)(nil), // 70: api.v1.GetAllNamespacesRequest
+ (*GetAllNamespacesResponse)(nil), // 71: api.v1.GetAllNamespacesResponse
+ (*SearchNamespacesByClusterRequest)(nil), // 72: api.v1.SearchNamespacesByClusterRequest
+ (*SearchNamespacesByClusterResponse)(nil), // 73: api.v1.SearchNamespacesByClusterResponse
+ (*ListNamespacesByClusterRequest)(nil), // 74: api.v1.ListNamespacesByClusterRequest
+ (*ListNamespacesByClusterResponse)(nil), // 75: api.v1.ListNamespacesByClusterResponse
+ (*NamespaceItem)(nil), // 76: api.v1.NamespaceItem
+ (*GetAllWorkloadNamesRequest)(nil), // 77: api.v1.GetAllWorkloadNamesRequest
+ (*GetAllWorkloadNamesResponse)(nil), // 78: api.v1.GetAllWorkloadNamesResponse
+ (*GetAllWorkloadLabelsRequest)(nil), // 79: api.v1.GetAllWorkloadLabelsRequest
+ (*GetAllWorkloadLabelsResponse)(nil), // 80: api.v1.GetAllWorkloadLabelsResponse
+ (*GetAllNodeGroupNamesRequest)(nil), // 81: api.v1.GetAllNodeGroupNamesRequest
+ (*GetAllNodeGroupNamesResponse)(nil), // 82: api.v1.GetAllNodeGroupNamesResponse
+ (*Cluster)(nil), // 83: api.v1.Cluster
+ (*OperatorInfo)(nil), // 84: api.v1.OperatorInfo
+ (*Container)(nil), // 85: api.v1.Container
+ (*GetLatestOperatorVersionRequest)(nil), // 86: api.v1.GetLatestOperatorVersionRequest
+ (*GetLatestOperatorVersionResponse)(nil), // 87: api.v1.GetLatestOperatorVersionResponse
+ (*GalaxyGetWorkloadPerspectiveRequest)(nil), // 88: api.v1.GalaxyGetWorkloadPerspectiveRequest
+ (*GalaxyGetWorkloadPerspectiveResponse)(nil), // 89: api.v1.GalaxyGetWorkloadPerspectiveResponse
+ (*GalaxyWorkloadGroup)(nil), // 90: api.v1.GalaxyWorkloadGroup
+ (*PerspectiveDatapointOpts)(nil), // 91: api.v1.PerspectiveDatapointOpts
+ (*ListAuditLogsRequest)(nil), // 92: api.v1.ListAuditLogsRequest
+ (*ListAuditLogsResponse)(nil), // 93: api.v1.ListAuditLogsResponse
+ (*ListAuditLogOriginatorsRequest)(nil), // 94: api.v1.ListAuditLogOriginatorsRequest
+ (*ListAuditLogOriginatorsResponse)(nil), // 95: api.v1.ListAuditLogOriginatorsResponse
+ (*SendWorkloadEmailRequest)(nil), // 96: api.v1.SendWorkloadEmailRequest
+ (*SendWorkloadEmailResponse)(nil), // 97: api.v1.SendWorkloadEmailResponse
+ (*SendWeeklySummaryEmailRequest)(nil), // 98: api.v1.SendWeeklySummaryEmailRequest
+ (*SendWeeklySummaryEmailRequestData)(nil), // 99: api.v1.SendWeeklySummaryEmailRequestData
+ (*SendWeeklySummaryEmailResponse)(nil), // 100: api.v1.SendWeeklySummaryEmailResponse
+ (*GetClustersNodeInfoRequest)(nil), // 101: api.v1.GetClustersNodeInfoRequest
+ (*GetClustersNodeInfoResponse)(nil), // 102: api.v1.GetClustersNodeInfoResponse
+ (*SearchK8SResourcesRequest)(nil), // 103: api.v1.SearchK8sResourcesRequest
+ (*SearchK8SResourcesResponse)(nil), // 104: api.v1.SearchK8sResourcesResponse
+ (*K8SSearchResult)(nil), // 105: api.v1.K8sSearchResult
+ (*SearchK8SWorkloadsRequest)(nil), // 106: api.v1.SearchK8sWorkloadsRequest
+ (*SearchK8SWorkloadsResponse)(nil), // 107: api.v1.SearchK8sWorkloadsResponse
+ (*K8SWorkloadSearchResult)(nil), // 108: api.v1.K8sWorkloadSearchResult
+ (*MetadataForWorkloadsRequest)(nil), // 109: api.v1.MetadataForWorkloadsRequest
+ (*MetadataForWorkloadsResponse)(nil), // 110: api.v1.MetadataForWorkloadsResponse
+ (*AddClusterTagsRequest)(nil), // 111: api.v1.AddClusterTagsRequest
+ (*AddClusterTagsResponse)(nil), // 112: api.v1.AddClusterTagsResponse
+ (*RemoveClusterTagsRequest)(nil), // 113: api.v1.RemoveClusterTagsRequest
+ (*RemoveClusterTagsResponse)(nil), // 114: api.v1.RemoveClusterTagsResponse
+ (*ListTagsRequest)(nil), // 115: api.v1.ListTagsRequest
+ (*TagSummary)(nil), // 116: api.v1.TagSummary
+ (*ListTagsResponse)(nil), // 117: api.v1.ListTagsResponse
+ (*WorkloadMetadata)(nil), // 118: api.v1.WorkloadMetadata
+ (*PodMetadata)(nil), // 119: api.v1.PodMetadata
+ (*NodeMetadata)(nil), // 120: api.v1.NodeMetadata
+ (*GetRelatedResourcesRequest)(nil), // 121: api.v1.GetRelatedResourcesRequest
+ (*GetWorkloadPodHistoryResponse)(nil), // 122: api.v1.GetWorkloadPodHistoryResponse
+ (*JobHistory)(nil), // 123: api.v1.JobHistory
+ (*ReplicaSetHistory)(nil), // 124: api.v1.ReplicaSetHistory
+ (*PodHistory)(nil), // 125: api.v1.PodHistory
+ (*GetRelatedResourcesResponse)(nil), // 126: api.v1.GetRelatedResourcesResponse
+ (*K8SRelatedResource)(nil), // 127: api.v1.K8sRelatedResource
+ (*K8SResourceNode)(nil), // 128: api.v1.K8sResourceNode
+ (*K8SResourceEdge)(nil), // 129: api.v1.K8sResourceEdge
+ (*GetClusterTypeRequest)(nil), // 130: api.v1.GetClusterTypeRequest
+ (*GetClusterTypeResponse)(nil), // 131: api.v1.GetClusterTypeResponse
+ (*GetMigPartedConfigRequest)(nil), // 132: api.v1.GetMigPartedConfigRequest
+ (*GetMigPartedConfigResponse)(nil), // 133: api.v1.GetMigPartedConfigResponse
+ (*GetWorkloadsStatsRequest)(nil), // 134: api.v1.GetWorkloadsStatsRequest
+ (*GetWorkloadsStatsResponse)(nil), // 135: api.v1.GetWorkloadsStatsResponse
+ (*DailyUtilizationRequest)(nil), // 136: api.v1.DailyUtilizationRequest
+ (*DailyUtilizationResponse)(nil), // 137: api.v1.DailyUtilizationResponse
+ (*DailyUtilizationInstanceTypeRequest)(nil), // 138: api.v1.DailyUtilizationInstanceTypeRequest
+ (*DailyUtilizationInstanceTypeResponse)(nil), // 139: api.v1.DailyUtilizationInstanceTypeResponse
+ (*DailyUtilizationNodeTypeRequest)(nil), // 140: api.v1.DailyUtilizationNodeTypeRequest
+ (*DailyUtilizationNodeTypeResponse)(nil), // 141: api.v1.DailyUtilizationNodeTypeResponse
+ (*LookupNodeInstanceRequest)(nil), // 142: api.v1.LookupNodeInstanceRequest
+ (*InstanceLookupParams)(nil), // 143: api.v1.InstanceLookupParams
+ (*LookupNodeInstanceResponse)(nil), // 144: api.v1.LookupNodeInstanceResponse
+ nil, // 145: api.v1.GetAllNodeGroupsResponse.NodeGroupMapEntry
+ (*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics)(nil), // 146: api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
+ nil, // 147: api.v1.GetNodeGroupsUtilizationResponse.NodeGroupToUtilMetricsEntry
+ nil, // 148: api.v1.GetNodeGroupsUtilizationResponse.InstanceTypeToUtilMetricsEntry
+ nil, // 149: api.v1.GetNodeGroupsUtilizationResponse.ReservationTypeToUtilMetricsEntry
+ nil, // 150: api.v1.GetNodeGroupsUtilizationResponse.LogicalAzToUtilMetricsEntry
+ nil, // 151: api.v1.GalaxyGetWorkloadPerspectiveResponse.ClustersEntry
+ nil, // 152: api.v1.GalaxyGetWorkloadPerspectiveResponse.WorkloadsEntry
+ nil, // 153: api.v1.MetadataForWorkloadsRequest.WorkloadUidToKindEntry
+ nil, // 154: api.v1.MetadataForWorkloadsResponse.WorkloadUidToMetadataEntry
+ nil, // 155: api.v1.WorkloadMetadata.PodUidToNodeMetadataEntry
+ nil, // 156: api.v1.WorkloadMetadata.PodUidToPodMetadataEntry
+ (*DailyUtilizationResponse_Datapoints)(nil), // 157: api.v1.DailyUtilizationResponse.Datapoints
+ (*DailyUtilizationResponse_Datapoint)(nil), // 158: api.v1.DailyUtilizationResponse.Datapoint
+ nil, // 159: api.v1.DailyUtilizationResponse.ClusterIdToDailyTotalCoreMinutesEntry
+ nil, // 160: api.v1.DailyUtilizationResponse.ClusterIdToMetaEntry
+ (*DailyUtilizationInstanceTypeResponse_Datapoints)(nil), // 161: api.v1.DailyUtilizationInstanceTypeResponse.Datapoints
+ (*DailyUtilizationInstanceTypeResponse_Datapoint)(nil), // 162: api.v1.DailyUtilizationInstanceTypeResponse.Datapoint
+ nil, // 163: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToDatapointsEntry
+ nil, // 164: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToMetaEntry
+ nil, // 165: api.v1.DailyUtilizationInstanceTypeResponse.Datapoint.InstanceTypeToDailyTotalCoreMinutesEntry
+ (*DailyUtilizationNodeTypeResponse_Datapoints)(nil), // 166: api.v1.DailyUtilizationNodeTypeResponse.Datapoints
+ (*DailyUtilizationNodeTypeResponse_Datapoint)(nil), // 167: api.v1.DailyUtilizationNodeTypeResponse.Datapoint
+ nil, // 168: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToDatapointsEntry
+ nil, // 169: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToMetaEntry
+ nil, // 170: api.v1.DailyUtilizationNodeTypeResponse.Datapoint.NodeTypeToDailyTotalCoreMinutesEntry
+ (*timestamppb.Timestamp)(nil), // 171: google.protobuf.Timestamp
+ (*WorkloadFilters)(nil), // 172: api.v1.WorkloadFilters
+ (*WorkloadItem)(nil), // 173: api.v1.WorkloadItem
+ (K8SObjectKind)(0), // 174: api.v1.K8sObjectKind
+ (*Pagination)(nil), // 175: api.v1.Pagination
+ (*ResourceFieldFilter)(nil), // 176: api.v1.ResourceFieldFilter
+ (*ResourceFilterFieldOptions)(nil), // 177: api.v1.ResourceFilterFieldOptions
+ (*NodeGroup)(nil), // 178: api.v1.NodeGroup
+ (*money.Money)(nil), // 179: google.type.Money
+ (*ResourceMetrics)(nil), // 180: api.v1.ResourceMetrics
+ (*CostInfo)(nil), // 181: api.v1.CostInfo
+ (*NodeInfo)(nil), // 182: api.v1.NodeInfo
+ (*CostDataPoint)(nil), // 183: api.v1.CostDataPoint
+ (*ResourceDataPoint)(nil), // 184: api.v1.ResourceDataPoint
+ (*Node)(nil), // 185: api.v1.Node
+ (*ResourceSummary)(nil), // 186: api.v1.ResourceSummary
+ (*ContainerPercentileSummary)(nil), // 187: api.v1.ContainerPercentileSummary
+ (*ContainerTimeSeries)(nil), // 188: api.v1.ContainerTimeSeries
+ (*ContainerRequestLimits)(nil), // 189: api.v1.ContainerRequestLimits
+ (*GPUMigInstance)(nil), // 190: api.v1.GPUMigInstance
+ (*ContainerIndividualGPUMetrics)(nil), // 191: api.v1.ContainerIndividualGPUMetrics
+ (*ForecastResourceMetrics)(nil), // 192: api.v1.ForecastResourceMetrics
+ (*AuditLogEntry)(nil), // 193: api.v1.AuditLogEntry
+ (*Instance)(nil), // 194: api.v1.Instance
}
var file_api_v1_k8s_proto_depIdxs = []int32{
- 150, // 0: api.v1.GetNodeRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 1: api.v1.GetNodeRequest.end_time:type_name -> google.protobuf.Timestamp
- 150, // 2: api.v1.GetWorkloadPodHistoryRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 3: api.v1.GetWorkloadPodHistoryRequest.end_time:type_name -> google.protobuf.Timestamp
- 150, // 4: api.v1.GetNodeGroupRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 5: api.v1.GetNodeGroupRequest.end_time:type_name -> google.protobuf.Timestamp
- 150, // 6: api.v1.GetWorkloadsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 7: api.v1.GetWorkloadsRequest.end_time:type_name -> google.protobuf.Timestamp
- 151, // 8: api.v1.GetWorkloadsRequest.filters:type_name -> api.v1.WorkloadFilters
- 152, // 9: api.v1.GetResourcesRequest.kind:type_name -> api.v1.K8sObjectKind
- 153, // 10: api.v1.GetResourcesRequest.pagination:type_name -> api.v1.Pagination
- 153, // 11: api.v1.GetPodsRequest.pagination:type_name -> api.v1.Pagination
- 150, // 12: api.v1.GetPodsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 13: api.v1.GetPodsRequest.end_time:type_name -> google.protobuf.Timestamp
- 154, // 14: api.v1.GetPodsResponse.workload_items:type_name -> api.v1.WorkloadItem
- 153, // 15: api.v1.GetPodsResponse.pagination:type_name -> api.v1.Pagination
- 150, // 16: api.v1.GetWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 17: api.v1.GetWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
- 150, // 18: api.v1.GetClustersRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 19: api.v1.GetClustersRequest.end_time:type_name -> google.protobuf.Timestamp
- 153, // 20: api.v1.ListClustersRequest.pagination:type_name -> api.v1.Pagination
- 150, // 21: api.v1.GetClusterRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 22: api.v1.GetClusterRequest.end_time:type_name -> google.protobuf.Timestamp
- 64, // 23: api.v1.UpdateClusterResponse.cluster:type_name -> api.v1.Cluster
- 154, // 24: api.v1.GetResourcesResponse.workload_items:type_name -> api.v1.WorkloadItem
- 153, // 25: api.v1.GetResourcesResponse.pagination:type_name -> api.v1.Pagination
- 64, // 26: api.v1.CreateClusterResponse.cluster:type_name -> api.v1.Cluster
- 150, // 27: api.v1.GetNodeGroupsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 28: api.v1.GetNodeGroupsRequest.end_time:type_name -> google.protobuf.Timestamp
- 155, // 29: api.v1.GetNodeGroupsResponse.node_groups:type_name -> api.v1.NodeGroup
- 124, // 30: api.v1.GetAllNodeGroupsResponse.node_group_map:type_name -> api.v1.GetAllNodeGroupsResponse.NodeGroupMapEntry
- 155, // 31: api.v1.NodeGroupSet.node_groups:type_name -> api.v1.NodeGroup
- 150, // 32: api.v1.GetNodeGroupsUtilizationRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 33: api.v1.GetNodeGroupsUtilizationRequest.end_time:type_name -> google.protobuf.Timestamp
- 126, // 34: api.v1.GetNodeGroupsUtilizationResponse.node_group_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.NodeGroupToUtilMetricsEntry
- 127, // 35: api.v1.GetNodeGroupsUtilizationResponse.instance_type_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.InstanceTypeToUtilMetricsEntry
- 128, // 36: api.v1.GetNodeGroupsUtilizationResponse.reservation_type_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ReservationTypeToUtilMetricsEntry
- 129, // 37: api.v1.GetNodeGroupsUtilizationResponse.logical_az_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.LogicalAzToUtilMetricsEntry
- 156, // 38: api.v1.NodeGroupMetric.hourly_cost:type_name -> google.type.Money
- 156, // 39: api.v1.NodeGroupMetric.hourly_cpu_cost:type_name -> google.type.Money
- 156, // 40: api.v1.NodeGroupMetric.hourly_memory_cost:type_name -> google.type.Money
- 156, // 41: api.v1.NodeGroupMetric.hourly_gpu_cost:type_name -> google.type.Money
- 150, // 42: api.v1.NodeGroupMetric.bucket_time:type_name -> google.protobuf.Timestamp
- 155, // 43: api.v1.GetNodeGroupResponse.node_group:type_name -> api.v1.NodeGroup
- 64, // 44: api.v1.GetClusterResponse.cluster:type_name -> api.v1.Cluster
- 64, // 45: api.v1.GetClustersResponse.clusters:type_name -> api.v1.Cluster
- 157, // 46: api.v1.GetClustersResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
- 158, // 47: api.v1.GetClustersResponse.cost_info:type_name -> api.v1.CostInfo
- 159, // 48: api.v1.GetClustersResponse.node_info:type_name -> api.v1.NodeInfo
- 160, // 49: api.v1.GetClustersResponse.cost_data_points:type_name -> api.v1.CostDataPoint
- 161, // 50: api.v1.GetClustersResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 64, // 51: api.v1.ListClustersResponse.clusters:type_name -> api.v1.Cluster
- 153, // 52: api.v1.ListClustersResponse.pagination:type_name -> api.v1.Pagination
- 162, // 53: api.v1.GetNodeResponse.node:type_name -> api.v1.Node
- 157, // 54: api.v1.GetNodeResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
- 158, // 55: api.v1.GetNodeResponse.cost_info:type_name -> api.v1.CostInfo
- 160, // 56: api.v1.GetNodeResponse.cost_data_points:type_name -> api.v1.CostDataPoint
- 161, // 57: api.v1.GetNodeResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 154, // 58: api.v1.GetWorkloadsResponse.workload_items:type_name -> api.v1.WorkloadItem
- 158, // 59: api.v1.GetWorkloadsResponse.cost_info:type_name -> api.v1.CostInfo
- 157, // 60: api.v1.GetWorkloadsResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
- 163, // 61: api.v1.GetWorkloadsResponse.resource_summary:type_name -> api.v1.ResourceSummary
- 154, // 62: api.v1.GetWorkloadResponse.workload_item:type_name -> api.v1.WorkloadItem
- 158, // 63: api.v1.GetWorkloadResponse.cost_info:type_name -> api.v1.CostInfo
- 157, // 64: api.v1.GetWorkloadResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
- 163, // 65: api.v1.GetWorkloadResponse.resource_summary:type_name -> api.v1.ResourceSummary
- 160, // 66: api.v1.GetWorkloadResponse.cost_data_points:type_name -> api.v1.CostDataPoint
- 161, // 67: api.v1.GetWorkloadResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 150, // 68: api.v1.GetWorkloadContainerPercentilesRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 69: api.v1.GetWorkloadContainerPercentilesRequest.end_time:type_name -> google.protobuf.Timestamp
- 164, // 70: api.v1.GetWorkloadContainerPercentilesResponse.containers:type_name -> api.v1.ContainerPercentileSummary
- 150, // 71: api.v1.GetWorkloadContainerTimeSeriesRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 72: api.v1.GetWorkloadContainerTimeSeriesRequest.end_time:type_name -> google.protobuf.Timestamp
- 165, // 73: api.v1.GetWorkloadContainerTimeSeriesResponse.containers:type_name -> api.v1.ContainerTimeSeries
- 166, // 74: api.v1.GetLatestContainerRequestLimitsResponse.containers:type_name -> api.v1.ContainerRequestLimits
- 150, // 75: api.v1.GetForecastWorkloadsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 76: api.v1.GetForecastWorkloadsRequest.end_time:type_name -> google.protobuf.Timestamp
- 154, // 77: api.v1.GetForecastWorkloadsResponse.workload_items:type_name -> api.v1.WorkloadItem
- 158, // 78: api.v1.GetForecastWorkloadsResponse.cost_info:type_name -> api.v1.CostInfo
- 167, // 79: api.v1.GetForecastWorkloadsResponse.resource_metrics:type_name -> api.v1.ForecastResourceMetrics
- 163, // 80: api.v1.GetForecastWorkloadsResponse.resource_summary:type_name -> api.v1.ResourceSummary
- 150, // 81: api.v1.GetForecastWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 82: api.v1.GetForecastWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
- 154, // 83: api.v1.GetForecastWorkloadResponse.workload_item:type_name -> api.v1.WorkloadItem
- 158, // 84: api.v1.GetForecastWorkloadResponse.cost_info:type_name -> api.v1.CostInfo
- 167, // 85: api.v1.GetForecastWorkloadResponse.resource_metrics:type_name -> api.v1.ForecastResourceMetrics
- 163, // 86: api.v1.GetForecastWorkloadResponse.resource_summary:type_name -> api.v1.ResourceSummary
- 160, // 87: api.v1.GetForecastWorkloadResponse.cost_data_points:type_name -> api.v1.CostDataPoint
- 161, // 88: api.v1.GetForecastWorkloadResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 64, // 89: api.v1.GetClusterMetadataResponse.clusters:type_name -> api.v1.Cluster
- 50, // 90: api.v1.GetAllNamespacesResponse.cluster_id_with_namespaces:type_name -> api.v1.ClusterElement
- 57, // 91: api.v1.ListNamespacesByClusterResponse.namespaces:type_name -> api.v1.NamespaceItem
- 152, // 92: api.v1.GetAllWorkloadNamesRequest.kinds:type_name -> api.v1.K8sObjectKind
- 50, // 93: api.v1.GetAllWorkloadNamesResponse.cluster_id_with_workload_name:type_name -> api.v1.ClusterElement
- 152, // 94: api.v1.GetAllWorkloadLabelsRequest.kinds:type_name -> api.v1.K8sObjectKind
- 50, // 95: api.v1.GetAllWorkloadLabelsResponse.cluster_id_with_labels:type_name -> api.v1.ClusterElement
- 50, // 96: api.v1.GetAllNodeGroupNamesResponse.cluster_id_with_node_group_names:type_name -> api.v1.ClusterElement
- 157, // 97: api.v1.Cluster.resource_metrics:type_name -> api.v1.ResourceMetrics
- 158, // 98: api.v1.Cluster.cost_info:type_name -> api.v1.CostInfo
- 159, // 99: api.v1.Cluster.node_info:type_name -> api.v1.NodeInfo
- 160, // 100: api.v1.Cluster.cost_data_points:type_name -> api.v1.CostDataPoint
- 161, // 101: api.v1.Cluster.resource_data_points:type_name -> api.v1.ResourceDataPoint
- 162, // 102: api.v1.Cluster.most_expensive_node:type_name -> api.v1.Node
- 162, // 103: api.v1.Cluster.least_expensive_node:type_name -> api.v1.Node
- 162, // 104: api.v1.Cluster.most_underutilized_node:type_name -> api.v1.Node
- 66, // 105: api.v1.Cluster.most_underutilized_container:type_name -> api.v1.Container
- 65, // 106: api.v1.Cluster.zxp_info:type_name -> api.v1.OperatorInfo
- 65, // 107: api.v1.Cluster.zxp_helm_info:type_name -> api.v1.OperatorInfo
- 65, // 108: api.v1.Cluster.dakr_op_info:type_name -> api.v1.OperatorInfo
- 65, // 109: api.v1.Cluster.node_op_info:type_name -> api.v1.OperatorInfo
- 65, // 110: api.v1.Cluster.security_op_info:type_name -> api.v1.OperatorInfo
- 65, // 111: api.v1.Cluster.network_op_info:type_name -> api.v1.OperatorInfo
- 157, // 112: api.v1.Container.resource_metrics:type_name -> api.v1.ResourceMetrics
- 65, // 113: api.v1.GetLatestOperatorVersionResponse.zxp_info:type_name -> api.v1.OperatorInfo
- 65, // 114: api.v1.GetLatestOperatorVersionResponse.zxp_helm_info:type_name -> api.v1.OperatorInfo
- 65, // 115: api.v1.GetLatestOperatorVersionResponse.zxp_netmon_info:type_name -> api.v1.OperatorInfo
- 65, // 116: api.v1.GetLatestOperatorVersionResponse.zxp_netmon_helm_info:type_name -> api.v1.OperatorInfo
- 65, // 117: api.v1.GetLatestOperatorVersionResponse.dakr_op_info:type_name -> api.v1.OperatorInfo
- 65, // 118: api.v1.GetLatestOperatorVersionResponse.dakr_op_helm_info:type_name -> api.v1.OperatorInfo
- 65, // 119: api.v1.GetLatestOperatorVersionResponse.node_op_info_aws:type_name -> api.v1.OperatorInfo
- 65, // 120: api.v1.GetLatestOperatorVersionResponse.node_op_info_azure:type_name -> api.v1.OperatorInfo
- 65, // 121: api.v1.GetLatestOperatorVersionResponse.node_op_info_gcp:type_name -> api.v1.OperatorInfo
- 65, // 122: api.v1.GetLatestOperatorVersionResponse.node_op_info_oci:type_name -> api.v1.OperatorInfo
- 65, // 123: api.v1.GetLatestOperatorVersionResponse.security_op_info:type_name -> api.v1.OperatorInfo
- 65, // 124: api.v1.GetLatestOperatorVersionResponse.security_op_helm_info:type_name -> api.v1.OperatorInfo
- 65, // 125: api.v1.GetLatestOperatorVersionResponse.trezr_info:type_name -> api.v1.OperatorInfo
- 65, // 126: api.v1.GetLatestOperatorVersionResponse.trezr_helm_info:type_name -> api.v1.OperatorInfo
- 1, // 127: api.v1.GalaxyGetWorkloadPerspectiveRequest.group_by:type_name -> api.v1.GalaxyPOVWorkloadGroupBy
- 72, // 128: api.v1.GalaxyGetWorkloadPerspectiveRequest.datapoint_opts:type_name -> api.v1.PerspectiveDatapointOpts
- 71, // 129: api.v1.GalaxyGetWorkloadPerspectiveResponse.groupings:type_name -> api.v1.GalaxyWorkloadGroup
- 130, // 130: api.v1.GalaxyGetWorkloadPerspectiveResponse.clusters:type_name -> api.v1.GalaxyGetWorkloadPerspectiveResponse.ClustersEntry
- 131, // 131: api.v1.GalaxyGetWorkloadPerspectiveResponse.workloads:type_name -> api.v1.GalaxyGetWorkloadPerspectiveResponse.WorkloadsEntry
- 158, // 132: api.v1.GalaxyWorkloadGroup.cost_info:type_name -> api.v1.CostInfo
- 157, // 133: api.v1.GalaxyWorkloadGroup.resource_metrics:type_name -> api.v1.ResourceMetrics
- 163, // 134: api.v1.GalaxyWorkloadGroup.resource_summary:type_name -> api.v1.ResourceSummary
- 152, // 135: api.v1.ListAuditLogsRequest.workload_type:type_name -> api.v1.K8sObjectKind
- 150, // 136: api.v1.ListAuditLogsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 137: api.v1.ListAuditLogsRequest.end_time:type_name -> google.protobuf.Timestamp
- 153, // 138: api.v1.ListAuditLogsRequest.pagination:type_name -> api.v1.Pagination
- 168, // 139: api.v1.ListAuditLogsResponse.logs:type_name -> api.v1.AuditLogEntry
- 153, // 140: api.v1.ListAuditLogsResponse.pagination:type_name -> api.v1.Pagination
- 152, // 141: api.v1.ListAuditLogOriginatorsRequest.workload_type:type_name -> api.v1.K8sObjectKind
- 150, // 142: api.v1.ListAuditLogOriginatorsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 143: api.v1.ListAuditLogOriginatorsRequest.end_time:type_name -> google.protobuf.Timestamp
- 80, // 144: api.v1.SendWeeklySummaryEmailRequest.request:type_name -> api.v1.SendWeeklySummaryEmailRequestData
- 150, // 145: api.v1.GetClustersNodeInfoRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 146: api.v1.GetClustersNodeInfoRequest.end_time:type_name -> google.protobuf.Timestamp
- 159, // 147: api.v1.GetClustersNodeInfoResponse.node_info:type_name -> api.v1.NodeInfo
- 162, // 148: api.v1.GetClustersNodeInfoResponse.most_expensive_node:type_name -> api.v1.Node
- 162, // 149: api.v1.GetClustersNodeInfoResponse.least_expensive_node:type_name -> api.v1.Node
- 162, // 150: api.v1.GetClustersNodeInfoResponse.most_underutilized_node:type_name -> api.v1.Node
- 86, // 151: api.v1.SearchK8sResourcesResponse.results:type_name -> api.v1.K8sSearchResult
- 89, // 152: api.v1.SearchK8sWorkloadsResponse.results:type_name -> api.v1.K8sWorkloadSearchResult
- 132, // 153: api.v1.MetadataForWorkloadsRequest.workload_uid_to_kind:type_name -> api.v1.MetadataForWorkloadsRequest.WorkloadUidToKindEntry
- 133, // 154: api.v1.MetadataForWorkloadsResponse.workload_uid_to_metadata:type_name -> api.v1.MetadataForWorkloadsResponse.WorkloadUidToMetadataEntry
- 64, // 155: api.v1.AddClusterTagsResponse.cluster:type_name -> api.v1.Cluster
- 64, // 156: api.v1.RemoveClusterTagsResponse.cluster:type_name -> api.v1.Cluster
- 97, // 157: api.v1.ListTagsResponse.tags:type_name -> api.v1.TagSummary
- 134, // 158: api.v1.WorkloadMetadata.pod_uid_to_node_metadata:type_name -> api.v1.WorkloadMetadata.PodUidToNodeMetadataEntry
- 135, // 159: api.v1.WorkloadMetadata.pod_uid_to_pod_metadata:type_name -> api.v1.WorkloadMetadata.PodUidToPodMetadataEntry
- 152, // 160: api.v1.WorkloadMetadata.kind:type_name -> api.v1.K8sObjectKind
- 152, // 161: api.v1.GetRelatedResourcesRequest.kind:type_name -> api.v1.K8sObjectKind
- 105, // 162: api.v1.GetWorkloadPodHistoryResponse.replica_sets:type_name -> api.v1.ReplicaSetHistory
- 106, // 163: api.v1.GetWorkloadPodHistoryResponse.direct_pods:type_name -> api.v1.PodHistory
- 104, // 164: api.v1.GetWorkloadPodHistoryResponse.jobs:type_name -> api.v1.JobHistory
- 150, // 165: api.v1.JobHistory.created_at:type_name -> google.protobuf.Timestamp
- 150, // 166: api.v1.JobHistory.deleted_at:type_name -> google.protobuf.Timestamp
- 106, // 167: api.v1.JobHistory.pods:type_name -> api.v1.PodHistory
- 150, // 168: api.v1.ReplicaSetHistory.created_at:type_name -> google.protobuf.Timestamp
- 150, // 169: api.v1.ReplicaSetHistory.deleted_at:type_name -> google.protobuf.Timestamp
- 106, // 170: api.v1.ReplicaSetHistory.pods:type_name -> api.v1.PodHistory
- 150, // 171: api.v1.PodHistory.created_at:type_name -> google.protobuf.Timestamp
- 150, // 172: api.v1.PodHistory.deleted_at:type_name -> google.protobuf.Timestamp
- 108, // 173: api.v1.GetRelatedResourcesResponse.relations:type_name -> api.v1.K8sRelatedResource
- 109, // 174: api.v1.GetRelatedResourcesResponse.nodes:type_name -> api.v1.K8sResourceNode
- 110, // 175: api.v1.GetRelatedResourcesResponse.edges:type_name -> api.v1.K8sResourceEdge
- 2, // 176: api.v1.GetClusterTypeResponse.cluster_type:type_name -> api.v1.ClusterType
- 150, // 177: api.v1.GetWorkloadsStatsRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 178: api.v1.GetWorkloadsStatsRequest.end_time:type_name -> google.protobuf.Timestamp
- 150, // 179: api.v1.DailyUtilizationRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 180: api.v1.DailyUtilizationRequest.end_time:type_name -> google.protobuf.Timestamp
- 138, // 181: api.v1.DailyUtilizationResponse.cluster_id_to_daily_total_core_minutes:type_name -> api.v1.DailyUtilizationResponse.ClusterIdToDailyTotalCoreMinutesEntry
- 139, // 182: api.v1.DailyUtilizationResponse.cluster_id_to_meta:type_name -> api.v1.DailyUtilizationResponse.ClusterIdToMetaEntry
- 150, // 183: api.v1.DailyUtilizationInstanceTypeRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 184: api.v1.DailyUtilizationInstanceTypeRequest.end_time:type_name -> google.protobuf.Timestamp
- 142, // 185: api.v1.DailyUtilizationInstanceTypeResponse.cluster_id_to_datapoints:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToDatapointsEntry
- 143, // 186: api.v1.DailyUtilizationInstanceTypeResponse.cluster_id_to_meta:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToMetaEntry
- 150, // 187: api.v1.DailyUtilizationNodeTypeRequest.start_time:type_name -> google.protobuf.Timestamp
- 150, // 188: api.v1.DailyUtilizationNodeTypeRequest.end_time:type_name -> google.protobuf.Timestamp
- 147, // 189: api.v1.DailyUtilizationNodeTypeResponse.cluster_id_to_datapoints:type_name -> api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToDatapointsEntry
- 148, // 190: api.v1.DailyUtilizationNodeTypeResponse.cluster_id_to_meta:type_name -> api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToMetaEntry
- 169, // 191: api.v1.LookupNodeInstanceResponse.dynamic_instance:type_name -> api.v1.Instance
- 169, // 192: api.v1.LookupNodeInstanceResponse.cached_instance:type_name -> api.v1.Instance
- 122, // 193: api.v1.LookupNodeInstanceResponse.lookup_params:type_name -> api.v1.InstanceLookupParams
- 155, // 194: api.v1.GetAllNodeGroupsResponse.NodeGroupMapEntry.value:type_name -> api.v1.NodeGroup
- 31, // 195: api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics.node_group_metrics:type_name -> api.v1.NodeGroupMetric
- 125, // 196: api.v1.GetNodeGroupsUtilizationResponse.NodeGroupToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
- 125, // 197: api.v1.GetNodeGroupsUtilizationResponse.InstanceTypeToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
- 125, // 198: api.v1.GetNodeGroupsUtilizationResponse.ReservationTypeToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
- 125, // 199: api.v1.GetNodeGroupsUtilizationResponse.LogicalAzToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
- 64, // 200: api.v1.GalaxyGetWorkloadPerspectiveResponse.ClustersEntry.value:type_name -> api.v1.Cluster
- 154, // 201: api.v1.GalaxyGetWorkloadPerspectiveResponse.WorkloadsEntry.value:type_name -> api.v1.WorkloadItem
- 152, // 202: api.v1.MetadataForWorkloadsRequest.WorkloadUidToKindEntry.value:type_name -> api.v1.K8sObjectKind
- 99, // 203: api.v1.MetadataForWorkloadsResponse.WorkloadUidToMetadataEntry.value:type_name -> api.v1.WorkloadMetadata
- 101, // 204: api.v1.WorkloadMetadata.PodUidToNodeMetadataEntry.value:type_name -> api.v1.NodeMetadata
- 100, // 205: api.v1.WorkloadMetadata.PodUidToPodMetadataEntry.value:type_name -> api.v1.PodMetadata
- 137, // 206: api.v1.DailyUtilizationResponse.Datapoints.datapoints:type_name -> api.v1.DailyUtilizationResponse.Datapoint
- 136, // 207: api.v1.DailyUtilizationResponse.ClusterIdToDailyTotalCoreMinutesEntry.value:type_name -> api.v1.DailyUtilizationResponse.Datapoints
- 64, // 208: api.v1.DailyUtilizationResponse.ClusterIdToMetaEntry.value:type_name -> api.v1.Cluster
- 141, // 209: api.v1.DailyUtilizationInstanceTypeResponse.Datapoints.datapoints:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.Datapoint
- 144, // 210: api.v1.DailyUtilizationInstanceTypeResponse.Datapoint.instance_type_to_daily_total_core_minutes:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.Datapoint.InstanceTypeToDailyTotalCoreMinutesEntry
- 140, // 211: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToDatapointsEntry.value:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.Datapoints
- 64, // 212: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToMetaEntry.value:type_name -> api.v1.Cluster
- 146, // 213: api.v1.DailyUtilizationNodeTypeResponse.Datapoints.datapoints:type_name -> api.v1.DailyUtilizationNodeTypeResponse.Datapoint
- 149, // 214: api.v1.DailyUtilizationNodeTypeResponse.Datapoint.node_type_to_daily_total_core_minutes:type_name -> api.v1.DailyUtilizationNodeTypeResponse.Datapoint.NodeTypeToDailyTotalCoreMinutesEntry
- 145, // 215: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToDatapointsEntry.value:type_name -> api.v1.DailyUtilizationNodeTypeResponse.Datapoints
- 64, // 216: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToMetaEntry.value:type_name -> api.v1.Cluster
- 113, // 217: api.v1.K8SService.GetWorkloadsStats:input_type -> api.v1.GetWorkloadsStatsRequest
- 12, // 218: api.v1.K8SService.GetClusters:input_type -> api.v1.GetClustersRequest
- 13, // 219: api.v1.K8SService.ListClusters:input_type -> api.v1.ListClustersRequest
- 14, // 220: api.v1.K8SService.GetCluster:input_type -> api.v1.GetClusterRequest
- 5, // 221: api.v1.K8SService.GetClusterMetadata:input_type -> api.v1.GetClusterMetadataRequest
- 51, // 222: api.v1.K8SService.GetAllNamespaces:input_type -> api.v1.GetAllNamespacesRequest
- 53, // 223: api.v1.K8SService.SearchNamespacesByCluster:input_type -> api.v1.SearchNamespacesByClusterRequest
- 55, // 224: api.v1.K8SService.ListNamespacesByCluster:input_type -> api.v1.ListNamespacesByClusterRequest
- 58, // 225: api.v1.K8SService.GetAllWorkloadNames:input_type -> api.v1.GetAllWorkloadNamesRequest
- 60, // 226: api.v1.K8SService.GetAllWorkloadLabels:input_type -> api.v1.GetAllWorkloadLabelsRequest
- 62, // 227: api.v1.K8SService.GetAllNodeGroupNames:input_type -> api.v1.GetAllNodeGroupNamesRequest
- 90, // 228: api.v1.K8SService.MetadataForWorkloads:input_type -> api.v1.MetadataForWorkloadsRequest
- 24, // 229: api.v1.K8SService.GetNodeGroups:input_type -> api.v1.GetNodeGroupsRequest
- 25, // 230: api.v1.K8SService.GetAllNodeGroups:input_type -> api.v1.GetAllNodeGroupsRequest
- 29, // 231: api.v1.K8SService.GetNodeGroupsUtilization:input_type -> api.v1.GetNodeGroupsUtilizationRequest
- 6, // 232: api.v1.K8SService.GetNodeGroup:input_type -> api.v1.GetNodeGroupRequest
- 3, // 233: api.v1.K8SService.GetNode:input_type -> api.v1.GetNodeRequest
- 7, // 234: api.v1.K8SService.GetWorkloads:input_type -> api.v1.GetWorkloadsRequest
- 11, // 235: api.v1.K8SService.GetWorkload:input_type -> api.v1.GetWorkloadRequest
- 39, // 236: api.v1.K8SService.GetWorkloadContainerPercentiles:input_type -> api.v1.GetWorkloadContainerPercentilesRequest
- 41, // 237: api.v1.K8SService.GetWorkloadContainerTimeSeries:input_type -> api.v1.GetWorkloadContainerTimeSeriesRequest
- 43, // 238: api.v1.K8SService.GetLatestContainerRequestLimits:input_type -> api.v1.GetLatestContainerRequestLimitsRequest
- 45, // 239: api.v1.K8SService.GetForecastWorkloads:input_type -> api.v1.GetForecastWorkloadsRequest
- 47, // 240: api.v1.K8SService.GetForecastWorkload:input_type -> api.v1.GetForecastWorkloadRequest
- 8, // 241: api.v1.K8SService.GetResources:input_type -> api.v1.GetResourcesRequest
- 9, // 242: api.v1.K8SService.GetPods:input_type -> api.v1.GetPodsRequest
- 67, // 243: api.v1.K8SService.GetLatestOperatorVersion:input_type -> api.v1.GetLatestOperatorVersionRequest
- 69, // 244: api.v1.K8SService.GalaxyGetWorkloadPerspective:input_type -> api.v1.GalaxyGetWorkloadPerspectiveRequest
- 73, // 245: api.v1.K8SService.ListAuditLogs:input_type -> api.v1.ListAuditLogsRequest
- 75, // 246: api.v1.K8SService.ListAuditLogOriginators:input_type -> api.v1.ListAuditLogOriginatorsRequest
- 77, // 247: api.v1.K8SService.SendWorkloadEmail:input_type -> api.v1.SendWorkloadEmailRequest
- 79, // 248: api.v1.K8SService.SendWeeklySummaryEmail:input_type -> api.v1.SendWeeklySummaryEmailRequest
- 82, // 249: api.v1.K8SService.GetClustersNodeInfo:input_type -> api.v1.GetClustersNodeInfoRequest
- 84, // 250: api.v1.K8SService.SearchK8sResources:input_type -> api.v1.SearchK8sResourcesRequest
- 87, // 251: api.v1.K8SService.SearchK8sWorkloads:input_type -> api.v1.SearchK8sWorkloadsRequest
- 111, // 252: api.v1.K8SService.GetClusterType:input_type -> api.v1.GetClusterTypeRequest
- 102, // 253: api.v1.K8SService.GetRelationsForKind:input_type -> api.v1.GetRelatedResourcesRequest
- 121, // 254: api.v1.K8SService.LookupNodeInstance:input_type -> api.v1.LookupNodeInstanceRequest
- 4, // 255: api.v1.K8SService.GetWorkloadPodHistory:input_type -> api.v1.GetWorkloadPodHistoryRequest
- 92, // 256: api.v1.K8SService.AddClusterTags:input_type -> api.v1.AddClusterTagsRequest
- 94, // 257: api.v1.K8SService.RemoveClusterTags:input_type -> api.v1.RemoveClusterTagsRequest
- 96, // 258: api.v1.K8SService.ListTags:input_type -> api.v1.ListTagsRequest
- 20, // 259: api.v1.ClusterMutationService.CreateCluster:input_type -> api.v1.CreateClusterRequest
- 15, // 260: api.v1.ClusterMutationService.DeleteCluster:input_type -> api.v1.DeleteClusterRequest
- 17, // 261: api.v1.ClusterMutationService.UpdateCluster:input_type -> api.v1.UpdateClusterRequest
- 22, // 262: api.v1.ClusterMutationService.ResetClusterToken:input_type -> api.v1.ResetClusterTokenRequest
- 115, // 263: api.v1.UtilizationService.DailyUtilization:input_type -> api.v1.DailyUtilizationRequest
- 117, // 264: api.v1.UtilizationService.DailyUtilizationInstanceType:input_type -> api.v1.DailyUtilizationInstanceTypeRequest
- 119, // 265: api.v1.UtilizationService.DailyUtilizationNodeType:input_type -> api.v1.DailyUtilizationNodeTypeRequest
- 114, // 266: api.v1.K8SService.GetWorkloadsStats:output_type -> api.v1.GetWorkloadsStatsResponse
- 34, // 267: api.v1.K8SService.GetClusters:output_type -> api.v1.GetClustersResponse
- 35, // 268: api.v1.K8SService.ListClusters:output_type -> api.v1.ListClustersResponse
- 33, // 269: api.v1.K8SService.GetCluster:output_type -> api.v1.GetClusterResponse
- 49, // 270: api.v1.K8SService.GetClusterMetadata:output_type -> api.v1.GetClusterMetadataResponse
- 52, // 271: api.v1.K8SService.GetAllNamespaces:output_type -> api.v1.GetAllNamespacesResponse
- 54, // 272: api.v1.K8SService.SearchNamespacesByCluster:output_type -> api.v1.SearchNamespacesByClusterResponse
- 56, // 273: api.v1.K8SService.ListNamespacesByCluster:output_type -> api.v1.ListNamespacesByClusterResponse
- 59, // 274: api.v1.K8SService.GetAllWorkloadNames:output_type -> api.v1.GetAllWorkloadNamesResponse
- 61, // 275: api.v1.K8SService.GetAllWorkloadLabels:output_type -> api.v1.GetAllWorkloadLabelsResponse
- 63, // 276: api.v1.K8SService.GetAllNodeGroupNames:output_type -> api.v1.GetAllNodeGroupNamesResponse
- 91, // 277: api.v1.K8SService.MetadataForWorkloads:output_type -> api.v1.MetadataForWorkloadsResponse
- 26, // 278: api.v1.K8SService.GetNodeGroups:output_type -> api.v1.GetNodeGroupsResponse
- 27, // 279: api.v1.K8SService.GetAllNodeGroups:output_type -> api.v1.GetAllNodeGroupsResponse
- 30, // 280: api.v1.K8SService.GetNodeGroupsUtilization:output_type -> api.v1.GetNodeGroupsUtilizationResponse
- 32, // 281: api.v1.K8SService.GetNodeGroup:output_type -> api.v1.GetNodeGroupResponse
- 36, // 282: api.v1.K8SService.GetNode:output_type -> api.v1.GetNodeResponse
- 37, // 283: api.v1.K8SService.GetWorkloads:output_type -> api.v1.GetWorkloadsResponse
- 38, // 284: api.v1.K8SService.GetWorkload:output_type -> api.v1.GetWorkloadResponse
- 40, // 285: api.v1.K8SService.GetWorkloadContainerPercentiles:output_type -> api.v1.GetWorkloadContainerPercentilesResponse
- 42, // 286: api.v1.K8SService.GetWorkloadContainerTimeSeries:output_type -> api.v1.GetWorkloadContainerTimeSeriesResponse
- 44, // 287: api.v1.K8SService.GetLatestContainerRequestLimits:output_type -> api.v1.GetLatestContainerRequestLimitsResponse
- 46, // 288: api.v1.K8SService.GetForecastWorkloads:output_type -> api.v1.GetForecastWorkloadsResponse
- 48, // 289: api.v1.K8SService.GetForecastWorkload:output_type -> api.v1.GetForecastWorkloadResponse
- 19, // 290: api.v1.K8SService.GetResources:output_type -> api.v1.GetResourcesResponse
- 10, // 291: api.v1.K8SService.GetPods:output_type -> api.v1.GetPodsResponse
- 68, // 292: api.v1.K8SService.GetLatestOperatorVersion:output_type -> api.v1.GetLatestOperatorVersionResponse
- 70, // 293: api.v1.K8SService.GalaxyGetWorkloadPerspective:output_type -> api.v1.GalaxyGetWorkloadPerspectiveResponse
- 74, // 294: api.v1.K8SService.ListAuditLogs:output_type -> api.v1.ListAuditLogsResponse
- 76, // 295: api.v1.K8SService.ListAuditLogOriginators:output_type -> api.v1.ListAuditLogOriginatorsResponse
- 78, // 296: api.v1.K8SService.SendWorkloadEmail:output_type -> api.v1.SendWorkloadEmailResponse
- 81, // 297: api.v1.K8SService.SendWeeklySummaryEmail:output_type -> api.v1.SendWeeklySummaryEmailResponse
- 83, // 298: api.v1.K8SService.GetClustersNodeInfo:output_type -> api.v1.GetClustersNodeInfoResponse
- 85, // 299: api.v1.K8SService.SearchK8sResources:output_type -> api.v1.SearchK8sResourcesResponse
- 88, // 300: api.v1.K8SService.SearchK8sWorkloads:output_type -> api.v1.SearchK8sWorkloadsResponse
- 112, // 301: api.v1.K8SService.GetClusterType:output_type -> api.v1.GetClusterTypeResponse
- 107, // 302: api.v1.K8SService.GetRelationsForKind:output_type -> api.v1.GetRelatedResourcesResponse
- 123, // 303: api.v1.K8SService.LookupNodeInstance:output_type -> api.v1.LookupNodeInstanceResponse
- 103, // 304: api.v1.K8SService.GetWorkloadPodHistory:output_type -> api.v1.GetWorkloadPodHistoryResponse
- 93, // 305: api.v1.K8SService.AddClusterTags:output_type -> api.v1.AddClusterTagsResponse
- 95, // 306: api.v1.K8SService.RemoveClusterTags:output_type -> api.v1.RemoveClusterTagsResponse
- 98, // 307: api.v1.K8SService.ListTags:output_type -> api.v1.ListTagsResponse
- 21, // 308: api.v1.ClusterMutationService.CreateCluster:output_type -> api.v1.CreateClusterResponse
- 16, // 309: api.v1.ClusterMutationService.DeleteCluster:output_type -> api.v1.DeleteClusterResponse
- 18, // 310: api.v1.ClusterMutationService.UpdateCluster:output_type -> api.v1.UpdateClusterResponse
- 23, // 311: api.v1.ClusterMutationService.ResetClusterToken:output_type -> api.v1.ResetClusterTokenResponse
- 116, // 312: api.v1.UtilizationService.DailyUtilization:output_type -> api.v1.DailyUtilizationResponse
- 118, // 313: api.v1.UtilizationService.DailyUtilizationInstanceType:output_type -> api.v1.DailyUtilizationInstanceTypeResponse
- 120, // 314: api.v1.UtilizationService.DailyUtilizationNodeType:output_type -> api.v1.DailyUtilizationNodeTypeResponse
- 266, // [266:315] is the sub-list for method output_type
- 217, // [217:266] is the sub-list for method input_type
- 217, // [217:217] is the sub-list for extension type_name
- 217, // [217:217] is the sub-list for extension extendee
- 0, // [0:217] is the sub-list for field type_name
+ 171, // 0: api.v1.GetNodeRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 1: api.v1.GetNodeRequest.end_time:type_name -> google.protobuf.Timestamp
+ 171, // 2: api.v1.GetWorkloadPodHistoryRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 3: api.v1.GetWorkloadPodHistoryRequest.end_time:type_name -> google.protobuf.Timestamp
+ 171, // 4: api.v1.GetNodeGroupRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 5: api.v1.GetNodeGroupRequest.end_time:type_name -> google.protobuf.Timestamp
+ 171, // 6: api.v1.GetWorkloadsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 7: api.v1.GetWorkloadsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 172, // 8: api.v1.GetWorkloadsRequest.filters:type_name -> api.v1.WorkloadFilters
+ 171, // 9: api.v1.ListWorkloadsPaginatedRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 10: api.v1.ListWorkloadsPaginatedRequest.end_time:type_name -> google.protobuf.Timestamp
+ 172, // 11: api.v1.ListWorkloadsPaginatedRequest.filters:type_name -> api.v1.WorkloadFilters
+ 171, // 12: api.v1.GetWorkloadsSummaryRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 13: api.v1.GetWorkloadsSummaryRequest.end_time:type_name -> google.protobuf.Timestamp
+ 172, // 14: api.v1.GetWorkloadsSummaryRequest.filters:type_name -> api.v1.WorkloadFilters
+ 10, // 15: api.v1.WorkloadMetricBreakdown.top_entries:type_name -> api.v1.WorkloadMetricEntry
+ 11, // 16: api.v1.GetWorkloadsSummaryResponse.cost:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 17: api.v1.GetWorkloadsSummaryResponse.cpu_usage:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 18: api.v1.GetWorkloadsSummaryResponse.memory_usage:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 19: api.v1.GetWorkloadsSummaryResponse.gpu_usage:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 20: api.v1.GetWorkloadsSummaryResponse.optimization_potential_cost:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 21: api.v1.GetWorkloadsSummaryResponse.optimization_potential_cpu:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 22: api.v1.GetWorkloadsSummaryResponse.optimization_potential_memory:type_name -> api.v1.WorkloadMetricBreakdown
+ 11, // 23: api.v1.GetWorkloadsSummaryResponse.optimization_potential_gpu:type_name -> api.v1.WorkloadMetricBreakdown
+ 173, // 24: api.v1.ListWorkloadsPaginatedResponse.workload_items:type_name -> api.v1.WorkloadItem
+ 174, // 25: api.v1.GetResourcesRequest.kind:type_name -> api.v1.K8sObjectKind
+ 175, // 26: api.v1.GetResourcesRequest.pagination:type_name -> api.v1.Pagination
+ 176, // 27: api.v1.GetResourcesRequest.filters:type_name -> api.v1.ResourceFieldFilter
+ 175, // 28: api.v1.GetPodsRequest.pagination:type_name -> api.v1.Pagination
+ 171, // 29: api.v1.GetPodsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 30: api.v1.GetPodsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 173, // 31: api.v1.GetPodsResponse.workload_items:type_name -> api.v1.WorkloadItem
+ 175, // 32: api.v1.GetPodsResponse.pagination:type_name -> api.v1.Pagination
+ 171, // 33: api.v1.GetWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 34: api.v1.GetWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
+ 171, // 35: api.v1.GetClustersRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 36: api.v1.GetClustersRequest.end_time:type_name -> google.protobuf.Timestamp
+ 175, // 37: api.v1.ListClustersRequest.pagination:type_name -> api.v1.Pagination
+ 171, // 38: api.v1.GetClusterRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 39: api.v1.GetClusterRequest.end_time:type_name -> google.protobuf.Timestamp
+ 83, // 40: api.v1.UpdateClusterResponse.cluster:type_name -> api.v1.Cluster
+ 173, // 41: api.v1.GetResourcesResponse.workload_items:type_name -> api.v1.WorkloadItem
+ 175, // 42: api.v1.GetResourcesResponse.pagination:type_name -> api.v1.Pagination
+ 174, // 43: api.v1.GetResourceFilterOptionsRequest.kind:type_name -> api.v1.K8sObjectKind
+ 177, // 44: api.v1.GetResourceFilterOptionsResponse.options:type_name -> api.v1.ResourceFilterFieldOptions
+ 83, // 45: api.v1.CreateClusterResponse.cluster:type_name -> api.v1.Cluster
+ 171, // 46: api.v1.GetNodeGroupsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 47: api.v1.GetNodeGroupsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 178, // 48: api.v1.GetNodeGroupsResponse.node_groups:type_name -> api.v1.NodeGroup
+ 145, // 49: api.v1.GetAllNodeGroupsResponse.node_group_map:type_name -> api.v1.GetAllNodeGroupsResponse.NodeGroupMapEntry
+ 178, // 50: api.v1.NodeGroupSet.node_groups:type_name -> api.v1.NodeGroup
+ 171, // 51: api.v1.GetNodeGroupsUtilizationRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 52: api.v1.GetNodeGroupsUtilizationRequest.end_time:type_name -> google.protobuf.Timestamp
+ 147, // 53: api.v1.GetNodeGroupsUtilizationResponse.node_group_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.NodeGroupToUtilMetricsEntry
+ 148, // 54: api.v1.GetNodeGroupsUtilizationResponse.instance_type_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.InstanceTypeToUtilMetricsEntry
+ 149, // 55: api.v1.GetNodeGroupsUtilizationResponse.reservation_type_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ReservationTypeToUtilMetricsEntry
+ 150, // 56: api.v1.GetNodeGroupsUtilizationResponse.logical_az_to_util_metrics:type_name -> api.v1.GetNodeGroupsUtilizationResponse.LogicalAzToUtilMetricsEntry
+ 179, // 57: api.v1.NodeGroupMetric.hourly_cost:type_name -> google.type.Money
+ 179, // 58: api.v1.NodeGroupMetric.hourly_cpu_cost:type_name -> google.type.Money
+ 179, // 59: api.v1.NodeGroupMetric.hourly_memory_cost:type_name -> google.type.Money
+ 179, // 60: api.v1.NodeGroupMetric.hourly_gpu_cost:type_name -> google.type.Money
+ 171, // 61: api.v1.NodeGroupMetric.bucket_time:type_name -> google.protobuf.Timestamp
+ 178, // 62: api.v1.GetNodeGroupResponse.node_group:type_name -> api.v1.NodeGroup
+ 83, // 63: api.v1.GetClusterResponse.cluster:type_name -> api.v1.Cluster
+ 83, // 64: api.v1.GetClustersResponse.clusters:type_name -> api.v1.Cluster
+ 180, // 65: api.v1.GetClustersResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 181, // 66: api.v1.GetClustersResponse.cost_info:type_name -> api.v1.CostInfo
+ 182, // 67: api.v1.GetClustersResponse.node_info:type_name -> api.v1.NodeInfo
+ 183, // 68: api.v1.GetClustersResponse.cost_data_points:type_name -> api.v1.CostDataPoint
+ 184, // 69: api.v1.GetClustersResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 83, // 70: api.v1.ListClustersResponse.clusters:type_name -> api.v1.Cluster
+ 175, // 71: api.v1.ListClustersResponse.pagination:type_name -> api.v1.Pagination
+ 185, // 72: api.v1.GetNodeResponse.node:type_name -> api.v1.Node
+ 180, // 73: api.v1.GetNodeResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 181, // 74: api.v1.GetNodeResponse.cost_info:type_name -> api.v1.CostInfo
+ 183, // 75: api.v1.GetNodeResponse.cost_data_points:type_name -> api.v1.CostDataPoint
+ 184, // 76: api.v1.GetNodeResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 173, // 77: api.v1.GetWorkloadsResponse.workload_items:type_name -> api.v1.WorkloadItem
+ 181, // 78: api.v1.GetWorkloadsResponse.cost_info:type_name -> api.v1.CostInfo
+ 180, // 79: api.v1.GetWorkloadsResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 186, // 80: api.v1.GetWorkloadsResponse.resource_summary:type_name -> api.v1.ResourceSummary
+ 173, // 81: api.v1.GetWorkloadResponse.workload_item:type_name -> api.v1.WorkloadItem
+ 181, // 82: api.v1.GetWorkloadResponse.cost_info:type_name -> api.v1.CostInfo
+ 180, // 83: api.v1.GetWorkloadResponse.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 186, // 84: api.v1.GetWorkloadResponse.resource_summary:type_name -> api.v1.ResourceSummary
+ 183, // 85: api.v1.GetWorkloadResponse.cost_data_points:type_name -> api.v1.CostDataPoint
+ 184, // 86: api.v1.GetWorkloadResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 171, // 87: api.v1.GetWorkloadContainerPercentilesRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 88: api.v1.GetWorkloadContainerPercentilesRequest.end_time:type_name -> google.protobuf.Timestamp
+ 187, // 89: api.v1.GetWorkloadContainerPercentilesResponse.containers:type_name -> api.v1.ContainerPercentileSummary
+ 171, // 90: api.v1.GetWorkloadContainerTimeSeriesRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 91: api.v1.GetWorkloadContainerTimeSeriesRequest.end_time:type_name -> google.protobuf.Timestamp
+ 188, // 92: api.v1.GetWorkloadContainerTimeSeriesResponse.containers:type_name -> api.v1.ContainerTimeSeries
+ 189, // 93: api.v1.GetLatestContainerRequestLimitsResponse.containers:type_name -> api.v1.ContainerRequestLimits
+ 190, // 94: api.v1.GetNodeGPUMigInstancesResponse.instances:type_name -> api.v1.GPUMigInstance
+ 171, // 95: api.v1.GetNodeGPUMigInstancesResponse.collected_at:type_name -> google.protobuf.Timestamp
+ 171, // 96: api.v1.GetNodeGPUMigInstanceTimeseriesRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 97: api.v1.GetNodeGPUMigInstanceTimeseriesRequest.end_time:type_name -> google.protobuf.Timestamp
+ 171, // 98: api.v1.GPUMigInstanceDataPoint.timestamp:type_name -> google.protobuf.Timestamp
+ 56, // 99: api.v1.GPUMigInstanceTimeseries.points:type_name -> api.v1.GPUMigInstanceDataPoint
+ 57, // 100: api.v1.GetNodeGPUMigInstanceTimeseriesResponse.instances:type_name -> api.v1.GPUMigInstanceTimeseries
+ 191, // 101: api.v1.GetContainerIndividualGPUMetricsResponse.containers:type_name -> api.v1.ContainerIndividualGPUMetrics
+ 61, // 102: api.v1.GetWorkloadLanguagesResponse.languages:type_name -> api.v1.LanguageVersions
+ 171, // 103: api.v1.GetForecastWorkloadsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 104: api.v1.GetForecastWorkloadsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 173, // 105: api.v1.GetForecastWorkloadsResponse.workload_items:type_name -> api.v1.WorkloadItem
+ 181, // 106: api.v1.GetForecastWorkloadsResponse.cost_info:type_name -> api.v1.CostInfo
+ 192, // 107: api.v1.GetForecastWorkloadsResponse.resource_metrics:type_name -> api.v1.ForecastResourceMetrics
+ 186, // 108: api.v1.GetForecastWorkloadsResponse.resource_summary:type_name -> api.v1.ResourceSummary
+ 171, // 109: api.v1.GetForecastWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 110: api.v1.GetForecastWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
+ 173, // 111: api.v1.GetForecastWorkloadResponse.workload_item:type_name -> api.v1.WorkloadItem
+ 181, // 112: api.v1.GetForecastWorkloadResponse.cost_info:type_name -> api.v1.CostInfo
+ 192, // 113: api.v1.GetForecastWorkloadResponse.resource_metrics:type_name -> api.v1.ForecastResourceMetrics
+ 186, // 114: api.v1.GetForecastWorkloadResponse.resource_summary:type_name -> api.v1.ResourceSummary
+ 183, // 115: api.v1.GetForecastWorkloadResponse.cost_data_points:type_name -> api.v1.CostDataPoint
+ 184, // 116: api.v1.GetForecastWorkloadResponse.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 83, // 117: api.v1.GetClusterMetadataResponse.clusters:type_name -> api.v1.Cluster
+ 69, // 118: api.v1.GetAllNamespacesResponse.cluster_id_with_namespaces:type_name -> api.v1.ClusterElement
+ 76, // 119: api.v1.ListNamespacesByClusterResponse.namespaces:type_name -> api.v1.NamespaceItem
+ 174, // 120: api.v1.GetAllWorkloadNamesRequest.kinds:type_name -> api.v1.K8sObjectKind
+ 69, // 121: api.v1.GetAllWorkloadNamesResponse.cluster_id_with_workload_name:type_name -> api.v1.ClusterElement
+ 174, // 122: api.v1.GetAllWorkloadLabelsRequest.kinds:type_name -> api.v1.K8sObjectKind
+ 69, // 123: api.v1.GetAllWorkloadLabelsResponse.cluster_id_with_labels:type_name -> api.v1.ClusterElement
+ 69, // 124: api.v1.GetAllNodeGroupNamesResponse.cluster_id_with_node_group_names:type_name -> api.v1.ClusterElement
+ 180, // 125: api.v1.Cluster.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 181, // 126: api.v1.Cluster.cost_info:type_name -> api.v1.CostInfo
+ 182, // 127: api.v1.Cluster.node_info:type_name -> api.v1.NodeInfo
+ 183, // 128: api.v1.Cluster.cost_data_points:type_name -> api.v1.CostDataPoint
+ 184, // 129: api.v1.Cluster.resource_data_points:type_name -> api.v1.ResourceDataPoint
+ 185, // 130: api.v1.Cluster.most_expensive_node:type_name -> api.v1.Node
+ 185, // 131: api.v1.Cluster.least_expensive_node:type_name -> api.v1.Node
+ 185, // 132: api.v1.Cluster.most_underutilized_node:type_name -> api.v1.Node
+ 85, // 133: api.v1.Cluster.most_underutilized_container:type_name -> api.v1.Container
+ 84, // 134: api.v1.Cluster.zxp_info:type_name -> api.v1.OperatorInfo
+ 84, // 135: api.v1.Cluster.zxp_helm_info:type_name -> api.v1.OperatorInfo
+ 84, // 136: api.v1.Cluster.dakr_op_info:type_name -> api.v1.OperatorInfo
+ 84, // 137: api.v1.Cluster.node_op_info:type_name -> api.v1.OperatorInfo
+ 84, // 138: api.v1.Cluster.security_op_info:type_name -> api.v1.OperatorInfo
+ 84, // 139: api.v1.Cluster.network_op_info:type_name -> api.v1.OperatorInfo
+ 180, // 140: api.v1.Container.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 84, // 141: api.v1.GetLatestOperatorVersionResponse.zxp_info:type_name -> api.v1.OperatorInfo
+ 84, // 142: api.v1.GetLatestOperatorVersionResponse.zxp_helm_info:type_name -> api.v1.OperatorInfo
+ 84, // 143: api.v1.GetLatestOperatorVersionResponse.zxp_netmon_info:type_name -> api.v1.OperatorInfo
+ 84, // 144: api.v1.GetLatestOperatorVersionResponse.zxp_netmon_helm_info:type_name -> api.v1.OperatorInfo
+ 84, // 145: api.v1.GetLatestOperatorVersionResponse.dakr_op_info:type_name -> api.v1.OperatorInfo
+ 84, // 146: api.v1.GetLatestOperatorVersionResponse.dakr_op_helm_info:type_name -> api.v1.OperatorInfo
+ 84, // 147: api.v1.GetLatestOperatorVersionResponse.node_op_info_aws:type_name -> api.v1.OperatorInfo
+ 84, // 148: api.v1.GetLatestOperatorVersionResponse.node_op_info_azure:type_name -> api.v1.OperatorInfo
+ 84, // 149: api.v1.GetLatestOperatorVersionResponse.node_op_info_gcp:type_name -> api.v1.OperatorInfo
+ 84, // 150: api.v1.GetLatestOperatorVersionResponse.node_op_info_oci:type_name -> api.v1.OperatorInfo
+ 84, // 151: api.v1.GetLatestOperatorVersionResponse.security_op_info:type_name -> api.v1.OperatorInfo
+ 84, // 152: api.v1.GetLatestOperatorVersionResponse.security_op_helm_info:type_name -> api.v1.OperatorInfo
+ 84, // 153: api.v1.GetLatestOperatorVersionResponse.trezr_info:type_name -> api.v1.OperatorInfo
+ 84, // 154: api.v1.GetLatestOperatorVersionResponse.trezr_helm_info:type_name -> api.v1.OperatorInfo
+ 84, // 155: api.v1.GetLatestOperatorVersionResponse.snapshot_helm_info:type_name -> api.v1.OperatorInfo
+ 1, // 156: api.v1.GalaxyGetWorkloadPerspectiveRequest.group_by:type_name -> api.v1.GalaxyPOVWorkloadGroupBy
+ 91, // 157: api.v1.GalaxyGetWorkloadPerspectiveRequest.datapoint_opts:type_name -> api.v1.PerspectiveDatapointOpts
+ 90, // 158: api.v1.GalaxyGetWorkloadPerspectiveResponse.groupings:type_name -> api.v1.GalaxyWorkloadGroup
+ 151, // 159: api.v1.GalaxyGetWorkloadPerspectiveResponse.clusters:type_name -> api.v1.GalaxyGetWorkloadPerspectiveResponse.ClustersEntry
+ 152, // 160: api.v1.GalaxyGetWorkloadPerspectiveResponse.workloads:type_name -> api.v1.GalaxyGetWorkloadPerspectiveResponse.WorkloadsEntry
+ 181, // 161: api.v1.GalaxyWorkloadGroup.cost_info:type_name -> api.v1.CostInfo
+ 180, // 162: api.v1.GalaxyWorkloadGroup.resource_metrics:type_name -> api.v1.ResourceMetrics
+ 186, // 163: api.v1.GalaxyWorkloadGroup.resource_summary:type_name -> api.v1.ResourceSummary
+ 174, // 164: api.v1.ListAuditLogsRequest.workload_type:type_name -> api.v1.K8sObjectKind
+ 171, // 165: api.v1.ListAuditLogsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 166: api.v1.ListAuditLogsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 175, // 167: api.v1.ListAuditLogsRequest.pagination:type_name -> api.v1.Pagination
+ 193, // 168: api.v1.ListAuditLogsResponse.logs:type_name -> api.v1.AuditLogEntry
+ 175, // 169: api.v1.ListAuditLogsResponse.pagination:type_name -> api.v1.Pagination
+ 174, // 170: api.v1.ListAuditLogOriginatorsRequest.workload_type:type_name -> api.v1.K8sObjectKind
+ 171, // 171: api.v1.ListAuditLogOriginatorsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 172: api.v1.ListAuditLogOriginatorsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 99, // 173: api.v1.SendWeeklySummaryEmailRequest.request:type_name -> api.v1.SendWeeklySummaryEmailRequestData
+ 171, // 174: api.v1.GetClustersNodeInfoRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 175: api.v1.GetClustersNodeInfoRequest.end_time:type_name -> google.protobuf.Timestamp
+ 182, // 176: api.v1.GetClustersNodeInfoResponse.node_info:type_name -> api.v1.NodeInfo
+ 185, // 177: api.v1.GetClustersNodeInfoResponse.most_expensive_node:type_name -> api.v1.Node
+ 185, // 178: api.v1.GetClustersNodeInfoResponse.least_expensive_node:type_name -> api.v1.Node
+ 185, // 179: api.v1.GetClustersNodeInfoResponse.most_underutilized_node:type_name -> api.v1.Node
+ 105, // 180: api.v1.SearchK8sResourcesResponse.results:type_name -> api.v1.K8sSearchResult
+ 108, // 181: api.v1.SearchK8sWorkloadsResponse.results:type_name -> api.v1.K8sWorkloadSearchResult
+ 153, // 182: api.v1.MetadataForWorkloadsRequest.workload_uid_to_kind:type_name -> api.v1.MetadataForWorkloadsRequest.WorkloadUidToKindEntry
+ 154, // 183: api.v1.MetadataForWorkloadsResponse.workload_uid_to_metadata:type_name -> api.v1.MetadataForWorkloadsResponse.WorkloadUidToMetadataEntry
+ 83, // 184: api.v1.AddClusterTagsResponse.cluster:type_name -> api.v1.Cluster
+ 83, // 185: api.v1.RemoveClusterTagsResponse.cluster:type_name -> api.v1.Cluster
+ 116, // 186: api.v1.ListTagsResponse.tags:type_name -> api.v1.TagSummary
+ 155, // 187: api.v1.WorkloadMetadata.pod_uid_to_node_metadata:type_name -> api.v1.WorkloadMetadata.PodUidToNodeMetadataEntry
+ 156, // 188: api.v1.WorkloadMetadata.pod_uid_to_pod_metadata:type_name -> api.v1.WorkloadMetadata.PodUidToPodMetadataEntry
+ 174, // 189: api.v1.WorkloadMetadata.kind:type_name -> api.v1.K8sObjectKind
+ 174, // 190: api.v1.GetRelatedResourcesRequest.kind:type_name -> api.v1.K8sObjectKind
+ 124, // 191: api.v1.GetWorkloadPodHistoryResponse.replica_sets:type_name -> api.v1.ReplicaSetHistory
+ 125, // 192: api.v1.GetWorkloadPodHistoryResponse.direct_pods:type_name -> api.v1.PodHistory
+ 123, // 193: api.v1.GetWorkloadPodHistoryResponse.jobs:type_name -> api.v1.JobHistory
+ 171, // 194: api.v1.JobHistory.created_at:type_name -> google.protobuf.Timestamp
+ 171, // 195: api.v1.JobHistory.deleted_at:type_name -> google.protobuf.Timestamp
+ 125, // 196: api.v1.JobHistory.pods:type_name -> api.v1.PodHistory
+ 171, // 197: api.v1.ReplicaSetHistory.created_at:type_name -> google.protobuf.Timestamp
+ 171, // 198: api.v1.ReplicaSetHistory.deleted_at:type_name -> google.protobuf.Timestamp
+ 125, // 199: api.v1.ReplicaSetHistory.pods:type_name -> api.v1.PodHistory
+ 171, // 200: api.v1.PodHistory.created_at:type_name -> google.protobuf.Timestamp
+ 171, // 201: api.v1.PodHistory.deleted_at:type_name -> google.protobuf.Timestamp
+ 127, // 202: api.v1.GetRelatedResourcesResponse.relations:type_name -> api.v1.K8sRelatedResource
+ 128, // 203: api.v1.GetRelatedResourcesResponse.nodes:type_name -> api.v1.K8sResourceNode
+ 129, // 204: api.v1.GetRelatedResourcesResponse.edges:type_name -> api.v1.K8sResourceEdge
+ 2, // 205: api.v1.GetClusterTypeResponse.cluster_type:type_name -> api.v1.ClusterType
+ 171, // 206: api.v1.GetMigPartedConfigResponse.last_seen:type_name -> google.protobuf.Timestamp
+ 171, // 207: api.v1.GetWorkloadsStatsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 208: api.v1.GetWorkloadsStatsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 171, // 209: api.v1.DailyUtilizationRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 210: api.v1.DailyUtilizationRequest.end_time:type_name -> google.protobuf.Timestamp
+ 159, // 211: api.v1.DailyUtilizationResponse.cluster_id_to_daily_total_core_minutes:type_name -> api.v1.DailyUtilizationResponse.ClusterIdToDailyTotalCoreMinutesEntry
+ 160, // 212: api.v1.DailyUtilizationResponse.cluster_id_to_meta:type_name -> api.v1.DailyUtilizationResponse.ClusterIdToMetaEntry
+ 171, // 213: api.v1.DailyUtilizationInstanceTypeRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 214: api.v1.DailyUtilizationInstanceTypeRequest.end_time:type_name -> google.protobuf.Timestamp
+ 163, // 215: api.v1.DailyUtilizationInstanceTypeResponse.cluster_id_to_datapoints:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToDatapointsEntry
+ 164, // 216: api.v1.DailyUtilizationInstanceTypeResponse.cluster_id_to_meta:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToMetaEntry
+ 171, // 217: api.v1.DailyUtilizationNodeTypeRequest.start_time:type_name -> google.protobuf.Timestamp
+ 171, // 218: api.v1.DailyUtilizationNodeTypeRequest.end_time:type_name -> google.protobuf.Timestamp
+ 168, // 219: api.v1.DailyUtilizationNodeTypeResponse.cluster_id_to_datapoints:type_name -> api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToDatapointsEntry
+ 169, // 220: api.v1.DailyUtilizationNodeTypeResponse.cluster_id_to_meta:type_name -> api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToMetaEntry
+ 194, // 221: api.v1.LookupNodeInstanceResponse.dynamic_instance:type_name -> api.v1.Instance
+ 194, // 222: api.v1.LookupNodeInstanceResponse.cached_instance:type_name -> api.v1.Instance
+ 143, // 223: api.v1.LookupNodeInstanceResponse.lookup_params:type_name -> api.v1.InstanceLookupParams
+ 178, // 224: api.v1.GetAllNodeGroupsResponse.NodeGroupMapEntry.value:type_name -> api.v1.NodeGroup
+ 39, // 225: api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics.node_group_metrics:type_name -> api.v1.NodeGroupMetric
+ 146, // 226: api.v1.GetNodeGroupsUtilizationResponse.NodeGroupToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
+ 146, // 227: api.v1.GetNodeGroupsUtilizationResponse.InstanceTypeToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
+ 146, // 228: api.v1.GetNodeGroupsUtilizationResponse.ReservationTypeToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
+ 146, // 229: api.v1.GetNodeGroupsUtilizationResponse.LogicalAzToUtilMetricsEntry.value:type_name -> api.v1.GetNodeGroupsUtilizationResponse.ListNodeGroupMetrics
+ 83, // 230: api.v1.GalaxyGetWorkloadPerspectiveResponse.ClustersEntry.value:type_name -> api.v1.Cluster
+ 173, // 231: api.v1.GalaxyGetWorkloadPerspectiveResponse.WorkloadsEntry.value:type_name -> api.v1.WorkloadItem
+ 174, // 232: api.v1.MetadataForWorkloadsRequest.WorkloadUidToKindEntry.value:type_name -> api.v1.K8sObjectKind
+ 118, // 233: api.v1.MetadataForWorkloadsResponse.WorkloadUidToMetadataEntry.value:type_name -> api.v1.WorkloadMetadata
+ 120, // 234: api.v1.WorkloadMetadata.PodUidToNodeMetadataEntry.value:type_name -> api.v1.NodeMetadata
+ 119, // 235: api.v1.WorkloadMetadata.PodUidToPodMetadataEntry.value:type_name -> api.v1.PodMetadata
+ 158, // 236: api.v1.DailyUtilizationResponse.Datapoints.datapoints:type_name -> api.v1.DailyUtilizationResponse.Datapoint
+ 157, // 237: api.v1.DailyUtilizationResponse.ClusterIdToDailyTotalCoreMinutesEntry.value:type_name -> api.v1.DailyUtilizationResponse.Datapoints
+ 83, // 238: api.v1.DailyUtilizationResponse.ClusterIdToMetaEntry.value:type_name -> api.v1.Cluster
+ 162, // 239: api.v1.DailyUtilizationInstanceTypeResponse.Datapoints.datapoints:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.Datapoint
+ 165, // 240: api.v1.DailyUtilizationInstanceTypeResponse.Datapoint.instance_type_to_daily_total_core_minutes:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.Datapoint.InstanceTypeToDailyTotalCoreMinutesEntry
+ 161, // 241: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToDatapointsEntry.value:type_name -> api.v1.DailyUtilizationInstanceTypeResponse.Datapoints
+ 83, // 242: api.v1.DailyUtilizationInstanceTypeResponse.ClusterIdToMetaEntry.value:type_name -> api.v1.Cluster
+ 167, // 243: api.v1.DailyUtilizationNodeTypeResponse.Datapoints.datapoints:type_name -> api.v1.DailyUtilizationNodeTypeResponse.Datapoint
+ 170, // 244: api.v1.DailyUtilizationNodeTypeResponse.Datapoint.node_type_to_daily_total_core_minutes:type_name -> api.v1.DailyUtilizationNodeTypeResponse.Datapoint.NodeTypeToDailyTotalCoreMinutesEntry
+ 166, // 245: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToDatapointsEntry.value:type_name -> api.v1.DailyUtilizationNodeTypeResponse.Datapoints
+ 83, // 246: api.v1.DailyUtilizationNodeTypeResponse.ClusterIdToMetaEntry.value:type_name -> api.v1.Cluster
+ 134, // 247: api.v1.K8SService.GetWorkloadsStats:input_type -> api.v1.GetWorkloadsStatsRequest
+ 18, // 248: api.v1.K8SService.GetClusters:input_type -> api.v1.GetClustersRequest
+ 19, // 249: api.v1.K8SService.ListClusters:input_type -> api.v1.ListClustersRequest
+ 20, // 250: api.v1.K8SService.GetCluster:input_type -> api.v1.GetClusterRequest
+ 5, // 251: api.v1.K8SService.GetClusterMetadata:input_type -> api.v1.GetClusterMetadataRequest
+ 70, // 252: api.v1.K8SService.GetAllNamespaces:input_type -> api.v1.GetAllNamespacesRequest
+ 72, // 253: api.v1.K8SService.SearchNamespacesByCluster:input_type -> api.v1.SearchNamespacesByClusterRequest
+ 74, // 254: api.v1.K8SService.ListNamespacesByCluster:input_type -> api.v1.ListNamespacesByClusterRequest
+ 77, // 255: api.v1.K8SService.GetAllWorkloadNames:input_type -> api.v1.GetAllWorkloadNamesRequest
+ 79, // 256: api.v1.K8SService.GetAllWorkloadLabels:input_type -> api.v1.GetAllWorkloadLabelsRequest
+ 81, // 257: api.v1.K8SService.GetAllNodeGroupNames:input_type -> api.v1.GetAllNodeGroupNamesRequest
+ 109, // 258: api.v1.K8SService.MetadataForWorkloads:input_type -> api.v1.MetadataForWorkloadsRequest
+ 32, // 259: api.v1.K8SService.GetNodeGroups:input_type -> api.v1.GetNodeGroupsRequest
+ 33, // 260: api.v1.K8SService.GetAllNodeGroups:input_type -> api.v1.GetAllNodeGroupsRequest
+ 37, // 261: api.v1.K8SService.GetNodeGroupsUtilization:input_type -> api.v1.GetNodeGroupsUtilizationRequest
+ 6, // 262: api.v1.K8SService.GetNodeGroup:input_type -> api.v1.GetNodeGroupRequest
+ 3, // 263: api.v1.K8SService.GetNode:input_type -> api.v1.GetNodeRequest
+ 7, // 264: api.v1.K8SService.GetWorkloads:input_type -> api.v1.GetWorkloadsRequest
+ 8, // 265: api.v1.K8SService.ListWorkloadsPaginated:input_type -> api.v1.ListWorkloadsPaginatedRequest
+ 9, // 266: api.v1.K8SService.GetWorkloadsSummary:input_type -> api.v1.GetWorkloadsSummaryRequest
+ 17, // 267: api.v1.K8SService.GetWorkload:input_type -> api.v1.GetWorkloadRequest
+ 47, // 268: api.v1.K8SService.GetWorkloadContainerPercentiles:input_type -> api.v1.GetWorkloadContainerPercentilesRequest
+ 49, // 269: api.v1.K8SService.GetWorkloadContainerTimeSeries:input_type -> api.v1.GetWorkloadContainerTimeSeriesRequest
+ 51, // 270: api.v1.K8SService.GetLatestContainerRequestLimits:input_type -> api.v1.GetLatestContainerRequestLimitsRequest
+ 53, // 271: api.v1.K8SService.GetNodeGPUMigInstances:input_type -> api.v1.GetNodeGPUMigInstancesRequest
+ 55, // 272: api.v1.K8SService.GetNodeGPUMigInstanceTimeseries:input_type -> api.v1.GetNodeGPUMigInstanceTimeseriesRequest
+ 59, // 273: api.v1.K8SService.GetContainerIndividualGPUMetrics:input_type -> api.v1.GetContainerIndividualGPUMetricsRequest
+ 62, // 274: api.v1.K8SService.GetWorkloadLanguages:input_type -> api.v1.GetWorkloadLanguagesRequest
+ 64, // 275: api.v1.K8SService.GetForecastWorkloads:input_type -> api.v1.GetForecastWorkloadsRequest
+ 66, // 276: api.v1.K8SService.GetForecastWorkload:input_type -> api.v1.GetForecastWorkloadRequest
+ 14, // 277: api.v1.K8SService.GetResources:input_type -> api.v1.GetResourcesRequest
+ 26, // 278: api.v1.K8SService.GetResourceFilterOptions:input_type -> api.v1.GetResourceFilterOptionsRequest
+ 15, // 279: api.v1.K8SService.GetPods:input_type -> api.v1.GetPodsRequest
+ 86, // 280: api.v1.K8SService.GetLatestOperatorVersion:input_type -> api.v1.GetLatestOperatorVersionRequest
+ 88, // 281: api.v1.K8SService.GalaxyGetWorkloadPerspective:input_type -> api.v1.GalaxyGetWorkloadPerspectiveRequest
+ 92, // 282: api.v1.K8SService.ListAuditLogs:input_type -> api.v1.ListAuditLogsRequest
+ 94, // 283: api.v1.K8SService.ListAuditLogOriginators:input_type -> api.v1.ListAuditLogOriginatorsRequest
+ 96, // 284: api.v1.K8SService.SendWorkloadEmail:input_type -> api.v1.SendWorkloadEmailRequest
+ 98, // 285: api.v1.K8SService.SendWeeklySummaryEmail:input_type -> api.v1.SendWeeklySummaryEmailRequest
+ 101, // 286: api.v1.K8SService.GetClustersNodeInfo:input_type -> api.v1.GetClustersNodeInfoRequest
+ 103, // 287: api.v1.K8SService.SearchK8sResources:input_type -> api.v1.SearchK8sResourcesRequest
+ 106, // 288: api.v1.K8SService.SearchK8sWorkloads:input_type -> api.v1.SearchK8sWorkloadsRequest
+ 130, // 289: api.v1.K8SService.GetClusterType:input_type -> api.v1.GetClusterTypeRequest
+ 121, // 290: api.v1.K8SService.GetRelationsForKind:input_type -> api.v1.GetRelatedResourcesRequest
+ 142, // 291: api.v1.K8SService.LookupNodeInstance:input_type -> api.v1.LookupNodeInstanceRequest
+ 4, // 292: api.v1.K8SService.GetWorkloadPodHistory:input_type -> api.v1.GetWorkloadPodHistoryRequest
+ 111, // 293: api.v1.K8SService.AddClusterTags:input_type -> api.v1.AddClusterTagsRequest
+ 113, // 294: api.v1.K8SService.RemoveClusterTags:input_type -> api.v1.RemoveClusterTagsRequest
+ 115, // 295: api.v1.K8SService.ListTags:input_type -> api.v1.ListTagsRequest
+ 132, // 296: api.v1.K8SService.GetMigPartedConfig:input_type -> api.v1.GetMigPartedConfigRequest
+ 28, // 297: api.v1.ClusterMutationService.CreateCluster:input_type -> api.v1.CreateClusterRequest
+ 21, // 298: api.v1.ClusterMutationService.DeleteCluster:input_type -> api.v1.DeleteClusterRequest
+ 23, // 299: api.v1.ClusterMutationService.UpdateCluster:input_type -> api.v1.UpdateClusterRequest
+ 30, // 300: api.v1.ClusterMutationService.ResetClusterToken:input_type -> api.v1.ResetClusterTokenRequest
+ 136, // 301: api.v1.UtilizationService.DailyUtilization:input_type -> api.v1.DailyUtilizationRequest
+ 138, // 302: api.v1.UtilizationService.DailyUtilizationInstanceType:input_type -> api.v1.DailyUtilizationInstanceTypeRequest
+ 140, // 303: api.v1.UtilizationService.DailyUtilizationNodeType:input_type -> api.v1.DailyUtilizationNodeTypeRequest
+ 135, // 304: api.v1.K8SService.GetWorkloadsStats:output_type -> api.v1.GetWorkloadsStatsResponse
+ 42, // 305: api.v1.K8SService.GetClusters:output_type -> api.v1.GetClustersResponse
+ 43, // 306: api.v1.K8SService.ListClusters:output_type -> api.v1.ListClustersResponse
+ 41, // 307: api.v1.K8SService.GetCluster:output_type -> api.v1.GetClusterResponse
+ 68, // 308: api.v1.K8SService.GetClusterMetadata:output_type -> api.v1.GetClusterMetadataResponse
+ 71, // 309: api.v1.K8SService.GetAllNamespaces:output_type -> api.v1.GetAllNamespacesResponse
+ 73, // 310: api.v1.K8SService.SearchNamespacesByCluster:output_type -> api.v1.SearchNamespacesByClusterResponse
+ 75, // 311: api.v1.K8SService.ListNamespacesByCluster:output_type -> api.v1.ListNamespacesByClusterResponse
+ 78, // 312: api.v1.K8SService.GetAllWorkloadNames:output_type -> api.v1.GetAllWorkloadNamesResponse
+ 80, // 313: api.v1.K8SService.GetAllWorkloadLabels:output_type -> api.v1.GetAllWorkloadLabelsResponse
+ 82, // 314: api.v1.K8SService.GetAllNodeGroupNames:output_type -> api.v1.GetAllNodeGroupNamesResponse
+ 110, // 315: api.v1.K8SService.MetadataForWorkloads:output_type -> api.v1.MetadataForWorkloadsResponse
+ 34, // 316: api.v1.K8SService.GetNodeGroups:output_type -> api.v1.GetNodeGroupsResponse
+ 35, // 317: api.v1.K8SService.GetAllNodeGroups:output_type -> api.v1.GetAllNodeGroupsResponse
+ 38, // 318: api.v1.K8SService.GetNodeGroupsUtilization:output_type -> api.v1.GetNodeGroupsUtilizationResponse
+ 40, // 319: api.v1.K8SService.GetNodeGroup:output_type -> api.v1.GetNodeGroupResponse
+ 44, // 320: api.v1.K8SService.GetNode:output_type -> api.v1.GetNodeResponse
+ 45, // 321: api.v1.K8SService.GetWorkloads:output_type -> api.v1.GetWorkloadsResponse
+ 13, // 322: api.v1.K8SService.ListWorkloadsPaginated:output_type -> api.v1.ListWorkloadsPaginatedResponse
+ 12, // 323: api.v1.K8SService.GetWorkloadsSummary:output_type -> api.v1.GetWorkloadsSummaryResponse
+ 46, // 324: api.v1.K8SService.GetWorkload:output_type -> api.v1.GetWorkloadResponse
+ 48, // 325: api.v1.K8SService.GetWorkloadContainerPercentiles:output_type -> api.v1.GetWorkloadContainerPercentilesResponse
+ 50, // 326: api.v1.K8SService.GetWorkloadContainerTimeSeries:output_type -> api.v1.GetWorkloadContainerTimeSeriesResponse
+ 52, // 327: api.v1.K8SService.GetLatestContainerRequestLimits:output_type -> api.v1.GetLatestContainerRequestLimitsResponse
+ 54, // 328: api.v1.K8SService.GetNodeGPUMigInstances:output_type -> api.v1.GetNodeGPUMigInstancesResponse
+ 58, // 329: api.v1.K8SService.GetNodeGPUMigInstanceTimeseries:output_type -> api.v1.GetNodeGPUMigInstanceTimeseriesResponse
+ 60, // 330: api.v1.K8SService.GetContainerIndividualGPUMetrics:output_type -> api.v1.GetContainerIndividualGPUMetricsResponse
+ 63, // 331: api.v1.K8SService.GetWorkloadLanguages:output_type -> api.v1.GetWorkloadLanguagesResponse
+ 65, // 332: api.v1.K8SService.GetForecastWorkloads:output_type -> api.v1.GetForecastWorkloadsResponse
+ 67, // 333: api.v1.K8SService.GetForecastWorkload:output_type -> api.v1.GetForecastWorkloadResponse
+ 25, // 334: api.v1.K8SService.GetResources:output_type -> api.v1.GetResourcesResponse
+ 27, // 335: api.v1.K8SService.GetResourceFilterOptions:output_type -> api.v1.GetResourceFilterOptionsResponse
+ 16, // 336: api.v1.K8SService.GetPods:output_type -> api.v1.GetPodsResponse
+ 87, // 337: api.v1.K8SService.GetLatestOperatorVersion:output_type -> api.v1.GetLatestOperatorVersionResponse
+ 89, // 338: api.v1.K8SService.GalaxyGetWorkloadPerspective:output_type -> api.v1.GalaxyGetWorkloadPerspectiveResponse
+ 93, // 339: api.v1.K8SService.ListAuditLogs:output_type -> api.v1.ListAuditLogsResponse
+ 95, // 340: api.v1.K8SService.ListAuditLogOriginators:output_type -> api.v1.ListAuditLogOriginatorsResponse
+ 97, // 341: api.v1.K8SService.SendWorkloadEmail:output_type -> api.v1.SendWorkloadEmailResponse
+ 100, // 342: api.v1.K8SService.SendWeeklySummaryEmail:output_type -> api.v1.SendWeeklySummaryEmailResponse
+ 102, // 343: api.v1.K8SService.GetClustersNodeInfo:output_type -> api.v1.GetClustersNodeInfoResponse
+ 104, // 344: api.v1.K8SService.SearchK8sResources:output_type -> api.v1.SearchK8sResourcesResponse
+ 107, // 345: api.v1.K8SService.SearchK8sWorkloads:output_type -> api.v1.SearchK8sWorkloadsResponse
+ 131, // 346: api.v1.K8SService.GetClusterType:output_type -> api.v1.GetClusterTypeResponse
+ 126, // 347: api.v1.K8SService.GetRelationsForKind:output_type -> api.v1.GetRelatedResourcesResponse
+ 144, // 348: api.v1.K8SService.LookupNodeInstance:output_type -> api.v1.LookupNodeInstanceResponse
+ 122, // 349: api.v1.K8SService.GetWorkloadPodHistory:output_type -> api.v1.GetWorkloadPodHistoryResponse
+ 112, // 350: api.v1.K8SService.AddClusterTags:output_type -> api.v1.AddClusterTagsResponse
+ 114, // 351: api.v1.K8SService.RemoveClusterTags:output_type -> api.v1.RemoveClusterTagsResponse
+ 117, // 352: api.v1.K8SService.ListTags:output_type -> api.v1.ListTagsResponse
+ 133, // 353: api.v1.K8SService.GetMigPartedConfig:output_type -> api.v1.GetMigPartedConfigResponse
+ 29, // 354: api.v1.ClusterMutationService.CreateCluster:output_type -> api.v1.CreateClusterResponse
+ 22, // 355: api.v1.ClusterMutationService.DeleteCluster:output_type -> api.v1.DeleteClusterResponse
+ 24, // 356: api.v1.ClusterMutationService.UpdateCluster:output_type -> api.v1.UpdateClusterResponse
+ 31, // 357: api.v1.ClusterMutationService.ResetClusterToken:output_type -> api.v1.ResetClusterTokenResponse
+ 137, // 358: api.v1.UtilizationService.DailyUtilization:output_type -> api.v1.DailyUtilizationResponse
+ 139, // 359: api.v1.UtilizationService.DailyUtilizationInstanceType:output_type -> api.v1.DailyUtilizationInstanceTypeResponse
+ 141, // 360: api.v1.UtilizationService.DailyUtilizationNodeType:output_type -> api.v1.DailyUtilizationNodeTypeResponse
+ 304, // [304:361] is the sub-list for method output_type
+ 247, // [247:304] is the sub-list for method input_type
+ 247, // [247:247] is the sub-list for extension type_name
+ 247, // [247:247] is the sub-list for extension extendee
+ 0, // [0:247] is the sub-list for field type_name
}
func init() { file_api_v1_k8s_proto_init() }
@@ -12186,7 +14268,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetResourcesRequest); i {
+ switch v := v.(*ListWorkloadsPaginatedRequest); i {
case 0:
return &v.state
case 1:
@@ -12198,7 +14280,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPodsRequest); i {
+ switch v := v.(*GetWorkloadsSummaryRequest); i {
case 0:
return &v.state
case 1:
@@ -12210,7 +14292,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPodsResponse); i {
+ switch v := v.(*WorkloadMetricEntry); i {
case 0:
return &v.state
case 1:
@@ -12222,7 +14304,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRequest); i {
+ switch v := v.(*WorkloadMetricBreakdown); i {
case 0:
return &v.state
case 1:
@@ -12234,7 +14316,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetClustersRequest); i {
+ switch v := v.(*GetWorkloadsSummaryResponse); i {
case 0:
return &v.state
case 1:
@@ -12246,7 +14328,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListClustersRequest); i {
+ switch v := v.(*ListWorkloadsPaginatedResponse); i {
case 0:
return &v.state
case 1:
@@ -12258,7 +14340,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetClusterRequest); i {
+ switch v := v.(*GetResourcesRequest); i {
case 0:
return &v.state
case 1:
@@ -12270,7 +14352,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteClusterRequest); i {
+ switch v := v.(*GetPodsRequest); i {
case 0:
return &v.state
case 1:
@@ -12282,7 +14364,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteClusterResponse); i {
+ switch v := v.(*GetPodsResponse); i {
case 0:
return &v.state
case 1:
@@ -12294,7 +14376,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateClusterRequest); i {
+ switch v := v.(*GetWorkloadRequest); i {
case 0:
return &v.state
case 1:
@@ -12306,7 +14388,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateClusterResponse); i {
+ switch v := v.(*GetClustersRequest); i {
case 0:
return &v.state
case 1:
@@ -12318,7 +14400,7 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetResourcesResponse); i {
+ switch v := v.(*ListClustersRequest); i {
case 0:
return &v.state
case 1:
@@ -12330,6 +14412,102 @@ func file_api_v1_k8s_proto_init() {
}
}
file_api_v1_k8s_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClusterRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteClusterRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteClusterResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateClusterRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateClusterResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetResourcesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetResourceFilterOptionsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetResourceFilterOptionsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateClusterRequest); i {
case 0:
return &v.state
@@ -12341,8 +14519,140 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateClusterResponse); i {
+ file_api_v1_k8s_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateClusterResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResetClusterTokenRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResetClusterTokenResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAllNodeGroupsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAllNodeGroupsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupSet); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupsUtilizationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupsUtilizationResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupMetric); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupResponse); i {
case 0:
return &v.state
case 1:
@@ -12353,8 +14663,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResetClusterTokenRequest); i {
+ file_api_v1_k8s_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClusterResponse); i {
case 0:
return &v.state
case 1:
@@ -12365,8 +14675,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResetClusterTokenResponse); i {
+ file_api_v1_k8s_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClustersResponse); i {
case 0:
return &v.state
case 1:
@@ -12377,8 +14687,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupsRequest); i {
+ file_api_v1_k8s_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListClustersResponse); i {
case 0:
return &v.state
case 1:
@@ -12389,8 +14699,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAllNodeGroupsRequest); i {
+ file_api_v1_k8s_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeResponse); i {
case 0:
return &v.state
case 1:
@@ -12401,8 +14711,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupsResponse); i {
+ file_api_v1_k8s_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadsResponse); i {
case 0:
return &v.state
case 1:
@@ -12413,8 +14723,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAllNodeGroupsResponse); i {
+ file_api_v1_k8s_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadResponse); i {
case 0:
return &v.state
case 1:
@@ -12425,8 +14735,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupSet); i {
+ file_api_v1_k8s_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadContainerPercentilesRequest); i {
case 0:
return &v.state
case 1:
@@ -12437,8 +14747,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupsUtilizationRequest); i {
+ file_api_v1_k8s_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadContainerPercentilesResponse); i {
case 0:
return &v.state
case 1:
@@ -12449,8 +14759,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupsUtilizationResponse); i {
+ file_api_v1_k8s_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadContainerTimeSeriesRequest); i {
case 0:
return &v.state
case 1:
@@ -12461,8 +14771,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupMetric); i {
+ file_api_v1_k8s_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadContainerTimeSeriesResponse); i {
case 0:
return &v.state
case 1:
@@ -12473,8 +14783,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupResponse); i {
+ file_api_v1_k8s_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetLatestContainerRequestLimitsRequest); i {
case 0:
return &v.state
case 1:
@@ -12485,8 +14795,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetClusterResponse); i {
+ file_api_v1_k8s_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetLatestContainerRequestLimitsResponse); i {
case 0:
return &v.state
case 1:
@@ -12497,8 +14807,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetClustersResponse); i {
+ file_api_v1_k8s_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGPUMigInstancesRequest); i {
case 0:
return &v.state
case 1:
@@ -12509,8 +14819,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListClustersResponse); i {
+ file_api_v1_k8s_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGPUMigInstancesResponse); i {
case 0:
return &v.state
case 1:
@@ -12521,8 +14831,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeResponse); i {
+ file_api_v1_k8s_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGPUMigInstanceTimeseriesRequest); i {
case 0:
return &v.state
case 1:
@@ -12533,8 +14843,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadsResponse); i {
+ file_api_v1_k8s_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GPUMigInstanceDataPoint); i {
case 0:
return &v.state
case 1:
@@ -12545,8 +14855,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadResponse); i {
+ file_api_v1_k8s_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GPUMigInstanceTimeseries); i {
case 0:
return &v.state
case 1:
@@ -12557,8 +14867,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadContainerPercentilesRequest); i {
+ file_api_v1_k8s_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGPUMigInstanceTimeseriesResponse); i {
case 0:
return &v.state
case 1:
@@ -12569,8 +14879,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadContainerPercentilesResponse); i {
+ file_api_v1_k8s_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetContainerIndividualGPUMetricsRequest); i {
case 0:
return &v.state
case 1:
@@ -12581,8 +14891,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadContainerTimeSeriesRequest); i {
+ file_api_v1_k8s_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetContainerIndividualGPUMetricsResponse); i {
case 0:
return &v.state
case 1:
@@ -12593,8 +14903,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadContainerTimeSeriesResponse); i {
+ file_api_v1_k8s_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LanguageVersions); i {
case 0:
return &v.state
case 1:
@@ -12605,8 +14915,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetLatestContainerRequestLimitsRequest); i {
+ file_api_v1_k8s_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadLanguagesRequest); i {
case 0:
return &v.state
case 1:
@@ -12617,8 +14927,8 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetLatestContainerRequestLimitsResponse); i {
+ file_api_v1_k8s_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadLanguagesResponse); i {
case 0:
return &v.state
case 1:
@@ -12629,7 +14939,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetForecastWorkloadsRequest); i {
case 0:
return &v.state
@@ -12641,7 +14951,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetForecastWorkloadsResponse); i {
case 0:
return &v.state
@@ -12653,7 +14963,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetForecastWorkloadRequest); i {
case 0:
return &v.state
@@ -12665,7 +14975,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetForecastWorkloadResponse); i {
case 0:
return &v.state
@@ -12677,7 +14987,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetClusterMetadataResponse); i {
case 0:
return &v.state
@@ -12689,7 +14999,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClusterElement); i {
case 0:
return &v.state
@@ -12701,7 +15011,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllNamespacesRequest); i {
case 0:
return &v.state
@@ -12713,7 +15023,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllNamespacesResponse); i {
case 0:
return &v.state
@@ -12725,7 +15035,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchNamespacesByClusterRequest); i {
case 0:
return &v.state
@@ -12737,7 +15047,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchNamespacesByClusterResponse); i {
case 0:
return &v.state
@@ -12749,7 +15059,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListNamespacesByClusterRequest); i {
case 0:
return &v.state
@@ -12761,7 +15071,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListNamespacesByClusterResponse); i {
case 0:
return &v.state
@@ -12773,7 +15083,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NamespaceItem); i {
case 0:
return &v.state
@@ -12785,7 +15095,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllWorkloadNamesRequest); i {
case 0:
return &v.state
@@ -12797,7 +15107,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllWorkloadNamesResponse); i {
case 0:
return &v.state
@@ -12809,7 +15119,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllWorkloadLabelsRequest); i {
case 0:
return &v.state
@@ -12821,7 +15131,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllWorkloadLabelsResponse); i {
case 0:
return &v.state
@@ -12833,7 +15143,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllNodeGroupNamesRequest); i {
case 0:
return &v.state
@@ -12845,7 +15155,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAllNodeGroupNamesResponse); i {
case 0:
return &v.state
@@ -12857,7 +15167,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Cluster); i {
case 0:
return &v.state
@@ -12869,7 +15179,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*OperatorInfo); i {
case 0:
return &v.state
@@ -12881,7 +15191,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Container); i {
case 0:
return &v.state
@@ -12893,7 +15203,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetLatestOperatorVersionRequest); i {
case 0:
return &v.state
@@ -12905,7 +15215,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetLatestOperatorVersionResponse); i {
case 0:
return &v.state
@@ -12917,7 +15227,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GalaxyGetWorkloadPerspectiveRequest); i {
case 0:
return &v.state
@@ -12929,7 +15239,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GalaxyGetWorkloadPerspectiveResponse); i {
case 0:
return &v.state
@@ -12941,7 +15251,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GalaxyWorkloadGroup); i {
case 0:
return &v.state
@@ -12953,7 +15263,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PerspectiveDatapointOpts); i {
case 0:
return &v.state
@@ -12965,7 +15275,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAuditLogsRequest); i {
case 0:
return &v.state
@@ -12977,7 +15287,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAuditLogsResponse); i {
case 0:
return &v.state
@@ -12989,7 +15299,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAuditLogOriginatorsRequest); i {
case 0:
return &v.state
@@ -13001,7 +15311,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAuditLogOriginatorsResponse); i {
case 0:
return &v.state
@@ -13013,7 +15323,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendWorkloadEmailRequest); i {
case 0:
return &v.state
@@ -13025,7 +15335,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendWorkloadEmailResponse); i {
case 0:
return &v.state
@@ -13037,7 +15347,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendWeeklySummaryEmailRequest); i {
case 0:
return &v.state
@@ -13049,7 +15359,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendWeeklySummaryEmailRequestData); i {
case 0:
return &v.state
@@ -13061,7 +15371,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendWeeklySummaryEmailResponse); i {
case 0:
return &v.state
@@ -13073,7 +15383,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetClustersNodeInfoRequest); i {
case 0:
return &v.state
@@ -13085,7 +15395,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetClustersNodeInfoResponse); i {
case 0:
return &v.state
@@ -13097,7 +15407,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchK8SResourcesRequest); i {
case 0:
return &v.state
@@ -13109,7 +15419,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchK8SResourcesResponse); i {
case 0:
return &v.state
@@ -13121,7 +15431,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*K8SSearchResult); i {
case 0:
return &v.state
@@ -13133,7 +15443,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchK8SWorkloadsRequest); i {
case 0:
return &v.state
@@ -13145,7 +15455,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchK8SWorkloadsResponse); i {
case 0:
return &v.state
@@ -13157,7 +15467,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*K8SWorkloadSearchResult); i {
case 0:
return &v.state
@@ -13169,7 +15479,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetadataForWorkloadsRequest); i {
case 0:
return &v.state
@@ -13181,7 +15491,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetadataForWorkloadsResponse); i {
case 0:
return &v.state
@@ -13193,7 +15503,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AddClusterTagsRequest); i {
case 0:
return &v.state
@@ -13205,7 +15515,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AddClusterTagsResponse); i {
case 0:
return &v.state
@@ -13217,7 +15527,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemoveClusterTagsRequest); i {
case 0:
return &v.state
@@ -13229,7 +15539,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemoveClusterTagsResponse); i {
case 0:
return &v.state
@@ -13241,7 +15551,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTagsRequest); i {
case 0:
return &v.state
@@ -13253,7 +15563,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TagSummary); i {
case 0:
return &v.state
@@ -13265,7 +15575,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTagsResponse); i {
case 0:
return &v.state
@@ -13277,7 +15587,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WorkloadMetadata); i {
case 0:
return &v.state
@@ -13289,7 +15599,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PodMetadata); i {
case 0:
return &v.state
@@ -13301,7 +15611,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeMetadata); i {
case 0:
return &v.state
@@ -13313,7 +15623,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetRelatedResourcesRequest); i {
case 0:
return &v.state
@@ -13325,7 +15635,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetWorkloadPodHistoryResponse); i {
case 0:
return &v.state
@@ -13337,7 +15647,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JobHistory); i {
case 0:
return &v.state
@@ -13349,7 +15659,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReplicaSetHistory); i {
case 0:
return &v.state
@@ -13361,7 +15671,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PodHistory); i {
case 0:
return &v.state
@@ -13373,7 +15683,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetRelatedResourcesResponse); i {
case 0:
return &v.state
@@ -13385,7 +15695,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*K8SRelatedResource); i {
case 0:
return &v.state
@@ -13397,7 +15707,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*K8SResourceNode); i {
case 0:
return &v.state
@@ -13409,7 +15719,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*K8SResourceEdge); i {
case 0:
return &v.state
@@ -13421,7 +15731,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetClusterTypeRequest); i {
case 0:
return &v.state
@@ -13433,7 +15743,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetClusterTypeResponse); i {
case 0:
return &v.state
@@ -13445,7 +15755,31 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetMigPartedConfigRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetMigPartedConfigResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_k8s_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetWorkloadsStatsRequest); i {
case 0:
return &v.state
@@ -13457,7 +15791,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetWorkloadsStatsResponse); i {
case 0:
return &v.state
@@ -13469,7 +15803,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationRequest); i {
case 0:
return &v.state
@@ -13481,7 +15815,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationResponse); i {
case 0:
return &v.state
@@ -13493,7 +15827,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationInstanceTypeRequest); i {
case 0:
return &v.state
@@ -13505,7 +15839,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationInstanceTypeResponse); i {
case 0:
return &v.state
@@ -13517,7 +15851,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationNodeTypeRequest); i {
case 0:
return &v.state
@@ -13529,7 +15863,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationNodeTypeResponse); i {
case 0:
return &v.state
@@ -13541,7 +15875,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LookupNodeInstanceRequest); i {
case 0:
return &v.state
@@ -13553,7 +15887,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*InstanceLookupParams); i {
case 0:
return &v.state
@@ -13565,7 +15899,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LookupNodeInstanceResponse); i {
case 0:
return &v.state
@@ -13577,7 +15911,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetNodeGroupsUtilizationResponse_ListNodeGroupMetrics); i {
case 0:
return &v.state
@@ -13589,7 +15923,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationResponse_Datapoints); i {
case 0:
return &v.state
@@ -13601,7 +15935,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationResponse_Datapoint); i {
case 0:
return &v.state
@@ -13613,7 +15947,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationInstanceTypeResponse_Datapoints); i {
case 0:
return &v.state
@@ -13625,7 +15959,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationInstanceTypeResponse_Datapoint); i {
case 0:
return &v.state
@@ -13637,7 +15971,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationNodeTypeResponse_Datapoints); i {
case 0:
return &v.state
@@ -13649,7 +15983,7 @@ func file_api_v1_k8s_proto_init() {
return nil
}
}
- file_api_v1_k8s_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
+ file_api_v1_k8s_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DailyUtilizationNodeTypeResponse_Datapoint); i {
case 0:
return &v.state
@@ -13668,29 +16002,35 @@ func file_api_v1_k8s_proto_init() {
file_api_v1_k8s_proto_msgTypes[4].OneofWrappers = []interface{}{}
file_api_v1_k8s_proto_msgTypes[5].OneofWrappers = []interface{}{}
file_api_v1_k8s_proto_msgTypes[6].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[8].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[9].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[10].OneofWrappers = []interface{}{}
file_api_v1_k8s_proto_msgTypes[11].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[21].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[26].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[36].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[38].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[42].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[12].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[14].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[15].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[16].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[17].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[23].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[29].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[34].OneofWrappers = []interface{}{}
file_api_v1_k8s_proto_msgTypes[44].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[46].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[50].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[51].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[52].OneofWrappers = []interface{}{}
file_api_v1_k8s_proto_msgTypes[61].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[70].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[72].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[79].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[99].OneofWrappers = []interface{}{}
- file_api_v1_k8s_proto_msgTypes[110].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[63].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[80].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[89].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[91].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[98].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[118].OneofWrappers = []interface{}{}
+ file_api_v1_k8s_proto_msgTypes[131].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_k8s_proto_rawDesc,
NumEnums: 3,
- NumMessages: 147,
+ NumMessages: 168,
NumExtensions: 0,
NumServices: 3,
},
diff --git a/internal/gen/api/v1/profiling.pb.go b/internal/gen/api/v1/profiling.pb.go
index 027b83b..01fcf07 100644
--- a/internal/gen/api/v1/profiling.pb.go
+++ b/internal/gen/api/v1/profiling.pb.go
@@ -7,6 +7,7 @@
package apiv1
import (
+ money "google.golang.org/genproto/googleapis/type/money"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
@@ -135,6 +136,10 @@ type GetWorkloadProfilesRequest struct {
Workloads []*ProfilingWorkloadKey `protobuf:"bytes,3,rep,name=workloads,proto3" json:"workloads,omitempty"`
StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
EndTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+ // When set to 1D or 7D, serve from the persisted workload_profile_cache
+ // snapshot for that window instead of computing live over start_time/end_time.
+ // UNSPECIFIED (default) preserves today's live-compute behavior.
+ Window ProfileWindow `protobuf:"varint,13,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
}
func (x *GetWorkloadProfilesRequest) Reset() {
@@ -204,6 +209,13 @@ func (x *GetWorkloadProfilesRequest) GetEndTime() *timestamppb.Timestamp {
return nil
}
+func (x *GetWorkloadProfilesRequest) GetWindow() ProfileWindow {
+ if x != nil {
+ return x.Window
+ }
+ return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+}
+
type GetWorkloadProfilesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -251,6 +263,182 @@ func (x *GetWorkloadProfilesResponse) GetWorkloadProfiles() []*WorkloadProfileRe
return nil
}
+type GetWorkloadProfileAvailabilityRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *GetWorkloadProfileAvailabilityRequest) Reset() {
+ *x = GetWorkloadProfileAvailabilityRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_profiling_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadProfileAvailabilityRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadProfileAvailabilityRequest) ProtoMessage() {}
+
+func (x *GetWorkloadProfileAvailabilityRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_profiling_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadProfileAvailabilityRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadProfileAvailabilityRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *GetWorkloadProfileAvailabilityRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadProfileAvailabilityRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+// ProfileWindowAvailability summarizes the cached-snapshot state for a single
+// profile window. available reflects both presence (workload_count > 0) and
+// freshness (latest_computed_at within the window's staleness threshold).
+type ProfileWindowAvailability struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"`
+ LatestComputedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=latest_computed_at,json=latestComputedAt,proto3" json:"latest_computed_at,omitempty"`
+ WorkloadCount int32 `protobuf:"varint,3,opt,name=workload_count,json=workloadCount,proto3" json:"workload_count,omitempty"`
+}
+
+func (x *ProfileWindowAvailability) Reset() {
+ *x = ProfileWindowAvailability{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_profiling_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ProfileWindowAvailability) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProfileWindowAvailability) ProtoMessage() {}
+
+func (x *ProfileWindowAvailability) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_profiling_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProfileWindowAvailability.ProtoReflect.Descriptor instead.
+func (*ProfileWindowAvailability) Descriptor() ([]byte, []int) {
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ProfileWindowAvailability) GetAvailable() bool {
+ if x != nil {
+ return x.Available
+ }
+ return false
+}
+
+func (x *ProfileWindowAvailability) GetLatestComputedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LatestComputedAt
+ }
+ return nil
+}
+
+func (x *ProfileWindowAvailability) GetWorkloadCount() int32 {
+ if x != nil {
+ return x.WorkloadCount
+ }
+ return 0
+}
+
+type GetWorkloadProfileAvailabilityResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Window_1D *ProfileWindowAvailability `protobuf:"bytes,1,opt,name=window_1d,json=window1d,proto3" json:"window_1d,omitempty"`
+ Window_7D *ProfileWindowAvailability `protobuf:"bytes,2,opt,name=window_7d,json=window7d,proto3" json:"window_7d,omitempty"`
+}
+
+func (x *GetWorkloadProfileAvailabilityResponse) Reset() {
+ *x = GetWorkloadProfileAvailabilityResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_profiling_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadProfileAvailabilityResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadProfileAvailabilityResponse) ProtoMessage() {}
+
+func (x *GetWorkloadProfileAvailabilityResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_profiling_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadProfileAvailabilityResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadProfileAvailabilityResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *GetWorkloadProfileAvailabilityResponse) GetWindow_1D() *ProfileWindowAvailability {
+ if x != nil {
+ return x.Window_1D
+ }
+ return nil
+}
+
+func (x *GetWorkloadProfileAvailabilityResponse) GetWindow_7D() *ProfileWindowAvailability {
+ if x != nil {
+ return x.Window_7D
+ }
+ return nil
+}
+
type WorkloadProfileResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -262,12 +450,21 @@ type WorkloadProfileResult struct {
Classification *ProfilingClassification `protobuf:"bytes,4,opt,name=classification,proto3" json:"classification,omitempty"`
Confidence float64 `protobuf:"fixed64,5,opt,name=confidence,proto3" json:"confidence,omitempty"`
DataQuality *ProfileDataQuality `protobuf:"bytes,6,opt,name=data_quality,json=dataQuality,proto3" json:"data_quality,omitempty"`
+ // The window over which this profile's distributions were computed.
+ WindowStart *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=window_start,json=windowStart,proto3" json:"window_start,omitempty"`
+ WindowEnd *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=window_end,json=windowEnd,proto3" json:"window_end,omitempty"`
+ // distribution_source identifies how the percentile distributions were
+ // derived. "exact_timeseries" = exact percentiles over the deduplicated
+ // busiest-pod-per-minute series (engine path); "sketch" = GK sketch
+ // aggregates (tail may collapse onto max — do not label as P99 on fleet
+ // screens).
+ DistributionSource string `protobuf:"bytes,9,opt,name=distribution_source,json=distributionSource,proto3" json:"distribution_source,omitempty"`
}
func (x *WorkloadProfileResult) Reset() {
*x = WorkloadProfileResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[3]
+ mi := &file_api_v1_profiling_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -280,7 +477,7 @@ func (x *WorkloadProfileResult) String() string {
func (*WorkloadProfileResult) ProtoMessage() {}
func (x *WorkloadProfileResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[3]
+ mi := &file_api_v1_profiling_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -293,7 +490,7 @@ func (x *WorkloadProfileResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadProfileResult.ProtoReflect.Descriptor instead.
func (*WorkloadProfileResult) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{3}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{6}
}
func (x *WorkloadProfileResult) GetKind() string {
@@ -338,6 +535,27 @@ func (x *WorkloadProfileResult) GetDataQuality() *ProfileDataQuality {
return nil
}
+func (x *WorkloadProfileResult) GetWindowStart() *timestamppb.Timestamp {
+ if x != nil {
+ return x.WindowStart
+ }
+ return nil
+}
+
+func (x *WorkloadProfileResult) GetWindowEnd() *timestamppb.Timestamp {
+ if x != nil {
+ return x.WindowEnd
+ }
+ return nil
+}
+
+func (x *WorkloadProfileResult) GetDistributionSource() string {
+ if x != nil {
+ return x.DistributionSource
+ }
+ return ""
+}
+
type ContainerProfileResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -377,7 +595,7 @@ type ContainerProfileResult struct {
func (x *ContainerProfileResult) Reset() {
*x = ContainerProfileResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[4]
+ mi := &file_api_v1_profiling_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -390,7 +608,7 @@ func (x *ContainerProfileResult) String() string {
func (*ContainerProfileResult) ProtoMessage() {}
func (x *ContainerProfileResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[4]
+ mi := &file_api_v1_profiling_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -403,7 +621,7 @@ func (x *ContainerProfileResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerProfileResult.ProtoReflect.Descriptor instead.
func (*ContainerProfileResult) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{4}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{7}
}
func (x *ContainerProfileResult) GetContainerName() string {
@@ -568,7 +786,7 @@ type ProfilingBehavior struct {
func (x *ProfilingBehavior) Reset() {
*x = ProfilingBehavior{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[5]
+ mi := &file_api_v1_profiling_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -581,7 +799,7 @@ func (x *ProfilingBehavior) String() string {
func (*ProfilingBehavior) ProtoMessage() {}
func (x *ProfilingBehavior) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[5]
+ mi := &file_api_v1_profiling_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -594,7 +812,7 @@ func (x *ProfilingBehavior) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfilingBehavior.ProtoReflect.Descriptor instead.
func (*ProfilingBehavior) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{5}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{8}
}
func (x *ProfilingBehavior) GetCpuVolatility() string {
@@ -657,7 +875,7 @@ type ProfilingSignalValues struct {
func (x *ProfilingSignalValues) Reset() {
*x = ProfilingSignalValues{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[6]
+ mi := &file_api_v1_profiling_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -670,7 +888,7 @@ func (x *ProfilingSignalValues) String() string {
func (*ProfilingSignalValues) ProtoMessage() {}
func (x *ProfilingSignalValues) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[6]
+ mi := &file_api_v1_profiling_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -683,7 +901,7 @@ func (x *ProfilingSignalValues) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfilingSignalValues.ProtoReflect.Descriptor instead.
func (*ProfilingSignalValues) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{6}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{9}
}
func (x *ProfilingSignalValues) GetCvCpu() float64 {
@@ -807,7 +1025,7 @@ type ProfilingAdjustmentEvidence struct {
func (x *ProfilingAdjustmentEvidence) Reset() {
*x = ProfilingAdjustmentEvidence{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[7]
+ mi := &file_api_v1_profiling_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -820,7 +1038,7 @@ func (x *ProfilingAdjustmentEvidence) String() string {
func (*ProfilingAdjustmentEvidence) ProtoMessage() {}
func (x *ProfilingAdjustmentEvidence) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[7]
+ mi := &file_api_v1_profiling_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -833,7 +1051,7 @@ func (x *ProfilingAdjustmentEvidence) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfilingAdjustmentEvidence.ProtoReflect.Descriptor instead.
func (*ProfilingAdjustmentEvidence) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{7}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{10}
}
func (x *ProfilingAdjustmentEvidence) GetSelectedCpuPercentile() int32 {
@@ -926,7 +1144,7 @@ type ProfilingAdjustment struct {
func (x *ProfilingAdjustment) Reset() {
*x = ProfilingAdjustment{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[8]
+ mi := &file_api_v1_profiling_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -939,7 +1157,7 @@ func (x *ProfilingAdjustment) String() string {
func (*ProfilingAdjustment) ProtoMessage() {}
func (x *ProfilingAdjustment) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[8]
+ mi := &file_api_v1_profiling_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -952,7 +1170,7 @@ func (x *ProfilingAdjustment) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfilingAdjustment.ProtoReflect.Descriptor instead.
func (*ProfilingAdjustment) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{8}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{11}
}
func (x *ProfilingAdjustment) GetReason() string {
@@ -985,7 +1203,7 @@ type ProfilingResourceRecommendation struct {
func (x *ProfilingResourceRecommendation) Reset() {
*x = ProfilingResourceRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[9]
+ mi := &file_api_v1_profiling_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -998,7 +1216,7 @@ func (x *ProfilingResourceRecommendation) String() string {
func (*ProfilingResourceRecommendation) ProtoMessage() {}
func (x *ProfilingResourceRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[9]
+ mi := &file_api_v1_profiling_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1011,7 +1229,7 @@ func (x *ProfilingResourceRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfilingResourceRecommendation.ProtoReflect.Descriptor instead.
func (*ProfilingResourceRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{9}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{12}
}
func (x *ProfilingResourceRecommendation) GetCpuRequestMillicores() int64 {
@@ -1062,7 +1280,7 @@ type ProfilingClassification struct {
func (x *ProfilingClassification) Reset() {
*x = ProfilingClassification{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[10]
+ mi := &file_api_v1_profiling_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1075,7 +1293,7 @@ func (x *ProfilingClassification) String() string {
func (*ProfilingClassification) ProtoMessage() {}
func (x *ProfilingClassification) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[10]
+ mi := &file_api_v1_profiling_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1088,7 +1306,7 @@ func (x *ProfilingClassification) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfilingClassification.ProtoReflect.Descriptor instead.
func (*ProfilingClassification) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{10}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{13}
}
func (x *ProfilingClassification) GetDominantResource() string {
@@ -1125,7 +1343,7 @@ type ProfileDataQuality struct {
func (x *ProfileDataQuality) Reset() {
*x = ProfileDataQuality{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[11]
+ mi := &file_api_v1_profiling_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1138,7 +1356,7 @@ func (x *ProfileDataQuality) String() string {
func (*ProfileDataQuality) ProtoMessage() {}
func (x *ProfileDataQuality) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[11]
+ mi := &file_api_v1_profiling_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1151,7 +1369,7 @@ func (x *ProfileDataQuality) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfileDataQuality.ProtoReflect.Descriptor instead.
func (*ProfileDataQuality) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{11}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{14}
}
func (x *ProfileDataQuality) GetTotalDataPoints() int32 {
@@ -1189,7 +1407,7 @@ type ProfileKey struct {
func (x *ProfileKey) Reset() {
*x = ProfileKey{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[12]
+ mi := &file_api_v1_profiling_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1202,7 +1420,7 @@ func (x *ProfileKey) String() string {
func (*ProfileKey) ProtoMessage() {}
func (x *ProfileKey) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[12]
+ mi := &file_api_v1_profiling_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1215,7 +1433,7 @@ func (x *ProfileKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProfileKey.ProtoReflect.Descriptor instead.
func (*ProfileKey) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{12}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{15}
}
func (x *ProfileKey) GetKind() string {
@@ -1266,7 +1484,7 @@ type MetricPercentilesCompact struct {
func (x *MetricPercentilesCompact) Reset() {
*x = MetricPercentilesCompact{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[13]
+ mi := &file_api_v1_profiling_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1279,7 +1497,7 @@ func (x *MetricPercentilesCompact) String() string {
func (*MetricPercentilesCompact) ProtoMessage() {}
func (x *MetricPercentilesCompact) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[13]
+ mi := &file_api_v1_profiling_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1292,7 +1510,7 @@ func (x *MetricPercentilesCompact) ProtoReflect() protoreflect.Message {
// Deprecated: Use MetricPercentilesCompact.ProtoReflect.Descriptor instead.
func (*MetricPercentilesCompact) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{13}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{16}
}
func (x *MetricPercentilesCompact) GetAvg() float64 {
@@ -1384,12 +1602,28 @@ type ContainerProfileSnapshot struct {
InsufficientData bool `protobuf:"varint,12,opt,name=insufficient_data,json=insufficientData,proto3" json:"insufficient_data,omitempty"`
CurrentCpuRequestMillicores int64 `protobuf:"varint,13,opt,name=current_cpu_request_millicores,json=currentCpuRequestMillicores,proto3" json:"current_cpu_request_millicores,omitempty"`
CurrentMemoryRequestBytes int64 `protobuf:"varint,14,opt,name=current_memory_request_bytes,json=currentMemoryRequestBytes,proto3" json:"current_memory_request_bytes,omitempty"`
+ // Container-level startup timing (scheduled -> Ready condition).
+ AvgTimeToReadyMs float64 `protobuf:"fixed64,15,opt,name=avg_time_to_ready_ms,json=avgTimeToReadyMs,proto3" json:"avg_time_to_ready_ms,omitempty"`
+ P50TimeToReadyMs float64 `protobuf:"fixed64,16,opt,name=p50_time_to_ready_ms,json=p50TimeToReadyMs,proto3" json:"p50_time_to_ready_ms,omitempty"`
+ P75TimeToReadyMs float64 `protobuf:"fixed64,17,opt,name=p75_time_to_ready_ms,json=p75TimeToReadyMs,proto3" json:"p75_time_to_ready_ms,omitempty"`
+ P95TimeToReadyMs float64 `protobuf:"fixed64,18,opt,name=p95_time_to_ready_ms,json=p95TimeToReadyMs,proto3" json:"p95_time_to_ready_ms,omitempty"`
+ P99TimeToReadyMs float64 `protobuf:"fixed64,19,opt,name=p99_time_to_ready_ms,json=p99TimeToReadyMs,proto3" json:"p99_time_to_ready_ms,omitempty"`
+ P999TimeToReadyMs float64 `protobuf:"fixed64,20,opt,name=p999_time_to_ready_ms,json=p999TimeToReadyMs,proto3" json:"p999_time_to_ready_ms,omitempty"`
+ MaxTimeToReadyMs float64 `protobuf:"fixed64,21,opt,name=max_time_to_ready_ms,json=maxTimeToReadyMs,proto3" json:"max_time_to_ready_ms,omitempty"`
+ // Container-level startup timing (container create -> Running state).
+ AvgTimeToRunningMs float64 `protobuf:"fixed64,22,opt,name=avg_time_to_running_ms,json=avgTimeToRunningMs,proto3" json:"avg_time_to_running_ms,omitempty"`
+ P50TimeToRunningMs float64 `protobuf:"fixed64,23,opt,name=p50_time_to_running_ms,json=p50TimeToRunningMs,proto3" json:"p50_time_to_running_ms,omitempty"`
+ P75TimeToRunningMs float64 `protobuf:"fixed64,24,opt,name=p75_time_to_running_ms,json=p75TimeToRunningMs,proto3" json:"p75_time_to_running_ms,omitempty"`
+ P95TimeToRunningMs float64 `protobuf:"fixed64,25,opt,name=p95_time_to_running_ms,json=p95TimeToRunningMs,proto3" json:"p95_time_to_running_ms,omitempty"`
+ P99TimeToRunningMs float64 `protobuf:"fixed64,26,opt,name=p99_time_to_running_ms,json=p99TimeToRunningMs,proto3" json:"p99_time_to_running_ms,omitempty"`
+ P999TimeToRunningMs float64 `protobuf:"fixed64,27,opt,name=p999_time_to_running_ms,json=p999TimeToRunningMs,proto3" json:"p999_time_to_running_ms,omitempty"`
+ MaxTimeToRunningMs float64 `protobuf:"fixed64,28,opt,name=max_time_to_running_ms,json=maxTimeToRunningMs,proto3" json:"max_time_to_running_ms,omitempty"`
}
func (x *ContainerProfileSnapshot) Reset() {
*x = ContainerProfileSnapshot{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[14]
+ mi := &file_api_v1_profiling_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1402,7 +1636,7 @@ func (x *ContainerProfileSnapshot) String() string {
func (*ContainerProfileSnapshot) ProtoMessage() {}
func (x *ContainerProfileSnapshot) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[14]
+ mi := &file_api_v1_profiling_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1415,7 +1649,7 @@ func (x *ContainerProfileSnapshot) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerProfileSnapshot.ProtoReflect.Descriptor instead.
func (*ContainerProfileSnapshot) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{14}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{17}
}
func (x *ContainerProfileSnapshot) GetContainerName() string {
@@ -1516,6 +1750,212 @@ func (x *ContainerProfileSnapshot) GetCurrentMemoryRequestBytes() int64 {
return 0
}
+func (x *ContainerProfileSnapshot) GetAvgTimeToReadyMs() float64 {
+ if x != nil {
+ return x.AvgTimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP50TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P50TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP75TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P75TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP95TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P95TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP99TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P99TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP999TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P999TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetMaxTimeToReadyMs() float64 {
+ if x != nil {
+ return x.MaxTimeToReadyMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetAvgTimeToRunningMs() float64 {
+ if x != nil {
+ return x.AvgTimeToRunningMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP50TimeToRunningMs() float64 {
+ if x != nil {
+ return x.P50TimeToRunningMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP75TimeToRunningMs() float64 {
+ if x != nil {
+ return x.P75TimeToRunningMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP95TimeToRunningMs() float64 {
+ if x != nil {
+ return x.P95TimeToRunningMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP99TimeToRunningMs() float64 {
+ if x != nil {
+ return x.P99TimeToRunningMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetP999TimeToRunningMs() float64 {
+ if x != nil {
+ return x.P999TimeToRunningMs
+ }
+ return 0
+}
+
+func (x *ContainerProfileSnapshot) GetMaxTimeToRunningMs() float64 {
+ if x != nil {
+ return x.MaxTimeToRunningMs
+ }
+ return 0
+}
+
+// WorkloadPeerConnectivity describes one outbound (egress) internal
+// workload-to-workload traffic edge from the profiled workload to a destination
+// workload in the same cluster, aggregated over the profile window. Only
+// internal cluster traffic is represented here (destination workload
+// name/namespace populated); external egress is out of scope.
+type WorkloadPeerConnectivity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Stable owner-workload UID of the destination, resolved at ingestion. Used
+ // for stable peer identity — name/namespace alone can collide across workload
+ // replacements.
+ DstWorkloadUid string `protobuf:"bytes,1,opt,name=dst_workload_uid,json=dstWorkloadUid,proto3" json:"dst_workload_uid,omitempty"`
+ DstWorkloadName string `protobuf:"bytes,2,opt,name=dst_workload_name,json=dstWorkloadName,proto3" json:"dst_workload_name,omitempty"`
+ DstNamespace string `protobuf:"bytes,3,opt,name=dst_namespace,json=dstNamespace,proto3" json:"dst_namespace,omitempty"`
+ // traffic_type mirrors models.TrafficType (e.g. INTERNAL_SAME_NODE,
+ // INTERNAL_SAME_AZ, INTERNAL_CROSS_AZ). Kept as a string to match the
+ // ClickHouse-stored classification.
+ TrafficType string `protobuf:"bytes,4,opt,name=traffic_type,json=trafficType,proto3" json:"traffic_type,omitempty"`
+ // Total transmit/receive bytes over the profile window for this edge.
+ TxBytes int64 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+ RxBytes int64 `protobuf:"varint,6,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+ // Total network cost attributed to this edge over the window.
+ Cost *money.Money `protobuf:"bytes,7,opt,name=cost,proto3" json:"cost,omitempty"`
+}
+
+func (x *WorkloadPeerConnectivity) Reset() {
+ *x = WorkloadPeerConnectivity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_profiling_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadPeerConnectivity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadPeerConnectivity) ProtoMessage() {}
+
+func (x *WorkloadPeerConnectivity) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_profiling_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadPeerConnectivity.ProtoReflect.Descriptor instead.
+func (*WorkloadPeerConnectivity) Descriptor() ([]byte, []int) {
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *WorkloadPeerConnectivity) GetDstWorkloadUid() string {
+ if x != nil {
+ return x.DstWorkloadUid
+ }
+ return ""
+}
+
+func (x *WorkloadPeerConnectivity) GetDstWorkloadName() string {
+ if x != nil {
+ return x.DstWorkloadName
+ }
+ return ""
+}
+
+func (x *WorkloadPeerConnectivity) GetDstNamespace() string {
+ if x != nil {
+ return x.DstNamespace
+ }
+ return ""
+}
+
+func (x *WorkloadPeerConnectivity) GetTrafficType() string {
+ if x != nil {
+ return x.TrafficType
+ }
+ return ""
+}
+
+func (x *WorkloadPeerConnectivity) GetTxBytes() int64 {
+ if x != nil {
+ return x.TxBytes
+ }
+ return 0
+}
+
+func (x *WorkloadPeerConnectivity) GetRxBytes() int64 {
+ if x != nil {
+ return x.RxBytes
+ }
+ return 0
+}
+
+func (x *WorkloadPeerConnectivity) GetCost() *money.Money {
+ if x != nil {
+ return x.Cost
+ }
+ return nil
+}
+
type WorkloadProfileSnapshot struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1527,12 +1967,41 @@ type WorkloadProfileSnapshot struct {
DataQuality *ProfileDataQuality `protobuf:"bytes,4,opt,name=data_quality,json=dataQuality,proto3" json:"data_quality,omitempty"`
ComputedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=computed_at,json=computedAt,proto3" json:"computed_at,omitempty"`
UiUrl string `protobuf:"bytes,6,opt,name=ui_url,json=uiUrl,proto3" json:"ui_url,omitempty"`
+ // Workload-level startup aggregates, pooled across every container of every
+ // pod in the window. Mirrors WorkloadHealthSummary's startup fields.
+ AvgTimeToReadyMs float64 `protobuf:"fixed64,7,opt,name=avg_time_to_ready_ms,json=avgTimeToReadyMs,proto3" json:"avg_time_to_ready_ms,omitempty"`
+ P50TimeToReadyMs float64 `protobuf:"fixed64,8,opt,name=p50_time_to_ready_ms,json=p50TimeToReadyMs,proto3" json:"p50_time_to_ready_ms,omitempty"`
+ P75TimeToReadyMs float64 `protobuf:"fixed64,9,opt,name=p75_time_to_ready_ms,json=p75TimeToReadyMs,proto3" json:"p75_time_to_ready_ms,omitempty"`
+ P95TimeToReadyMs float64 `protobuf:"fixed64,10,opt,name=p95_time_to_ready_ms,json=p95TimeToReadyMs,proto3" json:"p95_time_to_ready_ms,omitempty"`
+ P99TimeToReadyMs float64 `protobuf:"fixed64,11,opt,name=p99_time_to_ready_ms,json=p99TimeToReadyMs,proto3" json:"p99_time_to_ready_ms,omitempty"`
+ P999TimeToReadyMs float64 `protobuf:"fixed64,12,opt,name=p999_time_to_ready_ms,json=p999TimeToReadyMs,proto3" json:"p999_time_to_ready_ms,omitempty"`
+ MaxTimeToReadyMs float64 `protobuf:"fixed64,13,opt,name=max_time_to_ready_ms,json=maxTimeToReadyMs,proto3" json:"max_time_to_ready_ms,omitempty"`
+ // Always false from this pipeline: the batched cluster-wide fetch does not
+ // compute a previous-period comparison, matching the existing precedent in
+ // GetWorkloadHealthSummaries's cluster-list handler.
+ StartupDegraded bool `protobuf:"varint,14,opt,name=startup_degraded,json=startupDegraded,proto3" json:"startup_degraded,omitempty"`
+ // False when no container_startup_lifecycles rows matched this workload in
+ // the window — i.e. no pod lifecycle transitions (Pending, ContainerCreating,
+ // Running, or Ready) were observed for it, so the zero-valued timing fields
+ // above mean "no data" rather than a real zero-latency startup.
+ //
+ // Reflects workload-level (time_to_ready_ms) presence only. A workload can
+ // have has_startup_data=false with all *_time_to_ready_ms fields zero, while
+ // its containers[].{avg,p50,...}_time_to_running_ms are still populated —
+ // e.g. containers that reached Running but never became Ready in the
+ // window. Do not use this flag to gate reads of container-level
+ // *_time_to_running_ms; check each container's own fields instead.
+ HasStartupData bool `protobuf:"varint,15,opt,name=has_startup_data,json=hasStartupData,proto3" json:"has_startup_data,omitempty"`
+ // peers carries the top outbound internal workload-to-workload traffic edges
+ // from this workload over the profile window (capped, ranked by tx+rx bytes).
+ // Only internal cluster traffic is included; external egress is excluded.
+ Peers []*WorkloadPeerConnectivity `protobuf:"bytes,16,rep,name=peers,proto3" json:"peers,omitempty"`
}
func (x *WorkloadProfileSnapshot) Reset() {
*x = WorkloadProfileSnapshot{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_profiling_proto_msgTypes[15]
+ mi := &file_api_v1_profiling_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1545,7 +2014,7 @@ func (x *WorkloadProfileSnapshot) String() string {
func (*WorkloadProfileSnapshot) ProtoMessage() {}
func (x *WorkloadProfileSnapshot) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_profiling_proto_msgTypes[15]
+ mi := &file_api_v1_profiling_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1558,7 +2027,7 @@ func (x *WorkloadProfileSnapshot) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadProfileSnapshot.ProtoReflect.Descriptor instead.
func (*WorkloadProfileSnapshot) Descriptor() ([]byte, []int) {
- return file_api_v1_profiling_proto_rawDescGZIP(), []int{15}
+ return file_api_v1_profiling_proto_rawDescGZIP(), []int{19}
}
func (x *WorkloadProfileSnapshot) GetKey() *ProfileKey {
@@ -1603,6 +2072,76 @@ func (x *WorkloadProfileSnapshot) GetUiUrl() string {
return ""
}
+func (x *WorkloadProfileSnapshot) GetAvgTimeToReadyMs() float64 {
+ if x != nil {
+ return x.AvgTimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetP50TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P50TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetP75TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P75TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetP95TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P95TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetP99TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P99TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetP999TimeToReadyMs() float64 {
+ if x != nil {
+ return x.P999TimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetMaxTimeToReadyMs() float64 {
+ if x != nil {
+ return x.MaxTimeToReadyMs
+ }
+ return 0
+}
+
+func (x *WorkloadProfileSnapshot) GetStartupDegraded() bool {
+ if x != nil {
+ return x.StartupDegraded
+ }
+ return false
+}
+
+func (x *WorkloadProfileSnapshot) GetHasStartupData() bool {
+ if x != nil {
+ return x.HasStartupData
+ }
+ return false
+}
+
+func (x *WorkloadProfileSnapshot) GetPeers() []*WorkloadPeerConnectivity {
+ if x != nil {
+ return x.Peers
+ }
+ return nil
+}
+
var File_api_v1_profiling_proto protoreflect.FileDescriptor
var file_api_v1_profiling_proto_rawDesc = []byte{
@@ -1610,390 +2149,532 @@ var file_api_v1_profiling_proto_rawDesc = []byte{
0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x13, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3c, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
- 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x12,
- 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x75, 0x69, 0x64, 0x22, 0xa8, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
- 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x70, 0x69, 0x2f,
+ 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+ 0x3c, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xd7, 0x02,
+ 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f,
+ 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
+ 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
+ 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01,
+ 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x06,
+ 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65,
+ 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x22, 0x5f, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12,
+ 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43,
+ 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x22, 0xa8, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x77,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x31, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x31, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x77,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x37, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x37, 0x64, 0x22, 0xd0, 0x03, 0x0a, 0x15,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52,
+ 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
+ 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64,
+ 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61,
+ 0x6c, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51,
+ 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c,
+ 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
- 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22,
- 0x69, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a,
- 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x15, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0a,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66,
- 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65,
- 0x6e, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c,
- 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75,
- 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69,
- 0x74, 0x79, 0x22, 0xc9, 0x09, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a,
- 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0c,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67, 0x70,
- 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61,
- 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75,
- 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73,
- 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x72,
- 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x13, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x42, 0x79, 0x74,
- 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x72,
- 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x14, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x42, 0x79,
- 0x74, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x66, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74,
- 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0c, 0x66, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79,
- 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x73, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x45, 0x0a,
- 0x0b, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66,
- 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x45,
- 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d,
- 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63,
- 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x10, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74,
- 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0e,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x79, 0x73, 0x12, 0x23,
- 0x0a, 0x0d, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x18,
- 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x52,
- 0x69, 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18,
- 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
- 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x1b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12,
- 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18,
- 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70,
- 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73,
- 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
- 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65,
- 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
- 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe9,
- 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x68, 0x61,
- 0x76, 0x69, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x76, 0x6f, 0x6c, 0x61,
- 0x74, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x70,
- 0x75, 0x56, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62,
- 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x69,
- 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
- 0x6c, 0x65, 0x61, 0x6b, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x65, 0x61, 0x6b, 0x52, 0x69, 0x73, 0x6b, 0x12,
- 0x3e, 0x0a, 0x1b, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x63, 0x70, 0x75, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12,
- 0x29, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65,
- 0x61, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x6d,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x79, 0x22, 0xb0, 0x04, 0x0a, 0x15, 0x50,
- 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x76, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x76, 0x43, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x63,
- 0x76, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08,
- 0x63, 0x76, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x70, 0x75,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e,
- 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x70, 0x75, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x06, 0x74, 0x69, 0x70, 0x43, 0x70, 0x75, 0x12, 0x1d, 0x0a, 0x0a, 0x74,
- 0x69, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x09, 0x74, 0x69, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x32,
- 0x61, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x70, 0x32, 0x61,
- 0x43, 0x70, 0x75, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x32, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x70, 0x32, 0x61, 0x4d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79,
- 0x5f, 0x63, 0x70, 0x75, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x62, 0x69, 0x6d, 0x6f,
- 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x70, 0x75, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x69, 0x6d,
- 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79,
- 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x74, 0x72, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x53,
- 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74,
- 0x72, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x5f, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x64, 0x18, 0x0c,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x72, 0x65, 0x6e,
- 0x64, 0x52, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x61, 0x74,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0d, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x70, 0x75,
- 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x61, 0x74,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0xdc, 0x05,
- 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73,
- 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x0a,
- 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x70, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65,
- 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x73, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x1c, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c,
- 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75,
- 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x1a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
- 0x6c, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x69,
- 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6d,
- 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x11, 0x62, 0x61, 0x73, 0x65, 0x43, 0x70, 0x75, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
- 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x14, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x75,
- 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x17, 0x63, 0x70, 0x75, 0x5f,
- 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c,
- 0x69, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75,
- 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x15, 0x63, 0x70, 0x75, 0x41, 0x64, 0x6a, 0x75, 0x73,
- 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x59, 0x0a,
- 0x1a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,
- 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x18,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74,
- 0x73, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61,
- 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75,
- 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
- 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
- 0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
- 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x12, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x43, 0x70, 0x75, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
- 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x43, 0x0a, 0x13,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d,
- 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x1f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79,
- 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a,
- 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79,
- 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x67,
- 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0a, 0x67, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
- 0x67, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x08, 0x67, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x17, 0x50, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e,
- 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x10, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x69,
- 0x6e, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x42,
- 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x75, 0x72, 0x73,
- 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a,
- 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44,
- 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x69, 0x6d,
- 0x65, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72,
- 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x75, 0x0a, 0x0a, 0x50, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c,
- 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12,
- 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x10,
- 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x61, 0x76, 0x67,
- 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x70, 0x30,
- 0x12, 0x10, 0x0a, 0x03, 0x70, 0x32, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
- 0x32, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x03, 0x70, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39,
- 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x39, 0x12, 0x12, 0x0a, 0x04,
- 0x70, 0x39, 0x39, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x70, 0x39, 0x39, 0x39,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x31, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04,
- 0x70, 0x31, 0x30, 0x30, 0x22, 0xa9, 0x07, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
- 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f,
- 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63,
- 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52,
- 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x09,
- 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63,
- 0x74, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x67,
- 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f,
- 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73,
- 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x72,
- 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d,
- 0x70, 0x61, 0x63, 0x74, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63,
- 0x65, 0x69, 0x76, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x16, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79,
- 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x74, 0x61,
+ 0x72, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x64,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x12, 0x2f, 0x0a,
+ 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x74,
+ 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc9,
+ 0x09, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08,
+ 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x14, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65,
- 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74,
- 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
- 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0b, 0x66, 0x73, 0x52, 0x65,
- 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x66, 0x73, 0x5f, 0x77, 0x72,
- 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63,
- 0x74, 0x52, 0x0c, 0x66, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+ 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f,
+ 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x73, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12,
+ 0x4d, 0x0a, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69,
+ 0x76, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+ 0x72, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4f,
+ 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d,
+ 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+ 0x72, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+ 0x3d, 0x0a, 0x0d, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x73, 0x52, 0x0b, 0x66, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f,
+ 0x0a, 0x0e, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x73, 0x52, 0x0c, 0x66, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
0x4f, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x79, 0x73, 0x12, 0x2b, 0x0a,
- 0x11, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61,
- 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66,
- 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x1b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12,
- 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x12, 0x37, 0x0a, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
+ 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x61, 0x64, 0x6a,
+ 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+ 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x69, 0x64, 0x65,
+ 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+ 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x73,
+ 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a,
+ 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x79, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x68,
+ 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x18, 0x0f, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x12,
+ 0x35, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65,
+ 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69,
+ 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x0a,
+ 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
+ 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x76, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x56, 0x6f, 0x6c,
+ 0x61, 0x74, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x6d, 0x6f, 0x64,
+ 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61,
+ 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x61, 0x6b,
+ 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x4c, 0x65, 0x61, 0x6b, 0x52, 0x69, 0x73, 0x6b, 0x12, 0x3e, 0x0a, 0x1b, 0x63,
+ 0x70, 0x75, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x19, 0x63, 0x70, 0x75, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x61,
+ 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x61, 0x64, 0x79, 0x22, 0xb0, 0x04, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
+ 0x12, 0x15, 0x0a, 0x06, 0x63, 0x76, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x05, 0x63, 0x76, 0x43, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x76, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x76, 0x4d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e,
+ 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63,
+ 0x6f, 0x72, 0x65, 0x43, 0x70, 0x75, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64,
+ 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65,
+ 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x06, 0x74, 0x69, 0x70, 0x43, 0x70, 0x75, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x70, 0x5f, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x69, 0x70,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x32, 0x61, 0x5f, 0x63, 0x70,
+ 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x70, 0x32, 0x61, 0x43, 0x70, 0x75, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x70, 0x32, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x09, 0x70, 0x32, 0x61, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x25,
+ 0x0a, 0x0e, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x70, 0x75,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69,
+ 0x74, 0x79, 0x43, 0x70, 0x75, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c,
+ 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x10, 0x62, 0x69, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x72, 0x65,
+ 0x6e, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x53, 0x6c, 0x6f, 0x70, 0x65,
+ 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x6e, 0x64,
+ 0x5f, 0x72, 0x5f, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x13, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x52, 0x53, 0x71,
+ 0x75, 0x61, 0x72, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x73,
+ 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x2b, 0x0a, 0x11,
+ 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0xdc, 0x05, 0x0a, 0x1b, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e,
+ 0x74, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x43, 0x70, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
+ 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12,
+ 0x5d, 0x0a, 0x1c, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x6f, 0x76,
+ 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,
+ 0x6e, 0x74, 0x52, 0x1a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x4f, 0x76,
+ 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x2e,
+ 0x0a, 0x13, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
+ 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x62, 0x61, 0x73,
+ 0x65, 0x43, 0x70, 0x75, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x34,
+ 0x0a, 0x16, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x75,
+ 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14,
+ 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70,
+ 0x6c, 0x69, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x17, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x64, 0x6a, 0x75,
+ 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18,
+ 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,
+ 0x6e, 0x74, 0x52, 0x15, 0x63, 0x70, 0x75, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x1a, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f,
+ 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67,
+ 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x18, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x70, 0x70,
+ 0x6c, 0x69, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70,
+ 0x75, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x4d, 0x75, 0x6c, 0x74,
+ 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65,
+ 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x30,
+ 0x0a, 0x14, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x70, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x70, 0x75,
+ 0x12, 0x36, 0x0a, 0x17, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x15, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x43, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12,
+ 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf5, 0x01,
+ 0x0a, 0x1f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x14, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x6c,
+ 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
- 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73,
- 0x22, 0xcb, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f,
- 0x66, 0x69, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
- 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
- 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x64,
- 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x64,
- 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f,
- 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d,
- 0x70, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x69, 0x5f, 0x75, 0x72,
- 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x69, 0x55, 0x72, 0x6c, 0x2a, 0x5d,
- 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12,
- 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f,
- 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f,
- 0x57, 0x5f, 0x31, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c,
- 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x37, 0x44, 0x10, 0x02, 0x32, 0x72, 0x0a,
- 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x70, 0x75, 0x5f, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x70,
+ 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x67, 0x70, 0x75,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f,
+ 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25,
+ 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x42, 0x75, 0x72, 0x73, 0x74,
+ 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
+ 0x62, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65,
+ 0x73, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61,
+ 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x50,
+ 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x70,
+ 0x61, 0x6e, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d,
+ 0x74, 0x69, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x27, 0x0a,
+ 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x75, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd0, 0x01,
+ 0x0a, 0x18, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76,
+ 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x61, 0x76, 0x67, 0x12, 0x0e, 0x0a, 0x02,
+ 0x70, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x70, 0x30, 0x12, 0x10, 0x0a, 0x03,
+ 0x70, 0x32, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x32, 0x35, 0x12, 0x10,
+ 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x35, 0x30,
+ 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x70,
+ 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x03, 0x70, 0x39, 0x39, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x39, 0x39, 0x39,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x70, 0x39, 0x39, 0x39, 0x12, 0x12, 0x0a, 0x04,
+ 0x70, 0x31, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x70, 0x31, 0x30, 0x30,
+ 0x22, 0xe9, 0x0c, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x25, 0x0a,
+ 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
+ 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0b, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f,
+ 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x08, 0x67,
+ 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76,
+ 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63,
+ 0x74, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12,
+ 0x54, 0x0a, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69,
+ 0x76, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74,
+ 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
+ 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+ 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
+ 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+ 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x44, 0x0a,
+ 0x0d, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43,
+ 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0b, 0x66, 0x73, 0x52, 0x65, 0x61, 0x64, 0x42, 0x79,
+ 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x66, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f,
+ 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0c, 0x66,
+ 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
+ 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09,
+ 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x08, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x79, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x73,
+ 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65,
+ 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69,
+ 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x14,
+ 0x61, 0x76, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x61, 0x76, 0x67, 0x54,
+ 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14,
+ 0x70, 0x35, 0x30, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x70, 0x35, 0x30, 0x54,
+ 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14,
+ 0x70, 0x37, 0x35, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x70, 0x37, 0x35, 0x54,
+ 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14,
+ 0x70, 0x39, 0x35, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x70, 0x39, 0x35, 0x54,
+ 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14,
+ 0x70, 0x39, 0x39, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
+ 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x70, 0x39, 0x39, 0x54,
+ 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x30, 0x0a, 0x15,
+ 0x70, 0x39, 0x39, 0x39, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61,
+ 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x70, 0x39, 0x39,
+ 0x39, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x2e,
+ 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65,
+ 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6d, 0x61,
+ 0x78, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x32,
+ 0x0a, 0x16, 0x61, 0x76, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x75,
+ 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12,
+ 0x61, 0x76, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
+ 0x4d, 0x73, 0x12, 0x32, 0x0a, 0x16, 0x70, 0x35, 0x30, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74,
+ 0x6f, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x73, 0x18, 0x17, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x12, 0x70, 0x35, 0x30, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x75, 0x6e,
+ 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x12, 0x32, 0x0a, 0x16, 0x70, 0x37, 0x35, 0x5f, 0x74, 0x69,
+ 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x73,
+ 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x70, 0x37, 0x35, 0x54, 0x69, 0x6d, 0x65, 0x54,
+ 0x6f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x12, 0x32, 0x0a, 0x16, 0x70, 0x39,
+ 0x35, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
+ 0x67, 0x5f, 0x6d, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x70, 0x39, 0x35, 0x54,
+ 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x12, 0x32,
+ 0x0a, 0x16, 0x70, 0x39, 0x39, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x75,
+ 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12,
+ 0x70, 0x39, 0x39, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
+ 0x4d, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x70, 0x39, 0x39, 0x39, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x73, 0x18, 0x1b, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x13, 0x70, 0x39, 0x39, 0x39, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52,
+ 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f,
+ 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f,
+ 0x6d, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d,
+ 0x65, 0x54, 0x6f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x22, 0x96, 0x02, 0x0a,
+ 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x73, 0x74,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x55, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x73, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
+ 0x64, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x23, 0x0a, 0x0d, 0x64, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f,
+ 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66,
+ 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74,
+ 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a,
+ 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
+ 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0xaa, 0x06, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x12, 0x24, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b,
+ 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0a, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x65, 0x68,
+ 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x65,
+ 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
+ 0x12, 0x3d, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12,
+ 0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06,
+ 0x75, 0x69, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x69,
+ 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x14, 0x61, 0x76, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x10, 0x61, 0x76, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64,
+ 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14, 0x70, 0x35, 0x30, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x10, 0x70, 0x35, 0x30, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64,
+ 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14, 0x70, 0x37, 0x35, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x10, 0x70, 0x37, 0x35, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64,
+ 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14, 0x70, 0x39, 0x35, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x10, 0x70, 0x39, 0x35, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64,
+ 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14, 0x70, 0x39, 0x39, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x10, 0x70, 0x39, 0x39, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x61, 0x64,
+ 0x79, 0x4d, 0x73, 0x12, 0x30, 0x0a, 0x15, 0x70, 0x39, 0x39, 0x39, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x11, 0x70, 0x39, 0x39, 0x39, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65,
+ 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x52, 0x65,
+ 0x61, 0x64, 0x79, 0x4d, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70,
+ 0x5f, 0x64, 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x44, 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64,
+ 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f,
+ 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x53,
+ 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x65,
+ 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x65, 0x72, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x05, 0x70, 0x65, 0x65,
+ 0x72, 0x73, 0x2a, 0x5d, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x57,
+ 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
+ 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x57,
+ 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x31, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52,
+ 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x37, 0x44, 0x10,
+ 0x02, 0x32, 0xf3, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x76, 0x61, 0x69,
+ 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f,
- 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x42, 0x8c, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x42, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64,
- 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa,
- 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56,
- 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31,
- 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x66, 0x69, 0x6c, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8c, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+ 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63,
+ 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67,
+ 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2,
+ 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02,
+ 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31,
+ 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41,
+ 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2009,72 +2690,87 @@ func file_api_v1_profiling_proto_rawDescGZIP() []byte {
}
var file_api_v1_profiling_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_api_v1_profiling_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
+var file_api_v1_profiling_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_api_v1_profiling_proto_goTypes = []interface{}{
- (ProfileWindow)(0), // 0: api.v1.ProfileWindow
- (*ProfilingWorkloadKey)(nil), // 1: api.v1.ProfilingWorkloadKey
- (*GetWorkloadProfilesRequest)(nil), // 2: api.v1.GetWorkloadProfilesRequest
- (*GetWorkloadProfilesResponse)(nil), // 3: api.v1.GetWorkloadProfilesResponse
- (*WorkloadProfileResult)(nil), // 4: api.v1.WorkloadProfileResult
- (*ContainerProfileResult)(nil), // 5: api.v1.ContainerProfileResult
- (*ProfilingBehavior)(nil), // 6: api.v1.ProfilingBehavior
- (*ProfilingSignalValues)(nil), // 7: api.v1.ProfilingSignalValues
- (*ProfilingAdjustmentEvidence)(nil), // 8: api.v1.ProfilingAdjustmentEvidence
- (*ProfilingAdjustment)(nil), // 9: api.v1.ProfilingAdjustment
- (*ProfilingResourceRecommendation)(nil), // 10: api.v1.ProfilingResourceRecommendation
- (*ProfilingClassification)(nil), // 11: api.v1.ProfilingClassification
- (*ProfileDataQuality)(nil), // 12: api.v1.ProfileDataQuality
- (*ProfileKey)(nil), // 13: api.v1.ProfileKey
- (*MetricPercentilesCompact)(nil), // 14: api.v1.MetricPercentilesCompact
- (*ContainerProfileSnapshot)(nil), // 15: api.v1.ContainerProfileSnapshot
- (*WorkloadProfileSnapshot)(nil), // 16: api.v1.WorkloadProfileSnapshot
- (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp
- (*MetricPercentiles)(nil), // 18: api.v1.MetricPercentiles
+ (ProfileWindow)(0), // 0: api.v1.ProfileWindow
+ (*ProfilingWorkloadKey)(nil), // 1: api.v1.ProfilingWorkloadKey
+ (*GetWorkloadProfilesRequest)(nil), // 2: api.v1.GetWorkloadProfilesRequest
+ (*GetWorkloadProfilesResponse)(nil), // 3: api.v1.GetWorkloadProfilesResponse
+ (*GetWorkloadProfileAvailabilityRequest)(nil), // 4: api.v1.GetWorkloadProfileAvailabilityRequest
+ (*ProfileWindowAvailability)(nil), // 5: api.v1.ProfileWindowAvailability
+ (*GetWorkloadProfileAvailabilityResponse)(nil), // 6: api.v1.GetWorkloadProfileAvailabilityResponse
+ (*WorkloadProfileResult)(nil), // 7: api.v1.WorkloadProfileResult
+ (*ContainerProfileResult)(nil), // 8: api.v1.ContainerProfileResult
+ (*ProfilingBehavior)(nil), // 9: api.v1.ProfilingBehavior
+ (*ProfilingSignalValues)(nil), // 10: api.v1.ProfilingSignalValues
+ (*ProfilingAdjustmentEvidence)(nil), // 11: api.v1.ProfilingAdjustmentEvidence
+ (*ProfilingAdjustment)(nil), // 12: api.v1.ProfilingAdjustment
+ (*ProfilingResourceRecommendation)(nil), // 13: api.v1.ProfilingResourceRecommendation
+ (*ProfilingClassification)(nil), // 14: api.v1.ProfilingClassification
+ (*ProfileDataQuality)(nil), // 15: api.v1.ProfileDataQuality
+ (*ProfileKey)(nil), // 16: api.v1.ProfileKey
+ (*MetricPercentilesCompact)(nil), // 17: api.v1.MetricPercentilesCompact
+ (*ContainerProfileSnapshot)(nil), // 18: api.v1.ContainerProfileSnapshot
+ (*WorkloadPeerConnectivity)(nil), // 19: api.v1.WorkloadPeerConnectivity
+ (*WorkloadProfileSnapshot)(nil), // 20: api.v1.WorkloadProfileSnapshot
+ (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp
+ (*MetricPercentiles)(nil), // 22: api.v1.MetricPercentiles
+ (*money.Money)(nil), // 23: google.type.Money
}
var file_api_v1_profiling_proto_depIdxs = []int32{
1, // 0: api.v1.GetWorkloadProfilesRequest.workloads:type_name -> api.v1.ProfilingWorkloadKey
- 17, // 1: api.v1.GetWorkloadProfilesRequest.start_time:type_name -> google.protobuf.Timestamp
- 17, // 2: api.v1.GetWorkloadProfilesRequest.end_time:type_name -> google.protobuf.Timestamp
- 4, // 3: api.v1.GetWorkloadProfilesResponse.workload_profiles:type_name -> api.v1.WorkloadProfileResult
- 5, // 4: api.v1.WorkloadProfileResult.containers:type_name -> api.v1.ContainerProfileResult
- 11, // 5: api.v1.WorkloadProfileResult.classification:type_name -> api.v1.ProfilingClassification
- 12, // 6: api.v1.WorkloadProfileResult.data_quality:type_name -> api.v1.ProfileDataQuality
- 18, // 7: api.v1.ContainerProfileResult.cpu_usage:type_name -> api.v1.MetricPercentiles
- 18, // 8: api.v1.ContainerProfileResult.memory_usage:type_name -> api.v1.MetricPercentiles
- 18, // 9: api.v1.ContainerProfileResult.gpu_usage:type_name -> api.v1.MetricPercentiles
- 18, // 10: api.v1.ContainerProfileResult.gpu_vram_usage:type_name -> api.v1.MetricPercentiles
- 18, // 11: api.v1.ContainerProfileResult.network_receive_bytes:type_name -> api.v1.MetricPercentiles
- 18, // 12: api.v1.ContainerProfileResult.network_transmit_bytes:type_name -> api.v1.MetricPercentiles
- 18, // 13: api.v1.ContainerProfileResult.fs_read_bytes:type_name -> api.v1.MetricPercentiles
- 18, // 14: api.v1.ContainerProfileResult.fs_write_bytes:type_name -> api.v1.MetricPercentiles
- 10, // 15: api.v1.ContainerProfileResult.recommendation:type_name -> api.v1.ProfilingResourceRecommendation
- 7, // 16: api.v1.ContainerProfileResult.signals:type_name -> api.v1.ProfilingSignalValues
- 8, // 17: api.v1.ContainerProfileResult.adjustments:type_name -> api.v1.ProfilingAdjustmentEvidence
- 6, // 18: api.v1.ContainerProfileResult.behavior:type_name -> api.v1.ProfilingBehavior
- 9, // 19: api.v1.ProfilingAdjustmentEvidence.percentile_overrides_applied:type_name -> api.v1.ProfilingAdjustment
- 9, // 20: api.v1.ProfilingAdjustmentEvidence.cpu_adjustments_applied:type_name -> api.v1.ProfilingAdjustment
- 9, // 21: api.v1.ProfilingAdjustmentEvidence.memory_adjustments_applied:type_name -> api.v1.ProfilingAdjustment
- 14, // 22: api.v1.ContainerProfileSnapshot.cpu_usage:type_name -> api.v1.MetricPercentilesCompact
- 14, // 23: api.v1.ContainerProfileSnapshot.memory_usage:type_name -> api.v1.MetricPercentilesCompact
- 14, // 24: api.v1.ContainerProfileSnapshot.gpu_usage:type_name -> api.v1.MetricPercentilesCompact
- 14, // 25: api.v1.ContainerProfileSnapshot.gpu_vram_usage:type_name -> api.v1.MetricPercentilesCompact
- 14, // 26: api.v1.ContainerProfileSnapshot.network_receive_bytes:type_name -> api.v1.MetricPercentilesCompact
- 14, // 27: api.v1.ContainerProfileSnapshot.network_transmit_bytes:type_name -> api.v1.MetricPercentilesCompact
- 14, // 28: api.v1.ContainerProfileSnapshot.fs_read_bytes:type_name -> api.v1.MetricPercentilesCompact
- 14, // 29: api.v1.ContainerProfileSnapshot.fs_write_bytes:type_name -> api.v1.MetricPercentilesCompact
- 10, // 30: api.v1.ContainerProfileSnapshot.recommendation:type_name -> api.v1.ProfilingResourceRecommendation
- 13, // 31: api.v1.WorkloadProfileSnapshot.key:type_name -> api.v1.ProfileKey
- 15, // 32: api.v1.WorkloadProfileSnapshot.containers:type_name -> api.v1.ContainerProfileSnapshot
- 6, // 33: api.v1.WorkloadProfileSnapshot.behavior:type_name -> api.v1.ProfilingBehavior
- 12, // 34: api.v1.WorkloadProfileSnapshot.data_quality:type_name -> api.v1.ProfileDataQuality
- 17, // 35: api.v1.WorkloadProfileSnapshot.computed_at:type_name -> google.protobuf.Timestamp
- 2, // 36: api.v1.ProfilingService.GetWorkloadProfiles:input_type -> api.v1.GetWorkloadProfilesRequest
- 3, // 37: api.v1.ProfilingService.GetWorkloadProfiles:output_type -> api.v1.GetWorkloadProfilesResponse
- 37, // [37:38] is the sub-list for method output_type
- 36, // [36:37] is the sub-list for method input_type
- 36, // [36:36] is the sub-list for extension type_name
- 36, // [36:36] is the sub-list for extension extendee
- 0, // [0:36] is the sub-list for field type_name
+ 21, // 1: api.v1.GetWorkloadProfilesRequest.start_time:type_name -> google.protobuf.Timestamp
+ 21, // 2: api.v1.GetWorkloadProfilesRequest.end_time:type_name -> google.protobuf.Timestamp
+ 0, // 3: api.v1.GetWorkloadProfilesRequest.window:type_name -> api.v1.ProfileWindow
+ 7, // 4: api.v1.GetWorkloadProfilesResponse.workload_profiles:type_name -> api.v1.WorkloadProfileResult
+ 21, // 5: api.v1.ProfileWindowAvailability.latest_computed_at:type_name -> google.protobuf.Timestamp
+ 5, // 6: api.v1.GetWorkloadProfileAvailabilityResponse.window_1d:type_name -> api.v1.ProfileWindowAvailability
+ 5, // 7: api.v1.GetWorkloadProfileAvailabilityResponse.window_7d:type_name -> api.v1.ProfileWindowAvailability
+ 8, // 8: api.v1.WorkloadProfileResult.containers:type_name -> api.v1.ContainerProfileResult
+ 14, // 9: api.v1.WorkloadProfileResult.classification:type_name -> api.v1.ProfilingClassification
+ 15, // 10: api.v1.WorkloadProfileResult.data_quality:type_name -> api.v1.ProfileDataQuality
+ 21, // 11: api.v1.WorkloadProfileResult.window_start:type_name -> google.protobuf.Timestamp
+ 21, // 12: api.v1.WorkloadProfileResult.window_end:type_name -> google.protobuf.Timestamp
+ 22, // 13: api.v1.ContainerProfileResult.cpu_usage:type_name -> api.v1.MetricPercentiles
+ 22, // 14: api.v1.ContainerProfileResult.memory_usage:type_name -> api.v1.MetricPercentiles
+ 22, // 15: api.v1.ContainerProfileResult.gpu_usage:type_name -> api.v1.MetricPercentiles
+ 22, // 16: api.v1.ContainerProfileResult.gpu_vram_usage:type_name -> api.v1.MetricPercentiles
+ 22, // 17: api.v1.ContainerProfileResult.network_receive_bytes:type_name -> api.v1.MetricPercentiles
+ 22, // 18: api.v1.ContainerProfileResult.network_transmit_bytes:type_name -> api.v1.MetricPercentiles
+ 22, // 19: api.v1.ContainerProfileResult.fs_read_bytes:type_name -> api.v1.MetricPercentiles
+ 22, // 20: api.v1.ContainerProfileResult.fs_write_bytes:type_name -> api.v1.MetricPercentiles
+ 13, // 21: api.v1.ContainerProfileResult.recommendation:type_name -> api.v1.ProfilingResourceRecommendation
+ 10, // 22: api.v1.ContainerProfileResult.signals:type_name -> api.v1.ProfilingSignalValues
+ 11, // 23: api.v1.ContainerProfileResult.adjustments:type_name -> api.v1.ProfilingAdjustmentEvidence
+ 9, // 24: api.v1.ContainerProfileResult.behavior:type_name -> api.v1.ProfilingBehavior
+ 12, // 25: api.v1.ProfilingAdjustmentEvidence.percentile_overrides_applied:type_name -> api.v1.ProfilingAdjustment
+ 12, // 26: api.v1.ProfilingAdjustmentEvidence.cpu_adjustments_applied:type_name -> api.v1.ProfilingAdjustment
+ 12, // 27: api.v1.ProfilingAdjustmentEvidence.memory_adjustments_applied:type_name -> api.v1.ProfilingAdjustment
+ 17, // 28: api.v1.ContainerProfileSnapshot.cpu_usage:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 29: api.v1.ContainerProfileSnapshot.memory_usage:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 30: api.v1.ContainerProfileSnapshot.gpu_usage:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 31: api.v1.ContainerProfileSnapshot.gpu_vram_usage:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 32: api.v1.ContainerProfileSnapshot.network_receive_bytes:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 33: api.v1.ContainerProfileSnapshot.network_transmit_bytes:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 34: api.v1.ContainerProfileSnapshot.fs_read_bytes:type_name -> api.v1.MetricPercentilesCompact
+ 17, // 35: api.v1.ContainerProfileSnapshot.fs_write_bytes:type_name -> api.v1.MetricPercentilesCompact
+ 13, // 36: api.v1.ContainerProfileSnapshot.recommendation:type_name -> api.v1.ProfilingResourceRecommendation
+ 23, // 37: api.v1.WorkloadPeerConnectivity.cost:type_name -> google.type.Money
+ 16, // 38: api.v1.WorkloadProfileSnapshot.key:type_name -> api.v1.ProfileKey
+ 18, // 39: api.v1.WorkloadProfileSnapshot.containers:type_name -> api.v1.ContainerProfileSnapshot
+ 9, // 40: api.v1.WorkloadProfileSnapshot.behavior:type_name -> api.v1.ProfilingBehavior
+ 15, // 41: api.v1.WorkloadProfileSnapshot.data_quality:type_name -> api.v1.ProfileDataQuality
+ 21, // 42: api.v1.WorkloadProfileSnapshot.computed_at:type_name -> google.protobuf.Timestamp
+ 19, // 43: api.v1.WorkloadProfileSnapshot.peers:type_name -> api.v1.WorkloadPeerConnectivity
+ 2, // 44: api.v1.ProfilingService.GetWorkloadProfiles:input_type -> api.v1.GetWorkloadProfilesRequest
+ 4, // 45: api.v1.ProfilingService.GetWorkloadProfileAvailability:input_type -> api.v1.GetWorkloadProfileAvailabilityRequest
+ 3, // 46: api.v1.ProfilingService.GetWorkloadProfiles:output_type -> api.v1.GetWorkloadProfilesResponse
+ 6, // 47: api.v1.ProfilingService.GetWorkloadProfileAvailability:output_type -> api.v1.GetWorkloadProfileAvailabilityResponse
+ 46, // [46:48] is the sub-list for method output_type
+ 44, // [44:46] is the sub-list for method input_type
+ 44, // [44:44] is the sub-list for extension type_name
+ 44, // [44:44] is the sub-list for extension extendee
+ 0, // [0:44] is the sub-list for field type_name
}
func init() { file_api_v1_profiling_proto_init() }
@@ -2121,7 +2817,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadProfileResult); i {
+ switch v := v.(*GetWorkloadProfileAvailabilityRequest); i {
case 0:
return &v.state
case 1:
@@ -2133,7 +2829,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerProfileResult); i {
+ switch v := v.(*ProfileWindowAvailability); i {
case 0:
return &v.state
case 1:
@@ -2145,7 +2841,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfilingBehavior); i {
+ switch v := v.(*GetWorkloadProfileAvailabilityResponse); i {
case 0:
return &v.state
case 1:
@@ -2157,7 +2853,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfilingSignalValues); i {
+ switch v := v.(*WorkloadProfileResult); i {
case 0:
return &v.state
case 1:
@@ -2169,7 +2865,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfilingAdjustmentEvidence); i {
+ switch v := v.(*ContainerProfileResult); i {
case 0:
return &v.state
case 1:
@@ -2181,7 +2877,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfilingAdjustment); i {
+ switch v := v.(*ProfilingBehavior); i {
case 0:
return &v.state
case 1:
@@ -2193,7 +2889,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfilingResourceRecommendation); i {
+ switch v := v.(*ProfilingSignalValues); i {
case 0:
return &v.state
case 1:
@@ -2205,7 +2901,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfilingClassification); i {
+ switch v := v.(*ProfilingAdjustmentEvidence); i {
case 0:
return &v.state
case 1:
@@ -2217,7 +2913,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfileDataQuality); i {
+ switch v := v.(*ProfilingAdjustment); i {
case 0:
return &v.state
case 1:
@@ -2229,7 +2925,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProfileKey); i {
+ switch v := v.(*ProfilingResourceRecommendation); i {
case 0:
return &v.state
case 1:
@@ -2241,7 +2937,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MetricPercentilesCompact); i {
+ switch v := v.(*ProfilingClassification); i {
case 0:
return &v.state
case 1:
@@ -2253,7 +2949,7 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerProfileSnapshot); i {
+ switch v := v.(*ProfileDataQuality); i {
case 0:
return &v.state
case 1:
@@ -2265,6 +2961,54 @@ func file_api_v1_profiling_proto_init() {
}
}
file_api_v1_profiling_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ProfileKey); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_profiling_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MetricPercentilesCompact); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_profiling_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerProfileSnapshot); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_profiling_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadPeerConnectivity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_profiling_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WorkloadProfileSnapshot); i {
case 0:
return &v.state
@@ -2284,7 +3028,7 @@ func file_api_v1_profiling_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_profiling_proto_rawDesc,
NumEnums: 1,
- NumMessages: 16,
+ NumMessages: 20,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/internal/gen/api/v1/profiling_grpc.pb.go b/internal/gen/api/v1/profiling_grpc.pb.go
index b7af3ee..d61d90b 100644
--- a/internal/gen/api/v1/profiling_grpc.pb.go
+++ b/internal/gen/api/v1/profiling_grpc.pb.go
@@ -19,7 +19,8 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
- ProfilingService_GetWorkloadProfiles_FullMethodName = "/api.v1.ProfilingService/GetWorkloadProfiles"
+ ProfilingService_GetWorkloadProfiles_FullMethodName = "/api.v1.ProfilingService/GetWorkloadProfiles"
+ ProfilingService_GetWorkloadProfileAvailability_FullMethodName = "/api.v1.ProfilingService/GetWorkloadProfileAvailability"
)
// ProfilingServiceClient is the client API for ProfilingService service.
@@ -27,6 +28,11 @@ const (
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type ProfilingServiceClient interface {
GetWorkloadProfiles(ctx context.Context, in *GetWorkloadProfilesRequest, opts ...grpc.CallOption) (*GetWorkloadProfilesResponse, error)
+ // GetWorkloadProfileAvailability is a lightweight check the frontend uses to
+ // decide whether the 1D/7D DB-snapshot tabs should be enabled (and default
+ // to) versus falling back to a live compute. It never reads snapshot payloads
+ // — only per-window row counts and the most recent computed_at.
+ GetWorkloadProfileAvailability(ctx context.Context, in *GetWorkloadProfileAvailabilityRequest, opts ...grpc.CallOption) (*GetWorkloadProfileAvailabilityResponse, error)
}
type profilingServiceClient struct {
@@ -46,11 +52,25 @@ func (c *profilingServiceClient) GetWorkloadProfiles(ctx context.Context, in *Ge
return out, nil
}
+func (c *profilingServiceClient) GetWorkloadProfileAvailability(ctx context.Context, in *GetWorkloadProfileAvailabilityRequest, opts ...grpc.CallOption) (*GetWorkloadProfileAvailabilityResponse, error) {
+ out := new(GetWorkloadProfileAvailabilityResponse)
+ err := c.cc.Invoke(ctx, ProfilingService_GetWorkloadProfileAvailability_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// ProfilingServiceServer is the server API for ProfilingService service.
// All implementations must embed UnimplementedProfilingServiceServer
// for forward compatibility
type ProfilingServiceServer interface {
GetWorkloadProfiles(context.Context, *GetWorkloadProfilesRequest) (*GetWorkloadProfilesResponse, error)
+ // GetWorkloadProfileAvailability is a lightweight check the frontend uses to
+ // decide whether the 1D/7D DB-snapshot tabs should be enabled (and default
+ // to) versus falling back to a live compute. It never reads snapshot payloads
+ // — only per-window row counts and the most recent computed_at.
+ GetWorkloadProfileAvailability(context.Context, *GetWorkloadProfileAvailabilityRequest) (*GetWorkloadProfileAvailabilityResponse, error)
mustEmbedUnimplementedProfilingServiceServer()
}
@@ -61,6 +81,9 @@ type UnimplementedProfilingServiceServer struct {
func (UnimplementedProfilingServiceServer) GetWorkloadProfiles(context.Context, *GetWorkloadProfilesRequest) (*GetWorkloadProfilesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetWorkloadProfiles not implemented")
}
+func (UnimplementedProfilingServiceServer) GetWorkloadProfileAvailability(context.Context, *GetWorkloadProfileAvailabilityRequest) (*GetWorkloadProfileAvailabilityResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetWorkloadProfileAvailability not implemented")
+}
func (UnimplementedProfilingServiceServer) mustEmbedUnimplementedProfilingServiceServer() {}
// UnsafeProfilingServiceServer may be embedded to opt out of forward compatibility for this service.
@@ -92,6 +115,24 @@ func _ProfilingService_GetWorkloadProfiles_Handler(srv interface{}, ctx context.
return interceptor(ctx, in, info, handler)
}
+func _ProfilingService_GetWorkloadProfileAvailability_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetWorkloadProfileAvailabilityRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ProfilingServiceServer).GetWorkloadProfileAvailability(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: ProfilingService_GetWorkloadProfileAvailability_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ProfilingServiceServer).GetWorkloadProfileAvailability(ctx, req.(*GetWorkloadProfileAvailabilityRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
// ProfilingService_ServiceDesc is the grpc.ServiceDesc for ProfilingService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -103,6 +144,10 @@ var ProfilingService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetWorkloadProfiles",
Handler: _ProfilingService_GetWorkloadProfiles_Handler,
},
+ {
+ MethodName: "GetWorkloadProfileAvailability",
+ Handler: _ProfilingService_GetWorkloadProfileAvailability_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "api/v1/profiling.proto",
diff --git a/internal/gen/api/v1/recommendation.pb.go b/internal/gen/api/v1/recommendation.pb.go
index 7b0f0c2..1935dd0 100644
--- a/internal/gen/api/v1/recommendation.pb.go
+++ b/internal/gen/api/v1/recommendation.pb.go
@@ -10,7 +10,7 @@ import (
money "google.golang.org/genproto/googleapis/type/money"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
+ _ "google.golang.org/protobuf/types/known/durationpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
@@ -121,6 +121,109 @@ func (ActionToTake) EnumDescriptor() ([]byte, []int) {
return file_api_v1_recommendation_proto_rawDescGZIP(), []int{1}
}
+// MutationAction is the per-element analog of ActionToTake for list/map-shaped
+// fields (env vars, nodeSelector, tolerations, command/arg flags). The action
+// lives on each element so the operator can merge deltas into the live spec
+// instead of replacing the whole list. IGNORE is implicit: omit the element.
+type MutationAction int32
+
+const (
+ MutationAction_MUTATION_ACTION_UNSPECIFIED MutationAction = 0
+ MutationAction_MUTATION_ACTION_UPSERT MutationAction = 1 // add the element, or replace the one matching the merge key
+ MutationAction_MUTATION_ACTION_REMOVE MutationAction = 2 // delete the element matching the merge key
+)
+
+// Enum value maps for MutationAction.
+var (
+ MutationAction_name = map[int32]string{
+ 0: "MUTATION_ACTION_UNSPECIFIED",
+ 1: "MUTATION_ACTION_UPSERT",
+ 2: "MUTATION_ACTION_REMOVE",
+ }
+ MutationAction_value = map[string]int32{
+ "MUTATION_ACTION_UNSPECIFIED": 0,
+ "MUTATION_ACTION_UPSERT": 1,
+ "MUTATION_ACTION_REMOVE": 2,
+ }
+)
+
+func (x MutationAction) Enum() *MutationAction {
+ p := new(MutationAction)
+ *p = x
+ return p
+}
+
+func (x MutationAction) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MutationAction) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[2].Descriptor()
+}
+
+func (MutationAction) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[2]
+}
+
+func (x MutationAction) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MutationAction.Descriptor instead.
+func (MutationAction) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{2}
+}
+
+// ArgTarget selects which container field a CommandArgMutation edits.
+type ArgTarget int32
+
+const (
+ ArgTarget_ARG_TARGET_UNSPECIFIED ArgTarget = 0
+ ArgTarget_ARG_TARGET_ARGS ArgTarget = 1 // container.args
+ ArgTarget_ARG_TARGET_COMMAND ArgTarget = 2 // container.command
+)
+
+// Enum value maps for ArgTarget.
+var (
+ ArgTarget_name = map[int32]string{
+ 0: "ARG_TARGET_UNSPECIFIED",
+ 1: "ARG_TARGET_ARGS",
+ 2: "ARG_TARGET_COMMAND",
+ }
+ ArgTarget_value = map[string]int32{
+ "ARG_TARGET_UNSPECIFIED": 0,
+ "ARG_TARGET_ARGS": 1,
+ "ARG_TARGET_COMMAND": 2,
+ }
+)
+
+func (x ArgTarget) Enum() *ArgTarget {
+ p := new(ArgTarget)
+ *p = x
+ return p
+}
+
+func (x ArgTarget) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ArgTarget) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[3].Descriptor()
+}
+
+func (ArgTarget) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[3]
+}
+
+func (x ArgTarget) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ArgTarget.Descriptor instead.
+func (ArgTarget) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{3}
+}
+
type CostPeriod int32
const (
@@ -154,11 +257,11 @@ func (x CostPeriod) String() string {
}
func (CostPeriod) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[2].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[4].Descriptor()
}
func (CostPeriod) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[2]
+ return &file_api_v1_recommendation_proto_enumTypes[4]
}
func (x CostPeriod) Number() protoreflect.EnumNumber {
@@ -167,7 +270,205 @@ func (x CostPeriod) Number() protoreflect.EnumNumber {
// Deprecated: Use CostPeriod.Descriptor instead.
func (CostPeriod) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{2}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{4}
+}
+
+type ReasoningInsightSeverity int32
+
+const (
+ ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_UNSPECIFIED ReasoningInsightSeverity = 0
+ ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_INFO ReasoningInsightSeverity = 1
+ ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_LOW ReasoningInsightSeverity = 2
+ ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_MEDIUM ReasoningInsightSeverity = 3
+ ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_HIGH ReasoningInsightSeverity = 4
+ ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_CRITICAL ReasoningInsightSeverity = 5
+)
+
+// Enum value maps for ReasoningInsightSeverity.
+var (
+ ReasoningInsightSeverity_name = map[int32]string{
+ 0: "REASONING_INSIGHT_SEVERITY_UNSPECIFIED",
+ 1: "REASONING_INSIGHT_SEVERITY_INFO",
+ 2: "REASONING_INSIGHT_SEVERITY_LOW",
+ 3: "REASONING_INSIGHT_SEVERITY_MEDIUM",
+ 4: "REASONING_INSIGHT_SEVERITY_HIGH",
+ 5: "REASONING_INSIGHT_SEVERITY_CRITICAL",
+ }
+ ReasoningInsightSeverity_value = map[string]int32{
+ "REASONING_INSIGHT_SEVERITY_UNSPECIFIED": 0,
+ "REASONING_INSIGHT_SEVERITY_INFO": 1,
+ "REASONING_INSIGHT_SEVERITY_LOW": 2,
+ "REASONING_INSIGHT_SEVERITY_MEDIUM": 3,
+ "REASONING_INSIGHT_SEVERITY_HIGH": 4,
+ "REASONING_INSIGHT_SEVERITY_CRITICAL": 5,
+ }
+)
+
+func (x ReasoningInsightSeverity) Enum() *ReasoningInsightSeverity {
+ p := new(ReasoningInsightSeverity)
+ *p = x
+ return p
+}
+
+func (x ReasoningInsightSeverity) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ReasoningInsightSeverity) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[5].Descriptor()
+}
+
+func (ReasoningInsightSeverity) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[5]
+}
+
+func (x ReasoningInsightSeverity) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ReasoningInsightSeverity.Descriptor instead.
+func (ReasoningInsightSeverity) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{5}
+}
+
+type ReasoningInsightType int32
+
+const (
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_UNSPECIFIED ReasoningInsightType = 0
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_PATTERN ReasoningInsightType = 1
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_ANOMALY ReasoningInsightType = 2
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_TREND ReasoningInsightType = 3
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_OPTIMIZATION ReasoningInsightType = 4
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_RISK ReasoningInsightType = 5
+ ReasoningInsightType_REASONING_INSIGHT_TYPE_PROFILE ReasoningInsightType = 6
+)
+
+// Enum value maps for ReasoningInsightType.
+var (
+ ReasoningInsightType_name = map[int32]string{
+ 0: "REASONING_INSIGHT_TYPE_UNSPECIFIED",
+ 1: "REASONING_INSIGHT_TYPE_PATTERN",
+ 2: "REASONING_INSIGHT_TYPE_ANOMALY",
+ 3: "REASONING_INSIGHT_TYPE_TREND",
+ 4: "REASONING_INSIGHT_TYPE_OPTIMIZATION",
+ 5: "REASONING_INSIGHT_TYPE_RISK",
+ 6: "REASONING_INSIGHT_TYPE_PROFILE",
+ }
+ ReasoningInsightType_value = map[string]int32{
+ "REASONING_INSIGHT_TYPE_UNSPECIFIED": 0,
+ "REASONING_INSIGHT_TYPE_PATTERN": 1,
+ "REASONING_INSIGHT_TYPE_ANOMALY": 2,
+ "REASONING_INSIGHT_TYPE_TREND": 3,
+ "REASONING_INSIGHT_TYPE_OPTIMIZATION": 4,
+ "REASONING_INSIGHT_TYPE_RISK": 5,
+ "REASONING_INSIGHT_TYPE_PROFILE": 6,
+ }
+)
+
+func (x ReasoningInsightType) Enum() *ReasoningInsightType {
+ p := new(ReasoningInsightType)
+ *p = x
+ return p
+}
+
+func (x ReasoningInsightType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ReasoningInsightType) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[6].Descriptor()
+}
+
+func (ReasoningInsightType) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[6]
+}
+
+func (x ReasoningInsightType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ReasoningInsightType.Descriptor instead.
+func (ReasoningInsightType) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{6}
+}
+
+type ReasoningDecisionKind int32
+
+const (
+ ReasoningDecisionKind_REASONING_DECISION_KIND_UNSPECIFIED ReasoningDecisionKind = 0
+ ReasoningDecisionKind_REASONING_DECISION_KIND_CONSTRAINT_OVERRIDE ReasoningDecisionKind = 1
+ ReasoningDecisionKind_REASONING_DECISION_KIND_POLICY_CONFLICT ReasoningDecisionKind = 2
+ ReasoningDecisionKind_REASONING_DECISION_KIND_POLICY_FLOOR ReasoningDecisionKind = 3
+ ReasoningDecisionKind_REASONING_DECISION_KIND_POLICY_CEILING ReasoningDecisionKind = 4
+ ReasoningDecisionKind_REASONING_DECISION_KIND_PLATFORM_FLOOR ReasoningDecisionKind = 5
+ ReasoningDecisionKind_REASONING_DECISION_KIND_SAFETY_FLOOR ReasoningDecisionKind = 6
+ ReasoningDecisionKind_REASONING_DECISION_KIND_SUPPRESSION ReasoningDecisionKind = 7
+ ReasoningDecisionKind_REASONING_DECISION_KIND_FEATURE_DOWNGRADE ReasoningDecisionKind = 8
+ ReasoningDecisionKind_REASONING_DECISION_KIND_MODIFICATION ReasoningDecisionKind = 9
+ ReasoningDecisionKind_REASONING_DECISION_KIND_NORMALIZATION ReasoningDecisionKind = 10
+ ReasoningDecisionKind_REASONING_DECISION_KIND_POLICY_LIMIT_FLOOR ReasoningDecisionKind = 11
+ ReasoningDecisionKind_REASONING_DECISION_KIND_POLICY_LIMIT_CEILING ReasoningDecisionKind = 12
+)
+
+// Enum value maps for ReasoningDecisionKind.
+var (
+ ReasoningDecisionKind_name = map[int32]string{
+ 0: "REASONING_DECISION_KIND_UNSPECIFIED",
+ 1: "REASONING_DECISION_KIND_CONSTRAINT_OVERRIDE",
+ 2: "REASONING_DECISION_KIND_POLICY_CONFLICT",
+ 3: "REASONING_DECISION_KIND_POLICY_FLOOR",
+ 4: "REASONING_DECISION_KIND_POLICY_CEILING",
+ 5: "REASONING_DECISION_KIND_PLATFORM_FLOOR",
+ 6: "REASONING_DECISION_KIND_SAFETY_FLOOR",
+ 7: "REASONING_DECISION_KIND_SUPPRESSION",
+ 8: "REASONING_DECISION_KIND_FEATURE_DOWNGRADE",
+ 9: "REASONING_DECISION_KIND_MODIFICATION",
+ 10: "REASONING_DECISION_KIND_NORMALIZATION",
+ 11: "REASONING_DECISION_KIND_POLICY_LIMIT_FLOOR",
+ 12: "REASONING_DECISION_KIND_POLICY_LIMIT_CEILING",
+ }
+ ReasoningDecisionKind_value = map[string]int32{
+ "REASONING_DECISION_KIND_UNSPECIFIED": 0,
+ "REASONING_DECISION_KIND_CONSTRAINT_OVERRIDE": 1,
+ "REASONING_DECISION_KIND_POLICY_CONFLICT": 2,
+ "REASONING_DECISION_KIND_POLICY_FLOOR": 3,
+ "REASONING_DECISION_KIND_POLICY_CEILING": 4,
+ "REASONING_DECISION_KIND_PLATFORM_FLOOR": 5,
+ "REASONING_DECISION_KIND_SAFETY_FLOOR": 6,
+ "REASONING_DECISION_KIND_SUPPRESSION": 7,
+ "REASONING_DECISION_KIND_FEATURE_DOWNGRADE": 8,
+ "REASONING_DECISION_KIND_MODIFICATION": 9,
+ "REASONING_DECISION_KIND_NORMALIZATION": 10,
+ "REASONING_DECISION_KIND_POLICY_LIMIT_FLOOR": 11,
+ "REASONING_DECISION_KIND_POLICY_LIMIT_CEILING": 12,
+ }
+)
+
+func (x ReasoningDecisionKind) Enum() *ReasoningDecisionKind {
+ p := new(ReasoningDecisionKind)
+ *p = x
+ return p
+}
+
+func (x ReasoningDecisionKind) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ReasoningDecisionKind) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[7].Descriptor()
+}
+
+func (ReasoningDecisionKind) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[7]
+}
+
+func (x ReasoningDecisionKind) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ReasoningDecisionKind.Descriptor instead.
+func (ReasoningDecisionKind) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{7}
}
type LiveMigDeletionPropagation int32
@@ -206,11 +507,11 @@ func (x LiveMigDeletionPropagation) String() string {
}
func (LiveMigDeletionPropagation) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[3].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[8].Descriptor()
}
func (LiveMigDeletionPropagation) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[3]
+ return &file_api_v1_recommendation_proto_enumTypes[8]
}
func (x LiveMigDeletionPropagation) Number() protoreflect.EnumNumber {
@@ -219,7 +520,7 @@ func (x LiveMigDeletionPropagation) Number() protoreflect.EnumNumber {
// Deprecated: Use LiveMigDeletionPropagation.Descriptor instead.
func (LiveMigDeletionPropagation) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{3}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{8}
}
type RecommendationStatus int32
@@ -290,11 +591,11 @@ func (x RecommendationStatus) String() string {
}
func (RecommendationStatus) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[4].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[9].Descriptor()
}
func (RecommendationStatus) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[4]
+ return &file_api_v1_recommendation_proto_enumTypes[9]
}
func (x RecommendationStatus) Number() protoreflect.EnumNumber {
@@ -303,7 +604,7 @@ func (x RecommendationStatus) Number() protoreflect.EnumNumber {
// Deprecated: Use RecommendationStatus.Descriptor instead.
func (RecommendationStatus) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{4}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{9}
}
// NodeGroupCheckpointState classifies a node group's checkpoint-restore status.
@@ -358,11 +659,11 @@ func (x NodeGroupCheckpointState) String() string {
}
func (NodeGroupCheckpointState) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[5].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[10].Descriptor()
}
func (NodeGroupCheckpointState) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[5]
+ return &file_api_v1_recommendation_proto_enumTypes[10]
}
func (x NodeGroupCheckpointState) Number() protoreflect.EnumNumber {
@@ -371,7 +672,311 @@ func (x NodeGroupCheckpointState) Number() protoreflect.EnumNumber {
// Deprecated: Use NodeGroupCheckpointState.Descriptor instead.
func (NodeGroupCheckpointState) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{5}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{10}
+}
+
+// CheckpointReason explains *why* a node group is stuck in CONFIGURED — surfaced
+// as a tooltip modifier line, never as a distinct chip. Multiple reasons can be
+// true at once; backend picks the most actionable one.
+type CheckpointReason int32
+
+const (
+ CheckpointReason_CHECKPOINT_REASON_UNSPECIFIED CheckpointReason = 0
+ // dakr-operator on this cluster predates per-node SSA fan-out. Existing
+ // nodes won't be labeled until the operator upgrades.
+ CheckpointReason_CHECKPOINT_REASON_OPERATOR_OUTDATED CheckpointReason = 1
+ // Label applied, but no node has reported criu_configured=true yet. Most
+ // likely the customer hasn't deployed (or hasn't finished deploying) the
+ // CRIU DaemonSet.
+ CheckpointReason_CHECKPOINT_REASON_DAEMONSET_NOT_DETECTED CheckpointReason = 2
+ // Some nodes joined recently (<5 min) and haven't been probed yet. State
+ // will resolve on the next operator tick.
+ CheckpointReason_CHECKPOINT_REASON_NEW_NODES_PROBING CheckpointReason = 3
+)
+
+// Enum value maps for CheckpointReason.
+var (
+ CheckpointReason_name = map[int32]string{
+ 0: "CHECKPOINT_REASON_UNSPECIFIED",
+ 1: "CHECKPOINT_REASON_OPERATOR_OUTDATED",
+ 2: "CHECKPOINT_REASON_DAEMONSET_NOT_DETECTED",
+ 3: "CHECKPOINT_REASON_NEW_NODES_PROBING",
+ }
+ CheckpointReason_value = map[string]int32{
+ "CHECKPOINT_REASON_UNSPECIFIED": 0,
+ "CHECKPOINT_REASON_OPERATOR_OUTDATED": 1,
+ "CHECKPOINT_REASON_DAEMONSET_NOT_DETECTED": 2,
+ "CHECKPOINT_REASON_NEW_NODES_PROBING": 3,
+ }
+)
+
+func (x CheckpointReason) Enum() *CheckpointReason {
+ p := new(CheckpointReason)
+ *p = x
+ return p
+}
+
+func (x CheckpointReason) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (CheckpointReason) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[11].Descriptor()
+}
+
+func (CheckpointReason) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[11]
+}
+
+func (x CheckpointReason) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CheckpointReason.Descriptor instead.
+func (CheckpointReason) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{11}
+}
+
+// SuggestionGroup is the policy component a suggestion belongs to. The UI groups cards
+// by this axis.
+type SuggestionGroup int32
+
+const (
+ SuggestionGroup_SUGGESTION_GROUP_UNSPECIFIED SuggestionGroup = 0
+ SuggestionGroup_SUGGESTION_GROUP_DISRUPTION SuggestionGroup = 1
+ SuggestionGroup_SUGGESTION_GROUP_REQUIREMENTS SuggestionGroup = 2
+ SuggestionGroup_SUGGESTION_GROUP_CAPACITY_TYPE SuggestionGroup = 3
+ SuggestionGroup_SUGGESTION_GROUP_ZONES SuggestionGroup = 4
+ SuggestionGroup_SUGGESTION_GROUP_LIMITS SuggestionGroup = 5
+ SuggestionGroup_SUGGESTION_GROUP_NODECLASS SuggestionGroup = 6
+ SuggestionGroup_SUGGESTION_GROUP_COMPATIBILITY SuggestionGroup = 7
+ // SUGGESTION_GROUP_COVERAGE is the one group whose suggestions do not mutate this
+ // NodePolicy at all: field_path, current_value_yaml and suggested_value_yaml are all
+ // empty, and the suggestion never resolves to an Apply(). It surfaces workloads
+ // attributed to this pool that have no legacy (mpav1) WorkloadRecommendationPolicy
+ // coverage, which is a gap in DevZero's separate workload-optimization product, not a
+ // NodePolicy misconfiguration.
+ SuggestionGroup_SUGGESTION_GROUP_COVERAGE SuggestionGroup = 8
+)
+
+// Enum value maps for SuggestionGroup.
+var (
+ SuggestionGroup_name = map[int32]string{
+ 0: "SUGGESTION_GROUP_UNSPECIFIED",
+ 1: "SUGGESTION_GROUP_DISRUPTION",
+ 2: "SUGGESTION_GROUP_REQUIREMENTS",
+ 3: "SUGGESTION_GROUP_CAPACITY_TYPE",
+ 4: "SUGGESTION_GROUP_ZONES",
+ 5: "SUGGESTION_GROUP_LIMITS",
+ 6: "SUGGESTION_GROUP_NODECLASS",
+ 7: "SUGGESTION_GROUP_COMPATIBILITY",
+ 8: "SUGGESTION_GROUP_COVERAGE",
+ }
+ SuggestionGroup_value = map[string]int32{
+ "SUGGESTION_GROUP_UNSPECIFIED": 0,
+ "SUGGESTION_GROUP_DISRUPTION": 1,
+ "SUGGESTION_GROUP_REQUIREMENTS": 2,
+ "SUGGESTION_GROUP_CAPACITY_TYPE": 3,
+ "SUGGESTION_GROUP_ZONES": 4,
+ "SUGGESTION_GROUP_LIMITS": 5,
+ "SUGGESTION_GROUP_NODECLASS": 6,
+ "SUGGESTION_GROUP_COMPATIBILITY": 7,
+ "SUGGESTION_GROUP_COVERAGE": 8,
+ }
+)
+
+func (x SuggestionGroup) Enum() *SuggestionGroup {
+ p := new(SuggestionGroup)
+ *p = x
+ return p
+}
+
+func (x SuggestionGroup) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SuggestionGroup) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[12].Descriptor()
+}
+
+func (SuggestionGroup) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[12]
+}
+
+func (x SuggestionGroup) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SuggestionGroup.Descriptor instead.
+func (SuggestionGroup) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{12}
+}
+
+// SuggestionFlavor is the benefit a suggestion delivers. The UI renders this as a chip
+// alongside severity.
+type SuggestionFlavor int32
+
+const (
+ SuggestionFlavor_SUGGESTION_FLAVOR_UNSPECIFIED SuggestionFlavor = 0
+ SuggestionFlavor_SUGGESTION_FLAVOR_COST SuggestionFlavor = 1
+ SuggestionFlavor_SUGGESTION_FLAVOR_RELIABILITY SuggestionFlavor = 2
+ SuggestionFlavor_SUGGESTION_FLAVOR_PERFORMANCE SuggestionFlavor = 3
+ SuggestionFlavor_SUGGESTION_FLAVOR_SECURITY SuggestionFlavor = 4
+ SuggestionFlavor_SUGGESTION_FLAVOR_BEST_PRACTICE SuggestionFlavor = 5
+ SuggestionFlavor_SUGGESTION_FLAVOR_COMPATIBILITY SuggestionFlavor = 6
+)
+
+// Enum value maps for SuggestionFlavor.
+var (
+ SuggestionFlavor_name = map[int32]string{
+ 0: "SUGGESTION_FLAVOR_UNSPECIFIED",
+ 1: "SUGGESTION_FLAVOR_COST",
+ 2: "SUGGESTION_FLAVOR_RELIABILITY",
+ 3: "SUGGESTION_FLAVOR_PERFORMANCE",
+ 4: "SUGGESTION_FLAVOR_SECURITY",
+ 5: "SUGGESTION_FLAVOR_BEST_PRACTICE",
+ 6: "SUGGESTION_FLAVOR_COMPATIBILITY",
+ }
+ SuggestionFlavor_value = map[string]int32{
+ "SUGGESTION_FLAVOR_UNSPECIFIED": 0,
+ "SUGGESTION_FLAVOR_COST": 1,
+ "SUGGESTION_FLAVOR_RELIABILITY": 2,
+ "SUGGESTION_FLAVOR_PERFORMANCE": 3,
+ "SUGGESTION_FLAVOR_SECURITY": 4,
+ "SUGGESTION_FLAVOR_BEST_PRACTICE": 5,
+ "SUGGESTION_FLAVOR_COMPATIBILITY": 6,
+ }
+)
+
+func (x SuggestionFlavor) Enum() *SuggestionFlavor {
+ p := new(SuggestionFlavor)
+ *p = x
+ return p
+}
+
+func (x SuggestionFlavor) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SuggestionFlavor) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[13].Descriptor()
+}
+
+func (SuggestionFlavor) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[13]
+}
+
+func (x SuggestionFlavor) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SuggestionFlavor.Descriptor instead.
+func (SuggestionFlavor) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{13}
+}
+
+type SuggestionSeverity int32
+
+const (
+ SuggestionSeverity_SUGGESTION_SEVERITY_UNSPECIFIED SuggestionSeverity = 0
+ SuggestionSeverity_SUGGESTION_SEVERITY_INFO SuggestionSeverity = 1
+ SuggestionSeverity_SUGGESTION_SEVERITY_RECOMMENDED SuggestionSeverity = 2
+ SuggestionSeverity_SUGGESTION_SEVERITY_STRONG SuggestionSeverity = 3
+)
+
+// Enum value maps for SuggestionSeverity.
+var (
+ SuggestionSeverity_name = map[int32]string{
+ 0: "SUGGESTION_SEVERITY_UNSPECIFIED",
+ 1: "SUGGESTION_SEVERITY_INFO",
+ 2: "SUGGESTION_SEVERITY_RECOMMENDED",
+ 3: "SUGGESTION_SEVERITY_STRONG",
+ }
+ SuggestionSeverity_value = map[string]int32{
+ "SUGGESTION_SEVERITY_UNSPECIFIED": 0,
+ "SUGGESTION_SEVERITY_INFO": 1,
+ "SUGGESTION_SEVERITY_RECOMMENDED": 2,
+ "SUGGESTION_SEVERITY_STRONG": 3,
+ }
+)
+
+func (x SuggestionSeverity) Enum() *SuggestionSeverity {
+ p := new(SuggestionSeverity)
+ *p = x
+ return p
+}
+
+func (x SuggestionSeverity) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SuggestionSeverity) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[14].Descriptor()
+}
+
+func (SuggestionSeverity) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[14]
+}
+
+func (x SuggestionSeverity) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SuggestionSeverity.Descriptor instead.
+func (SuggestionSeverity) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{14}
+}
+
+// EvidenceScope records what population an evidence item was measured against. POOL means
+// the nodes attributed to this policy's live NodePools; CLUSTER is the cold-start
+// fallback for policies with no live nodes yet.
+type EvidenceScope int32
+
+const (
+ EvidenceScope_EVIDENCE_SCOPE_UNSPECIFIED EvidenceScope = 0
+ EvidenceScope_EVIDENCE_SCOPE_POOL EvidenceScope = 1
+ EvidenceScope_EVIDENCE_SCOPE_CLUSTER EvidenceScope = 2
+)
+
+// Enum value maps for EvidenceScope.
+var (
+ EvidenceScope_name = map[int32]string{
+ 0: "EVIDENCE_SCOPE_UNSPECIFIED",
+ 1: "EVIDENCE_SCOPE_POOL",
+ 2: "EVIDENCE_SCOPE_CLUSTER",
+ }
+ EvidenceScope_value = map[string]int32{
+ "EVIDENCE_SCOPE_UNSPECIFIED": 0,
+ "EVIDENCE_SCOPE_POOL": 1,
+ "EVIDENCE_SCOPE_CLUSTER": 2,
+ }
+)
+
+func (x EvidenceScope) Enum() *EvidenceScope {
+ p := new(EvidenceScope)
+ *p = x
+ return p
+}
+
+func (x EvidenceScope) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EvidenceScope) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[15].Descriptor()
+}
+
+func (EvidenceScope) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[15]
+}
+
+func (x EvidenceScope) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EvidenceScope.Descriptor instead.
+func (EvidenceScope) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{15}
}
type TargetFilterType int32
@@ -413,11 +1018,11 @@ func (x TargetFilterType) String() string {
}
func (TargetFilterType) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[6].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[16].Descriptor()
}
func (TargetFilterType) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[6]
+ return &file_api_v1_recommendation_proto_enumTypes[16]
}
func (x TargetFilterType) Number() protoreflect.EnumNumber {
@@ -426,7 +1031,7 @@ func (x TargetFilterType) Number() protoreflect.EnumNumber {
// Deprecated: Use TargetFilterType.Descriptor instead.
func (TargetFilterType) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{6}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{16}
}
type InstanceStorePolicy int32
@@ -456,11 +1061,11 @@ func (x InstanceStorePolicy) String() string {
}
func (InstanceStorePolicy) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[7].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[17].Descriptor()
}
func (InstanceStorePolicy) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[7]
+ return &file_api_v1_recommendation_proto_enumTypes[17]
}
func (x InstanceStorePolicy) Number() protoreflect.EnumNumber {
@@ -469,7 +1074,7 @@ func (x InstanceStorePolicy) Number() protoreflect.EnumNumber {
// Deprecated: Use InstanceStorePolicy.Descriptor instead.
func (InstanceStorePolicy) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{7}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{17}
}
type ActionTrigger int32
@@ -508,11 +1113,11 @@ func (x ActionTrigger) String() string {
}
func (ActionTrigger) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[8].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[18].Descriptor()
}
func (ActionTrigger) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[8]
+ return &file_api_v1_recommendation_proto_enumTypes[18]
}
func (x ActionTrigger) Number() protoreflect.EnumNumber {
@@ -521,7 +1126,7 @@ func (x ActionTrigger) Number() protoreflect.EnumNumber {
// Deprecated: Use ActionTrigger.Descriptor instead.
func (ActionTrigger) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{8}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{18}
}
type WorkloadDetectionTrigger int32
@@ -560,11 +1165,11 @@ func (x WorkloadDetectionTrigger) String() string {
}
func (WorkloadDetectionTrigger) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[9].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[19].Descriptor()
}
func (WorkloadDetectionTrigger) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[9]
+ return &file_api_v1_recommendation_proto_enumTypes[19]
}
func (x WorkloadDetectionTrigger) Number() protoreflect.EnumNumber {
@@ -573,7 +1178,7 @@ func (x WorkloadDetectionTrigger) Number() protoreflect.EnumNumber {
// Deprecated: Use WorkloadDetectionTrigger.Descriptor instead.
func (WorkloadDetectionTrigger) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{9}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{19}
}
type NodeGroupDetectionTrigger int32
@@ -606,11 +1211,11 @@ func (x NodeGroupDetectionTrigger) String() string {
}
func (NodeGroupDetectionTrigger) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[10].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[20].Descriptor()
}
func (NodeGroupDetectionTrigger) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[10]
+ return &file_api_v1_recommendation_proto_enumTypes[20]
}
func (x NodeGroupDetectionTrigger) Number() protoreflect.EnumNumber {
@@ -619,7 +1224,7 @@ func (x NodeGroupDetectionTrigger) Number() protoreflect.EnumNumber {
// Deprecated: Use NodeGroupDetectionTrigger.Descriptor instead.
func (NodeGroupDetectionTrigger) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{10}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{20}
}
type NodeGroupActionsAllowed int32
@@ -664,11 +1269,11 @@ func (x NodeGroupActionsAllowed) String() string {
}
func (NodeGroupActionsAllowed) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[11].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[21].Descriptor()
}
func (NodeGroupActionsAllowed) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[11]
+ return &file_api_v1_recommendation_proto_enumTypes[21]
}
func (x NodeGroupActionsAllowed) Number() protoreflect.EnumNumber {
@@ -677,7 +1282,7 @@ func (x NodeGroupActionsAllowed) Number() protoreflect.EnumNumber {
// Deprecated: Use NodeGroupActionsAllowed.Descriptor instead.
func (NodeGroupActionsAllowed) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{11}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{21}
}
type RecommendationMode int32
@@ -716,11 +1321,11 @@ func (x RecommendationMode) String() string {
}
func (RecommendationMode) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[12].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[22].Descriptor()
}
func (RecommendationMode) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[12]
+ return &file_api_v1_recommendation_proto_enumTypes[22]
}
func (x RecommendationMode) Number() protoreflect.EnumNumber {
@@ -729,43 +1334,55 @@ func (x RecommendationMode) Number() protoreflect.EnumNumber {
// Deprecated: Use RecommendationMode.Descriptor instead.
func (RecommendationMode) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{12}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{22}
}
type RecommendationType int32
const (
- RecommendationType_RECOMMENDATION_TYPE_UNSPECIFIED RecommendationType = 0
- RecommendationType_RECOMMENDATION_TYPE_WORKLOAD RecommendationType = 1
- RecommendationType_RECOMMENDATION_TYPE_NODE_GROUP RecommendationType = 2
- RecommendationType_RECOMMENDATION_TYPE_NODE_CRD RecommendationType = 3
- RecommendationType_RECOMMENDATION_TYPE_GENERIC_RESOURCE RecommendationType = 4
- RecommendationType_RECOMMENDATION_TYPE_PVC_STORAGE RecommendationType = 5
- RecommendationType_RECOMMENDATION_TYPE_WORKLOAD_RULE RecommendationType = 6
- RecommendationType_RECOMMENDATION_TYPE_KARPENTER_SETTINGS RecommendationType = 7
+ RecommendationType_RECOMMENDATION_TYPE_UNSPECIFIED RecommendationType = 0
+ RecommendationType_RECOMMENDATION_TYPE_WORKLOAD RecommendationType = 1
+ RecommendationType_RECOMMENDATION_TYPE_NODE_GROUP RecommendationType = 2
+ RecommendationType_RECOMMENDATION_TYPE_NODE_CRD RecommendationType = 3
+ RecommendationType_RECOMMENDATION_TYPE_GENERIC_RESOURCE RecommendationType = 4
+ RecommendationType_RECOMMENDATION_TYPE_PVC_STORAGE RecommendationType = 5
+ RecommendationType_RECOMMENDATION_TYPE_WORKLOAD_RULE RecommendationType = 6
+ RecommendationType_RECOMMENDATION_TYPE_KARPENTER_SETTINGS RecommendationType = 7
+ RecommendationType_RECOMMENDATION_TYPE_SNAPSHOT_CRD RecommendationType = 8
+ RecommendationType_RECOMMENDATION_TYPE_FORENSIC_SNAPSHOT_CRD RecommendationType = 9
+ RecommendationType_RECOMMENDATION_TYPE_HPA_CONNECTOR RecommendationType = 10
+ RecommendationType_RECOMMENDATION_TYPE_SCHEDULER_POLICY RecommendationType = 11
)
// Enum value maps for RecommendationType.
var (
RecommendationType_name = map[int32]string{
- 0: "RECOMMENDATION_TYPE_UNSPECIFIED",
- 1: "RECOMMENDATION_TYPE_WORKLOAD",
- 2: "RECOMMENDATION_TYPE_NODE_GROUP",
- 3: "RECOMMENDATION_TYPE_NODE_CRD",
- 4: "RECOMMENDATION_TYPE_GENERIC_RESOURCE",
- 5: "RECOMMENDATION_TYPE_PVC_STORAGE",
- 6: "RECOMMENDATION_TYPE_WORKLOAD_RULE",
- 7: "RECOMMENDATION_TYPE_KARPENTER_SETTINGS",
+ 0: "RECOMMENDATION_TYPE_UNSPECIFIED",
+ 1: "RECOMMENDATION_TYPE_WORKLOAD",
+ 2: "RECOMMENDATION_TYPE_NODE_GROUP",
+ 3: "RECOMMENDATION_TYPE_NODE_CRD",
+ 4: "RECOMMENDATION_TYPE_GENERIC_RESOURCE",
+ 5: "RECOMMENDATION_TYPE_PVC_STORAGE",
+ 6: "RECOMMENDATION_TYPE_WORKLOAD_RULE",
+ 7: "RECOMMENDATION_TYPE_KARPENTER_SETTINGS",
+ 8: "RECOMMENDATION_TYPE_SNAPSHOT_CRD",
+ 9: "RECOMMENDATION_TYPE_FORENSIC_SNAPSHOT_CRD",
+ 10: "RECOMMENDATION_TYPE_HPA_CONNECTOR",
+ 11: "RECOMMENDATION_TYPE_SCHEDULER_POLICY",
}
RecommendationType_value = map[string]int32{
- "RECOMMENDATION_TYPE_UNSPECIFIED": 0,
- "RECOMMENDATION_TYPE_WORKLOAD": 1,
- "RECOMMENDATION_TYPE_NODE_GROUP": 2,
- "RECOMMENDATION_TYPE_NODE_CRD": 3,
- "RECOMMENDATION_TYPE_GENERIC_RESOURCE": 4,
- "RECOMMENDATION_TYPE_PVC_STORAGE": 5,
- "RECOMMENDATION_TYPE_WORKLOAD_RULE": 6,
- "RECOMMENDATION_TYPE_KARPENTER_SETTINGS": 7,
+ "RECOMMENDATION_TYPE_UNSPECIFIED": 0,
+ "RECOMMENDATION_TYPE_WORKLOAD": 1,
+ "RECOMMENDATION_TYPE_NODE_GROUP": 2,
+ "RECOMMENDATION_TYPE_NODE_CRD": 3,
+ "RECOMMENDATION_TYPE_GENERIC_RESOURCE": 4,
+ "RECOMMENDATION_TYPE_PVC_STORAGE": 5,
+ "RECOMMENDATION_TYPE_WORKLOAD_RULE": 6,
+ "RECOMMENDATION_TYPE_KARPENTER_SETTINGS": 7,
+ "RECOMMENDATION_TYPE_SNAPSHOT_CRD": 8,
+ "RECOMMENDATION_TYPE_FORENSIC_SNAPSHOT_CRD": 9,
+ "RECOMMENDATION_TYPE_HPA_CONNECTOR": 10,
+ "RECOMMENDATION_TYPE_SCHEDULER_POLICY": 11,
}
)
@@ -780,11 +1397,11 @@ func (x RecommendationType) String() string {
}
func (RecommendationType) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[13].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[23].Descriptor()
}
func (RecommendationType) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[13]
+ return &file_api_v1_recommendation_proto_enumTypes[23]
}
func (x RecommendationType) Number() protoreflect.EnumNumber {
@@ -793,7 +1410,7 @@ func (x RecommendationType) Number() protoreflect.EnumNumber {
// Deprecated: Use RecommendationType.Descriptor instead.
func (RecommendationType) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{13}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{23}
}
type HPAMetricType int32
@@ -838,11 +1455,11 @@ func (x HPAMetricType) String() string {
}
func (HPAMetricType) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[14].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[24].Descriptor()
}
func (HPAMetricType) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[14]
+ return &file_api_v1_recommendation_proto_enumTypes[24]
}
func (x HPAMetricType) Number() protoreflect.EnumNumber {
@@ -851,7 +1468,7 @@ func (x HPAMetricType) Number() protoreflect.EnumNumber {
// Deprecated: Use HPAMetricType.Descriptor instead.
func (HPAMetricType) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{14}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{24}
}
type PvcOperationType int32
@@ -887,11 +1504,11 @@ func (x PvcOperationType) String() string {
}
func (PvcOperationType) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[15].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[25].Descriptor()
}
func (PvcOperationType) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[15]
+ return &file_api_v1_recommendation_proto_enumTypes[25]
}
func (x PvcOperationType) Number() protoreflect.EnumNumber {
@@ -900,7 +1517,186 @@ func (x PvcOperationType) Number() protoreflect.EnumNumber {
// Deprecated: Use PvcOperationType.Descriptor instead.
func (PvcOperationType) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{15}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{25}
+}
+
+// WorkloadRuleAction is what should happen to a policy's already-generated
+// rules when the policy is disabled. Modeled as an enum (not a bool) because
+// KEEP/REMOVE won't stay the only two options.
+type WorkloadRuleAction int32
+
+const (
+ WorkloadRuleAction_WORKLOAD_RULE_ACTION_UNSPECIFIED WorkloadRuleAction = 0
+ // Detach: rules survive and keep optimizing, but revert to
+ // auto_optimization ownership instead of being regenerated by this policy.
+ WorkloadRuleAction_WORKLOAD_RULE_ACTION_KEEP WorkloadRuleAction = 1
+ // Delete the rules and their in-cluster CRDs; workloads are no longer
+ // optimized by them.
+ WorkloadRuleAction_WORKLOAD_RULE_ACTION_REMOVE WorkloadRuleAction = 2
+ // Detach AND disable: same detach semantics as KEEP, but the rules become
+ // full no-ops (disabled=true) until manually re-enabled. Re-enabling this
+ // policy does NOT automatically re-enable them.
+ WorkloadRuleAction_WORKLOAD_RULE_ACTION_DISABLE WorkloadRuleAction = 3
+)
+
+// Enum value maps for WorkloadRuleAction.
+var (
+ WorkloadRuleAction_name = map[int32]string{
+ 0: "WORKLOAD_RULE_ACTION_UNSPECIFIED",
+ 1: "WORKLOAD_RULE_ACTION_KEEP",
+ 2: "WORKLOAD_RULE_ACTION_REMOVE",
+ 3: "WORKLOAD_RULE_ACTION_DISABLE",
+ }
+ WorkloadRuleAction_value = map[string]int32{
+ "WORKLOAD_RULE_ACTION_UNSPECIFIED": 0,
+ "WORKLOAD_RULE_ACTION_KEEP": 1,
+ "WORKLOAD_RULE_ACTION_REMOVE": 2,
+ "WORKLOAD_RULE_ACTION_DISABLE": 3,
+ }
+)
+
+func (x WorkloadRuleAction) Enum() *WorkloadRuleAction {
+ p := new(WorkloadRuleAction)
+ *p = x
+ return p
+}
+
+func (x WorkloadRuleAction) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (WorkloadRuleAction) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[26].Descriptor()
+}
+
+func (WorkloadRuleAction) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[26]
+}
+
+func (x WorkloadRuleAction) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use WorkloadRuleAction.Descriptor instead.
+func (WorkloadRuleAction) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{26}
+}
+
+type WorkloadOptimizationPolicyMatchStatus int32
+
+const (
+ WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_UNSPECIFIED WorkloadOptimizationPolicyMatchStatus = 0
+ // No workload_rule exists yet for this workload — saving the policy as
+ // configured would create one.
+ WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_NEW_RULE WorkloadOptimizationPolicyMatchStatus = 1
+ // A rule already exists and is owned by this policy (edit mode only) —
+ // saving would leave it as-is (recalibration happens on its own cadence).
+ WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_ALREADY_OWNED_BY_THIS_POLICY WorkloadOptimizationPolicyMatchStatus = 2
+ // Matched the selector, but a manually-managed rule already exists —
+ // this policy will never touch it.
+ WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_MANUAL WorkloadOptimizationPolicyMatchStatus = 3
+ // Matched the selector, but a CRD-managed (kubectl-applied) rule already
+ // exists — this policy will never touch it.
+ WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_CRD WorkloadOptimizationPolicyMatchStatus = 4
+ // Matched the selector, but a different policy already owns the rule —
+ // this policy will not steal it. See owning_policy_id/owning_policy_name.
+ WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_OTHER_POLICY WorkloadOptimizationPolicyMatchStatus = 5
+)
+
+// Enum value maps for WorkloadOptimizationPolicyMatchStatus.
+var (
+ WorkloadOptimizationPolicyMatchStatus_name = map[int32]string{
+ 0: "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_UNSPECIFIED",
+ 1: "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_NEW_RULE",
+ 2: "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_ALREADY_OWNED_BY_THIS_POLICY",
+ 3: "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_MANUAL",
+ 4: "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_CRD",
+ 5: "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_OTHER_POLICY",
+ }
+ WorkloadOptimizationPolicyMatchStatus_value = map[string]int32{
+ "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_UNSPECIFIED": 0,
+ "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_NEW_RULE": 1,
+ "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_ALREADY_OWNED_BY_THIS_POLICY": 2,
+ "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_MANUAL": 3,
+ "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_CRD": 4,
+ "WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_OTHER_POLICY": 5,
+ }
+)
+
+func (x WorkloadOptimizationPolicyMatchStatus) Enum() *WorkloadOptimizationPolicyMatchStatus {
+ p := new(WorkloadOptimizationPolicyMatchStatus)
+ *p = x
+ return p
+}
+
+func (x WorkloadOptimizationPolicyMatchStatus) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (WorkloadOptimizationPolicyMatchStatus) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[27].Descriptor()
+}
+
+func (WorkloadOptimizationPolicyMatchStatus) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[27]
+}
+
+func (x WorkloadOptimizationPolicyMatchStatus) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use WorkloadOptimizationPolicyMatchStatus.Descriptor instead.
+func (WorkloadOptimizationPolicyMatchStatus) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{27}
+}
+
+type SchedulerUnhealthyReason int32
+
+const (
+ SchedulerUnhealthyReason_SCHEDULER_UNHEALTHY_REASON_UNSPECIFIED SchedulerUnhealthyReason = 0
+ SchedulerUnhealthyReason_SCHEDULER_UNHEALTHY_REASON_HEALTHZ_FAILED SchedulerUnhealthyReason = 1
+ SchedulerUnhealthyReason_SCHEDULER_UNHEALTHY_REASON_PENDING_PODS_STUCK SchedulerUnhealthyReason = 2
+)
+
+// Enum value maps for SchedulerUnhealthyReason.
+var (
+ SchedulerUnhealthyReason_name = map[int32]string{
+ 0: "SCHEDULER_UNHEALTHY_REASON_UNSPECIFIED",
+ 1: "SCHEDULER_UNHEALTHY_REASON_HEALTHZ_FAILED",
+ 2: "SCHEDULER_UNHEALTHY_REASON_PENDING_PODS_STUCK",
+ }
+ SchedulerUnhealthyReason_value = map[string]int32{
+ "SCHEDULER_UNHEALTHY_REASON_UNSPECIFIED": 0,
+ "SCHEDULER_UNHEALTHY_REASON_HEALTHZ_FAILED": 1,
+ "SCHEDULER_UNHEALTHY_REASON_PENDING_PODS_STUCK": 2,
+ }
+)
+
+func (x SchedulerUnhealthyReason) Enum() *SchedulerUnhealthyReason {
+ p := new(SchedulerUnhealthyReason)
+ *p = x
+ return p
+}
+
+func (x SchedulerUnhealthyReason) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SchedulerUnhealthyReason) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[28].Descriptor()
+}
+
+func (SchedulerUnhealthyReason) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[28]
+}
+
+func (x SchedulerUnhealthyReason) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SchedulerUnhealthyReason.Descriptor instead.
+func (SchedulerUnhealthyReason) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{28}
}
// WorkloadRuleSource identifies who created/last-modified a WorkloadRule.
@@ -959,11 +1755,11 @@ func (x WorkloadRuleSource) String() string {
}
func (WorkloadRuleSource) Descriptor() protoreflect.EnumDescriptor {
- return file_api_v1_recommendation_proto_enumTypes[16].Descriptor()
+ return file_api_v1_recommendation_proto_enumTypes[29].Descriptor()
}
func (WorkloadRuleSource) Type() protoreflect.EnumType {
- return &file_api_v1_recommendation_proto_enumTypes[16]
+ return &file_api_v1_recommendation_proto_enumTypes[29]
}
func (x WorkloadRuleSource) Number() protoreflect.EnumNumber {
@@ -972,7 +1768,279 @@ func (x WorkloadRuleSource) Number() protoreflect.EnumNumber {
// Deprecated: Use WorkloadRuleSource.Descriptor instead.
func (WorkloadRuleSource) EnumDescriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{16}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{29}
+}
+
+// NodeCheckpointLabelState describes the last-known per-node apply outcome for
+// the checkpoint-restore label. PENDING/FAILED reflect the most recent
+// generic_resource_recommendations row; NONE means we have no apply attempt
+// on record for the node — has_label may still be true (label inherited via
+// the Karpenter NodePool template, or set manually).
+type NodeCheckpointLabelState int32
+
+const (
+ NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_UNSPECIFIED NodeCheckpointLabelState = 0
+ NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_NONE NodeCheckpointLabelState = 1
+ NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_PENDING NodeCheckpointLabelState = 2
+ NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_APPLIED NodeCheckpointLabelState = 3
+ NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_FAILED NodeCheckpointLabelState = 4
+ // REJECTED lumps every other terminal status (superseded, blocked, ignored)
+ // — the UI surfaces them collectively as "did not apply".
+ NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_REJECTED NodeCheckpointLabelState = 5
+)
+
+// Enum value maps for NodeCheckpointLabelState.
+var (
+ NodeCheckpointLabelState_name = map[int32]string{
+ 0: "NODE_CHECKPOINT_LABEL_STATE_UNSPECIFIED",
+ 1: "NODE_CHECKPOINT_LABEL_STATE_NONE",
+ 2: "NODE_CHECKPOINT_LABEL_STATE_PENDING",
+ 3: "NODE_CHECKPOINT_LABEL_STATE_APPLIED",
+ 4: "NODE_CHECKPOINT_LABEL_STATE_FAILED",
+ 5: "NODE_CHECKPOINT_LABEL_STATE_REJECTED",
+ }
+ NodeCheckpointLabelState_value = map[string]int32{
+ "NODE_CHECKPOINT_LABEL_STATE_UNSPECIFIED": 0,
+ "NODE_CHECKPOINT_LABEL_STATE_NONE": 1,
+ "NODE_CHECKPOINT_LABEL_STATE_PENDING": 2,
+ "NODE_CHECKPOINT_LABEL_STATE_APPLIED": 3,
+ "NODE_CHECKPOINT_LABEL_STATE_FAILED": 4,
+ "NODE_CHECKPOINT_LABEL_STATE_REJECTED": 5,
+ }
+)
+
+func (x NodeCheckpointLabelState) Enum() *NodeCheckpointLabelState {
+ p := new(NodeCheckpointLabelState)
+ *p = x
+ return p
+}
+
+func (x NodeCheckpointLabelState) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (NodeCheckpointLabelState) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[30].Descriptor()
+}
+
+func (NodeCheckpointLabelState) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[30]
+}
+
+func (x NodeCheckpointLabelState) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use NodeCheckpointLabelState.Descriptor instead.
+func (NodeCheckpointLabelState) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{30}
+}
+
+type ForensicPostSnapshotAction int32
+
+const (
+ ForensicPostSnapshotAction_FORENSIC_POST_SNAPSHOT_ACTION_UNSPECIFIED ForensicPostSnapshotAction = 0
+ ForensicPostSnapshotAction_FORENSIC_POST_SNAPSHOT_ACTION_NONE ForensicPostSnapshotAction = 1
+ ForensicPostSnapshotAction_FORENSIC_POST_SNAPSHOT_ACTION_DELETE_POD ForensicPostSnapshotAction = 2
+)
+
+// Enum value maps for ForensicPostSnapshotAction.
+var (
+ ForensicPostSnapshotAction_name = map[int32]string{
+ 0: "FORENSIC_POST_SNAPSHOT_ACTION_UNSPECIFIED",
+ 1: "FORENSIC_POST_SNAPSHOT_ACTION_NONE",
+ 2: "FORENSIC_POST_SNAPSHOT_ACTION_DELETE_POD",
+ }
+ ForensicPostSnapshotAction_value = map[string]int32{
+ "FORENSIC_POST_SNAPSHOT_ACTION_UNSPECIFIED": 0,
+ "FORENSIC_POST_SNAPSHOT_ACTION_NONE": 1,
+ "FORENSIC_POST_SNAPSHOT_ACTION_DELETE_POD": 2,
+ }
+)
+
+func (x ForensicPostSnapshotAction) Enum() *ForensicPostSnapshotAction {
+ p := new(ForensicPostSnapshotAction)
+ *p = x
+ return p
+}
+
+func (x ForensicPostSnapshotAction) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ForensicPostSnapshotAction) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[31].Descriptor()
+}
+
+func (ForensicPostSnapshotAction) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[31]
+}
+
+func (x ForensicPostSnapshotAction) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ForensicPostSnapshotAction.Descriptor instead.
+func (ForensicPostSnapshotAction) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{31}
+}
+
+// DELETED: no live enrollments existed (or force) — policy soft-deleted now.
+// REVERTING: reverts initiated; delete finalizes when acks arrive.
+type DeleteSchedulerPolicyResponse_Outcome int32
+
+const (
+ DeleteSchedulerPolicyResponse_OUTCOME_UNSPECIFIED DeleteSchedulerPolicyResponse_Outcome = 0
+ DeleteSchedulerPolicyResponse_OUTCOME_DELETED DeleteSchedulerPolicyResponse_Outcome = 1
+ DeleteSchedulerPolicyResponse_OUTCOME_REVERTING DeleteSchedulerPolicyResponse_Outcome = 2
+)
+
+// Enum value maps for DeleteSchedulerPolicyResponse_Outcome.
+var (
+ DeleteSchedulerPolicyResponse_Outcome_name = map[int32]string{
+ 0: "OUTCOME_UNSPECIFIED",
+ 1: "OUTCOME_DELETED",
+ 2: "OUTCOME_REVERTING",
+ }
+ DeleteSchedulerPolicyResponse_Outcome_value = map[string]int32{
+ "OUTCOME_UNSPECIFIED": 0,
+ "OUTCOME_DELETED": 1,
+ "OUTCOME_REVERTING": 2,
+ }
+)
+
+func (x DeleteSchedulerPolicyResponse_Outcome) Enum() *DeleteSchedulerPolicyResponse_Outcome {
+ p := new(DeleteSchedulerPolicyResponse_Outcome)
+ *p = x
+ return p
+}
+
+func (x DeleteSchedulerPolicyResponse_Outcome) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (DeleteSchedulerPolicyResponse_Outcome) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[32].Descriptor()
+}
+
+func (DeleteSchedulerPolicyResponse_Outcome) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[32]
+}
+
+func (x DeleteSchedulerPolicyResponse_Outcome) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DeleteSchedulerPolicyResponse_Outcome.Descriptor instead.
+func (DeleteSchedulerPolicyResponse_Outcome) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{418, 0}
+}
+
+type SchedulerPolicyTargetMatch_Status int32
+
+const (
+ SchedulerPolicyTargetMatch_STATUS_UNSPECIFIED SchedulerPolicyTargetMatch_Status = 0
+ SchedulerPolicyTargetMatch_NEW_ENROLLMENT SchedulerPolicyTargetMatch_Status = 1 // would enroll
+ SchedulerPolicyTargetMatch_ALREADY_ENROLLED_THIS_POLICY SchedulerPolicyTargetMatch_Status = 2 // no change
+ SchedulerPolicyTargetMatch_ENROLLED_BY_OTHER_POLICY SchedulerPolicyTargetMatch_Status = 3 // precedence: stays with its owner
+)
+
+// Enum value maps for SchedulerPolicyTargetMatch_Status.
+var (
+ SchedulerPolicyTargetMatch_Status_name = map[int32]string{
+ 0: "STATUS_UNSPECIFIED",
+ 1: "NEW_ENROLLMENT",
+ 2: "ALREADY_ENROLLED_THIS_POLICY",
+ 3: "ENROLLED_BY_OTHER_POLICY",
+ }
+ SchedulerPolicyTargetMatch_Status_value = map[string]int32{
+ "STATUS_UNSPECIFIED": 0,
+ "NEW_ENROLLMENT": 1,
+ "ALREADY_ENROLLED_THIS_POLICY": 2,
+ "ENROLLED_BY_OTHER_POLICY": 3,
+ }
+)
+
+func (x SchedulerPolicyTargetMatch_Status) Enum() *SchedulerPolicyTargetMatch_Status {
+ p := new(SchedulerPolicyTargetMatch_Status)
+ *p = x
+ return p
+}
+
+func (x SchedulerPolicyTargetMatch_Status) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SchedulerPolicyTargetMatch_Status) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[33].Descriptor()
+}
+
+func (SchedulerPolicyTargetMatch_Status) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[33]
+}
+
+func (x SchedulerPolicyTargetMatch_Status) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SchedulerPolicyTargetMatch_Status.Descriptor instead.
+func (SchedulerPolicyTargetMatch_Status) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{420, 0}
+}
+
+type SchedulerPolicyEnrollment_State int32
+
+const (
+ SchedulerPolicyEnrollment_STATE_UNSPECIFIED SchedulerPolicyEnrollment_State = 0
+ SchedulerPolicyEnrollment_STATE_ACTIVE SchedulerPolicyEnrollment_State = 1
+ SchedulerPolicyEnrollment_STATE_PENDING_REVERT SchedulerPolicyEnrollment_State = 2
+ SchedulerPolicyEnrollment_STATE_REVERTED SchedulerPolicyEnrollment_State = 3
+ SchedulerPolicyEnrollment_STATE_ABANDONED SchedulerPolicyEnrollment_State = 4
+)
+
+// Enum value maps for SchedulerPolicyEnrollment_State.
+var (
+ SchedulerPolicyEnrollment_State_name = map[int32]string{
+ 0: "STATE_UNSPECIFIED",
+ 1: "STATE_ACTIVE",
+ 2: "STATE_PENDING_REVERT",
+ 3: "STATE_REVERTED",
+ 4: "STATE_ABANDONED",
+ }
+ SchedulerPolicyEnrollment_State_value = map[string]int32{
+ "STATE_UNSPECIFIED": 0,
+ "STATE_ACTIVE": 1,
+ "STATE_PENDING_REVERT": 2,
+ "STATE_REVERTED": 3,
+ "STATE_ABANDONED": 4,
+ }
+)
+
+func (x SchedulerPolicyEnrollment_State) Enum() *SchedulerPolicyEnrollment_State {
+ p := new(SchedulerPolicyEnrollment_State)
+ *p = x
+ return p
+}
+
+func (x SchedulerPolicyEnrollment_State) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SchedulerPolicyEnrollment_State) Descriptor() protoreflect.EnumDescriptor {
+ return file_api_v1_recommendation_proto_enumTypes[34].Descriptor()
+}
+
+func (SchedulerPolicyEnrollment_State) Type() protoreflect.EnumType {
+ return &file_api_v1_recommendation_proto_enumTypes[34]
+}
+
+func (x SchedulerPolicyEnrollment_State) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SchedulerPolicyEnrollment_State.Descriptor instead.
+func (SchedulerPolicyEnrollment_State) EnumDescriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{423, 0}
}
type GetRecommendationsRequest struct {
@@ -1971,14 +3039,8 @@ type GetPreviewWorkloadRecommendationRequest struct {
PolicyId string `protobuf:"bytes,7,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
// Moment in time for which the recommendations are requested
// If not set, the current time is used
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // Duration to look back for vertical scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 24 hours
- VpaLookback *durationpb.Duration `protobuf:"bytes,9,opt,name=vpa_lookback,json=vpaLookback,proto3" json:"vpa_lookback,omitempty"`
- // Duration to look back for horizontal scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 5 minutes
- HpaLookback *durationpb.Duration `protobuf:"bytes,10,opt,name=hpa_lookback,json=hpaLookback,proto3" json:"hpa_lookback,omitempty"`
- IncludeDeleted bool `protobuf:"varint,21,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ IncludeDeleted bool `protobuf:"varint,21,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
}
func (x *GetPreviewWorkloadRecommendationRequest) Reset() {
@@ -2069,20 +3131,6 @@ func (x *GetPreviewWorkloadRecommendationRequest) GetTimestamp() *timestamppb.Ti
return nil
}
-func (x *GetPreviewWorkloadRecommendationRequest) GetVpaLookback() *durationpb.Duration {
- if x != nil {
- return x.VpaLookback
- }
- return nil
-}
-
-func (x *GetPreviewWorkloadRecommendationRequest) GetHpaLookback() *durationpb.Duration {
- if x != nil {
- return x.HpaLookback
- }
- return nil
-}
-
func (x *GetPreviewWorkloadRecommendationRequest) GetIncludeDeleted() bool {
if x != nil {
return x.IncludeDeleted
@@ -2148,14 +3196,8 @@ type GetPreviewWorkloadRecommendationsRequest struct {
Workloads []*WorkloadIdentifier `protobuf:"bytes,4,rep,name=workloads,proto3" json:"workloads,omitempty"`
// Moment in time for which the recommendations are requested
// If not set, the current time is used
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // Duration to look back for vertical scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 24 hours
- VpaLookback *durationpb.Duration `protobuf:"bytes,6,opt,name=vpa_lookback,json=vpaLookback,proto3" json:"vpa_lookback,omitempty"`
- // Duration to look back for horizontal scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 5 minutes
- HpaLookback *durationpb.Duration `protobuf:"bytes,7,opt,name=hpa_lookback,json=hpaLookback,proto3" json:"hpa_lookback,omitempty"`
- IncludeDeleted bool `protobuf:"varint,21,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ IncludeDeleted bool `protobuf:"varint,21,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
}
func (x *GetPreviewWorkloadRecommendationsRequest) Reset() {
@@ -2225,20 +3267,6 @@ func (x *GetPreviewWorkloadRecommendationsRequest) GetTimestamp() *timestamppb.T
return nil
}
-func (x *GetPreviewWorkloadRecommendationsRequest) GetVpaLookback() *durationpb.Duration {
- if x != nil {
- return x.VpaLookback
- }
- return nil
-}
-
-func (x *GetPreviewWorkloadRecommendationsRequest) GetHpaLookback() *durationpb.Duration {
- if x != nil {
- return x.HpaLookback
- }
- return nil
-}
-
func (x *GetPreviewWorkloadRecommendationsRequest) GetIncludeDeleted() bool {
if x != nil {
return x.IncludeDeleted
@@ -5077,17 +6105,20 @@ type WorkloadPolicyTarget struct {
Priority int32 `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`
Enabled bool `protobuf:"varint,8,opt,name=enabled,proto3" json:"enabled,omitempty"`
// Targeting criteria (AND logic between non-null fields)
- NamespaceSelector *LabelSelector `protobuf:"bytes,11,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"` // Target namespaces by labels
- WorkloadSelector *LabelSelector `protobuf:"bytes,12,opt,name=workload_selector,json=workloadSelector,proto3,oneof" json:"workload_selector,omitempty"` // Target workloads by labels
- KindFilter []K8SObjectKind `protobuf:"varint,13,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"` // Target specific workload kinds
- NamePattern *RegexPattern `protobuf:"bytes,14,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
- AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
- WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"` // Target specific workload kinds
- NamespacePattern *RegexPattern `protobuf:"bytes,17,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
- NodeGroupNames []string `protobuf:"bytes,21,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // target workloads running on specific nodes
- ClusterIds []string `protobuf:"bytes,31,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ NamespaceSelector *LabelSelector `protobuf:"bytes,11,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"` // Target namespaces by labels
+ WorkloadSelector *LabelSelector `protobuf:"bytes,12,opt,name=workload_selector,json=workloadSelector,proto3,oneof" json:"workload_selector,omitempty"` // Target workloads by labels
+ KindFilter []K8SObjectKind `protobuf:"varint,13,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"` // Target specific workload kinds
+ NamePattern *RegexPattern `protobuf:"bytes,14,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
+ AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
+ WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"` // Target specific workload kinds
+ NamespacePattern *RegexPattern `protobuf:"bytes,17,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ WorkloadNamesNotIn []string `protobuf:"bytes,18,rep,name=workload_names_not_in,json=workloadNamesNotIn,proto3" json:"workload_names_not_in,omitempty"` // Exclude specific workload names
+ KindFilterNotIn []K8SObjectKind `protobuf:"varint,19,rep,packed,name=kind_filter_not_in,json=kindFilterNotIn,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter_not_in,omitempty"` // Exclude specific workload kinds
+ // Deprecated: Marked as deprecated in api/v1/recommendation.proto.
+ NodeGroupNames []string `protobuf:"bytes,21,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Deprecated: unused by any active target; removed from the UI.
+ ClusterIds []string `protobuf:"bytes,31,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
}
func (x *WorkloadPolicyTarget) Reset() {
@@ -5228,6 +6259,21 @@ func (x *WorkloadPolicyTarget) GetNamespacePattern() *RegexPattern {
return nil
}
+func (x *WorkloadPolicyTarget) GetWorkloadNamesNotIn() []string {
+ if x != nil {
+ return x.WorkloadNamesNotIn
+ }
+ return nil
+}
+
+func (x *WorkloadPolicyTarget) GetKindFilterNotIn() []K8SObjectKind {
+ if x != nil {
+ return x.KindFilterNotIn
+ }
+ return nil
+}
+
+// Deprecated: Marked as deprecated in api/v1/recommendation.proto.
func (x *WorkloadPolicyTarget) GetNodeGroupNames() []string {
if x != nil {
return x.NodeGroupNames
@@ -5276,8 +6322,11 @@ type CreateWorkloadPolicyTargetRequest struct {
NamePattern *RegexPattern `protobuf:"bytes,14,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
- NodeGroupNames []string `protobuf:"bytes,17,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
- NamespacePattern *RegexPattern `protobuf:"bytes,18,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ // Deprecated: Marked as deprecated in api/v1/recommendation.proto.
+ NodeGroupNames []string `protobuf:"bytes,17,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Deprecated: unused by any active target; removed from the UI.
+ NamespacePattern *RegexPattern `protobuf:"bytes,18,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ WorkloadNamesNotIn []string `protobuf:"bytes,19,rep,name=workload_names_not_in,json=workloadNamesNotIn,proto3" json:"workload_names_not_in,omitempty"` // Exclude specific workload names
+ KindFilterNotIn []K8SObjectKind `protobuf:"varint,20,rep,packed,name=kind_filter_not_in,json=kindFilterNotIn,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter_not_in,omitempty"` // Exclude specific workload kinds
ClusterIds []string `protobuf:"bytes,21,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
}
@@ -5405,6 +6454,7 @@ func (x *CreateWorkloadPolicyTargetRequest) GetWorkloadNames() []string {
return nil
}
+// Deprecated: Marked as deprecated in api/v1/recommendation.proto.
func (x *CreateWorkloadPolicyTargetRequest) GetNodeGroupNames() []string {
if x != nil {
return x.NodeGroupNames
@@ -5419,6 +6469,20 @@ func (x *CreateWorkloadPolicyTargetRequest) GetNamespacePattern() *RegexPattern
return nil
}
+func (x *CreateWorkloadPolicyTargetRequest) GetWorkloadNamesNotIn() []string {
+ if x != nil {
+ return x.WorkloadNamesNotIn
+ }
+ return nil
+}
+
+func (x *CreateWorkloadPolicyTargetRequest) GetKindFilterNotIn() []K8SObjectKind {
+ if x != nil {
+ return x.KindFilterNotIn
+ }
+ return nil
+}
+
func (x *CreateWorkloadPolicyTargetRequest) GetClusterIds() []string {
if x != nil {
return x.ClusterIds
@@ -5713,9 +6777,12 @@ type UpdateWorkloadPolicyTargetRequest struct {
NamePattern *RegexPattern `protobuf:"bytes,14,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
- NodeGroupNames []string `protobuf:"bytes,17,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
- NamespacePattern *RegexPattern `protobuf:"bytes,18,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
- PolicyId *string `protobuf:"bytes,21,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"` // should only be set when target needs to be attached to diff policy
+ // Deprecated: Marked as deprecated in api/v1/recommendation.proto.
+ NodeGroupNames []string `protobuf:"bytes,17,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Deprecated: unused by any active target; removed from the UI.
+ NamespacePattern *RegexPattern `protobuf:"bytes,18,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ WorkloadNamesNotIn []string `protobuf:"bytes,19,rep,name=workload_names_not_in,json=workloadNamesNotIn,proto3" json:"workload_names_not_in,omitempty"` // Exclude specific workload names
+ KindFilterNotIn []K8SObjectKind `protobuf:"varint,20,rep,packed,name=kind_filter_not_in,json=kindFilterNotIn,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter_not_in,omitempty"` // Exclude specific workload kinds
+ PolicyId *string `protobuf:"bytes,21,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"` // should only be set when target needs to be attached to diff policy
ClusterIds []string `protobuf:"bytes,31,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
}
@@ -5843,6 +6910,7 @@ func (x *UpdateWorkloadPolicyTargetRequest) GetWorkloadNames() []string {
return nil
}
+// Deprecated: Marked as deprecated in api/v1/recommendation.proto.
func (x *UpdateWorkloadPolicyTargetRequest) GetNodeGroupNames() []string {
if x != nil {
return x.NodeGroupNames
@@ -5857,6 +6925,20 @@ func (x *UpdateWorkloadPolicyTargetRequest) GetNamespacePattern() *RegexPattern
return nil
}
+func (x *UpdateWorkloadPolicyTargetRequest) GetWorkloadNamesNotIn() []string {
+ if x != nil {
+ return x.WorkloadNamesNotIn
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadPolicyTargetRequest) GetKindFilterNotIn() []K8SObjectKind {
+ if x != nil {
+ return x.KindFilterNotIn
+ }
+ return nil
+}
+
func (x *UpdateWorkloadPolicyTargetRequest) GetPolicyId() string {
if x != nil && x.PolicyId != nil {
return *x.PolicyId
@@ -6262,8 +7344,11 @@ type PreviewWorkloadPolicyTargetMatchesRequest struct {
NamePattern *RegexPattern `protobuf:"bytes,6,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
AnnotationSelector *LabelSelector `protobuf:"bytes,7,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
WorkloadNames []string `protobuf:"bytes,8,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
- NodeGroupNames []string `protobuf:"bytes,9,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
- NamespacePattern *RegexPattern `protobuf:"bytes,10,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ // Deprecated: Marked as deprecated in api/v1/recommendation.proto.
+ NodeGroupNames []string `protobuf:"bytes,9,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Deprecated: unused by any active target; removed from the UI.
+ NamespacePattern *RegexPattern `protobuf:"bytes,10,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ WorkloadNamesNotIn []string `protobuf:"bytes,11,rep,name=workload_names_not_in,json=workloadNamesNotIn,proto3" json:"workload_names_not_in,omitempty"` // Exclude specific workload names
+ KindFilterNotIn []K8SObjectKind `protobuf:"varint,12,rep,packed,name=kind_filter_not_in,json=kindFilterNotIn,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter_not_in,omitempty"` // Exclude specific workload kinds
}
func (x *PreviewWorkloadPolicyTargetMatchesRequest) Reset() {
@@ -6354,6 +7439,7 @@ func (x *PreviewWorkloadPolicyTargetMatchesRequest) GetWorkloadNames() []string
return nil
}
+// Deprecated: Marked as deprecated in api/v1/recommendation.proto.
func (x *PreviewWorkloadPolicyTargetMatchesRequest) GetNodeGroupNames() []string {
if x != nil {
return x.NodeGroupNames
@@ -6368,6 +7454,20 @@ func (x *PreviewWorkloadPolicyTargetMatchesRequest) GetNamespacePattern() *Regex
return nil
}
+func (x *PreviewWorkloadPolicyTargetMatchesRequest) GetWorkloadNamesNotIn() []string {
+ if x != nil {
+ return x.WorkloadNamesNotIn
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadPolicyTargetMatchesRequest) GetKindFilterNotIn() []K8SObjectKind {
+ if x != nil {
+ return x.KindFilterNotIn
+ }
+ return nil
+}
+
type PreviewWorkloadPolicyTargetMatchesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -6430,9 +7530,15 @@ type GetPreviewWorkloadPolicyTargetRecommendationsRequest struct {
AnnotationSelector *LabelSelector `protobuf:"bytes,8,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"` // Target workloads by annotations
WorkloadNames []string `protobuf:"bytes,9,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
NodeGroupNames []string `protobuf:"bytes,10,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
- NamespacePattern *RegexPattern `protobuf:"bytes,11,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ NamespacePattern *RegexPattern `protobuf:"bytes,11,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ WorkloadNamesNotIn []string `protobuf:"bytes,12,rep,name=workload_names_not_in,json=workloadNamesNotIn,proto3" json:"workload_names_not_in,omitempty"` // Exclude specific workload names
+ KindFilterNotIn []K8SObjectKind `protobuf:"varint,13,rep,packed,name=kind_filter_not_in,json=kindFilterNotIn,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter_not_in,omitempty"` // Exclude specific workload kinds
IncludeDeleted bool `protobuf:"varint,21,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
ClusterIds []string `protobuf:"bytes,31,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ // Priority of the previewed target; used to determine who wins when a
+ // competing target exists for the same workload. When absent, collision
+ // detection is skipped and collisions_by_workload_uid is empty.
+ Priority *int32 `protobuf:"varint,32,opt,name=priority,proto3,oneof" json:"priority,omitempty"`
}
func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) Reset() {
@@ -6537,6 +7643,20 @@ func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) GetNamespacePatte
return nil
}
+func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) GetWorkloadNamesNotIn() []string {
+ if x != nil {
+ return x.WorkloadNamesNotIn
+ }
+ return nil
+}
+
+func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) GetKindFilterNotIn() []K8SObjectKind {
+ if x != nil {
+ return x.KindFilterNotIn
+ }
+ return nil
+}
+
func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) GetIncludeDeleted() bool {
if x != nil {
return x.IncludeDeleted
@@ -6551,6 +7671,84 @@ func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) GetClusterIds() [
return nil
}
+func (x *GetPreviewWorkloadPolicyTargetRecommendationsRequest) GetPriority() int32 {
+ if x != nil && x.Priority != nil {
+ return *x.Priority
+ }
+ return 0
+}
+
+type WorkloadCollisionInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ PolicyName string `protobuf:"bytes,2,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"`
+ TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ TargetName string `protobuf:"bytes,4,opt,name=target_name,json=targetName,proto3" json:"target_name,omitempty"`
+}
+
+func (x *WorkloadCollisionInfo) Reset() {
+ *x = WorkloadCollisionInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[77]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadCollisionInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadCollisionInfo) ProtoMessage() {}
+
+func (x *WorkloadCollisionInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[77]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadCollisionInfo.ProtoReflect.Descriptor instead.
+func (*WorkloadCollisionInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{77}
+}
+
+func (x *WorkloadCollisionInfo) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *WorkloadCollisionInfo) GetPolicyName() string {
+ if x != nil {
+ return x.PolicyName
+ }
+ return ""
+}
+
+func (x *WorkloadCollisionInfo) GetTargetId() string {
+ if x != nil {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *WorkloadCollisionInfo) GetTargetName() string {
+ if x != nil {
+ return x.TargetName
+ }
+ return ""
+}
+
type GetPreviewWorkloadPolicyTargetRecommendationsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -6560,12 +7758,18 @@ type GetPreviewWorkloadPolicyTargetRecommendationsResponse struct {
WorkloadItems []*WorkloadItem `protobuf:"bytes,2,rep,name=workload_items,json=workloadItems,proto3" json:"workload_items,omitempty"`
// Map from workload UID to aggregated percentile summaries across all containers
WorkloadPercentiles map[string]*WorkloadPercentileSummary `protobuf:"bytes,3,rep,name=workload_percentiles,json=workloadPercentiles,proto3" json:"workload_percentiles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Workloads where a competing policy's target beats the previewed target.
+ // Absent entries mean the current policy wins or no competing target exists.
+ CollisionsByWorkloadUid map[string]*WorkloadCollisionInfo `protobuf:"bytes,4,rep,name=collisions_by_workload_uid,json=collisionsByWorkloadUid,proto3" json:"collisions_by_workload_uid,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // UIDs of workloads skipped because they are managed by optimization rules (MPA v2).
+ // Policy-based optimization cannot be applied to these workloads.
+ RuleManagedWorkloadUids []string `protobuf:"bytes,5,rep,name=rule_managed_workload_uids,json=ruleManagedWorkloadUids,proto3" json:"rule_managed_workload_uids,omitempty"`
}
func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) Reset() {
*x = GetPreviewWorkloadPolicyTargetRecommendationsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[77]
+ mi := &file_api_v1_recommendation_proto_msgTypes[78]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6578,7 +7782,7 @@ func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) String() string
func (*GetPreviewWorkloadPolicyTargetRecommendationsResponse) ProtoMessage() {}
func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[77]
+ mi := &file_api_v1_recommendation_proto_msgTypes[78]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6591,7 +7795,7 @@ func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) ProtoReflect() p
// Deprecated: Use GetPreviewWorkloadPolicyTargetRecommendationsResponse.ProtoReflect.Descriptor instead.
func (*GetPreviewWorkloadPolicyTargetRecommendationsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{77}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{78}
}
func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) GetRecommendations() []*WorkloadRecommendation {
@@ -6615,6 +7819,20 @@ func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) GetWorkloadPerce
return nil
}
+func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) GetCollisionsByWorkloadUid() map[string]*WorkloadCollisionInfo {
+ if x != nil {
+ return x.CollisionsByWorkloadUid
+ }
+ return nil
+}
+
+func (x *GetPreviewWorkloadPolicyTargetRecommendationsResponse) GetRuleManagedWorkloadUids() []string {
+ if x != nil {
+ return x.RuleManagedWorkloadUids
+ }
+ return nil
+}
+
// WorkloadPercentileSummary aggregates percentile metrics across all containers of a workload.
type WorkloadPercentileSummary struct {
state protoimpl.MessageState
@@ -6631,7 +7849,7 @@ type WorkloadPercentileSummary struct {
func (x *WorkloadPercentileSummary) Reset() {
*x = WorkloadPercentileSummary{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[78]
+ mi := &file_api_v1_recommendation_proto_msgTypes[79]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6644,7 +7862,7 @@ func (x *WorkloadPercentileSummary) String() string {
func (*WorkloadPercentileSummary) ProtoMessage() {}
func (x *WorkloadPercentileSummary) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[78]
+ mi := &file_api_v1_recommendation_proto_msgTypes[79]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6657,7 +7875,7 @@ func (x *WorkloadPercentileSummary) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadPercentileSummary.ProtoReflect.Descriptor instead.
func (*WorkloadPercentileSummary) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{78}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{79}
}
func (x *WorkloadPercentileSummary) GetCpuUsage() *MetricPercentiles {
@@ -6716,7 +7934,7 @@ type NodeGroupPolicyTarget struct {
func (x *NodeGroupPolicyTarget) Reset() {
*x = NodeGroupPolicyTarget{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[79]
+ mi := &file_api_v1_recommendation_proto_msgTypes[80]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6729,7 +7947,7 @@ func (x *NodeGroupPolicyTarget) String() string {
func (*NodeGroupPolicyTarget) ProtoMessage() {}
func (x *NodeGroupPolicyTarget) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[79]
+ mi := &file_api_v1_recommendation_proto_msgTypes[80]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6742,7 +7960,7 @@ func (x *NodeGroupPolicyTarget) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeGroupPolicyTarget.ProtoReflect.Descriptor instead.
func (*NodeGroupPolicyTarget) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{79}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{80}
}
func (x *NodeGroupPolicyTarget) GetTargetId() string {
@@ -6840,7 +8058,7 @@ type CreateNodeGroupPolicyTargetRequest struct {
func (x *CreateNodeGroupPolicyTargetRequest) Reset() {
*x = CreateNodeGroupPolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[80]
+ mi := &file_api_v1_recommendation_proto_msgTypes[81]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6853,7 +8071,7 @@ func (x *CreateNodeGroupPolicyTargetRequest) String() string {
func (*CreateNodeGroupPolicyTargetRequest) ProtoMessage() {}
func (x *CreateNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[80]
+ mi := &file_api_v1_recommendation_proto_msgTypes[81]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6866,7 +8084,7 @@ func (x *CreateNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use CreateNodeGroupPolicyTargetRequest.ProtoReflect.Descriptor instead.
func (*CreateNodeGroupPolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{80}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{81}
}
func (x *CreateNodeGroupPolicyTargetRequest) GetTeamId() string {
@@ -6936,7 +8154,7 @@ type CreateNodeGroupPolicyTargetResponse struct {
func (x *CreateNodeGroupPolicyTargetResponse) Reset() {
*x = CreateNodeGroupPolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[81]
+ mi := &file_api_v1_recommendation_proto_msgTypes[82]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6949,7 +8167,7 @@ func (x *CreateNodeGroupPolicyTargetResponse) String() string {
func (*CreateNodeGroupPolicyTargetResponse) ProtoMessage() {}
func (x *CreateNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[81]
+ mi := &file_api_v1_recommendation_proto_msgTypes[82]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6962,7 +8180,7 @@ func (x *CreateNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Messag
// Deprecated: Use CreateNodeGroupPolicyTargetResponse.ProtoReflect.Descriptor instead.
func (*CreateNodeGroupPolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{81}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{82}
}
func (x *CreateNodeGroupPolicyTargetResponse) GetTarget() *NodeGroupPolicyTarget {
@@ -6984,7 +8202,7 @@ type GetNodeGroupPolicyTargetRequest struct {
func (x *GetNodeGroupPolicyTargetRequest) Reset() {
*x = GetNodeGroupPolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[82]
+ mi := &file_api_v1_recommendation_proto_msgTypes[83]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6997,7 +8215,7 @@ func (x *GetNodeGroupPolicyTargetRequest) String() string {
func (*GetNodeGroupPolicyTargetRequest) ProtoMessage() {}
func (x *GetNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[82]
+ mi := &file_api_v1_recommendation_proto_msgTypes[83]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7010,7 +8228,7 @@ func (x *GetNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetNodeGroupPolicyTargetRequest.ProtoReflect.Descriptor instead.
func (*GetNodeGroupPolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{82}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{83}
}
func (x *GetNodeGroupPolicyTargetRequest) GetTeamId() string {
@@ -7038,7 +8256,7 @@ type GetNodeGroupPolicyTargetResponse struct {
func (x *GetNodeGroupPolicyTargetResponse) Reset() {
*x = GetNodeGroupPolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[83]
+ mi := &file_api_v1_recommendation_proto_msgTypes[84]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7051,7 +8269,7 @@ func (x *GetNodeGroupPolicyTargetResponse) String() string {
func (*GetNodeGroupPolicyTargetResponse) ProtoMessage() {}
func (x *GetNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[83]
+ mi := &file_api_v1_recommendation_proto_msgTypes[84]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7064,7 +8282,7 @@ func (x *GetNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetNodeGroupPolicyTargetResponse.ProtoReflect.Descriptor instead.
func (*GetNodeGroupPolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{83}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{84}
}
func (x *GetNodeGroupPolicyTargetResponse) GetTarget() *NodeGroupPolicyTarget {
@@ -7088,7 +8306,7 @@ type ListNodeGroupPolicyTargetsRequest struct {
func (x *ListNodeGroupPolicyTargetsRequest) Reset() {
*x = ListNodeGroupPolicyTargetsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[84]
+ mi := &file_api_v1_recommendation_proto_msgTypes[85]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7101,7 +8319,7 @@ func (x *ListNodeGroupPolicyTargetsRequest) String() string {
func (*ListNodeGroupPolicyTargetsRequest) ProtoMessage() {}
func (x *ListNodeGroupPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[84]
+ mi := &file_api_v1_recommendation_proto_msgTypes[85]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7114,7 +8332,7 @@ func (x *ListNodeGroupPolicyTargetsRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use ListNodeGroupPolicyTargetsRequest.ProtoReflect.Descriptor instead.
func (*ListNodeGroupPolicyTargetsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{84}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{85}
}
func (x *ListNodeGroupPolicyTargetsRequest) GetTeamId() string {
@@ -7156,7 +8374,7 @@ type ListNodeGroupPolicyTargetsResponse struct {
func (x *ListNodeGroupPolicyTargetsResponse) Reset() {
*x = ListNodeGroupPolicyTargetsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[85]
+ mi := &file_api_v1_recommendation_proto_msgTypes[86]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7169,7 +8387,7 @@ func (x *ListNodeGroupPolicyTargetsResponse) String() string {
func (*ListNodeGroupPolicyTargetsResponse) ProtoMessage() {}
func (x *ListNodeGroupPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[85]
+ mi := &file_api_v1_recommendation_proto_msgTypes[86]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7182,7 +8400,7 @@ func (x *ListNodeGroupPolicyTargetsResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use ListNodeGroupPolicyTargetsResponse.ProtoReflect.Descriptor instead.
func (*ListNodeGroupPolicyTargetsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{85}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{86}
}
func (x *ListNodeGroupPolicyTargetsResponse) GetTargets() []*NodeGroupPolicyTarget {
@@ -7210,7 +8428,7 @@ type UpdateNodeGroupPolicyTargetRequest struct {
func (x *UpdateNodeGroupPolicyTargetRequest) Reset() {
*x = UpdateNodeGroupPolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[86]
+ mi := &file_api_v1_recommendation_proto_msgTypes[87]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7223,7 +8441,7 @@ func (x *UpdateNodeGroupPolicyTargetRequest) String() string {
func (*UpdateNodeGroupPolicyTargetRequest) ProtoMessage() {}
func (x *UpdateNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[86]
+ mi := &file_api_v1_recommendation_proto_msgTypes[87]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7236,7 +8454,7 @@ func (x *UpdateNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use UpdateNodeGroupPolicyTargetRequest.ProtoReflect.Descriptor instead.
func (*UpdateNodeGroupPolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{86}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{87}
}
func (x *UpdateNodeGroupPolicyTargetRequest) GetTeamId() string {
@@ -7306,7 +8524,7 @@ type UpdateNodeGroupPolicyTargetResponse struct {
func (x *UpdateNodeGroupPolicyTargetResponse) Reset() {
*x = UpdateNodeGroupPolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[87]
+ mi := &file_api_v1_recommendation_proto_msgTypes[88]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7319,7 +8537,7 @@ func (x *UpdateNodeGroupPolicyTargetResponse) String() string {
func (*UpdateNodeGroupPolicyTargetResponse) ProtoMessage() {}
func (x *UpdateNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[87]
+ mi := &file_api_v1_recommendation_proto_msgTypes[88]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7332,7 +8550,7 @@ func (x *UpdateNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Messag
// Deprecated: Use UpdateNodeGroupPolicyTargetResponse.ProtoReflect.Descriptor instead.
func (*UpdateNodeGroupPolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{87}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{88}
}
func (x *UpdateNodeGroupPolicyTargetResponse) GetTarget() *NodeGroupPolicyTarget {
@@ -7354,7 +8572,7 @@ type DeleteNodeGroupPolicyTargetRequest struct {
func (x *DeleteNodeGroupPolicyTargetRequest) Reset() {
*x = DeleteNodeGroupPolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[88]
+ mi := &file_api_v1_recommendation_proto_msgTypes[89]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7367,7 +8585,7 @@ func (x *DeleteNodeGroupPolicyTargetRequest) String() string {
func (*DeleteNodeGroupPolicyTargetRequest) ProtoMessage() {}
func (x *DeleteNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[88]
+ mi := &file_api_v1_recommendation_proto_msgTypes[89]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7380,7 +8598,7 @@ func (x *DeleteNodeGroupPolicyTargetRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use DeleteNodeGroupPolicyTargetRequest.ProtoReflect.Descriptor instead.
func (*DeleteNodeGroupPolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{88}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{89}
}
func (x *DeleteNodeGroupPolicyTargetRequest) GetTeamId() string {
@@ -7410,7 +8628,7 @@ type ToggleNodeGroupPolicyTargetsRequest struct {
func (x *ToggleNodeGroupPolicyTargetsRequest) Reset() {
*x = ToggleNodeGroupPolicyTargetsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[89]
+ mi := &file_api_v1_recommendation_proto_msgTypes[90]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7423,7 +8641,7 @@ func (x *ToggleNodeGroupPolicyTargetsRequest) String() string {
func (*ToggleNodeGroupPolicyTargetsRequest) ProtoMessage() {}
func (x *ToggleNodeGroupPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[89]
+ mi := &file_api_v1_recommendation_proto_msgTypes[90]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7436,7 +8654,7 @@ func (x *ToggleNodeGroupPolicyTargetsRequest) ProtoReflect() protoreflect.Messag
// Deprecated: Use ToggleNodeGroupPolicyTargetsRequest.ProtoReflect.Descriptor instead.
func (*ToggleNodeGroupPolicyTargetsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{89}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{90}
}
func (x *ToggleNodeGroupPolicyTargetsRequest) GetTeamId() string {
@@ -7471,7 +8689,7 @@ type ToggleNodeGroupPolicyTargetsResponse struct {
func (x *ToggleNodeGroupPolicyTargetsResponse) Reset() {
*x = ToggleNodeGroupPolicyTargetsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[90]
+ mi := &file_api_v1_recommendation_proto_msgTypes[91]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7484,7 +8702,7 @@ func (x *ToggleNodeGroupPolicyTargetsResponse) String() string {
func (*ToggleNodeGroupPolicyTargetsResponse) ProtoMessage() {}
func (x *ToggleNodeGroupPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[90]
+ mi := &file_api_v1_recommendation_proto_msgTypes[91]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7497,7 +8715,7 @@ func (x *ToggleNodeGroupPolicyTargetsResponse) ProtoReflect() protoreflect.Messa
// Deprecated: Use ToggleNodeGroupPolicyTargetsResponse.ProtoReflect.Descriptor instead.
func (*ToggleNodeGroupPolicyTargetsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{90}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{91}
}
func (x *ToggleNodeGroupPolicyTargetsResponse) GetSuccess() bool {
@@ -7516,7 +8734,7 @@ type DeleteNodeGroupPolicyTargetResponse struct {
func (x *DeleteNodeGroupPolicyTargetResponse) Reset() {
*x = DeleteNodeGroupPolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[91]
+ mi := &file_api_v1_recommendation_proto_msgTypes[92]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7529,7 +8747,7 @@ func (x *DeleteNodeGroupPolicyTargetResponse) String() string {
func (*DeleteNodeGroupPolicyTargetResponse) ProtoMessage() {}
func (x *DeleteNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[91]
+ mi := &file_api_v1_recommendation_proto_msgTypes[92]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7542,7 +8760,7 @@ func (x *DeleteNodeGroupPolicyTargetResponse) ProtoReflect() protoreflect.Messag
// Deprecated: Use DeleteNodeGroupPolicyTargetResponse.ProtoReflect.Descriptor instead.
func (*DeleteNodeGroupPolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{91}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{92}
}
type PreviewNodeGroupPolicyTargetMatchesRequest struct {
@@ -7558,7 +8776,7 @@ type PreviewNodeGroupPolicyTargetMatchesRequest struct {
func (x *PreviewNodeGroupPolicyTargetMatchesRequest) Reset() {
*x = PreviewNodeGroupPolicyTargetMatchesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[92]
+ mi := &file_api_v1_recommendation_proto_msgTypes[93]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7571,7 +8789,7 @@ func (x *PreviewNodeGroupPolicyTargetMatchesRequest) String() string {
func (*PreviewNodeGroupPolicyTargetMatchesRequest) ProtoMessage() {}
func (x *PreviewNodeGroupPolicyTargetMatchesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[92]
+ mi := &file_api_v1_recommendation_proto_msgTypes[93]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7584,7 +8802,7 @@ func (x *PreviewNodeGroupPolicyTargetMatchesRequest) ProtoReflect() protoreflect
// Deprecated: Use PreviewNodeGroupPolicyTargetMatchesRequest.ProtoReflect.Descriptor instead.
func (*PreviewNodeGroupPolicyTargetMatchesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{92}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{93}
}
func (x *PreviewNodeGroupPolicyTargetMatchesRequest) GetTeamId() string {
@@ -7619,7 +8837,7 @@ type PreviewNodeGroupPolicyTargetMatchesResponse struct {
func (x *PreviewNodeGroupPolicyTargetMatchesResponse) Reset() {
*x = PreviewNodeGroupPolicyTargetMatchesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[93]
+ mi := &file_api_v1_recommendation_proto_msgTypes[94]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7632,7 +8850,7 @@ func (x *PreviewNodeGroupPolicyTargetMatchesResponse) String() string {
func (*PreviewNodeGroupPolicyTargetMatchesResponse) ProtoMessage() {}
func (x *PreviewNodeGroupPolicyTargetMatchesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[93]
+ mi := &file_api_v1_recommendation_proto_msgTypes[94]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7645,7 +8863,7 @@ func (x *PreviewNodeGroupPolicyTargetMatchesResponse) ProtoReflect() protoreflec
// Deprecated: Use PreviewNodeGroupPolicyTargetMatchesResponse.ProtoReflect.Descriptor instead.
func (*PreviewNodeGroupPolicyTargetMatchesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{93}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{94}
}
func (x *PreviewNodeGroupPolicyTargetMatchesResponse) GetMatchedNodeGroups() []*NodeGroup {
@@ -7669,7 +8887,7 @@ type GetPreviewNodeGroupPolicyTargetRecommendationsRequest struct {
func (x *GetPreviewNodeGroupPolicyTargetRecommendationsRequest) Reset() {
*x = GetPreviewNodeGroupPolicyTargetRecommendationsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[94]
+ mi := &file_api_v1_recommendation_proto_msgTypes[95]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7682,7 +8900,7 @@ func (x *GetPreviewNodeGroupPolicyTargetRecommendationsRequest) String() string
func (*GetPreviewNodeGroupPolicyTargetRecommendationsRequest) ProtoMessage() {}
func (x *GetPreviewNodeGroupPolicyTargetRecommendationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[94]
+ mi := &file_api_v1_recommendation_proto_msgTypes[95]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7695,7 +8913,7 @@ func (x *GetPreviewNodeGroupPolicyTargetRecommendationsRequest) ProtoReflect() p
// Deprecated: Use GetPreviewNodeGroupPolicyTargetRecommendationsRequest.ProtoReflect.Descriptor instead.
func (*GetPreviewNodeGroupPolicyTargetRecommendationsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{94}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{95}
}
func (x *GetPreviewNodeGroupPolicyTargetRecommendationsRequest) GetTeamId() string {
@@ -7737,7 +8955,7 @@ type GetPreviewNodeGroupPolicyTargetRecommendationsResponse struct {
func (x *GetPreviewNodeGroupPolicyTargetRecommendationsResponse) Reset() {
*x = GetPreviewNodeGroupPolicyTargetRecommendationsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[95]
+ mi := &file_api_v1_recommendation_proto_msgTypes[96]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7750,7 +8968,7 @@ func (x *GetPreviewNodeGroupPolicyTargetRecommendationsResponse) String() string
func (*GetPreviewNodeGroupPolicyTargetRecommendationsResponse) ProtoMessage() {}
func (x *GetPreviewNodeGroupPolicyTargetRecommendationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[95]
+ mi := &file_api_v1_recommendation_proto_msgTypes[96]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7763,7 +8981,7 @@ func (x *GetPreviewNodeGroupPolicyTargetRecommendationsResponse) ProtoReflect()
// Deprecated: Use GetPreviewNodeGroupPolicyTargetRecommendationsResponse.ProtoReflect.Descriptor instead.
func (*GetPreviewNodeGroupPolicyTargetRecommendationsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{95}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{96}
}
func (x *GetPreviewNodeGroupPolicyTargetRecommendationsResponse) GetRecommendations() []*NodeGroupRecommendation {
@@ -7784,6 +9002,9 @@ type BalanceGetRecommendationsRequest struct {
// *BalanceGetRecommendationsRequest_Apply
// *BalanceGetRecommendationsRequest_WorkloadMeta
// *BalanceGetRecommendationsRequest_InClusterRecommendation
+ // *BalanceGetRecommendationsRequest_SnapshotCrStatusReport
+ // *BalanceGetRecommendationsRequest_SchedulerEnrollmentReport
+ // *BalanceGetRecommendationsRequest_SchedulerRevertEventReport
// *BalanceGetRecommendationsRequest_OperatorHealth
// *BalanceGetRecommendationsRequest_AgentHealth
Request isBalanceGetRecommendationsRequest_Request `protobuf_oneof:"request"`
@@ -7793,7 +9014,7 @@ type BalanceGetRecommendationsRequest struct {
func (x *BalanceGetRecommendationsRequest) Reset() {
*x = BalanceGetRecommendationsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[96]
+ mi := &file_api_v1_recommendation_proto_msgTypes[97]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7806,7 +9027,7 @@ func (x *BalanceGetRecommendationsRequest) String() string {
func (*BalanceGetRecommendationsRequest) ProtoMessage() {}
func (x *BalanceGetRecommendationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[96]
+ mi := &file_api_v1_recommendation_proto_msgTypes[97]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7819,7 +9040,7 @@ func (x *BalanceGetRecommendationsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use BalanceGetRecommendationsRequest.ProtoReflect.Descriptor instead.
func (*BalanceGetRecommendationsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{96}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{97}
}
func (m *BalanceGetRecommendationsRequest) GetRequest() isBalanceGetRecommendationsRequest_Request {
@@ -7857,6 +9078,27 @@ func (x *BalanceGetRecommendationsRequest) GetInClusterRecommendation() *Workloa
return nil
}
+func (x *BalanceGetRecommendationsRequest) GetSnapshotCrStatusReport() *SnapshotCRStatusReport {
+ if x, ok := x.GetRequest().(*BalanceGetRecommendationsRequest_SnapshotCrStatusReport); ok {
+ return x.SnapshotCrStatusReport
+ }
+ return nil
+}
+
+func (x *BalanceGetRecommendationsRequest) GetSchedulerEnrollmentReport() *SchedulerEnrollmentReport {
+ if x, ok := x.GetRequest().(*BalanceGetRecommendationsRequest_SchedulerEnrollmentReport); ok {
+ return x.SchedulerEnrollmentReport
+ }
+ return nil
+}
+
+func (x *BalanceGetRecommendationsRequest) GetSchedulerRevertEventReport() *SchedulerRevertEventReport {
+ if x, ok := x.GetRequest().(*BalanceGetRecommendationsRequest_SchedulerRevertEventReport); ok {
+ return x.SchedulerRevertEventReport
+ }
+ return nil
+}
+
func (x *BalanceGetRecommendationsRequest) GetOperatorHealth() *OperatorHealth {
if x, ok := x.GetRequest().(*BalanceGetRecommendationsRequest_OperatorHealth); ok {
return x.OperatorHealth
@@ -7901,6 +9143,32 @@ type BalanceGetRecommendationsRequest_InClusterRecommendation struct {
InClusterRecommendation *WorkloadRecommendation `protobuf:"bytes,21,opt,name=in_cluster_recommendation,json=inClusterRecommendation,proto3,oneof"`
}
+type BalanceGetRecommendationsRequest_SnapshotCrStatusReport struct {
+ // Snapshot policies (spec §8): periodic full snapshot of the
+ // dakr-managed criu.org CR statuses from the cluster. The operator
+ // emits no Kubernetes Events — CR status is the entire runtime
+ // observability channel. dakr ingests with full-sync semantics
+ // (upsert reported, soft-delete unreported).
+ SnapshotCrStatusReport *SnapshotCRStatusReport `protobuf:"bytes,31,opt,name=snapshot_cr_status_report,json=snapshotCrStatusReport,proto3,oneof"`
+}
+
+type BalanceGetRecommendationsRequest_SchedulerEnrollmentReport struct {
+ // Periodic full-sync report of scheduler enrollment state observed
+ // in-cluster: original-scheduler captures at first application.
+ // Full-sync semantics mirror SnapshotCRStatusReport. Revert acks do
+ // NOT ride this message — they use apply with
+ // RECOMMENDATION_TYPE_SCHEDULER_POLICY and the enrollment id.
+ SchedulerEnrollmentReport *SchedulerEnrollmentReport `protobuf:"bytes,32,opt,name=scheduler_enrollment_report,json=schedulerEnrollmentReport,proto3,oneof"`
+}
+
+type BalanceGetRecommendationsRequest_SchedulerRevertEventReport struct {
+ // Fail-open scheduler revert events observed by the admission
+ // failsafe: pods steered away from an unhealthy tracked scheduler at
+ // CREATE time. Batched per stream tick, replica-local (each tunr
+ // replica reports only what its own webhook process observed).
+ SchedulerRevertEventReport *SchedulerRevertEventReport `protobuf:"bytes,33,opt,name=scheduler_revert_event_report,json=schedulerRevertEventReport,proto3,oneof"`
+}
+
type BalanceGetRecommendationsRequest_OperatorHealth struct {
// health check APIs
OperatorHealth *OperatorHealth `protobuf:"bytes,71,opt,name=operator_health,json=operatorHealth,proto3,oneof"`
@@ -7919,6 +9187,15 @@ func (*BalanceGetRecommendationsRequest_WorkloadMeta) isBalanceGetRecommendation
func (*BalanceGetRecommendationsRequest_InClusterRecommendation) isBalanceGetRecommendationsRequest_Request() {
}
+func (*BalanceGetRecommendationsRequest_SnapshotCrStatusReport) isBalanceGetRecommendationsRequest_Request() {
+}
+
+func (*BalanceGetRecommendationsRequest_SchedulerEnrollmentReport) isBalanceGetRecommendationsRequest_Request() {
+}
+
+func (*BalanceGetRecommendationsRequest_SchedulerRevertEventReport) isBalanceGetRecommendationsRequest_Request() {
+}
+
func (*BalanceGetRecommendationsRequest_OperatorHealth) isBalanceGetRecommendationsRequest_Request() {
}
@@ -7945,6 +9222,10 @@ type BalanceGetRecommendationsResponse struct {
// *BalanceGetRecommendationsResponse_BatchPvcStorageRecommendations
// *BalanceGetRecommendationsResponse_BatchWorkloadRules
// *BalanceGetRecommendationsResponse_KarpenterSettings
+ // *BalanceGetRecommendationsResponse_SnapshotRecommendation
+ // *BalanceGetRecommendationsResponse_ForensicSnapshotRecommendation
+ // *BalanceGetRecommendationsResponse_BatchHpaConnectors
+ // *BalanceGetRecommendationsResponse_SchedulerPolicySync
Response isBalanceGetRecommendationsResponse_Response `protobuf_oneof:"response"`
RequestId string `protobuf:"bytes,99,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` // optional
}
@@ -7952,7 +9233,7 @@ type BalanceGetRecommendationsResponse struct {
func (x *BalanceGetRecommendationsResponse) Reset() {
*x = BalanceGetRecommendationsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[97]
+ mi := &file_api_v1_recommendation_proto_msgTypes[98]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7965,7 +9246,7 @@ func (x *BalanceGetRecommendationsResponse) String() string {
func (*BalanceGetRecommendationsResponse) ProtoMessage() {}
func (x *BalanceGetRecommendationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[97]
+ mi := &file_api_v1_recommendation_proto_msgTypes[98]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7978,7 +9259,7 @@ func (x *BalanceGetRecommendationsResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use BalanceGetRecommendationsResponse.ProtoReflect.Descriptor instead.
func (*BalanceGetRecommendationsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{97}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{98}
}
func (m *BalanceGetRecommendationsResponse) GetResponse() isBalanceGetRecommendationsResponse_Response {
@@ -8086,6 +9367,34 @@ func (x *BalanceGetRecommendationsResponse) GetKarpenterSettings() *KarpenterSet
return nil
}
+func (x *BalanceGetRecommendationsResponse) GetSnapshotRecommendation() *SnapshotRecommendation {
+ if x, ok := x.GetResponse().(*BalanceGetRecommendationsResponse_SnapshotRecommendation); ok {
+ return x.SnapshotRecommendation
+ }
+ return nil
+}
+
+func (x *BalanceGetRecommendationsResponse) GetForensicSnapshotRecommendation() *ForensicSnapshotRecommendation {
+ if x, ok := x.GetResponse().(*BalanceGetRecommendationsResponse_ForensicSnapshotRecommendation); ok {
+ return x.ForensicSnapshotRecommendation
+ }
+ return nil
+}
+
+func (x *BalanceGetRecommendationsResponse) GetBatchHpaConnectors() *BatchHPAConnectors {
+ if x, ok := x.GetResponse().(*BalanceGetRecommendationsResponse_BatchHpaConnectors); ok {
+ return x.BatchHpaConnectors
+ }
+ return nil
+}
+
+func (x *BalanceGetRecommendationsResponse) GetSchedulerPolicySync() *SchedulerPolicySync {
+ if x, ok := x.GetResponse().(*BalanceGetRecommendationsResponse_SchedulerPolicySync); ok {
+ return x.SchedulerPolicySync
+ }
+ return nil
+}
+
func (x *BalanceGetRecommendationsResponse) GetRequestId() string {
if x != nil {
return x.RequestId
@@ -8160,6 +9469,28 @@ type BalanceGetRecommendationsResponse_KarpenterSettings struct {
KarpenterSettings *KarpenterSettingsRecommendation `protobuf:"bytes,62,opt,name=karpenter_settings,json=karpenterSettings,proto3,oneof"`
}
+type BalanceGetRecommendationsResponse_SnapshotRecommendation struct {
+ // Snapshot policy CRD bundles (checkpoint-restore-operator, spec §7)
+ SnapshotRecommendation *SnapshotRecommendation `protobuf:"bytes,63,opt,name=snapshot_recommendation,json=snapshotRecommendation,proto3,oneof"`
+}
+
+type BalanceGetRecommendationsResponse_ForensicSnapshotRecommendation struct {
+ ForensicSnapshotRecommendation *ForensicSnapshotRecommendation `protobuf:"bytes,64,opt,name=forensic_snapshot_recommendation,json=forensicSnapshotRecommendation,proto3,oneof"`
+}
+
+type BalanceGetRecommendationsResponse_BatchHpaConnectors struct {
+ // HPA connector CRD push-down
+ BatchHpaConnectors *BatchHPAConnectors `protobuf:"bytes,65,opt,name=batch_hpa_connectors,json=batchHpaConnectors,proto3,oneof"`
+}
+
+type BalanceGetRecommendationsResponse_SchedulerPolicySync struct {
+ // Full desired scheduler-policy set for this cluster plus pending
+ // revert instructions. Hash-gated full-sync push (see
+ // scheduler_policy_delivery.go); tunr reconciles it into the
+ // cluster-scoped SchedulerPolicy CRD and executes reverts.
+ SchedulerPolicySync *SchedulerPolicySync `protobuf:"bytes,66,opt,name=scheduler_policy_sync,json=schedulerPolicySync,proto3,oneof"`
+}
+
func (*BalanceGetRecommendationsResponse_NodeGroupRecommendation) isBalanceGetRecommendationsResponse_Response() {
}
@@ -8202,6 +9533,18 @@ func (*BalanceGetRecommendationsResponse_BatchWorkloadRules) isBalanceGetRecomme
func (*BalanceGetRecommendationsResponse_KarpenterSettings) isBalanceGetRecommendationsResponse_Response() {
}
+func (*BalanceGetRecommendationsResponse_SnapshotRecommendation) isBalanceGetRecommendationsResponse_Response() {
+}
+
+func (*BalanceGetRecommendationsResponse_ForensicSnapshotRecommendation) isBalanceGetRecommendationsResponse_Response() {
+}
+
+func (*BalanceGetRecommendationsResponse_BatchHpaConnectors) isBalanceGetRecommendationsResponse_Response() {
+}
+
+func (*BalanceGetRecommendationsResponse_SchedulerPolicySync) isBalanceGetRecommendationsResponse_Response() {
+}
+
type BatchNodeGroupRecommendations struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -8213,7 +9556,7 @@ type BatchNodeGroupRecommendations struct {
func (x *BatchNodeGroupRecommendations) Reset() {
*x = BatchNodeGroupRecommendations{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[98]
+ mi := &file_api_v1_recommendation_proto_msgTypes[99]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8226,7 +9569,7 @@ func (x *BatchNodeGroupRecommendations) String() string {
func (*BatchNodeGroupRecommendations) ProtoMessage() {}
func (x *BatchNodeGroupRecommendations) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[98]
+ mi := &file_api_v1_recommendation_proto_msgTypes[99]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8239,7 +9582,7 @@ func (x *BatchNodeGroupRecommendations) ProtoReflect() protoreflect.Message {
// Deprecated: Use BatchNodeGroupRecommendations.ProtoReflect.Descriptor instead.
func (*BatchNodeGroupRecommendations) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{98}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{99}
}
func (x *BatchNodeGroupRecommendations) GetRecommendations() []*NodeGroupRecommendation {
@@ -8260,7 +9603,7 @@ type BatchWorkloadRecommendations struct {
func (x *BatchWorkloadRecommendations) Reset() {
*x = BatchWorkloadRecommendations{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[99]
+ mi := &file_api_v1_recommendation_proto_msgTypes[100]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8273,7 +9616,7 @@ func (x *BatchWorkloadRecommendations) String() string {
func (*BatchWorkloadRecommendations) ProtoMessage() {}
func (x *BatchWorkloadRecommendations) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[99]
+ mi := &file_api_v1_recommendation_proto_msgTypes[100]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8286,7 +9629,7 @@ func (x *BatchWorkloadRecommendations) ProtoReflect() protoreflect.Message {
// Deprecated: Use BatchWorkloadRecommendations.ProtoReflect.Descriptor instead.
func (*BatchWorkloadRecommendations) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{99}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{100}
}
func (x *BatchWorkloadRecommendations) GetRecommendations() []*WorkloadRecommendation {
@@ -8333,20 +9676,57 @@ type WorkloadRule struct {
// Whether the rule evaluator should create recommendations that use
// in-place pod vertical scaling instead of triggering pod restarts.
UseInPlaceVerticalScaling bool `protobuf:"varint,70,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
+ // Opt-in: allow an in-place resize to LOWER a container's memory limit.
+ // Only consulted when use_in_place_vertical_scaling is true, and it never
+ // relaxes the Kubernetes version gate — a decrease still additionally
+ // requires a cluster new enough to accept one. Default false because
+ // shrinking a live container's memory limit can OOM-kill it.
+ AllowInPlaceMemoryLimitDecrease bool `protobuf:"varint,71,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3" json:"allow_in_place_memory_limit_decrease,omitempty"`
// UI display fields (not sent to cluster, only used for listing)
Status string `protobuf:"bytes,80,opt,name=status,proto3" json:"status,omitempty"` // "active" or "inactive"
SyncStatus string `protobuf:"bytes,81,opt,name=sync_status,json=syncStatus,proto3" json:"sync_status,omitempty"` // "pending", "synced", or "failed"
CurrentSource string `protobuf:"bytes,82,opt,name=current_source,json=currentSource,proto3" json:"current_source,omitempty"` // "crd", "policy", "auto_optimization", "manual", "pulumi_manual", "pulumi_auto", "terraform_manual", "terraform_auto"
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,83,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,84,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ // True when the underlying workload (cluster_id, namespace, kind, name)
+ // is no longer present in the cluster. Populated by ListWorkloadRules
+ // at read time via a presence lookup against the workload tables — NOT
+ // persisted on the rule itself. Orthogonal to `status` (which reflects
+ // whether the rule's policy is enabled) — an Active rule can be
+ // orphaned if its workload was deleted, and will be cleaned up by the
+ // orphan janitor after a grace period.
+ IsOrphaned bool `protobuf:"varint,85,opt,name=is_orphaned,json=isOrphaned,proto3" json:"is_orphaned,omitempty"`
// Per-container resource configurations (VPA). When empty, workload-level rules apply to all containers.
Containers []*ContainerResourceRuleConfig `protobuf:"bytes,90,rep,name=containers,proto3" json:"containers,omitempty"`
+ // JVM heap optimization overrides for this rule.
+ JvmHeapRule *JVMHeapRuleConfig `protobuf:"bytes,91,opt,name=jvm_heap_rule,json=jvmHeapRule,proto3" json:"jvm_heap_rule,omitempty"`
+ // Per-rule override of the JVM CPU startup floor (millicores). Standalone —
+ // deliberately NOT inside jvm_heap_rule and not gated by its enabled flag
+ // (the floor is always-on for detected JVMs). Unset = inherit policy /
+ // system default (75m). Explicit 0 = floor disabled for this rule.
+ JvmCpuStartupFloorMillicores *int64 `protobuf:"varint,92,opt,name=jvm_cpu_startup_floor_millicores,json=jvmCpuStartupFloorMillicores,proto3,oneof" json:"jvm_cpu_startup_floor_millicores,omitempty"`
+ // Rule-wide on/off switch, independent of `status`/`sync_status`. A
+ // disabled rule still exists (status stays "active") but every CP loop
+ // and the in-cluster operator treat it as a full no-op: no further
+ // regeneration, no evaluation, no emergency OOM/throttle response.
+ Disabled bool `protobuf:"varint,93,opt,name=disabled,proto3" json:"disabled,omitempty"`
+ // Per-rule override of the metrics lookback window (seconds). Unset =
+ // inherit the owning policy's window, else the 7-day default.
+ //
+ // Mirrored onto the CRD for visibility only — the operator evaluates off
+ // zxporter's rolling 5-minute window and never queries history.
+ LookbackPeriodSeconds *int32 `protobuf:"varint,94,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ // KEDA ScaledObject template authored by dakr and carried to tunr.
+ // When set, tunr owns the ScaledObject lifecycle (create/update/delete)
+ // rather than generating its own HPA. Renumbered 94→95 on the main merge
+ // (main took 94 for lookback_period_seconds).
+ KedaScaledObject *KEDAScaledObjectTemplate `protobuf:"bytes,95,opt,name=keda_scaled_object,json=kedaScaledObject,proto3,oneof" json:"keda_scaled_object,omitempty"`
}
func (x *WorkloadRule) Reset() {
*x = WorkloadRule{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[100]
+ mi := &file_api_v1_recommendation_proto_msgTypes[101]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8359,7 +9739,7 @@ func (x *WorkloadRule) String() string {
func (*WorkloadRule) ProtoMessage() {}
func (x *WorkloadRule) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[100]
+ mi := &file_api_v1_recommendation_proto_msgTypes[101]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8372,7 +9752,7 @@ func (x *WorkloadRule) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadRule.ProtoReflect.Descriptor instead.
func (*WorkloadRule) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{100}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{101}
}
func (x *WorkloadRule) GetRuleId() string {
@@ -8557,6 +9937,13 @@ func (x *WorkloadRule) GetUseInPlaceVerticalScaling() bool {
return false
}
+func (x *WorkloadRule) GetAllowInPlaceMemoryLimitDecrease() bool {
+ if x != nil {
+ return x.AllowInPlaceMemoryLimitDecrease
+ }
+ return false
+}
+
func (x *WorkloadRule) GetStatus() string {
if x != nil {
return x.Status
@@ -8592,6 +9979,13 @@ func (x *WorkloadRule) GetUpdatedAt() *timestamppb.Timestamp {
return nil
}
+func (x *WorkloadRule) GetIsOrphaned() bool {
+ if x != nil {
+ return x.IsOrphaned
+ }
+ return false
+}
+
func (x *WorkloadRule) GetContainers() []*ContainerResourceRuleConfig {
if x != nil {
return x.Containers
@@ -8599,6 +9993,41 @@ func (x *WorkloadRule) GetContainers() []*ContainerResourceRuleConfig {
return nil
}
+func (x *WorkloadRule) GetJvmHeapRule() *JVMHeapRuleConfig {
+ if x != nil {
+ return x.JvmHeapRule
+ }
+ return nil
+}
+
+func (x *WorkloadRule) GetJvmCpuStartupFloorMillicores() int64 {
+ if x != nil && x.JvmCpuStartupFloorMillicores != nil {
+ return *x.JvmCpuStartupFloorMillicores
+ }
+ return 0
+}
+
+func (x *WorkloadRule) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+func (x *WorkloadRule) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
+ }
+ return 0
+}
+
+func (x *WorkloadRule) GetKedaScaledObject() *KEDAScaledObjectTemplate {
+ if x != nil {
+ return x.KedaScaledObject
+ }
+ return nil
+}
+
type ResourceRuleConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -8625,12 +10054,51 @@ type ResourceRuleConfig struct {
// the produced BaseRequest differs from the user's expectation. Not
// persisted — recomputed on every generation/preview.
Notes []string `protobuf:"bytes,14,rep,name=notes,proto3" json:"notes,omitempty"`
+ // Recommendation floor (rules/v2, request only): the recommended request
+ // is never lowered below floor_percent% (1-100) of initial_request, the
+ // cached immutable baseline sourced from workload_resource_baselines and
+ // refreshed by GenerateAutoRule every cycle. initial_request is editable
+ // through the generic manual-rule surface like min_request (no special
+ // protection). Unset floor_percent = floor disabled. Resolved in the
+ // in-cluster tunr evaluator, not pre-resolved by dakr.
+ InitialRequest *int64 `protobuf:"varint,15,opt,name=initial_request,json=initialRequest,proto3,oneof" json:"initial_request,omitempty"`
+ FloorPercent *int64 `protobuf:"varint,16,opt,name=floor_percent,json=floorPercent,proto3,oneof" json:"floor_percent,omitempty"`
+ // Recommendation ceiling (rules/v2, request only): the recommended request
+ // is never raised above ceiling_percent% (1-1000) of initial_request. The
+ // mirror of floor_percent; a ceiling below 100 is intentionally allowed as
+ // a baseline-relative cap distinct from max_request. Unset = ceiling
+ // disabled. Resolved in the in-cluster tunr evaluator, not pre-resolved by
+ // dakr.
+ CeilingPercent *int64 `protobuf:"varint,17,opt,name=ceiling_percent,json=ceilingPercent,proto3,oneof" json:"ceiling_percent,omitempty"`
+ // Limit floor/ceiling (rules/v2, limit only): the recommended limit is
+ // never lowered below limit_floor_percent% (1-100) nor raised above
+ // limit_ceiling_percent% (1-1000) of initial_limit, the cached immutable
+ // initial-limit baseline sourced from workload_resource_baselines and
+ // refreshed by GenerateAutoRule every cycle. Applied only when limits
+ // adjustment is enabled and limits removal is not; the recommended
+ // request always wins over the limit ceiling (the limit is never clamped
+ // below the request). Unset = bound disabled. Resolved in the in-cluster
+ // tunr evaluator, not pre-resolved by dakr.
+ InitialLimit *int64 `protobuf:"varint,18,opt,name=initial_limit,json=initialLimit,proto3,oneof" json:"initial_limit,omitempty"`
+ LimitFloorPercent *int64 `protobuf:"varint,19,opt,name=limit_floor_percent,json=limitFloorPercent,proto3,oneof" json:"limit_floor_percent,omitempty"`
+ LimitCeilingPercent *int64 `protobuf:"varint,20,opt,name=limit_ceiling_percent,json=limitCeilingPercent,proto3,oneof" json:"limit_ceiling_percent,omitempty"`
+ // Memory-only: size the memory REQUEST recommendation from RSS instead of working set.
+ RequestUseRss *bool `protobuf:"varint,21,opt,name=request_use_rss,json=requestUseRss,proto3,oneof" json:"request_use_rss,omitempty"`
+ // Memory-only: derive the limit from an RSS-based recommendation instead of working set
+ // (the limit multiplier still applies to whichever basis is selected).
+ LimitUseRss *bool `protobuf:"varint,22,opt,name=limit_use_rss,json=limitUseRss,proto3,oneof" json:"limit_use_rss,omitempty"`
+ // Memory-only: request-equivalent baseline on the *limit* basis (bytes). The
+ // generator emits this only when the limit basis differs from the request
+ // basis (RSS vs working set); 0 otherwise, meaning "derive the limit as
+ // request × limit_multiplier" (byte-identical default). NOT pre-multiplied.
+ // Consumed by the in-cluster tunr evaluator's normal-mode baseline path.
+ BaseLimit int64 `protobuf:"varint,23,opt,name=base_limit,json=baseLimit,proto3" json:"base_limit,omitempty"`
}
func (x *ResourceRuleConfig) Reset() {
*x = ResourceRuleConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[101]
+ mi := &file_api_v1_recommendation_proto_msgTypes[102]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8643,7 +10111,7 @@ func (x *ResourceRuleConfig) String() string {
func (*ResourceRuleConfig) ProtoMessage() {}
func (x *ResourceRuleConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[101]
+ mi := &file_api_v1_recommendation_proto_msgTypes[102]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8656,7 +10124,7 @@ func (x *ResourceRuleConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResourceRuleConfig.ProtoReflect.Descriptor instead.
func (*ResourceRuleConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{101}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{102}
}
func (x *ResourceRuleConfig) GetEnabled() bool {
@@ -8757,6 +10225,69 @@ func (x *ResourceRuleConfig) GetNotes() []string {
return nil
}
+func (x *ResourceRuleConfig) GetInitialRequest() int64 {
+ if x != nil && x.InitialRequest != nil {
+ return *x.InitialRequest
+ }
+ return 0
+}
+
+func (x *ResourceRuleConfig) GetFloorPercent() int64 {
+ if x != nil && x.FloorPercent != nil {
+ return *x.FloorPercent
+ }
+ return 0
+}
+
+func (x *ResourceRuleConfig) GetCeilingPercent() int64 {
+ if x != nil && x.CeilingPercent != nil {
+ return *x.CeilingPercent
+ }
+ return 0
+}
+
+func (x *ResourceRuleConfig) GetInitialLimit() int64 {
+ if x != nil && x.InitialLimit != nil {
+ return *x.InitialLimit
+ }
+ return 0
+}
+
+func (x *ResourceRuleConfig) GetLimitFloorPercent() int64 {
+ if x != nil && x.LimitFloorPercent != nil {
+ return *x.LimitFloorPercent
+ }
+ return 0
+}
+
+func (x *ResourceRuleConfig) GetLimitCeilingPercent() int64 {
+ if x != nil && x.LimitCeilingPercent != nil {
+ return *x.LimitCeilingPercent
+ }
+ return 0
+}
+
+func (x *ResourceRuleConfig) GetRequestUseRss() bool {
+ if x != nil && x.RequestUseRss != nil {
+ return *x.RequestUseRss
+ }
+ return false
+}
+
+func (x *ResourceRuleConfig) GetLimitUseRss() bool {
+ if x != nil && x.LimitUseRss != nil {
+ return *x.LimitUseRss
+ }
+ return false
+}
+
+func (x *ResourceRuleConfig) GetBaseLimit() int64 {
+ if x != nil {
+ return x.BaseLimit
+ }
+ return 0
+}
+
type HPAMetricTrigger struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -8769,12 +10300,13 @@ type HPAMetricTrigger struct {
Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Free-form key-value for external scalers (e.g. serverAddress, query for Prometheus)
ServerAddress *string `protobuf:"bytes,6,opt,name=server_address,json=serverAddress,proto3,oneof" json:"server_address,omitempty"` // Frontend-friendly: Prometheus server URL (packed into metadata by service layer)
Query *string `protobuf:"bytes,7,opt,name=query,proto3,oneof" json:"query,omitempty"` // Frontend-friendly: PromQL query (packed into metadata by service layer)
+ ConnectorId *string `protobuf:"bytes,8,opt,name=connector_id,json=connectorId,proto3,oneof" json:"connector_id,omitempty"` // References HPAConnector by dakr-side UUID
}
func (x *HPAMetricTrigger) Reset() {
*x = HPAMetricTrigger{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[102]
+ mi := &file_api_v1_recommendation_proto_msgTypes[103]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8787,7 +10319,7 @@ func (x *HPAMetricTrigger) String() string {
func (*HPAMetricTrigger) ProtoMessage() {}
func (x *HPAMetricTrigger) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[102]
+ mi := &file_api_v1_recommendation_proto_msgTypes[103]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8800,7 +10332,7 @@ func (x *HPAMetricTrigger) ProtoReflect() protoreflect.Message {
// Deprecated: Use HPAMetricTrigger.ProtoReflect.Descriptor instead.
func (*HPAMetricTrigger) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{102}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{103}
}
func (x *HPAMetricTrigger) GetType() string {
@@ -8852,6 +10384,13 @@ func (x *HPAMetricTrigger) GetQuery() string {
return ""
}
+func (x *HPAMetricTrigger) GetConnectorId() string {
+ if x != nil && x.ConnectorId != nil {
+ return *x.ConnectorId
+ }
+ return ""
+}
+
// HPABehavior, HPAScalingRules, HPAScalingPolicy are defined in common.proto
type HPAFallback struct {
state protoimpl.MessageState
@@ -8866,7 +10405,7 @@ type HPAFallback struct {
func (x *HPAFallback) Reset() {
*x = HPAFallback{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[103]
+ mi := &file_api_v1_recommendation_proto_msgTypes[104]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8879,7 +10418,7 @@ func (x *HPAFallback) String() string {
func (*HPAFallback) ProtoMessage() {}
func (x *HPAFallback) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[103]
+ mi := &file_api_v1_recommendation_proto_msgTypes[104]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8892,7 +10431,7 @@ func (x *HPAFallback) ProtoReflect() protoreflect.Message {
// Deprecated: Use HPAFallback.ProtoReflect.Descriptor instead.
func (*HPAFallback) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{103}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{104}
}
func (x *HPAFallback) GetReplicas() int32 {
@@ -8936,12 +10475,21 @@ type ContainerResourceConfig struct {
// Human-readable annotations from the engine for this container.
// See ResourceRuleConfig.notes for semantics.
Notes []string `protobuf:"bytes,9,rep,name=notes,proto3" json:"notes,omitempty"`
+ // Memory-only: size the memory REQUEST recommendation from RSS instead of working set.
+ RequestUseRss *bool `protobuf:"varint,10,opt,name=request_use_rss,json=requestUseRss,proto3,oneof" json:"request_use_rss,omitempty"`
+ // Memory-only: derive the limit from an RSS-based recommendation instead of working set
+ // (the limit multiplier still applies to whichever basis is selected).
+ LimitUseRss *bool `protobuf:"varint,11,opt,name=limit_use_rss,json=limitUseRss,proto3,oneof" json:"limit_use_rss,omitempty"`
+ // Memory-only: request-equivalent baseline on the *limit* basis (bytes),
+ // emitted only when the limit basis differs from the request basis; 0
+ // otherwise. See ResourceRuleConfig.base_limit for full semantics.
+ BaseLimit int64 `protobuf:"varint,12,opt,name=base_limit,json=baseLimit,proto3" json:"base_limit,omitempty"`
}
func (x *ContainerResourceConfig) Reset() {
*x = ContainerResourceConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[104]
+ mi := &file_api_v1_recommendation_proto_msgTypes[105]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8954,7 +10502,7 @@ func (x *ContainerResourceConfig) String() string {
func (*ContainerResourceConfig) ProtoMessage() {}
func (x *ContainerResourceConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[104]
+ mi := &file_api_v1_recommendation_proto_msgTypes[105]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8967,7 +10515,7 @@ func (x *ContainerResourceConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerResourceConfig.ProtoReflect.Descriptor instead.
func (*ContainerResourceConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{104}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{105}
}
func (x *ContainerResourceConfig) GetEnabled() bool {
@@ -9033,6 +10581,27 @@ func (x *ContainerResourceConfig) GetNotes() []string {
return nil
}
+func (x *ContainerResourceConfig) GetRequestUseRss() bool {
+ if x != nil && x.RequestUseRss != nil {
+ return *x.RequestUseRss
+ }
+ return false
+}
+
+func (x *ContainerResourceConfig) GetLimitUseRss() bool {
+ if x != nil && x.LimitUseRss != nil {
+ return *x.LimitUseRss
+ }
+ return false
+}
+
+func (x *ContainerResourceConfig) GetBaseLimit() int64 {
+ if x != nil {
+ return x.BaseLimit
+ }
+ return 0
+}
+
// Per-container resource rule config with CPU/Memory/GPU.
type ContainerResourceRuleConfig struct {
state protoimpl.MessageState
@@ -9048,7 +10617,7 @@ type ContainerResourceRuleConfig struct {
func (x *ContainerResourceRuleConfig) Reset() {
*x = ContainerResourceRuleConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[105]
+ mi := &file_api_v1_recommendation_proto_msgTypes[106]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9061,7 +10630,7 @@ func (x *ContainerResourceRuleConfig) String() string {
func (*ContainerResourceRuleConfig) ProtoMessage() {}
func (x *ContainerResourceRuleConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[105]
+ mi := &file_api_v1_recommendation_proto_msgTypes[106]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9074,7 +10643,7 @@ func (x *ContainerResourceRuleConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerResourceRuleConfig.ProtoReflect.Descriptor instead.
func (*ContainerResourceRuleConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{105}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{106}
}
func (x *ContainerResourceRuleConfig) GetContainerName() string {
@@ -9105,6 +10674,111 @@ func (x *ContainerResourceRuleConfig) GetGpuRule() *ContainerResourceConfig {
return nil
}
+// JVMHeapRuleConfig mirrors the policy-level JVM heap knobs as per-rule overrides.
+// Gated by enabled; the optional knobs are overrides — unset = use the default.
+type JVMHeapRuleConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ TargetPercentile *float32 `protobuf:"fixed32,2,opt,name=target_percentile,json=targetPercentile,proto3,oneof" json:"target_percentile,omitempty"`
+ HeadroomMultiplier *float32 `protobuf:"fixed32,3,opt,name=headroom_multiplier,json=headroomMultiplier,proto3,oneof" json:"headroom_multiplier,omitempty"`
+ NonHeapOverheadPercent *float32 `protobuf:"fixed32,4,opt,name=non_heap_overhead_percent,json=nonHeapOverheadPercent,proto3,oneof" json:"non_heap_overhead_percent,omitempty"`
+ NonHeapOverheadBytes *int64 `protobuf:"varint,5,opt,name=non_heap_overhead_bytes,json=nonHeapOverheadBytes,proto3,oneof" json:"non_heap_overhead_bytes,omitempty"`
+ MinHeapBytes *int64 `protobuf:"varint,6,opt,name=min_heap_bytes,json=minHeapBytes,proto3,oneof" json:"min_heap_bytes,omitempty"`
+ MaxHeapBytes *int64 `protobuf:"varint,7,opt,name=max_heap_bytes,json=maxHeapBytes,proto3,oneof" json:"max_heap_bytes,omitempty"`
+ PreferContainerSupport bool `protobuf:"varint,8,opt,name=prefer_container_support,json=preferContainerSupport,proto3" json:"prefer_container_support,omitempty"`
+}
+
+func (x *JVMHeapRuleConfig) Reset() {
+ *x = JVMHeapRuleConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[107]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *JVMHeapRuleConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JVMHeapRuleConfig) ProtoMessage() {}
+
+func (x *JVMHeapRuleConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[107]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JVMHeapRuleConfig.ProtoReflect.Descriptor instead.
+func (*JVMHeapRuleConfig) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{107}
+}
+
+func (x *JVMHeapRuleConfig) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *JVMHeapRuleConfig) GetTargetPercentile() float32 {
+ if x != nil && x.TargetPercentile != nil {
+ return *x.TargetPercentile
+ }
+ return 0
+}
+
+func (x *JVMHeapRuleConfig) GetHeadroomMultiplier() float32 {
+ if x != nil && x.HeadroomMultiplier != nil {
+ return *x.HeadroomMultiplier
+ }
+ return 0
+}
+
+func (x *JVMHeapRuleConfig) GetNonHeapOverheadPercent() float32 {
+ if x != nil && x.NonHeapOverheadPercent != nil {
+ return *x.NonHeapOverheadPercent
+ }
+ return 0
+}
+
+func (x *JVMHeapRuleConfig) GetNonHeapOverheadBytes() int64 {
+ if x != nil && x.NonHeapOverheadBytes != nil {
+ return *x.NonHeapOverheadBytes
+ }
+ return 0
+}
+
+func (x *JVMHeapRuleConfig) GetMinHeapBytes() int64 {
+ if x != nil && x.MinHeapBytes != nil {
+ return *x.MinHeapBytes
+ }
+ return 0
+}
+
+func (x *JVMHeapRuleConfig) GetMaxHeapBytes() int64 {
+ if x != nil && x.MaxHeapBytes != nil {
+ return *x.MaxHeapBytes
+ }
+ return 0
+}
+
+func (x *JVMHeapRuleConfig) GetPreferContainerSupport() bool {
+ if x != nil {
+ return x.PreferContainerSupport
+ }
+ return false
+}
+
type HPARuleConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -9113,23 +10787,18 @@ type HPARuleConfig struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
MinReplicas *int32 `protobuf:"varint,2,opt,name=min_replicas,json=minReplicas,proto3,oneof" json:"min_replicas,omitempty"`
MaxReplicas *int32 `protobuf:"varint,3,opt,name=max_replicas,json=maxReplicas,proto3,oneof" json:"max_replicas,omitempty"`
- TargetUtilization *float32 `protobuf:"fixed32,4,opt,name=target_utilization,json=targetUtilization,proto3,oneof" json:"target_utilization,omitempty"`
- PrimaryMetric *HPAMetricType `protobuf:"varint,5,opt,name=primary_metric,json=primaryMetric,proto3,enum=api.v1.HPAMetricType,oneof" json:"primary_metric,omitempty"`
MaxReplicaChangePercent *float32 `protobuf:"fixed32,6,opt,name=max_replica_change_percent,json=maxReplicaChangePercent,proto3,oneof" json:"max_replica_change_percent,omitempty"`
Metrics []*HPAMetricTrigger `protobuf:"bytes,7,rep,name=metrics,proto3" json:"metrics,omitempty"`
Behavior *HPABehavior `protobuf:"bytes,8,opt,name=behavior,proto3,oneof" json:"behavior,omitempty"`
CompositeFormula *string `protobuf:"bytes,9,opt,name=composite_formula,json=compositeFormula,proto3,oneof" json:"composite_formula,omitempty"`
Fallback *HPAFallback `protobuf:"bytes,10,opt,name=fallback,proto3,oneof" json:"fallback,omitempty"`
ScaleDownCooldownSeconds *int32 `protobuf:"varint,11,opt,name=scale_down_cooldown_seconds,json=scaleDownCooldownSeconds,proto3,oneof" json:"scale_down_cooldown_seconds,omitempty"`
- // Target memory utilization (0.0-1.0). Separate from target_utilization (CPU)
- // to allow independent tuning per resource.
- TargetMemoryUtilization *float32 `protobuf:"fixed32,12,opt,name=target_memory_utilization,json=targetMemoryUtilization,proto3,oneof" json:"target_memory_utilization,omitempty"`
}
func (x *HPARuleConfig) Reset() {
*x = HPARuleConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[106]
+ mi := &file_api_v1_recommendation_proto_msgTypes[108]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9142,7 +10811,7 @@ func (x *HPARuleConfig) String() string {
func (*HPARuleConfig) ProtoMessage() {}
func (x *HPARuleConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[106]
+ mi := &file_api_v1_recommendation_proto_msgTypes[108]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9155,7 +10824,7 @@ func (x *HPARuleConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use HPARuleConfig.ProtoReflect.Descriptor instead.
func (*HPARuleConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{106}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{108}
}
func (x *HPARuleConfig) GetEnabled() bool {
@@ -9179,20 +10848,6 @@ func (x *HPARuleConfig) GetMaxReplicas() int32 {
return 0
}
-func (x *HPARuleConfig) GetTargetUtilization() float32 {
- if x != nil && x.TargetUtilization != nil {
- return *x.TargetUtilization
- }
- return 0
-}
-
-func (x *HPARuleConfig) GetPrimaryMetric() HPAMetricType {
- if x != nil && x.PrimaryMetric != nil {
- return *x.PrimaryMetric
- }
- return HPAMetricType_HPA_METRIC_TYPE_UNSPECIFIED
-}
-
func (x *HPARuleConfig) GetMaxReplicaChangePercent() float32 {
if x != nil && x.MaxReplicaChangePercent != nil {
return *x.MaxReplicaChangePercent
@@ -9235,13 +10890,6 @@ func (x *HPARuleConfig) GetScaleDownCooldownSeconds() int32 {
return 0
}
-func (x *HPARuleConfig) GetTargetMemoryUtilization() float32 {
- if x != nil && x.TargetMemoryUtilization != nil {
- return *x.TargetMemoryUtilization
- }
- return 0
-}
-
type EmergencyResponseConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -9259,7 +10907,7 @@ type EmergencyResponseConfig struct {
func (x *EmergencyResponseConfig) Reset() {
*x = EmergencyResponseConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[107]
+ mi := &file_api_v1_recommendation_proto_msgTypes[109]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9272,7 +10920,7 @@ func (x *EmergencyResponseConfig) String() string {
func (*EmergencyResponseConfig) ProtoMessage() {}
func (x *EmergencyResponseConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[107]
+ mi := &file_api_v1_recommendation_proto_msgTypes[109]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9285,7 +10933,7 @@ func (x *EmergencyResponseConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use EmergencyResponseConfig.ProtoReflect.Descriptor instead.
func (*EmergencyResponseConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{107}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{109}
}
func (x *EmergencyResponseConfig) GetOomEnabled() bool {
@@ -9337,36 +10985,42 @@ func (x *EmergencyResponseConfig) GetCpuThrottlingMultiplier() float32 {
return 0
}
-// PercentileValues contains pre-computed percentile values for a single resource axis
-type PercentileValues struct {
+// KEDAScaledObjectTemplate is the user-authored KEDA ScaledObject configuration
+// carried from dakr to the in-cluster tunr operator. tunr materialises it into
+// a live ScaledObject and owns the lifecycle (create/update/delete).
+type KEDAScaledObjectTemplate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- P50 int64 `protobuf:"varint,1,opt,name=p50,proto3" json:"p50,omitempty"`
- P80 int64 `protobuf:"varint,2,opt,name=p80,proto3" json:"p80,omitempty"`
- P90 int64 `protobuf:"varint,3,opt,name=p90,proto3" json:"p90,omitempty"`
- P95 int64 `protobuf:"varint,4,opt,name=p95,proto3" json:"p95,omitempty"`
- P99 int64 `protobuf:"varint,5,opt,name=p99,proto3" json:"p99,omitempty"`
+ Triggers []*KEDATrigger `protobuf:"bytes,1,rep,name=triggers,proto3" json:"triggers,omitempty"`
+ MinReplicaCount *int32 `protobuf:"varint,2,opt,name=min_replica_count,json=minReplicaCount,proto3,oneof" json:"min_replica_count,omitempty"`
+ MaxReplicaCount *int32 `protobuf:"varint,3,opt,name=max_replica_count,json=maxReplicaCount,proto3,oneof" json:"max_replica_count,omitempty"`
+ IdleReplicaCount *int32 `protobuf:"varint,4,opt,name=idle_replica_count,json=idleReplicaCount,proto3,oneof" json:"idle_replica_count,omitempty"`
+ PollingInterval *int32 `protobuf:"varint,5,opt,name=polling_interval,json=pollingInterval,proto3,oneof" json:"polling_interval,omitempty"`
+ CooldownPeriod *int32 `protobuf:"varint,6,opt,name=cooldown_period,json=cooldownPeriod,proto3,oneof" json:"cooldown_period,omitempty"`
+ InitialCooldownPeriod *int32 `protobuf:"varint,7,opt,name=initial_cooldown_period,json=initialCooldownPeriod,proto3,oneof" json:"initial_cooldown_period,omitempty"`
+ Fallback *KEDAFallback `protobuf:"bytes,8,opt,name=fallback,proto3,oneof" json:"fallback,omitempty"`
+ Advanced *KEDAAdvanced `protobuf:"bytes,9,opt,name=advanced,proto3,oneof" json:"advanced,omitempty"`
}
-func (x *PercentileValues) Reset() {
- *x = PercentileValues{}
+func (x *KEDAScaledObjectTemplate) Reset() {
+ *x = KEDAScaledObjectTemplate{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[108]
+ mi := &file_api_v1_recommendation_proto_msgTypes[110]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PercentileValues) String() string {
+func (x *KEDAScaledObjectTemplate) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PercentileValues) ProtoMessage() {}
+func (*KEDAScaledObjectTemplate) ProtoMessage() {}
-func (x *PercentileValues) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[108]
+func (x *KEDAScaledObjectTemplate) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[110]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9377,75 +11031,104 @@ func (x *PercentileValues) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PercentileValues.ProtoReflect.Descriptor instead.
-func (*PercentileValues) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{108}
+// Deprecated: Use KEDAScaledObjectTemplate.ProtoReflect.Descriptor instead.
+func (*KEDAScaledObjectTemplate) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{110}
}
-func (x *PercentileValues) GetP50() int64 {
+func (x *KEDAScaledObjectTemplate) GetTriggers() []*KEDATrigger {
if x != nil {
- return x.P50
+ return x.Triggers
+ }
+ return nil
+}
+
+func (x *KEDAScaledObjectTemplate) GetMinReplicaCount() int32 {
+ if x != nil && x.MinReplicaCount != nil {
+ return *x.MinReplicaCount
}
return 0
}
-func (x *PercentileValues) GetP80() int64 {
- if x != nil {
- return x.P80
+func (x *KEDAScaledObjectTemplate) GetMaxReplicaCount() int32 {
+ if x != nil && x.MaxReplicaCount != nil {
+ return *x.MaxReplicaCount
}
return 0
}
-func (x *PercentileValues) GetP90() int64 {
- if x != nil {
- return x.P90
+func (x *KEDAScaledObjectTemplate) GetIdleReplicaCount() int32 {
+ if x != nil && x.IdleReplicaCount != nil {
+ return *x.IdleReplicaCount
}
return 0
}
-func (x *PercentileValues) GetP95() int64 {
- if x != nil {
- return x.P95
+func (x *KEDAScaledObjectTemplate) GetPollingInterval() int32 {
+ if x != nil && x.PollingInterval != nil {
+ return *x.PollingInterval
}
return 0
}
-func (x *PercentileValues) GetP99() int64 {
- if x != nil {
- return x.P99
+func (x *KEDAScaledObjectTemplate) GetCooldownPeriod() int32 {
+ if x != nil && x.CooldownPeriod != nil {
+ return *x.CooldownPeriod
}
return 0
}
-// ResourcePercentiles contains percentile sets for all resource axes
-type ResourcePercentiles struct {
+func (x *KEDAScaledObjectTemplate) GetInitialCooldownPeriod() int32 {
+ if x != nil && x.InitialCooldownPeriod != nil {
+ return *x.InitialCooldownPeriod
+ }
+ return 0
+}
+
+func (x *KEDAScaledObjectTemplate) GetFallback() *KEDAFallback {
+ if x != nil {
+ return x.Fallback
+ }
+ return nil
+}
+
+func (x *KEDAScaledObjectTemplate) GetAdvanced() *KEDAAdvanced {
+ if x != nil {
+ return x.Advanced
+ }
+ return nil
+}
+
+type KEDATrigger struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Cpu *PercentileValues `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
- Memory *PercentileValues `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
- Network *PercentileValues `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"`
- Disk *PercentileValues `protobuf:"bytes,4,opt,name=disk,proto3" json:"disk,omitempty"`
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ MetricType string `protobuf:"bytes,4,opt,name=metric_type,json=metricType,proto3" json:"metric_type,omitempty"`
+ AuthenticationRef *KEDAAuthenticationRef `protobuf:"bytes,5,opt,name=authentication_ref,json=authenticationRef,proto3,oneof" json:"authentication_ref,omitempty"`
+ UseCachedMetrics bool `protobuf:"varint,6,opt,name=use_cached_metrics,json=useCachedMetrics,proto3" json:"use_cached_metrics,omitempty"`
}
-func (x *ResourcePercentiles) Reset() {
- *x = ResourcePercentiles{}
+func (x *KEDATrigger) Reset() {
+ *x = KEDATrigger{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[109]
+ mi := &file_api_v1_recommendation_proto_msgTypes[111]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourcePercentiles) String() string {
+func (x *KEDATrigger) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourcePercentiles) ProtoMessage() {}
+func (*KEDATrigger) ProtoMessage() {}
-func (x *ResourcePercentiles) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[109]
+func (x *KEDATrigger) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[111]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9456,70 +11139,79 @@ func (x *ResourcePercentiles) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourcePercentiles.ProtoReflect.Descriptor instead.
-func (*ResourcePercentiles) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{109}
+// Deprecated: Use KEDATrigger.ProtoReflect.Descriptor instead.
+func (*KEDATrigger) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{111}
}
-func (x *ResourcePercentiles) GetCpu() *PercentileValues {
+func (x *KEDATrigger) GetType() string {
if x != nil {
- return x.Cpu
+ return x.Type
}
- return nil
+ return ""
}
-func (x *ResourcePercentiles) GetMemory() *PercentileValues {
+func (x *KEDATrigger) GetName() string {
if x != nil {
- return x.Memory
+ return x.Name
}
- return nil
+ return ""
}
-func (x *ResourcePercentiles) GetNetwork() *PercentileValues {
+func (x *KEDATrigger) GetMetadata() map[string]string {
if x != nil {
- return x.Network
+ return x.Metadata
}
return nil
}
-func (x *ResourcePercentiles) GetDisk() *PercentileValues {
+func (x *KEDATrigger) GetMetricType() string {
if x != nil {
- return x.Disk
+ return x.MetricType
+ }
+ return ""
+}
+
+func (x *KEDATrigger) GetAuthenticationRef() *KEDAAuthenticationRef {
+ if x != nil {
+ return x.AuthenticationRef
}
return nil
}
-// BurstinessRatios contains the p95/p50 ratio for each resource axis
-type BurstinessRatios struct {
+func (x *KEDATrigger) GetUseCachedMetrics() bool {
+ if x != nil {
+ return x.UseCachedMetrics
+ }
+ return false
+}
+
+type KEDAAuthenticationRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Cpu float64 `protobuf:"fixed64,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
- Memory float64 `protobuf:"fixed64,2,opt,name=memory,proto3" json:"memory,omitempty"`
- Network float64 `protobuf:"fixed64,3,opt,name=network,proto3" json:"network,omitempty"`
- Disk float64 `protobuf:"fixed64,4,opt,name=disk,proto3" json:"disk,omitempty"`
- PmaxCpu float64 `protobuf:"fixed64,5,opt,name=pmax_cpu,json=pmaxCpu,proto3" json:"pmax_cpu,omitempty"` // pmax/p50 ratio for CPU (spike severity)
- PmaxMem float64 `protobuf:"fixed64,6,opt,name=pmax_mem,json=pmaxMem,proto3" json:"pmax_mem,omitempty"` // pmax/p50 ratio for memory (spike severity)
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
}
-func (x *BurstinessRatios) Reset() {
- *x = BurstinessRatios{}
+func (x *KEDAAuthenticationRef) Reset() {
+ *x = KEDAAuthenticationRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[110]
+ mi := &file_api_v1_recommendation_proto_msgTypes[112]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BurstinessRatios) String() string {
+func (x *KEDAAuthenticationRef) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BurstinessRatios) ProtoMessage() {}
+func (*KEDAAuthenticationRef) ProtoMessage() {}
-func (x *BurstinessRatios) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[110]
+func (x *KEDAAuthenticationRef) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[112]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9530,80 +11222,52 @@ func (x *BurstinessRatios) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BurstinessRatios.ProtoReflect.Descriptor instead.
-func (*BurstinessRatios) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{110}
-}
-
-func (x *BurstinessRatios) GetCpu() float64 {
- if x != nil {
- return x.Cpu
- }
- return 0
-}
-
-func (x *BurstinessRatios) GetMemory() float64 {
- if x != nil {
- return x.Memory
- }
- return 0
-}
-
-func (x *BurstinessRatios) GetNetwork() float64 {
- if x != nil {
- return x.Network
- }
- return 0
-}
-
-func (x *BurstinessRatios) GetDisk() float64 {
- if x != nil {
- return x.Disk
- }
- return 0
+// Deprecated: Use KEDAAuthenticationRef.ProtoReflect.Descriptor instead.
+func (*KEDAAuthenticationRef) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{112}
}
-func (x *BurstinessRatios) GetPmaxCpu() float64 {
+func (x *KEDAAuthenticationRef) GetName() string {
if x != nil {
- return x.PmaxCpu
+ return x.Name
}
- return 0
+ return ""
}
-func (x *BurstinessRatios) GetPmaxMem() float64 {
+func (x *KEDAAuthenticationRef) GetKind() string {
if x != nil {
- return x.PmaxMem
+ return x.Kind
}
- return 0
+ return ""
}
-// WorkloadClassification contains workload classification based on resource dominance and burstiness
-type WorkloadClassification struct {
+type KEDAFallback struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- DominantResource string `protobuf:"bytes,1,opt,name=dominant_resource,json=dominantResource,proto3" json:"dominant_resource,omitempty"` // cpu, memory, gpu, network, disk, unknown
- Burstiness *BurstinessRatios `protobuf:"bytes,2,opt,name=burstiness,proto3" json:"burstiness,omitempty"`
+ FailureThreshold int32 `protobuf:"varint,1,opt,name=failure_threshold,json=failureThreshold,proto3" json:"failure_threshold,omitempty"`
+ Replicas int32 `protobuf:"varint,2,opt,name=replicas,proto3" json:"replicas,omitempty"`
+ Behavior string `protobuf:"bytes,3,opt,name=behavior,proto3" json:"behavior,omitempty"`
}
-func (x *WorkloadClassification) Reset() {
- *x = WorkloadClassification{}
+func (x *KEDAFallback) Reset() {
+ *x = KEDAFallback{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[111]
+ mi := &file_api_v1_recommendation_proto_msgTypes[113]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadClassification) String() string {
+func (x *KEDAFallback) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadClassification) ProtoMessage() {}
+func (*KEDAFallback) ProtoMessage() {}
-func (x *WorkloadClassification) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[111]
+func (x *KEDAFallback) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[113]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9614,51 +11278,60 @@ func (x *WorkloadClassification) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadClassification.ProtoReflect.Descriptor instead.
-func (*WorkloadClassification) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{111}
+// Deprecated: Use KEDAFallback.ProtoReflect.Descriptor instead.
+func (*KEDAFallback) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{113}
}
-func (x *WorkloadClassification) GetDominantResource() string {
+func (x *KEDAFallback) GetFailureThreshold() int32 {
if x != nil {
- return x.DominantResource
+ return x.FailureThreshold
}
- return ""
+ return 0
}
-func (x *WorkloadClassification) GetBurstiness() *BurstinessRatios {
+func (x *KEDAFallback) GetReplicas() int32 {
if x != nil {
- return x.Burstiness
+ return x.Replicas
}
- return nil
+ return 0
}
-type BatchWorkloadRules struct {
+func (x *KEDAFallback) GetBehavior() string {
+ if x != nil {
+ return x.Behavior
+ }
+ return ""
+}
+
+type KEDAAdvanced struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Rules []*WorkloadRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
- RuleIdsToDelete []string `protobuf:"bytes,2,rep,name=rule_ids_to_delete,json=ruleIdsToDelete,proto3" json:"rule_ids_to_delete,omitempty"` // rule IDs whose CRDs should be deleted from cluster
+ RestoreToOriginalReplicaCount bool `protobuf:"varint,1,opt,name=restore_to_original_replica_count,json=restoreToOriginalReplicaCount,proto3" json:"restore_to_original_replica_count,omitempty"`
+ // advanced_behavior_json carries the k8s HorizontalPodAutoscalerBehavior as an
+ // opaque JSON string so dakr never re-models k8s types; tunr unmarshals it.
+ AdvancedBehaviorJson string `protobuf:"bytes,2,opt,name=advanced_behavior_json,json=advancedBehaviorJson,proto3" json:"advanced_behavior_json,omitempty"`
}
-func (x *BatchWorkloadRules) Reset() {
- *x = BatchWorkloadRules{}
+func (x *KEDAAdvanced) Reset() {
+ *x = KEDAAdvanced{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[112]
+ mi := &file_api_v1_recommendation_proto_msgTypes[114]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BatchWorkloadRules) String() string {
+func (x *KEDAAdvanced) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BatchWorkloadRules) ProtoMessage() {}
+func (*KEDAAdvanced) ProtoMessage() {}
-func (x *BatchWorkloadRules) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[112]
+func (x *KEDAAdvanced) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[114]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9669,50 +11342,55 @@ func (x *BatchWorkloadRules) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BatchWorkloadRules.ProtoReflect.Descriptor instead.
-func (*BatchWorkloadRules) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{112}
+// Deprecated: Use KEDAAdvanced.ProtoReflect.Descriptor instead.
+func (*KEDAAdvanced) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{114}
}
-func (x *BatchWorkloadRules) GetRules() []*WorkloadRule {
+func (x *KEDAAdvanced) GetRestoreToOriginalReplicaCount() bool {
if x != nil {
- return x.Rules
+ return x.RestoreToOriginalReplicaCount
}
- return nil
+ return false
}
-func (x *BatchWorkloadRules) GetRuleIdsToDelete() []string {
+func (x *KEDAAdvanced) GetAdvancedBehaviorJson() string {
if x != nil {
- return x.RuleIdsToDelete
+ return x.AdvancedBehaviorJson
}
- return nil
+ return ""
}
-type WorkloadWithActiveRecommendations struct {
+// PercentileValues contains pre-computed percentile values for a single resource axis
+type PercentileValues struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Workloads []*WorkloadIdentifier `protobuf:"bytes,1,rep,name=workloads,proto3" json:"workloads,omitempty"` // picking this pattern since caller has to iterate over the list anyway
+ P50 int64 `protobuf:"varint,1,opt,name=p50,proto3" json:"p50,omitempty"`
+ P80 int64 `protobuf:"varint,2,opt,name=p80,proto3" json:"p80,omitempty"`
+ P90 int64 `protobuf:"varint,3,opt,name=p90,proto3" json:"p90,omitempty"`
+ P95 int64 `protobuf:"varint,4,opt,name=p95,proto3" json:"p95,omitempty"`
+ P99 int64 `protobuf:"varint,5,opt,name=p99,proto3" json:"p99,omitempty"`
}
-func (x *WorkloadWithActiveRecommendations) Reset() {
- *x = WorkloadWithActiveRecommendations{}
+func (x *PercentileValues) Reset() {
+ *x = PercentileValues{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[113]
+ mi := &file_api_v1_recommendation_proto_msgTypes[115]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadWithActiveRecommendations) String() string {
+func (x *PercentileValues) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadWithActiveRecommendations) ProtoMessage() {}
+func (*PercentileValues) ProtoMessage() {}
-func (x *WorkloadWithActiveRecommendations) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[113]
+func (x *PercentileValues) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[115]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9723,23 +11401,424 @@ func (x *WorkloadWithActiveRecommendations) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadWithActiveRecommendations.ProtoReflect.Descriptor instead.
-func (*WorkloadWithActiveRecommendations) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{113}
+// Deprecated: Use PercentileValues.ProtoReflect.Descriptor instead.
+func (*PercentileValues) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{115}
}
-func (x *WorkloadWithActiveRecommendations) GetWorkloads() []*WorkloadIdentifier {
+func (x *PercentileValues) GetP50() int64 {
if x != nil {
- return x.Workloads
+ return x.P50
}
- return nil
+ return 0
}
-// GenericResourceRecommendation definitions
-type GenericResourceRecommendation struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *PercentileValues) GetP80() int64 {
+ if x != nil {
+ return x.P80
+ }
+ return 0
+}
+
+func (x *PercentileValues) GetP90() int64 {
+ if x != nil {
+ return x.P90
+ }
+ return 0
+}
+
+func (x *PercentileValues) GetP95() int64 {
+ if x != nil {
+ return x.P95
+ }
+ return 0
+}
+
+func (x *PercentileValues) GetP99() int64 {
+ if x != nil {
+ return x.P99
+ }
+ return 0
+}
+
+// ResourcePercentiles contains percentile sets for all resource axes
+type ResourcePercentiles struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cpu *PercentileValues `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
+ Memory *PercentileValues `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
+ Network *PercentileValues `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"`
+ Disk *PercentileValues `protobuf:"bytes,4,opt,name=disk,proto3" json:"disk,omitempty"`
+}
+
+func (x *ResourcePercentiles) Reset() {
+ *x = ResourcePercentiles{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[116]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ResourcePercentiles) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResourcePercentiles) ProtoMessage() {}
+
+func (x *ResourcePercentiles) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[116]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResourcePercentiles.ProtoReflect.Descriptor instead.
+func (*ResourcePercentiles) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{116}
+}
+
+func (x *ResourcePercentiles) GetCpu() *PercentileValues {
+ if x != nil {
+ return x.Cpu
+ }
+ return nil
+}
+
+func (x *ResourcePercentiles) GetMemory() *PercentileValues {
+ if x != nil {
+ return x.Memory
+ }
+ return nil
+}
+
+func (x *ResourcePercentiles) GetNetwork() *PercentileValues {
+ if x != nil {
+ return x.Network
+ }
+ return nil
+}
+
+func (x *ResourcePercentiles) GetDisk() *PercentileValues {
+ if x != nil {
+ return x.Disk
+ }
+ return nil
+}
+
+// BurstinessRatios contains the p95/p50 ratio for each resource axis
+type BurstinessRatios struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cpu float64 `protobuf:"fixed64,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
+ Memory float64 `protobuf:"fixed64,2,opt,name=memory,proto3" json:"memory,omitempty"`
+ Network float64 `protobuf:"fixed64,3,opt,name=network,proto3" json:"network,omitempty"`
+ Disk float64 `protobuf:"fixed64,4,opt,name=disk,proto3" json:"disk,omitempty"`
+ PmaxCpu float64 `protobuf:"fixed64,5,opt,name=pmax_cpu,json=pmaxCpu,proto3" json:"pmax_cpu,omitempty"` // pmax/p50 ratio for CPU (spike severity)
+ PmaxMem float64 `protobuf:"fixed64,6,opt,name=pmax_mem,json=pmaxMem,proto3" json:"pmax_mem,omitempty"` // pmax/p50 ratio for memory (spike severity)
+}
+
+func (x *BurstinessRatios) Reset() {
+ *x = BurstinessRatios{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[117]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BurstinessRatios) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BurstinessRatios) ProtoMessage() {}
+
+func (x *BurstinessRatios) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[117]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BurstinessRatios.ProtoReflect.Descriptor instead.
+func (*BurstinessRatios) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{117}
+}
+
+func (x *BurstinessRatios) GetCpu() float64 {
+ if x != nil {
+ return x.Cpu
+ }
+ return 0
+}
+
+func (x *BurstinessRatios) GetMemory() float64 {
+ if x != nil {
+ return x.Memory
+ }
+ return 0
+}
+
+func (x *BurstinessRatios) GetNetwork() float64 {
+ if x != nil {
+ return x.Network
+ }
+ return 0
+}
+
+func (x *BurstinessRatios) GetDisk() float64 {
+ if x != nil {
+ return x.Disk
+ }
+ return 0
+}
+
+func (x *BurstinessRatios) GetPmaxCpu() float64 {
+ if x != nil {
+ return x.PmaxCpu
+ }
+ return 0
+}
+
+func (x *BurstinessRatios) GetPmaxMem() float64 {
+ if x != nil {
+ return x.PmaxMem
+ }
+ return 0
+}
+
+// WorkloadClassification contains workload classification based on resource dominance and burstiness
+type WorkloadClassification struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DominantResource string `protobuf:"bytes,1,opt,name=dominant_resource,json=dominantResource,proto3" json:"dominant_resource,omitempty"` // cpu, memory, gpu, network, disk, unknown
+ Burstiness *BurstinessRatios `protobuf:"bytes,2,opt,name=burstiness,proto3" json:"burstiness,omitempty"`
+}
+
+func (x *WorkloadClassification) Reset() {
+ *x = WorkloadClassification{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[118]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadClassification) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadClassification) ProtoMessage() {}
+
+func (x *WorkloadClassification) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[118]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadClassification.ProtoReflect.Descriptor instead.
+func (*WorkloadClassification) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{118}
+}
+
+func (x *WorkloadClassification) GetDominantResource() string {
+ if x != nil {
+ return x.DominantResource
+ }
+ return ""
+}
+
+func (x *WorkloadClassification) GetBurstiness() *BurstinessRatios {
+ if x != nil {
+ return x.Burstiness
+ }
+ return nil
+}
+
+type BatchWorkloadRules struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rules []*WorkloadRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
+ RuleIdsToDelete []string `protobuf:"bytes,2,rep,name=rule_ids_to_delete,json=ruleIdsToDelete,proto3" json:"rule_ids_to_delete,omitempty"` // rule IDs whose CRDs should be deleted from cluster
+}
+
+func (x *BatchWorkloadRules) Reset() {
+ *x = BatchWorkloadRules{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[119]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchWorkloadRules) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchWorkloadRules) ProtoMessage() {}
+
+func (x *BatchWorkloadRules) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[119]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchWorkloadRules.ProtoReflect.Descriptor instead.
+func (*BatchWorkloadRules) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{119}
+}
+
+func (x *BatchWorkloadRules) GetRules() []*WorkloadRule {
+ if x != nil {
+ return x.Rules
+ }
+ return nil
+}
+
+func (x *BatchWorkloadRules) GetRuleIdsToDelete() []string {
+ if x != nil {
+ return x.RuleIdsToDelete
+ }
+ return nil
+}
+
+type BatchHPAConnectors struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Connectors []*HPAConnector `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"`
+ ConnectorIdsToDelete []string `protobuf:"bytes,2,rep,name=connector_ids_to_delete,json=connectorIdsToDelete,proto3" json:"connector_ids_to_delete,omitempty"`
+}
+
+func (x *BatchHPAConnectors) Reset() {
+ *x = BatchHPAConnectors{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[120]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchHPAConnectors) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchHPAConnectors) ProtoMessage() {}
+
+func (x *BatchHPAConnectors) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[120]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchHPAConnectors.ProtoReflect.Descriptor instead.
+func (*BatchHPAConnectors) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{120}
+}
+
+func (x *BatchHPAConnectors) GetConnectors() []*HPAConnector {
+ if x != nil {
+ return x.Connectors
+ }
+ return nil
+}
+
+func (x *BatchHPAConnectors) GetConnectorIdsToDelete() []string {
+ if x != nil {
+ return x.ConnectorIdsToDelete
+ }
+ return nil
+}
+
+type WorkloadWithActiveRecommendations struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Workloads []*WorkloadIdentifier `protobuf:"bytes,1,rep,name=workloads,proto3" json:"workloads,omitempty"` // picking this pattern since caller has to iterate over the list anyway
+}
+
+func (x *WorkloadWithActiveRecommendations) Reset() {
+ *x = WorkloadWithActiveRecommendations{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[121]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadWithActiveRecommendations) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadWithActiveRecommendations) ProtoMessage() {}
+
+func (x *WorkloadWithActiveRecommendations) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[121]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadWithActiveRecommendations.ProtoReflect.Descriptor instead.
+func (*WorkloadWithActiveRecommendations) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{121}
+}
+
+func (x *WorkloadWithActiveRecommendations) GetWorkloads() []*WorkloadIdentifier {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+// GenericResourceRecommendation definitions
+type GenericResourceRecommendation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
RecommendationId string `protobuf:"bytes,1,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
@@ -9767,7 +11846,7 @@ type GenericResourceRecommendation struct {
func (x *GenericResourceRecommendation) Reset() {
*x = GenericResourceRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[114]
+ mi := &file_api_v1_recommendation_proto_msgTypes[122]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9780,7 +11859,7 @@ func (x *GenericResourceRecommendation) String() string {
func (*GenericResourceRecommendation) ProtoMessage() {}
func (x *GenericResourceRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[114]
+ mi := &file_api_v1_recommendation_proto_msgTypes[122]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9793,7 +11872,7 @@ func (x *GenericResourceRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use GenericResourceRecommendation.ProtoReflect.Descriptor instead.
func (*GenericResourceRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{114}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{122}
}
func (x *GenericResourceRecommendation) GetRecommendationId() string {
@@ -9905,7 +11984,7 @@ type BatchGenericResourceRecommendations struct {
func (x *BatchGenericResourceRecommendations) Reset() {
*x = BatchGenericResourceRecommendations{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[115]
+ mi := &file_api_v1_recommendation_proto_msgTypes[123]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9918,7 +11997,7 @@ func (x *BatchGenericResourceRecommendations) String() string {
func (*BatchGenericResourceRecommendations) ProtoMessage() {}
func (x *BatchGenericResourceRecommendations) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[115]
+ mi := &file_api_v1_recommendation_proto_msgTypes[123]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9931,7 +12010,7 @@ func (x *BatchGenericResourceRecommendations) ProtoReflect() protoreflect.Messag
// Deprecated: Use BatchGenericResourceRecommendations.ProtoReflect.Descriptor instead.
func (*BatchGenericResourceRecommendations) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{115}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{123}
}
func (x *BatchGenericResourceRecommendations) GetRecommendations() []*GenericResourceRecommendation {
@@ -9952,7 +12031,7 @@ type BatchPvcStorageRecommendations struct {
func (x *BatchPvcStorageRecommendations) Reset() {
*x = BatchPvcStorageRecommendations{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[116]
+ mi := &file_api_v1_recommendation_proto_msgTypes[124]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9965,7 +12044,7 @@ func (x *BatchPvcStorageRecommendations) String() string {
func (*BatchPvcStorageRecommendations) ProtoMessage() {}
func (x *BatchPvcStorageRecommendations) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[116]
+ mi := &file_api_v1_recommendation_proto_msgTypes[124]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9978,7 +12057,7 @@ func (x *BatchPvcStorageRecommendations) ProtoReflect() protoreflect.Message {
// Deprecated: Use BatchPvcStorageRecommendations.ProtoReflect.Descriptor instead.
func (*BatchPvcStorageRecommendations) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{116}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{124}
}
func (x *BatchPvcStorageRecommendations) GetRecommendations() []*PvcStorageRecommendation {
@@ -10001,7 +12080,7 @@ type GeneratePodDisruptionBudgetRequest struct {
func (x *GeneratePodDisruptionBudgetRequest) Reset() {
*x = GeneratePodDisruptionBudgetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[117]
+ mi := &file_api_v1_recommendation_proto_msgTypes[125]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10014,7 +12093,7 @@ func (x *GeneratePodDisruptionBudgetRequest) String() string {
func (*GeneratePodDisruptionBudgetRequest) ProtoMessage() {}
func (x *GeneratePodDisruptionBudgetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[117]
+ mi := &file_api_v1_recommendation_proto_msgTypes[125]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10027,7 +12106,7 @@ func (x *GeneratePodDisruptionBudgetRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use GeneratePodDisruptionBudgetRequest.ProtoReflect.Descriptor instead.
func (*GeneratePodDisruptionBudgetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{117}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{125}
}
func (x *GeneratePodDisruptionBudgetRequest) GetClusterId() string {
@@ -10062,7 +12141,7 @@ type GeneratePodDisruptionBudgetResponse struct {
func (x *GeneratePodDisruptionBudgetResponse) Reset() {
*x = GeneratePodDisruptionBudgetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[118]
+ mi := &file_api_v1_recommendation_proto_msgTypes[126]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10075,7 +12154,7 @@ func (x *GeneratePodDisruptionBudgetResponse) String() string {
func (*GeneratePodDisruptionBudgetResponse) ProtoMessage() {}
func (x *GeneratePodDisruptionBudgetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[118]
+ mi := &file_api_v1_recommendation_proto_msgTypes[126]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10088,7 +12167,7 @@ func (x *GeneratePodDisruptionBudgetResponse) ProtoReflect() protoreflect.Messag
// Deprecated: Use GeneratePodDisruptionBudgetResponse.ProtoReflect.Descriptor instead.
func (*GeneratePodDisruptionBudgetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{118}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{126}
}
func (x *GeneratePodDisruptionBudgetResponse) GetRecommendation() *GenericResourceRecommendation {
@@ -10111,7 +12190,7 @@ type GenerateAndCreatePodDisruptionBudgetRequest struct {
func (x *GenerateAndCreatePodDisruptionBudgetRequest) Reset() {
*x = GenerateAndCreatePodDisruptionBudgetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[119]
+ mi := &file_api_v1_recommendation_proto_msgTypes[127]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10124,7 +12203,7 @@ func (x *GenerateAndCreatePodDisruptionBudgetRequest) String() string {
func (*GenerateAndCreatePodDisruptionBudgetRequest) ProtoMessage() {}
func (x *GenerateAndCreatePodDisruptionBudgetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[119]
+ mi := &file_api_v1_recommendation_proto_msgTypes[127]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10137,7 +12216,7 @@ func (x *GenerateAndCreatePodDisruptionBudgetRequest) ProtoReflect() protoreflec
// Deprecated: Use GenerateAndCreatePodDisruptionBudgetRequest.ProtoReflect.Descriptor instead.
func (*GenerateAndCreatePodDisruptionBudgetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{119}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{127}
}
func (x *GenerateAndCreatePodDisruptionBudgetRequest) GetClusterId() string {
@@ -10172,7 +12251,7 @@ type GenerateAndCreatePodDisruptionBudgetResponse struct {
func (x *GenerateAndCreatePodDisruptionBudgetResponse) Reset() {
*x = GenerateAndCreatePodDisruptionBudgetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[120]
+ mi := &file_api_v1_recommendation_proto_msgTypes[128]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10185,7 +12264,7 @@ func (x *GenerateAndCreatePodDisruptionBudgetResponse) String() string {
func (*GenerateAndCreatePodDisruptionBudgetResponse) ProtoMessage() {}
func (x *GenerateAndCreatePodDisruptionBudgetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[120]
+ mi := &file_api_v1_recommendation_proto_msgTypes[128]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10198,7 +12277,7 @@ func (x *GenerateAndCreatePodDisruptionBudgetResponse) ProtoReflect() protorefle
// Deprecated: Use GenerateAndCreatePodDisruptionBudgetResponse.ProtoReflect.Descriptor instead.
func (*GenerateAndCreatePodDisruptionBudgetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{120}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{128}
}
func (x *GenerateAndCreatePodDisruptionBudgetResponse) GetRecommendation() *GenericResourceRecommendation {
@@ -10220,7 +12299,7 @@ type CreatePodDisruptionBudgetRequest struct {
func (x *CreatePodDisruptionBudgetRequest) Reset() {
*x = CreatePodDisruptionBudgetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[121]
+ mi := &file_api_v1_recommendation_proto_msgTypes[129]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10233,7 +12312,7 @@ func (x *CreatePodDisruptionBudgetRequest) String() string {
func (*CreatePodDisruptionBudgetRequest) ProtoMessage() {}
func (x *CreatePodDisruptionBudgetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[121]
+ mi := &file_api_v1_recommendation_proto_msgTypes[129]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10246,7 +12325,7 @@ func (x *CreatePodDisruptionBudgetRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreatePodDisruptionBudgetRequest.ProtoReflect.Descriptor instead.
func (*CreatePodDisruptionBudgetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{121}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{129}
}
func (x *CreatePodDisruptionBudgetRequest) GetTeamId() string {
@@ -10274,7 +12353,7 @@ type CreatePodDisruptionBudgetResponse struct {
func (x *CreatePodDisruptionBudgetResponse) Reset() {
*x = CreatePodDisruptionBudgetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[122]
+ mi := &file_api_v1_recommendation_proto_msgTypes[130]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10287,7 +12366,7 @@ func (x *CreatePodDisruptionBudgetResponse) String() string {
func (*CreatePodDisruptionBudgetResponse) ProtoMessage() {}
func (x *CreatePodDisruptionBudgetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[122]
+ mi := &file_api_v1_recommendation_proto_msgTypes[130]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10300,7 +12379,7 @@ func (x *CreatePodDisruptionBudgetResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use CreatePodDisruptionBudgetResponse.ProtoReflect.Descriptor instead.
func (*CreatePodDisruptionBudgetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{122}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{130}
}
func (x *CreatePodDisruptionBudgetResponse) GetRecommendation() *GenericResourceRecommendation {
@@ -10322,7 +12401,7 @@ type GetPDBRecommendationForWorkloadRequest struct {
func (x *GetPDBRecommendationForWorkloadRequest) Reset() {
*x = GetPDBRecommendationForWorkloadRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[123]
+ mi := &file_api_v1_recommendation_proto_msgTypes[131]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10335,7 +12414,7 @@ func (x *GetPDBRecommendationForWorkloadRequest) String() string {
func (*GetPDBRecommendationForWorkloadRequest) ProtoMessage() {}
func (x *GetPDBRecommendationForWorkloadRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[123]
+ mi := &file_api_v1_recommendation_proto_msgTypes[131]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10348,7 +12427,7 @@ func (x *GetPDBRecommendationForWorkloadRequest) ProtoReflect() protoreflect.Mes
// Deprecated: Use GetPDBRecommendationForWorkloadRequest.ProtoReflect.Descriptor instead.
func (*GetPDBRecommendationForWorkloadRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{123}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{131}
}
func (x *GetPDBRecommendationForWorkloadRequest) GetClusterId() string {
@@ -10377,7 +12456,7 @@ type GetPDBRecommendationForWorkloadResponse struct {
func (x *GetPDBRecommendationForWorkloadResponse) Reset() {
*x = GetPDBRecommendationForWorkloadResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[124]
+ mi := &file_api_v1_recommendation_proto_msgTypes[132]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10390,7 +12469,7 @@ func (x *GetPDBRecommendationForWorkloadResponse) String() string {
func (*GetPDBRecommendationForWorkloadResponse) ProtoMessage() {}
func (x *GetPDBRecommendationForWorkloadResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[124]
+ mi := &file_api_v1_recommendation_proto_msgTypes[132]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10403,7 +12482,7 @@ func (x *GetPDBRecommendationForWorkloadResponse) ProtoReflect() protoreflect.Me
// Deprecated: Use GetPDBRecommendationForWorkloadResponse.ProtoReflect.Descriptor instead.
func (*GetPDBRecommendationForWorkloadResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{124}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{132}
}
func (x *GetPDBRecommendationForWorkloadResponse) GetRecommendation() *GenericResourceRecommendation {
@@ -10413,34 +12492,44 @@ func (x *GetPDBRecommendationForWorkloadResponse) GetRecommendation() *GenericRe
return nil
}
-type ReconcileWorkload struct {
+// StructuralHealthFinding is a single structural-health finding for a workload,
+// composed from either disruption-fragility or a net-new structural check (e.g.
+// topology-concentration). See dakr/services/structuralhealth.
+type StructuralHealthFinding struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind K8SObjectKind `protobuf:"varint,1,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"`
- WorkloadName string `protobuf:"bytes,2,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
- WorkloadUid string `protobuf:"bytes,4,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"` // for consistency + traceability
+ // "DISRUPTION_FRAGILITY" | "TOPOLOGY_CONCENTRATION"
+ CheckType string `protobuf:"bytes,1,opt,name=check_type,json=checkType,proto3" json:"check_type,omitempty"`
+ // "HIGH" | "MEDIUM"
+ Severity string `protobuf:"bytes,2,opt,name=severity,proto3" json:"severity,omitempty"`
+ // e.g. "NO_PDB_MULTI_REPLICA" (fragility) or "ALL_REPLICAS_ONE_NODE" (topology)
+ ReasonCode string `protobuf:"bytes,3,opt,name=reason_code,json=reasonCode,proto3" json:"reason_code,omitempty"`
+ FirstSeenAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=first_seen_at,json=firstSeenAt,proto3" json:"first_seen_at,omitempty"`
+ // Check-specific structured payload (e.g. replica_count/pdb_name for
+ // fragility findings, node_count for topology findings), JSON-encoded since
+ // its shape varies per check type rather than being modeled as a oneof.
+ DetailJson string `protobuf:"bytes,5,opt,name=detail_json,json=detailJson,proto3" json:"detail_json,omitempty"`
}
-func (x *ReconcileWorkload) Reset() {
- *x = ReconcileWorkload{}
+func (x *StructuralHealthFinding) Reset() {
+ *x = StructuralHealthFinding{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[125]
+ mi := &file_api_v1_recommendation_proto_msgTypes[133]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ReconcileWorkload) String() string {
+func (x *StructuralHealthFinding) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ReconcileWorkload) ProtoMessage() {}
+func (*StructuralHealthFinding) ProtoMessage() {}
-func (x *ReconcileWorkload) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[125]
+func (x *StructuralHealthFinding) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[133]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10451,67 +12540,78 @@ func (x *ReconcileWorkload) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ReconcileWorkload.ProtoReflect.Descriptor instead.
-func (*ReconcileWorkload) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{125}
+// Deprecated: Use StructuralHealthFinding.ProtoReflect.Descriptor instead.
+func (*StructuralHealthFinding) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{133}
}
-func (x *ReconcileWorkload) GetKind() K8SObjectKind {
+func (x *StructuralHealthFinding) GetCheckType() string {
if x != nil {
- return x.Kind
+ return x.CheckType
}
- return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
+ return ""
}
-func (x *ReconcileWorkload) GetWorkloadName() string {
+func (x *StructuralHealthFinding) GetSeverity() string {
if x != nil {
- return x.WorkloadName
+ return x.Severity
}
return ""
}
-func (x *ReconcileWorkload) GetNamespace() string {
+func (x *StructuralHealthFinding) GetReasonCode() string {
if x != nil {
- return x.Namespace
+ return x.ReasonCode
}
return ""
}
-func (x *ReconcileWorkload) GetWorkloadUid() string {
+func (x *StructuralHealthFinding) GetFirstSeenAt() *timestamppb.Timestamp {
if x != nil {
- return x.WorkloadUid
+ return x.FirstSeenAt
+ }
+ return nil
+}
+
+func (x *StructuralHealthFinding) GetDetailJson() string {
+ if x != nil {
+ return x.DetailJson
}
return ""
}
-type ReconcileResponse struct {
+// WorkloadStructuralHealth is one workload's fully composed set of open
+// structural-health findings across every check type.
+type WorkloadStructuralHealth struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
- WorkloadUid string `protobuf:"bytes,2,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
- Status ReconcileStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.v1.ReconcileStatus" json:"status,omitempty"`
- UpdatedRecommendation *WorkloadRecommendation `protobuf:"bytes,11,opt,name=updated_recommendation,json=updatedRecommendation,proto3,oneof" json:"updated_recommendation,omitempty"`
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"` // "Deployment" | "StatefulSet"
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Uid string `protobuf:"bytes,5,opt,name=uid,proto3" json:"uid,omitempty"`
+ Findings []*StructuralHealthFinding `protobuf:"bytes,6,rep,name=findings,proto3" json:"findings,omitempty"`
}
-func (x *ReconcileResponse) Reset() {
- *x = ReconcileResponse{}
+func (x *WorkloadStructuralHealth) Reset() {
+ *x = WorkloadStructuralHealth{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[126]
+ mi := &file_api_v1_recommendation_proto_msgTypes[134]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ReconcileResponse) String() string {
+func (x *WorkloadStructuralHealth) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ReconcileResponse) ProtoMessage() {}
+func (*WorkloadStructuralHealth) ProtoMessage() {}
-func (x *ReconcileResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[126]
+func (x *WorkloadStructuralHealth) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[134]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10522,28 +12622,286 @@ func (x *ReconcileResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ReconcileResponse.ProtoReflect.Descriptor instead.
-func (*ReconcileResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{126}
+// Deprecated: Use WorkloadStructuralHealth.ProtoReflect.Descriptor instead.
+func (*WorkloadStructuralHealth) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{134}
}
-func (x *ReconcileResponse) GetRequestId() string {
+func (x *WorkloadStructuralHealth) GetClusterId() string {
if x != nil {
- return x.RequestId
+ return x.ClusterId
}
return ""
}
-func (x *ReconcileResponse) GetWorkloadUid() string {
+func (x *WorkloadStructuralHealth) GetNamespace() string {
if x != nil {
- return x.WorkloadUid
+ return x.Namespace
}
return ""
}
-func (x *ReconcileResponse) GetStatus() ReconcileStatus {
+func (x *WorkloadStructuralHealth) GetKind() string {
if x != nil {
- return x.Status
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *WorkloadStructuralHealth) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *WorkloadStructuralHealth) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *WorkloadStructuralHealth) GetFindings() []*StructuralHealthFinding {
+ if x != nil {
+ return x.Findings
+ }
+ return nil
+}
+
+type ListWorkloadStructuralHealthRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+}
+
+func (x *ListWorkloadStructuralHealthRequest) Reset() {
+ *x = ListWorkloadStructuralHealthRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[135]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadStructuralHealthRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadStructuralHealthRequest) ProtoMessage() {}
+
+func (x *ListWorkloadStructuralHealthRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[135]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadStructuralHealthRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadStructuralHealthRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{135}
+}
+
+func (x *ListWorkloadStructuralHealthRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *ListWorkloadStructuralHealthRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+type ListWorkloadStructuralHealthResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Workloads []*WorkloadStructuralHealth `protobuf:"bytes,1,rep,name=workloads,proto3" json:"workloads,omitempty"`
+}
+
+func (x *ListWorkloadStructuralHealthResponse) Reset() {
+ *x = ListWorkloadStructuralHealthResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[136]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadStructuralHealthResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadStructuralHealthResponse) ProtoMessage() {}
+
+func (x *ListWorkloadStructuralHealthResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[136]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadStructuralHealthResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadStructuralHealthResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{136}
+}
+
+func (x *ListWorkloadStructuralHealthResponse) GetWorkloads() []*WorkloadStructuralHealth {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+type ReconcileWorkload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Kind K8SObjectKind `protobuf:"varint,1,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,2,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ WorkloadUid string `protobuf:"bytes,4,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"` // for consistency + traceability
+}
+
+func (x *ReconcileWorkload) Reset() {
+ *x = ReconcileWorkload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[137]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReconcileWorkload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconcileWorkload) ProtoMessage() {}
+
+func (x *ReconcileWorkload) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[137]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconcileWorkload.ProtoReflect.Descriptor instead.
+func (*ReconcileWorkload) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{137}
+}
+
+func (x *ReconcileWorkload) GetKind() K8SObjectKind {
+ if x != nil {
+ return x.Kind
+ }
+ return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
+}
+
+func (x *ReconcileWorkload) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *ReconcileWorkload) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *ReconcileWorkload) GetWorkloadUid() string {
+ if x != nil {
+ return x.WorkloadUid
+ }
+ return ""
+}
+
+type ReconcileResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+ WorkloadUid string `protobuf:"bytes,2,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
+ Status ReconcileStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.v1.ReconcileStatus" json:"status,omitempty"`
+ UpdatedRecommendation *WorkloadRecommendation `protobuf:"bytes,11,opt,name=updated_recommendation,json=updatedRecommendation,proto3,oneof" json:"updated_recommendation,omitempty"`
+}
+
+func (x *ReconcileResponse) Reset() {
+ *x = ReconcileResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[138]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReconcileResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconcileResponse) ProtoMessage() {}
+
+func (x *ReconcileResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[138]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconcileResponse.ProtoReflect.Descriptor instead.
+func (*ReconcileResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{138}
+}
+
+func (x *ReconcileResponse) GetRequestId() string {
+ if x != nil {
+ return x.RequestId
+ }
+ return ""
+}
+
+func (x *ReconcileResponse) GetWorkloadUid() string {
+ if x != nil {
+ return x.WorkloadUid
+ }
+ return ""
+}
+
+func (x *ReconcileResponse) GetStatus() ReconcileStatus {
+ if x != nil {
+ return x.Status
}
return ReconcileStatus_RECONCILE_STATUS_NOOP
}
@@ -10578,7 +12936,7 @@ type OperatorHealth struct {
func (x *OperatorHealth) Reset() {
*x = OperatorHealth{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[127]
+ mi := &file_api_v1_recommendation_proto_msgTypes[139]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10591,7 +12949,7 @@ func (x *OperatorHealth) String() string {
func (*OperatorHealth) ProtoMessage() {}
func (x *OperatorHealth) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[127]
+ mi := &file_api_v1_recommendation_proto_msgTypes[139]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10604,7 +12962,7 @@ func (x *OperatorHealth) ProtoReflect() protoreflect.Message {
// Deprecated: Use OperatorHealth.ProtoReflect.Descriptor instead.
func (*OperatorHealth) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{127}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{139}
}
func (x *OperatorHealth) GetHealthy() bool {
@@ -10709,7 +13067,7 @@ type AgentHealth struct {
func (x *AgentHealth) Reset() {
*x = AgentHealth{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[128]
+ mi := &file_api_v1_recommendation_proto_msgTypes[140]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10722,7 +13080,7 @@ func (x *AgentHealth) String() string {
func (*AgentHealth) ProtoMessage() {}
func (x *AgentHealth) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[128]
+ mi := &file_api_v1_recommendation_proto_msgTypes[140]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10735,7 +13093,7 @@ func (x *AgentHealth) ProtoReflect() protoreflect.Message {
// Deprecated: Use AgentHealth.ProtoReflect.Descriptor instead.
func (*AgentHealth) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{128}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{140}
}
func (x *AgentHealth) GetNodeNameToAgent() map[string]*AgentHealthMeta {
@@ -10760,7 +13118,7 @@ type AgentHealthMeta struct {
func (x *AgentHealthMeta) Reset() {
*x = AgentHealthMeta{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[129]
+ mi := &file_api_v1_recommendation_proto_msgTypes[141]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10773,7 +13131,7 @@ func (x *AgentHealthMeta) String() string {
func (*AgentHealthMeta) ProtoMessage() {}
func (x *AgentHealthMeta) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[129]
+ mi := &file_api_v1_recommendation_proto_msgTypes[141]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10786,7 +13144,7 @@ func (x *AgentHealthMeta) ProtoReflect() protoreflect.Message {
// Deprecated: Use AgentHealthMeta.ProtoReflect.Descriptor instead.
func (*AgentHealthMeta) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{129}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{141}
}
func (x *AgentHealthMeta) GetHealthy() bool {
@@ -10834,7 +13192,7 @@ type HealthReport struct {
func (x *HealthReport) Reset() {
*x = HealthReport{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[130]
+ mi := &file_api_v1_recommendation_proto_msgTypes[142]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10847,7 +13205,7 @@ func (x *HealthReport) String() string {
func (*HealthReport) ProtoMessage() {}
func (x *HealthReport) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[130]
+ mi := &file_api_v1_recommendation_proto_msgTypes[142]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10860,7 +13218,7 @@ func (x *HealthReport) ProtoReflect() protoreflect.Message {
// Deprecated: Use HealthReport.ProtoReflect.Descriptor instead.
func (*HealthReport) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{130}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{142}
}
type NodeStats struct {
@@ -10881,7 +13239,7 @@ type NodeStats struct {
func (x *NodeStats) Reset() {
*x = NodeStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[131]
+ mi := &file_api_v1_recommendation_proto_msgTypes[143]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10894,7 +13252,7 @@ func (x *NodeStats) String() string {
func (*NodeStats) ProtoMessage() {}
func (x *NodeStats) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[131]
+ mi := &file_api_v1_recommendation_proto_msgTypes[143]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10907,7 +13265,7 @@ func (x *NodeStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeStats.ProtoReflect.Descriptor instead.
func (*NodeStats) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{131}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{143}
}
func (x *NodeStats) GetNodeGroupName() string {
@@ -10989,7 +13347,7 @@ type NodeMetric struct {
func (x *NodeMetric) Reset() {
*x = NodeMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[132]
+ mi := &file_api_v1_recommendation_proto_msgTypes[144]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11002,7 +13360,7 @@ func (x *NodeMetric) String() string {
func (*NodeMetric) ProtoMessage() {}
func (x *NodeMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[132]
+ mi := &file_api_v1_recommendation_proto_msgTypes[144]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11015,7 +13373,7 @@ func (x *NodeMetric) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeMetric.ProtoReflect.Descriptor instead.
func (*NodeMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{132}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{144}
}
func (x *NodeMetric) GetTimestamp() *timestamppb.Timestamp {
@@ -11126,7 +13484,7 @@ type ContainerStats struct {
func (x *ContainerStats) Reset() {
*x = ContainerStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[133]
+ mi := &file_api_v1_recommendation_proto_msgTypes[145]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11139,7 +13497,7 @@ func (x *ContainerStats) String() string {
func (*ContainerStats) ProtoMessage() {}
func (x *ContainerStats) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[133]
+ mi := &file_api_v1_recommendation_proto_msgTypes[145]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11152,7 +13510,7 @@ func (x *ContainerStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerStats.ProtoReflect.Descriptor instead.
func (*ContainerStats) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{133}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{145}
}
func (x *ContainerStats) GetWorkloadUid() string {
@@ -11227,7 +13585,7 @@ type ContainerMetric struct {
func (x *ContainerMetric) Reset() {
*x = ContainerMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[134]
+ mi := &file_api_v1_recommendation_proto_msgTypes[146]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11240,7 +13598,7 @@ func (x *ContainerMetric) String() string {
func (*ContainerMetric) ProtoMessage() {}
func (x *ContainerMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[134]
+ mi := &file_api_v1_recommendation_proto_msgTypes[146]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11253,7 +13611,7 @@ func (x *ContainerMetric) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerMetric.ProtoReflect.Descriptor instead.
func (*ContainerMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{134}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{146}
}
func (x *ContainerMetric) GetTimestamp() *timestamppb.Timestamp {
@@ -11362,7 +13720,7 @@ type ContainerSummarizedMetric struct {
func (x *ContainerSummarizedMetric) Reset() {
*x = ContainerSummarizedMetric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[135]
+ mi := &file_api_v1_recommendation_proto_msgTypes[147]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11375,7 +13733,7 @@ func (x *ContainerSummarizedMetric) String() string {
func (*ContainerSummarizedMetric) ProtoMessage() {}
func (x *ContainerSummarizedMetric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[135]
+ mi := &file_api_v1_recommendation_proto_msgTypes[147]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11388,7 +13746,7 @@ func (x *ContainerSummarizedMetric) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerSummarizedMetric.ProtoReflect.Descriptor instead.
func (*ContainerSummarizedMetric) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{135}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{147}
}
func (x *ContainerSummarizedMetric) GetTimestamp() *timestamppb.Timestamp {
@@ -11448,7 +13806,7 @@ type Metric struct {
func (x *Metric) Reset() {
*x = Metric{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[136]
+ mi := &file_api_v1_recommendation_proto_msgTypes[148]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11461,7 +13819,7 @@ func (x *Metric) String() string {
func (*Metric) ProtoMessage() {}
func (x *Metric) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[136]
+ mi := &file_api_v1_recommendation_proto_msgTypes[148]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11474,7 +13832,7 @@ func (x *Metric) ProtoReflect() protoreflect.Message {
// Deprecated: Use Metric.ProtoReflect.Descriptor instead.
func (*Metric) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{136}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{148}
}
func (x *Metric) GetMin() float32 {
@@ -11572,12 +13930,23 @@ type ContainerRecommendation struct {
CurrentLimit *ResourceRecommendation `protobuf:"bytes,4,opt,name=current_limit,json=currentLimit,proto3" json:"current_limit,omitempty"`
RecommendedLimit *ResourceRecommendation `protobuf:"bytes,5,opt,name=recommended_limit,json=recommendedLimit,proto3" json:"recommended_limit,omitempty"`
OptimizationScore float64 `protobuf:"fixed64,6,opt,name=optimization_score,json=optimizationScore,proto3" json:"optimization_score,omitempty"`
+ // Per-element env var mutations for this container (merge key: name).
+ // The operator merges these into the live container.Env; entries not
+ // referenced here are left untouched.
+ EnvMutations []*EnvVarMutation `protobuf:"bytes,11,rep,name=env_mutations,json=envMutations,proto3" json:"env_mutations,omitempty"`
+ // Per-flag command/arg mutations for this container. Used to carry
+ // command-line directives (e.g. JVM -Xmx) already lowered by the control
+ // plane into a concrete flag edit.
+ CommandArgMutations []*CommandArgMutation `protobuf:"bytes,12,rep,name=command_arg_mutations,json=commandArgMutations,proto3" json:"command_arg_mutations,omitempty"`
+ // Whether this container was observed OOM-killed, driving the memory
+ // recommendation.
+ OomTriggered bool `protobuf:"varint,13,opt,name=oom_triggered,json=oomTriggered,proto3" json:"oom_triggered,omitempty"`
}
func (x *ContainerRecommendation) Reset() {
*x = ContainerRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[137]
+ mi := &file_api_v1_recommendation_proto_msgTypes[149]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11590,7 +13959,7 @@ func (x *ContainerRecommendation) String() string {
func (*ContainerRecommendation) ProtoMessage() {}
func (x *ContainerRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[137]
+ mi := &file_api_v1_recommendation_proto_msgTypes[149]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11603,7 +13972,7 @@ func (x *ContainerRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use ContainerRecommendation.ProtoReflect.Descriptor instead.
func (*ContainerRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{137}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{149}
}
func (x *ContainerRecommendation) GetContainerName() string {
@@ -11648,6 +14017,27 @@ func (x *ContainerRecommendation) GetOptimizationScore() float64 {
return 0
}
+func (x *ContainerRecommendation) GetEnvMutations() []*EnvVarMutation {
+ if x != nil {
+ return x.EnvMutations
+ }
+ return nil
+}
+
+func (x *ContainerRecommendation) GetCommandArgMutations() []*CommandArgMutation {
+ if x != nil {
+ return x.CommandArgMutations
+ }
+ return nil
+}
+
+func (x *ContainerRecommendation) GetOomTriggered() bool {
+ if x != nil {
+ return x.OomTriggered
+ }
+ return false
+}
+
type KedaScaledObjectRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -11663,7 +14053,7 @@ type KedaScaledObjectRecommendation struct {
func (x *KedaScaledObjectRecommendation) Reset() {
*x = KedaScaledObjectRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[138]
+ mi := &file_api_v1_recommendation_proto_msgTypes[150]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11676,7 +14066,7 @@ func (x *KedaScaledObjectRecommendation) String() string {
func (*KedaScaledObjectRecommendation) ProtoMessage() {}
func (x *KedaScaledObjectRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[138]
+ mi := &file_api_v1_recommendation_proto_msgTypes[150]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11689,7 +14079,7 @@ func (x *KedaScaledObjectRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use KedaScaledObjectRecommendation.ProtoReflect.Descriptor instead.
func (*KedaScaledObjectRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{138}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{150}
}
func (x *KedaScaledObjectRecommendation) GetUid() string {
@@ -11745,7 +14135,7 @@ type ResourceRecommendation struct {
func (x *ResourceRecommendation) Reset() {
*x = ResourceRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[139]
+ mi := &file_api_v1_recommendation_proto_msgTypes[151]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11758,7 +14148,7 @@ func (x *ResourceRecommendation) String() string {
func (*ResourceRecommendation) ProtoMessage() {}
func (x *ResourceRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[139]
+ mi := &file_api_v1_recommendation_proto_msgTypes[151]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11771,7 +14161,7 @@ func (x *ResourceRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResourceRecommendation.ProtoReflect.Descriptor instead.
func (*ResourceRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{139}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{151}
}
func (x *ResourceRecommendation) GetCpu() int64 {
@@ -11830,6 +14220,266 @@ func (x *ResourceRecommendation) GetGpuVramAction() ActionToTake {
return ActionToTake_ACTION_TO_TAKE_SET
}
+// EnvVarMutation is a per-element edit to a container's env list. Merge key is
+// `name`. value_from (secret/configMap refs) is intentionally deferred.
+type EnvVarMutation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Action MutationAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.v1.MutationAction" json:"action,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // merge key
+ Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` // literal value for UPSERT
+}
+
+func (x *EnvVarMutation) Reset() {
+ *x = EnvVarMutation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[152]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EnvVarMutation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnvVarMutation) ProtoMessage() {}
+
+func (x *EnvVarMutation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[152]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EnvVarMutation.ProtoReflect.Descriptor instead.
+func (*EnvVarMutation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{152}
+}
+
+func (x *EnvVarMutation) GetAction() MutationAction {
+ if x != nil {
+ return x.Action
+ }
+ return MutationAction_MUTATION_ACTION_UNSPECIFIED
+}
+
+func (x *EnvVarMutation) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *EnvVarMutation) GetValue() string {
+ if x != nil && x.Value != nil {
+ return *x.Value
+ }
+ return ""
+}
+
+// CommandArgMutation is a per-flag edit to a container's command or args list.
+// The control plane lowers higher-level intent (e.g. JVM heap sizing) into this
+// concrete flag edit so the operator stays generic.
+type CommandArgMutation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Action MutationAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.v1.MutationAction" json:"action,omitempty"`
+ Target ArgTarget `protobuf:"varint,2,opt,name=target,proto3,enum=api.v1.ArgTarget" json:"target,omitempty"` // command vs args
+ Flag string `protobuf:"bytes,3,opt,name=flag,proto3" json:"flag,omitempty"` // e.g. "-Xmx"
+ Value *string `protobuf:"bytes,4,opt,name=value,proto3,oneof" json:"value,omitempty"` // e.g. "512m"; empty for valueless flags
+}
+
+func (x *CommandArgMutation) Reset() {
+ *x = CommandArgMutation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[153]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CommandArgMutation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CommandArgMutation) ProtoMessage() {}
+
+func (x *CommandArgMutation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[153]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CommandArgMutation.ProtoReflect.Descriptor instead.
+func (*CommandArgMutation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{153}
+}
+
+func (x *CommandArgMutation) GetAction() MutationAction {
+ if x != nil {
+ return x.Action
+ }
+ return MutationAction_MUTATION_ACTION_UNSPECIFIED
+}
+
+func (x *CommandArgMutation) GetTarget() ArgTarget {
+ if x != nil {
+ return x.Target
+ }
+ return ArgTarget_ARG_TARGET_UNSPECIFIED
+}
+
+func (x *CommandArgMutation) GetFlag() string {
+ if x != nil {
+ return x.Flag
+ }
+ return ""
+}
+
+func (x *CommandArgMutation) GetValue() string {
+ if x != nil && x.Value != nil {
+ return *x.Value
+ }
+ return ""
+}
+
+// NodeSelectorMutation is a per-key edit to the pod's nodeSelector map.
+type NodeSelectorMutation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Action MutationAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.v1.MutationAction" json:"action,omitempty"`
+ Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` // merge key
+ Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` // value for UPSERT
+}
+
+func (x *NodeSelectorMutation) Reset() {
+ *x = NodeSelectorMutation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[154]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeSelectorMutation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeSelectorMutation) ProtoMessage() {}
+
+func (x *NodeSelectorMutation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[154]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeSelectorMutation.ProtoReflect.Descriptor instead.
+func (*NodeSelectorMutation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{154}
+}
+
+func (x *NodeSelectorMutation) GetAction() MutationAction {
+ if x != nil {
+ return x.Action
+ }
+ return MutationAction_MUTATION_ACTION_UNSPECIFIED
+}
+
+func (x *NodeSelectorMutation) GetKey() string {
+ if x != nil {
+ return x.Key
+ }
+ return ""
+}
+
+func (x *NodeSelectorMutation) GetValue() string {
+ if x != nil && x.Value != nil {
+ return *x.Value
+ }
+ return ""
+}
+
+// TolerationMutation is a per-element edit to the pod's tolerations list.
+// Element identity is the full tuple.
+type TolerationMutation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Action MutationAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.v1.MutationAction" json:"action,omitempty"`
+ Toleration *Toleration `protobuf:"bytes,2,opt,name=toleration,proto3" json:"toleration,omitempty"`
+}
+
+func (x *TolerationMutation) Reset() {
+ *x = TolerationMutation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[155]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TolerationMutation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TolerationMutation) ProtoMessage() {}
+
+func (x *TolerationMutation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[155]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TolerationMutation.ProtoReflect.Descriptor instead.
+func (*TolerationMutation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{155}
+}
+
+func (x *TolerationMutation) GetAction() MutationAction {
+ if x != nil {
+ return x.Action
+ }
+ return MutationAction_MUTATION_ACTION_UNSPECIFIED
+}
+
+func (x *TolerationMutation) GetToleration() *Toleration {
+ if x != nil {
+ return x.Toleration
+ }
+ return nil
+}
+
// The pod this Toleration is attached to tolerates any taint that matches
// the triple using the matching operator .
type Toleration struct {
@@ -11866,7 +14516,7 @@ type Toleration struct {
func (x *Toleration) Reset() {
*x = Toleration{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[140]
+ mi := &file_api_v1_recommendation_proto_msgTypes[156]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11879,7 +14529,7 @@ func (x *Toleration) String() string {
func (*Toleration) ProtoMessage() {}
func (x *Toleration) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[140]
+ mi := &file_api_v1_recommendation_proto_msgTypes[156]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11892,7 +14542,7 @@ func (x *Toleration) ProtoReflect() protoreflect.Message {
// Deprecated: Use Toleration.ProtoReflect.Descriptor instead.
func (*Toleration) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{140}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{156}
}
func (x *Toleration) GetKey() string {
@@ -11961,7 +14611,7 @@ type ClusterRecommendationPolicy struct {
func (x *ClusterRecommendationPolicy) Reset() {
*x = ClusterRecommendationPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[141]
+ mi := &file_api_v1_recommendation_proto_msgTypes[157]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11974,7 +14624,7 @@ func (x *ClusterRecommendationPolicy) String() string {
func (*ClusterRecommendationPolicy) ProtoMessage() {}
func (x *ClusterRecommendationPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[141]
+ mi := &file_api_v1_recommendation_proto_msgTypes[157]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11987,7 +14637,7 @@ func (x *ClusterRecommendationPolicy) ProtoReflect() protoreflect.Message {
// Deprecated: Use ClusterRecommendationPolicy.ProtoReflect.Descriptor instead.
func (*ClusterRecommendationPolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{141}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{157}
}
func (x *ClusterRecommendationPolicy) GetPolicyId() string {
@@ -12103,7 +14753,7 @@ type NodeGroupRecommendationPolicy struct {
func (x *NodeGroupRecommendationPolicy) Reset() {
*x = NodeGroupRecommendationPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[142]
+ mi := &file_api_v1_recommendation_proto_msgTypes[158]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12116,7 +14766,7 @@ func (x *NodeGroupRecommendationPolicy) String() string {
func (*NodeGroupRecommendationPolicy) ProtoMessage() {}
func (x *NodeGroupRecommendationPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[142]
+ mi := &file_api_v1_recommendation_proto_msgTypes[158]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12129,7 +14779,7 @@ func (x *NodeGroupRecommendationPolicy) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeGroupRecommendationPolicy.ProtoReflect.Descriptor instead.
func (*NodeGroupRecommendationPolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{142}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{158}
}
func (x *NodeGroupRecommendationPolicy) GetPolicyId() string {
@@ -12284,12 +14934,19 @@ type VerticalScalingOptimizationTarget struct {
// Whether to actively remove limits from workloads (CPU only for now).
// Takes precedence over limits_adjustment_enabled when true.
LimitsRemovalEnabled bool `protobuf:"varint,42,opt,name=limits_removal_enabled,json=limitsRemovalEnabled,proto3" json:"limits_removal_enabled,omitempty"`
+ // Memory-only: when true, size the memory REQUEST recommendation from RSS
+ // (resident set size) instead of the default working set. Ignored for CPU/GPU.
+ RequestUseRss *bool `protobuf:"varint,43,opt,name=request_use_rss,json=requestUseRss,proto3,oneof" json:"request_use_rss,omitempty"`
+ // Memory-only: when true, the limit is derived from an RSS-based recommendation
+ // instead of the default working-set recommendation (the Limit multiplier still
+ // applies to whichever basis is selected). Ignored for CPU/GPU.
+ LimitUseRss *bool `protobuf:"varint,44,opt,name=limit_use_rss,json=limitUseRss,proto3,oneof" json:"limit_use_rss,omitempty"`
}
func (x *VerticalScalingOptimizationTarget) Reset() {
*x = VerticalScalingOptimizationTarget{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[143]
+ mi := &file_api_v1_recommendation_proto_msgTypes[159]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12302,7 +14959,7 @@ func (x *VerticalScalingOptimizationTarget) String() string {
func (*VerticalScalingOptimizationTarget) ProtoMessage() {}
func (x *VerticalScalingOptimizationTarget) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[143]
+ mi := &file_api_v1_recommendation_proto_msgTypes[159]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12315,7 +14972,7 @@ func (x *VerticalScalingOptimizationTarget) ProtoReflect() protoreflect.Message
// Deprecated: Use VerticalScalingOptimizationTarget.ProtoReflect.Descriptor instead.
func (*VerticalScalingOptimizationTarget) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{143}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{159}
}
func (x *VerticalScalingOptimizationTarget) GetEnabled() bool {
@@ -12402,6 +15059,20 @@ func (x *VerticalScalingOptimizationTarget) GetLimitsRemovalEnabled() bool {
return false
}
+func (x *VerticalScalingOptimizationTarget) GetRequestUseRss() bool {
+ if x != nil && x.RequestUseRss != nil {
+ return *x.RequestUseRss
+ }
+ return false
+}
+
+func (x *VerticalScalingOptimizationTarget) GetLimitUseRss() bool {
+ if x != nil && x.LimitUseRss != nil {
+ return *x.LimitUseRss
+ }
+ return false
+}
+
type HorizontalScalingOptimizationTarget struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -12443,7 +15114,7 @@ type HorizontalScalingOptimizationTarget struct {
func (x *HorizontalScalingOptimizationTarget) Reset() {
*x = HorizontalScalingOptimizationTarget{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[144]
+ mi := &file_api_v1_recommendation_proto_msgTypes[160]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12456,7 +15127,7 @@ func (x *HorizontalScalingOptimizationTarget) String() string {
func (*HorizontalScalingOptimizationTarget) ProtoMessage() {}
func (x *HorizontalScalingOptimizationTarget) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[144]
+ mi := &file_api_v1_recommendation_proto_msgTypes[160]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12469,7 +15140,7 @@ func (x *HorizontalScalingOptimizationTarget) ProtoReflect() protoreflect.Messag
// Deprecated: Use HorizontalScalingOptimizationTarget.ProtoReflect.Descriptor instead.
func (*HorizontalScalingOptimizationTarget) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{144}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{160}
}
func (x *HorizontalScalingOptimizationTarget) GetEnabled() bool {
@@ -12606,15 +15277,17 @@ type WorkloadRecommendationPolicy struct {
// Global cooldown configuration
// Minutes to wait between applying recommendations (prevents thrashing)
CooldownMinutes *int32 `protobuf:"varint,96,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
- // Deprecated: no longer used. The legacy policy flow no longer creates workload rules.
- // Workload rules are created via auto-optimization or the new WorkloadOptimizationPolicy flow.
- // Field retained for wire-compatibility; will be reserved in a future cleanup.
- EnableInclusterMpa bool `protobuf:"varint,97,opt,name=enable_incluster_mpa,json=enableInclusterMpa,proto3" json:"enable_incluster_mpa,omitempty"`
// Feature flag: Enable In-Place Pod Vertical Scaling for this policy.
// Requires Kubernetes >= v1.33 on all attached clusters.
// When enabled, recommendations resize running pods via the /resize subresource
// without triggering rolling restarts.
EnableInPlaceVerticalScaling bool `protobuf:"varint,103,opt,name=enable_in_place_vertical_scaling,json=enableInPlaceVerticalScaling,proto3" json:"enable_in_place_vertical_scaling,omitempty"`
+ // Opt-in escape hatch for the riskiest half of in-place scaling: allowing a
+ // resize to LOWER a container's memory limit on a running pod. Gated behind
+ // enable_in_place_vertical_scaling and, independently, behind the cluster's
+ // Kubernetes version — this flag only ever removes DevZero's own refusal, it
+ // never makes an unsupported cluster accept the decrease. Default false.
+ AllowInPlaceMemoryLimitDecrease bool `protobuf:"varint,121,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3" json:"allow_in_place_memory_limit_decrease,omitempty"`
// Policy-driven automation: enable PDB creation for workloads under this policy
PdbEnabled bool `protobuf:"varint,98,opt,name=pdb_enabled,json=pdbEnabled,proto3" json:"pdb_enabled,omitempty"`
EmergencyResponse *EmergencyResponseConfig `protobuf:"bytes,99,opt,name=emergency_response,json=emergencyResponse,proto3" json:"emergency_response,omitempty"`
@@ -12623,12 +15296,54 @@ type WorkloadRecommendationPolicy struct {
EnablePmaxProtection bool `protobuf:"varint,100,opt,name=enable_pmax_protection,json=enablePmaxProtection,proto3" json:"enable_pmax_protection,omitempty"`
PmaxRatioThreshold *float32 `protobuf:"fixed32,101,opt,name=pmax_ratio_threshold,json=pmaxRatioThreshold,proto3,oneof" json:"pmax_ratio_threshold,omitempty"` // default: 3.0
DeletedAt *timestamppb.Timestamp `protobuf:"bytes,102,opt,name=deleted_at,json=deletedAt,proto3,oneof" json:"deleted_at,omitempty"`
+ // JVM heap optimization. Gated by jvm_heap_optimization_enabled; the optional
+ // knobs are overrides — unset means "use the current system default".
+ JvmHeapOptimizationEnabled bool `protobuf:"varint,104,opt,name=jvm_heap_optimization_enabled,json=jvmHeapOptimizationEnabled,proto3" json:"jvm_heap_optimization_enabled,omitempty"`
+ JvmHeapTargetPercentile *float32 `protobuf:"fixed32,105,opt,name=jvm_heap_target_percentile,json=jvmHeapTargetPercentile,proto3,oneof" json:"jvm_heap_target_percentile,omitempty"`
+ JvmHeapHeadroomMultiplier *float32 `protobuf:"fixed32,106,opt,name=jvm_heap_headroom_multiplier,json=jvmHeapHeadroomMultiplier,proto3,oneof" json:"jvm_heap_headroom_multiplier,omitempty"`
+ JvmNonHeapOverheadPercent *float32 `protobuf:"fixed32,107,opt,name=jvm_non_heap_overhead_percent,json=jvmNonHeapOverheadPercent,proto3,oneof" json:"jvm_non_heap_overhead_percent,omitempty"`
+ JvmNonHeapOverheadBytes *int64 `protobuf:"varint,108,opt,name=jvm_non_heap_overhead_bytes,json=jvmNonHeapOverheadBytes,proto3,oneof" json:"jvm_non_heap_overhead_bytes,omitempty"`
+ JvmMinHeapBytes *int64 `protobuf:"varint,109,opt,name=jvm_min_heap_bytes,json=jvmMinHeapBytes,proto3,oneof" json:"jvm_min_heap_bytes,omitempty"`
+ JvmMaxHeapBytes *int64 `protobuf:"varint,110,opt,name=jvm_max_heap_bytes,json=jvmMaxHeapBytes,proto3,oneof" json:"jvm_max_heap_bytes,omitempty"`
+ JvmPreferContainerSupport bool `protobuf:"varint,111,opt,name=jvm_prefer_container_support,json=jvmPreferContainerSupport,proto3" json:"jvm_prefer_container_support,omitempty"`
+ // Minimum CPU request (millicores) for detected JVM containers, protecting
+ // JVM startup (classloading, JIT warmup, agent instrumentation) from CPU
+ // starvation under node contention. Standalone knob — part of the always-on
+ // "respect JVM state" path, NOT gated by jvm_heap_optimization_enabled.
+ // Unset = system default (75m). Explicit 0 = floor disabled (only the
+ // generic CPU minimum applies).
+ JvmCpuStartupFloorMillicores *int64 `protobuf:"varint,112,opt,name=jvm_cpu_startup_floor_millicores,json=jvmCpuStartupFloorMillicores,proto3,oneof" json:"jvm_cpu_startup_floor_millicores,omitempty"`
+ // Recommendation floor percentage (per resource, request only): the
+ // recommended request is never lowered below pct% (1-100) of the
+ // container's immutable initial-request baseline
+ // (workload_resource_baselines). Unset = floor disabled.
+ CpuFloorPercent *int64 `protobuf:"varint,113,opt,name=cpu_floor_percent,json=cpuFloorPercent,proto3,oneof" json:"cpu_floor_percent,omitempty"`
+ MemoryFloorPercent *int64 `protobuf:"varint,114,opt,name=memory_floor_percent,json=memoryFloorPercent,proto3,oneof" json:"memory_floor_percent,omitempty"`
+ // Recommendation ceiling percentage (per resource, request only): the
+ // recommended request is never raised above pct% (1-1000) of the
+ // container's immutable initial-request baseline
+ // (workload_resource_baselines). A ceiling below 100 is intentionally
+ // allowed as a baseline-relative cap distinct from max_request. Unset =
+ // ceiling disabled.
+ CpuCeilingPercent *int64 `protobuf:"varint,115,opt,name=cpu_ceiling_percent,json=cpuCeilingPercent,proto3,oneof" json:"cpu_ceiling_percent,omitempty"`
+ MemoryCeilingPercent *int64 `protobuf:"varint,116,opt,name=memory_ceiling_percent,json=memoryCeilingPercent,proto3,oneof" json:"memory_ceiling_percent,omitempty"`
+ // Limit floor/ceiling percentage (per resource, limit only): the
+ // recommended limit is never lowered below the floor pct (1-100) nor
+ // raised above the ceiling pct (1-1000) of the container's immutable
+ // initial-limit baseline (workload_resource_baselines). Applied only when
+ // that resource's limits adjustment is enabled and limits removal is not;
+ // the recommended request always wins over the limit ceiling (the limit
+ // is never clamped below the request). Unset = bound disabled.
+ CpuLimitFloorPercent *int64 `protobuf:"varint,117,opt,name=cpu_limit_floor_percent,json=cpuLimitFloorPercent,proto3,oneof" json:"cpu_limit_floor_percent,omitempty"`
+ MemoryLimitFloorPercent *int64 `protobuf:"varint,118,opt,name=memory_limit_floor_percent,json=memoryLimitFloorPercent,proto3,oneof" json:"memory_limit_floor_percent,omitempty"`
+ CpuLimitCeilingPercent *int64 `protobuf:"varint,119,opt,name=cpu_limit_ceiling_percent,json=cpuLimitCeilingPercent,proto3,oneof" json:"cpu_limit_ceiling_percent,omitempty"`
+ MemoryLimitCeilingPercent *int64 `protobuf:"varint,120,opt,name=memory_limit_ceiling_percent,json=memoryLimitCeilingPercent,proto3,oneof" json:"memory_limit_ceiling_percent,omitempty"`
}
func (x *WorkloadRecommendationPolicy) Reset() {
*x = WorkloadRecommendationPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[145]
+ mi := &file_api_v1_recommendation_proto_msgTypes[161]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12641,7 +15356,7 @@ func (x *WorkloadRecommendationPolicy) String() string {
func (*WorkloadRecommendationPolicy) ProtoMessage() {}
func (x *WorkloadRecommendationPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[145]
+ mi := &file_api_v1_recommendation_proto_msgTypes[161]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12654,7 +15369,7 @@ func (x *WorkloadRecommendationPolicy) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadRecommendationPolicy.ProtoReflect.Descriptor instead.
func (*WorkloadRecommendationPolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{145}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{161}
}
func (x *WorkloadRecommendationPolicy) GetPolicyId() string {
@@ -12855,16 +15570,16 @@ func (x *WorkloadRecommendationPolicy) GetCooldownMinutes() int32 {
return 0
}
-func (x *WorkloadRecommendationPolicy) GetEnableInclusterMpa() bool {
+func (x *WorkloadRecommendationPolicy) GetEnableInPlaceVerticalScaling() bool {
if x != nil {
- return x.EnableInclusterMpa
+ return x.EnableInPlaceVerticalScaling
}
return false
}
-func (x *WorkloadRecommendationPolicy) GetEnableInPlaceVerticalScaling() bool {
+func (x *WorkloadRecommendationPolicy) GetAllowInPlaceMemoryLimitDecrease() bool {
if x != nil {
- return x.EnableInPlaceVerticalScaling
+ return x.AllowInPlaceMemoryLimitDecrease
}
return false
}
@@ -12904,6 +15619,125 @@ func (x *WorkloadRecommendationPolicy) GetDeletedAt() *timestamppb.Timestamp {
return nil
}
+func (x *WorkloadRecommendationPolicy) GetJvmHeapOptimizationEnabled() bool {
+ if x != nil {
+ return x.JvmHeapOptimizationEnabled
+ }
+ return false
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmHeapTargetPercentile() float32 {
+ if x != nil && x.JvmHeapTargetPercentile != nil {
+ return *x.JvmHeapTargetPercentile
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmHeapHeadroomMultiplier() float32 {
+ if x != nil && x.JvmHeapHeadroomMultiplier != nil {
+ return *x.JvmHeapHeadroomMultiplier
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmNonHeapOverheadPercent() float32 {
+ if x != nil && x.JvmNonHeapOverheadPercent != nil {
+ return *x.JvmNonHeapOverheadPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmNonHeapOverheadBytes() int64 {
+ if x != nil && x.JvmNonHeapOverheadBytes != nil {
+ return *x.JvmNonHeapOverheadBytes
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmMinHeapBytes() int64 {
+ if x != nil && x.JvmMinHeapBytes != nil {
+ return *x.JvmMinHeapBytes
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmMaxHeapBytes() int64 {
+ if x != nil && x.JvmMaxHeapBytes != nil {
+ return *x.JvmMaxHeapBytes
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmPreferContainerSupport() bool {
+ if x != nil {
+ return x.JvmPreferContainerSupport
+ }
+ return false
+}
+
+func (x *WorkloadRecommendationPolicy) GetJvmCpuStartupFloorMillicores() int64 {
+ if x != nil && x.JvmCpuStartupFloorMillicores != nil {
+ return *x.JvmCpuStartupFloorMillicores
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetCpuFloorPercent() int64 {
+ if x != nil && x.CpuFloorPercent != nil {
+ return *x.CpuFloorPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetMemoryFloorPercent() int64 {
+ if x != nil && x.MemoryFloorPercent != nil {
+ return *x.MemoryFloorPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetCpuCeilingPercent() int64 {
+ if x != nil && x.CpuCeilingPercent != nil {
+ return *x.CpuCeilingPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetMemoryCeilingPercent() int64 {
+ if x != nil && x.MemoryCeilingPercent != nil {
+ return *x.MemoryCeilingPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetCpuLimitFloorPercent() int64 {
+ if x != nil && x.CpuLimitFloorPercent != nil {
+ return *x.CpuLimitFloorPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetMemoryLimitFloorPercent() int64 {
+ if x != nil && x.MemoryLimitFloorPercent != nil {
+ return *x.MemoryLimitFloorPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetCpuLimitCeilingPercent() int64 {
+ if x != nil && x.CpuLimitCeilingPercent != nil {
+ return *x.CpuLimitCeilingPercent
+ }
+ return 0
+}
+
+func (x *WorkloadRecommendationPolicy) GetMemoryLimitCeilingPercent() int64 {
+ if x != nil && x.MemoryLimitCeilingPercent != nil {
+ return *x.MemoryLimitCeilingPercent
+ }
+ return 0
+}
+
type GetPolicyRecommendedDefaultsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -12916,7 +15750,7 @@ type GetPolicyRecommendedDefaultsRequest struct {
func (x *GetPolicyRecommendedDefaultsRequest) Reset() {
*x = GetPolicyRecommendedDefaultsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[146]
+ mi := &file_api_v1_recommendation_proto_msgTypes[162]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12929,7 +15763,7 @@ func (x *GetPolicyRecommendedDefaultsRequest) String() string {
func (*GetPolicyRecommendedDefaultsRequest) ProtoMessage() {}
func (x *GetPolicyRecommendedDefaultsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[146]
+ mi := &file_api_v1_recommendation_proto_msgTypes[162]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12942,7 +15776,7 @@ func (x *GetPolicyRecommendedDefaultsRequest) ProtoReflect() protoreflect.Messag
// Deprecated: Use GetPolicyRecommendedDefaultsRequest.ProtoReflect.Descriptor instead.
func (*GetPolicyRecommendedDefaultsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{146}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{162}
}
func (x *GetPolicyRecommendedDefaultsRequest) GetTeamId() string {
@@ -12970,7 +15804,7 @@ type GetPolicyRecommendedDefaultsResponse struct {
func (x *GetPolicyRecommendedDefaultsResponse) Reset() {
*x = GetPolicyRecommendedDefaultsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[147]
+ mi := &file_api_v1_recommendation_proto_msgTypes[163]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12983,7 +15817,7 @@ func (x *GetPolicyRecommendedDefaultsResponse) String() string {
func (*GetPolicyRecommendedDefaultsResponse) ProtoMessage() {}
func (x *GetPolicyRecommendedDefaultsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[147]
+ mi := &file_api_v1_recommendation_proto_msgTypes[163]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12996,7 +15830,7 @@ func (x *GetPolicyRecommendedDefaultsResponse) ProtoReflect() protoreflect.Messa
// Deprecated: Use GetPolicyRecommendedDefaultsResponse.ProtoReflect.Descriptor instead.
func (*GetPolicyRecommendedDefaultsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{147}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{163}
}
func (x *GetPolicyRecommendedDefaultsResponse) GetPolicy() *WorkloadRecommendationPolicy {
@@ -13020,7 +15854,7 @@ type BalanceRegisterRequest struct {
func (x *BalanceRegisterRequest) Reset() {
*x = BalanceRegisterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[148]
+ mi := &file_api_v1_recommendation_proto_msgTypes[164]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13033,7 +15867,7 @@ func (x *BalanceRegisterRequest) String() string {
func (*BalanceRegisterRequest) ProtoMessage() {}
func (x *BalanceRegisterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[148]
+ mi := &file_api_v1_recommendation_proto_msgTypes[164]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13046,7 +15880,7 @@ func (x *BalanceRegisterRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use BalanceRegisterRequest.ProtoReflect.Descriptor instead.
func (*BalanceRegisterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{148}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{164}
}
func (x *BalanceRegisterRequest) GetTeamId() string {
@@ -13094,7 +15928,7 @@ type BalanceFeatures struct {
func (x *BalanceFeatures) Reset() {
*x = BalanceFeatures{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[149]
+ mi := &file_api_v1_recommendation_proto_msgTypes[165]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13107,7 +15941,7 @@ func (x *BalanceFeatures) String() string {
func (*BalanceFeatures) ProtoMessage() {}
func (x *BalanceFeatures) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[149]
+ mi := &file_api_v1_recommendation_proto_msgTypes[165]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13120,7 +15954,7 @@ func (x *BalanceFeatures) ProtoReflect() protoreflect.Message {
// Deprecated: Use BalanceFeatures.ProtoReflect.Descriptor instead.
func (*BalanceFeatures) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{149}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{165}
}
func (x *BalanceFeatures) GetLiveMigration() bool {
@@ -13162,12 +15996,28 @@ type BalanceApplyRecommendationResponse struct {
Error *string `protobuf:"bytes,4,opt,name=error,proto3,oneof" json:"error,omitempty"`
// Optional live migration metadata, populated when recommendation used live migration.
LiveMigrationResult *LiveMigrationResult `protobuf:"bytes,5,opt,name=live_migration_result,json=liveMigrationResult,proto3,oneof" json:"live_migration_result,omitempty"`
+ // image_changed signals the operator retired this recommendation because the
+ // target workload's container image changed since it was applied (a new
+ // release), so its image-tied tuned values (env/cmd/nodeSelector/toleration)
+ // were not pinned onto the new image. The control plane records this as
+ // Superseded — not a failure — so the optimizer re-derives a fresh
+ // recommendation for the new image. Only set for spec-mutating workload recs.
+ ImageChanged bool `protobuf:"varint,6,opt,name=image_changed,json=imageChanged,proto3" json:"image_changed,omitempty"`
+ // applied_at is the terminal-phase timestamp the operator stamped on the
+ // WorkloadRecommendation CRD (Status.AppliedAt). For MPA v2 (rule-based)
+ // recommendations, the control plane's DB row primary key is derived from
+ // recommendation_id + applied_at (see k8sconverters.DeriveWorkloadRecommendationID),
+ // so this is required to target the correct row for this apply cycle instead
+ // of the workload's static, un-derived recommendation_id. Unset for legacy
+ // (non-rule) recommendations and older operators — callers must fall back
+ // to recommendation_id in that case.
+ AppliedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=applied_at,json=appliedAt,proto3,oneof" json:"applied_at,omitempty"`
}
func (x *BalanceApplyRecommendationResponse) Reset() {
*x = BalanceApplyRecommendationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[150]
+ mi := &file_api_v1_recommendation_proto_msgTypes[166]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13180,7 +16030,7 @@ func (x *BalanceApplyRecommendationResponse) String() string {
func (*BalanceApplyRecommendationResponse) ProtoMessage() {}
func (x *BalanceApplyRecommendationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[150]
+ mi := &file_api_v1_recommendation_proto_msgTypes[166]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13193,7 +16043,7 @@ func (x *BalanceApplyRecommendationResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use BalanceApplyRecommendationResponse.ProtoReflect.Descriptor instead.
func (*BalanceApplyRecommendationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{150}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{166}
}
func (x *BalanceApplyRecommendationResponse) GetRecommendationId() string {
@@ -13231,6 +16081,20 @@ func (x *BalanceApplyRecommendationResponse) GetLiveMigrationResult() *LiveMigra
return nil
}
+func (x *BalanceApplyRecommendationResponse) GetImageChanged() bool {
+ if x != nil {
+ return x.ImageChanged
+ }
+ return false
+}
+
+func (x *BalanceApplyRecommendationResponse) GetAppliedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.AppliedAt
+ }
+ return nil
+}
+
// LiveMigrationResult provides structured metadata about a live migration attempt.
type LiveMigrationResult struct {
state protoimpl.MessageState
@@ -13252,12 +16116,19 @@ type LiveMigrationResult struct {
TargetNode string `protobuf:"bytes,6,opt,name=target_node,json=targetNode,proto3" json:"target_node,omitempty"`
// Checkpoint image size in bytes.
CheckpointSizeBytes int64 `protobuf:"varint,7,opt,name=checkpoint_size_bytes,json=checkpointSizeBytes,proto3" json:"checkpoint_size_bytes,omitempty"`
+ // Whether checkpoint/restore or the recommendation itself was intentionally
+ // skipped (for example, because live migration is unsupported, the workload
+ // had no running Pods, or there was no effective resource change).
+ Skipped bool `protobuf:"varint,8,opt,name=skipped,proto3" json:"skipped,omitempty"`
+ // Stable, human-readable reason the operation was skipped. Empty when
+ // skipped is false.
+ SkipReason string `protobuf:"bytes,9,opt,name=skip_reason,json=skipReason,proto3" json:"skip_reason,omitempty"`
}
func (x *LiveMigrationResult) Reset() {
*x = LiveMigrationResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[151]
+ mi := &file_api_v1_recommendation_proto_msgTypes[167]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13270,7 +16141,7 @@ func (x *LiveMigrationResult) String() string {
func (*LiveMigrationResult) ProtoMessage() {}
func (x *LiveMigrationResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[151]
+ mi := &file_api_v1_recommendation_proto_msgTypes[167]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13283,7 +16154,7 @@ func (x *LiveMigrationResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiveMigrationResult.ProtoReflect.Descriptor instead.
func (*LiveMigrationResult) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{151}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{167}
}
func (x *LiveMigrationResult) GetDegraded() bool {
@@ -13335,6 +16206,20 @@ func (x *LiveMigrationResult) GetCheckpointSizeBytes() int64 {
return 0
}
+func (x *LiveMigrationResult) GetSkipped() bool {
+ if x != nil {
+ return x.Skipped
+ }
+ return false
+}
+
+func (x *LiveMigrationResult) GetSkipReason() string {
+ if x != nil {
+ return x.SkipReason
+ }
+ return ""
+}
+
type NodeGroupReference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -13347,7 +16232,7 @@ type NodeGroupReference struct {
func (x *NodeGroupReference) Reset() {
*x = NodeGroupReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[152]
+ mi := &file_api_v1_recommendation_proto_msgTypes[168]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13360,7 +16245,7 @@ func (x *NodeGroupReference) String() string {
func (*NodeGroupReference) ProtoMessage() {}
func (x *NodeGroupReference) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[152]
+ mi := &file_api_v1_recommendation_proto_msgTypes[168]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13373,7 +16258,7 @@ func (x *NodeGroupReference) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeGroupReference.ProtoReflect.Descriptor instead.
func (*NodeGroupReference) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{152}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{168}
}
func (x *NodeGroupReference) GetClusterId() string {
@@ -13407,7 +16292,7 @@ type NodeGroupRecommendation struct {
func (x *NodeGroupRecommendation) Reset() {
*x = NodeGroupRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[153]
+ mi := &file_api_v1_recommendation_proto_msgTypes[169]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13420,7 +16305,7 @@ func (x *NodeGroupRecommendation) String() string {
func (*NodeGroupRecommendation) ProtoMessage() {}
func (x *NodeGroupRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[153]
+ mi := &file_api_v1_recommendation_proto_msgTypes[169]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13433,7 +16318,7 @@ func (x *NodeGroupRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeGroupRecommendation.ProtoReflect.Descriptor instead.
func (*NodeGroupRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{153}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{169}
}
func (x *NodeGroupRecommendation) GetRecommendationId() string {
@@ -13506,7 +16391,7 @@ type CostImpact struct {
func (x *CostImpact) Reset() {
*x = CostImpact{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[154]
+ mi := &file_api_v1_recommendation_proto_msgTypes[170]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13519,7 +16404,7 @@ func (x *CostImpact) String() string {
func (*CostImpact) ProtoMessage() {}
func (x *CostImpact) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[154]
+ mi := &file_api_v1_recommendation_proto_msgTypes[170]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13532,7 +16417,7 @@ func (x *CostImpact) ProtoReflect() protoreflect.Message {
// Deprecated: Use CostImpact.ProtoReflect.Descriptor instead.
func (*CostImpact) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{154}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{170}
}
func (x *CostImpact) GetCurrentCostPerMonth() *money.Money {
@@ -13631,36 +16516,85 @@ type WorkloadRecommendation struct {
// The label selector for the workload
LabelSelector *LabelSelector `protobuf:"bytes,20,opt,name=label_selector,json=labelSelector,proto3,oneof" json:"label_selector,omitempty"`
// whether this recommendation should be applied using live migration
- UseLiveMigration bool `protobuf:"varint,21,opt,name=use_live_migration,json=useLiveMigration,proto3" json:"use_live_migration,omitempty"`
- DelProp LiveMigDeletionPropagation `protobuf:"varint,22,opt,name=del_prop,json=delProp,proto3,enum=api.v1.LiveMigDeletionPropagation" json:"del_prop,omitempty"`
- Reasoning *string `protobuf:"bytes,31,opt,name=reasoning,proto3,oneof" json:"reasoning,omitempty"`
- CurrentTolerations []*Toleration `protobuf:"bytes,41,rep,name=current_tolerations,json=currentTolerations,proto3" json:"current_tolerations,omitempty"`
- RecommendedTolerations []*Toleration `protobuf:"bytes,42,rep,name=recommended_tolerations,json=recommendedTolerations,proto3" json:"recommended_tolerations,omitempty"`
+ UseLiveMigration bool `protobuf:"varint,21,opt,name=use_live_migration,json=useLiveMigration,proto3" json:"use_live_migration,omitempty"`
+ DelProp LiveMigDeletionPropagation `protobuf:"varint,22,opt,name=del_prop,json=delProp,proto3,enum=api.v1.LiveMigDeletionPropagation" json:"del_prop,omitempty"`
+ // Why this recommendation was generated, set once at creation. For
+ // recommendations with no rule_id (policy-based / one-time), this is
+ // never touched again after generation — see `success`/`error` for the
+ // operator's terminal outcome instead. rule_id (MPA v2) rows may still
+ // have the operator's post-hoc status message appended.
+ Reasoning *string `protobuf:"bytes,31,opt,name=reasoning,proto3,oneof" json:"reasoning,omitempty"`
+ CurrentTolerations []*Toleration `protobuf:"bytes,41,rep,name=current_tolerations,json=currentTolerations,proto3" json:"current_tolerations,omitempty"`
+ // Deprecated: Marked as deprecated in api/v1/recommendation.proto.
+ RecommendedTolerations []*Toleration `protobuf:"bytes,42,rep,name=recommended_tolerations,json=recommendedTolerations,proto3" json:"recommended_tolerations,omitempty"` // superseded by toleration_mutations (per-element merge)
Status *RecommendationStatus `protobuf:"varint,51,opt,name=status,proto3,enum=api.v1.RecommendationStatus,oneof" json:"status,omitempty"`
Policy *WorkloadRecommendationPolicy `protobuf:"bytes,61,opt,name=policy,proto3,oneof" json:"policy,omitempty"`
PolicyId *string `protobuf:"bytes,62,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"`
PolicyTarget *WorkloadPolicyTarget `protobuf:"bytes,71,opt,name=policy_target,json=policyTarget,proto3,oneof" json:"policy_target,omitempty"`
PolicyTargetId *string `protobuf:"bytes,72,opt,name=policy_target_id,json=policyTargetId,proto3,oneof" json:"policy_target_id,omitempty"`
RuleId *string `protobuf:"bytes,73,opt,name=rule_id,json=ruleId,proto3,oneof" json:"rule_id,omitempty"`
- ReplicaCountAction ActionToTake `protobuf:"varint,81,opt,name=replica_count_action,json=replicaCountAction,proto3,enum=api.v1.ActionToTake" json:"replica_count_action,omitempty"` // suggests if operator should set recommended_replica_count
+ // CurrentSource of the governing WorkloadRule (MPA v2), e.g. "auto_optimization",
+ // "policy", "manual". Only set when rule_id is populated. Mirrors WorkloadRule.current_source
+ // so the recommendations list can show/link the governing rule without a second RPC.
+ RuleSource *string `protobuf:"bytes,104,opt,name=rule_source,json=ruleSource,proto3,oneof" json:"rule_source,omitempty"`
+ // The original spec.recommendation_id from the WorkloadRecommendation CRD. For MPA v2
+ // (rule-based) rows, recommendation_id (field 1, this message's row ID) is deliberately
+ // re-derived per apply cycle so each evaluation gets its own history row — but audit log
+ // entries and live-migration checkpoint/restore events are always stamped with this
+ // original, un-derived ID. Clients querying audit logs or C/R status/events for a
+ // recommendation MUST use this field, not recommendation_id, or the query returns nothing
+ // for MPA v2 rows. Equal to recommendation_id for legacy rows (which never derive it).
+ SourceRecommendationId *string `protobuf:"bytes,105,opt,name=source_recommendation_id,json=sourceRecommendationId,proto3,oneof" json:"source_recommendation_id,omitempty"`
+ ReplicaCountAction ActionToTake `protobuf:"varint,81,opt,name=replica_count_action,json=replicaCountAction,proto3,enum=api.v1.ActionToTake" json:"replica_count_action,omitempty"` // suggests if operator should set recommended_replica_count
// Result of live migration when this recommendation was applied with use_live_migration (populated after apply).
LiveMigrationResult *LiveMigrationResult `protobuf:"bytes,82,opt,name=live_migration_result,json=liveMigrationResult,proto3,oneof" json:"live_migration_result,omitempty"`
// Error message when status is failed or apply failed.
Error *string `protobuf:"bytes,83,opt,name=error,proto3,oneof" json:"error,omitempty"`
+ // Operator's terminal status message for any non-failure outcome (applied,
+ // or superseded via image-changed/skip). Mirrors `error` for the
+ // non-failure side. Only populated for recommendations with no rule_id
+ // (policy-based and one-time recs) — see reasoning field note below.
+ Success *string `protobuf:"bytes,106,opt,name=success,proto3,oneof" json:"success,omitempty"`
// Backend-computed cost impact (current vs recommended).
CostImpact *CostImpact `protobuf:"bytes,91,opt,name=cost_impact,json=costImpact,proto3,oneof" json:"cost_impact,omitempty"`
// Whether this recommendation should be applied using in-place pod vertical scaling.
// When true, the operator resizes running pods via the /resize subresource
// without triggering rolling restarts (requires k8s >= v1.33).
UseInPlaceVerticalScaling bool `protobuf:"varint,92,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
+ // Whether the operator may lower a container's memory limit while applying
+ // this recommendation in place. Copied from the owning rule/policy at
+ // generation time so the operator's apply-time preflight can decide without
+ // re-reading the rule. Independent of, and additional to, the cluster
+ // version check.
+ AllowInPlaceMemoryLimitDecrease bool `protobuf:"varint,109,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3" json:"allow_in_place_memory_limit_decrease,omitempty"`
// Impact score (0-1) indicating optimization opportunity. Higher = more waste.
ImpactScore float64 `protobuf:"fixed64,93,opt,name=impact_score,json=impactScore,proto3" json:"impact_score,omitempty"`
+ // Pod-scoped per-element nodeSelector mutations (merge key: key).
+ NodeSelectorMutations []*NodeSelectorMutation `protobuf:"bytes,101,rep,name=node_selector_mutations,json=nodeSelectorMutations,proto3" json:"node_selector_mutations,omitempty"`
+ // Pod-scoped per-element toleration mutations. Supersedes the deprecated
+ // recommended_tolerations full-list field.
+ TolerationMutations []*TolerationMutation `protobuf:"bytes,102,rep,name=toleration_mutations,json=tolerationMutations,proto3" json:"toleration_mutations,omitempty"`
+ // Container image (keyed by container name) the recommendation was derived
+ // from — the "source" release. The operator compares this against a
+ // workload's live images to detect that a new release shipped and retire a
+ // recommendation whose tuned values (resources, JVM heap, …) were computed
+ // for the old image, so they are not pinned onto the new one (e.g. a stale
+ // -Xmx that could OOM the new build).
+ SourceImages map[string]string `protobuf:"bytes,103,rep,name=source_images,json=sourceImages,proto3" json:"source_images,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Force-restart directive when no resource fields changed but a restart
+ // was still requested (e.g. re-apply after an image change).
+ RestartActionToTake ActionToTake `protobuf:"varint,107,opt,name=restart_action_to_take,json=restartActionToTake,proto3,enum=api.v1.ActionToTake" json:"restart_action_to_take,omitempty"`
+ // Structured reasoning payload (insights, per-container deltas, HPA
+ // context, decision trace). Only populated for mpav1 (policy_id set)
+ // recommendations generated after this field shipped; absent for mpav2,
+ // one-time, and historical rows — consumers fall back to `reasoning`.
+ ReasoningDetails *ReasoningDetails `protobuf:"bytes,108,opt,name=reasoning_details,json=reasoningDetails,proto3,oneof" json:"reasoning_details,omitempty"`
}
func (x *WorkloadRecommendation) Reset() {
*x = WorkloadRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[155]
+ mi := &file_api_v1_recommendation_proto_msgTypes[171]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -13673,7 +16607,7 @@ func (x *WorkloadRecommendation) String() string {
func (*WorkloadRecommendation) ProtoMessage() {}
func (x *WorkloadRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[155]
+ mi := &file_api_v1_recommendation_proto_msgTypes[171]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13686,7 +16620,7 @@ func (x *WorkloadRecommendation) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkloadRecommendation.ProtoReflect.Descriptor instead.
func (*WorkloadRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{155}
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{171}
}
func (x *WorkloadRecommendation) GetRecommendationId() string {
@@ -13801,6 +16735,7 @@ func (x *WorkloadRecommendation) GetCurrentTolerations() []*Toleration {
return nil
}
+// Deprecated: Marked as deprecated in api/v1/recommendation.proto.
func (x *WorkloadRecommendation) GetRecommendedTolerations() []*Toleration {
if x != nil {
return x.RecommendedTolerations
@@ -13850,6 +16785,20 @@ func (x *WorkloadRecommendation) GetRuleId() string {
return ""
}
+func (x *WorkloadRecommendation) GetRuleSource() string {
+ if x != nil && x.RuleSource != nil {
+ return *x.RuleSource
+ }
+ return ""
+}
+
+func (x *WorkloadRecommendation) GetSourceRecommendationId() string {
+ if x != nil && x.SourceRecommendationId != nil {
+ return *x.SourceRecommendationId
+ }
+ return ""
+}
+
func (x *WorkloadRecommendation) GetReplicaCountAction() ActionToTake {
if x != nil {
return x.ReplicaCountAction
@@ -13871,6 +16820,13 @@ func (x *WorkloadRecommendation) GetError() string {
return ""
}
+func (x *WorkloadRecommendation) GetSuccess() string {
+ if x != nil && x.Success != nil {
+ return *x.Success
+ }
+ return ""
+}
+
func (x *WorkloadRecommendation) GetCostImpact() *CostImpact {
if x != nil {
return x.CostImpact
@@ -13885,6 +16841,13 @@ func (x *WorkloadRecommendation) GetUseInPlaceVerticalScaling() bool {
return false
}
+func (x *WorkloadRecommendation) GetAllowInPlaceMemoryLimitDecrease() bool {
+ if x != nil {
+ return x.AllowInPlaceMemoryLimitDecrease
+ }
+ return false
+}
+
func (x *WorkloadRecommendation) GetImpactScore() float64 {
if x != nil {
return x.ImpactScore
@@ -13892,33 +16855,75 @@ func (x *WorkloadRecommendation) GetImpactScore() float64 {
return 0
}
-type GetAttachedNodeGroupPoliciesRequest struct {
+func (x *WorkloadRecommendation) GetNodeSelectorMutations() []*NodeSelectorMutation {
+ if x != nil {
+ return x.NodeSelectorMutations
+ }
+ return nil
+}
+
+func (x *WorkloadRecommendation) GetTolerationMutations() []*TolerationMutation {
+ if x != nil {
+ return x.TolerationMutations
+ }
+ return nil
+}
+
+func (x *WorkloadRecommendation) GetSourceImages() map[string]string {
+ if x != nil {
+ return x.SourceImages
+ }
+ return nil
+}
+
+func (x *WorkloadRecommendation) GetRestartActionToTake() ActionToTake {
+ if x != nil {
+ return x.RestartActionToTake
+ }
+ return ActionToTake_ACTION_TO_TAKE_SET
+}
+
+func (x *WorkloadRecommendation) GetReasoningDetails() *ReasoningDetails {
+ if x != nil {
+ return x.ReasoningDetails
+ }
+ return nil
+}
+
+// ReasoningDetails is the structured form of a recommendation's `reasoning`
+// prose. schema_version tracks the payload shape (currently 1).
+type ReasoningDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- NodeGroupName string `protobuf:"bytes,3,opt,name=node_group_name,json=nodeGroupName,proto3" json:"node_group_name,omitempty"`
+ SchemaVersion int32 `protobuf:"varint,1,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"`
+ Insights []*ReasoningInsight `protobuf:"bytes,2,rep,name=insights,proto3" json:"insights,omitempty"`
+ ContainerChanges []*ReasoningContainerChange `protobuf:"bytes,3,rep,name=container_changes,json=containerChanges,proto3" json:"container_changes,omitempty"`
+ Replicas *ReasoningReplicas `protobuf:"bytes,4,opt,name=replicas,proto3,oneof" json:"replicas,omitempty"`
+ Decisions []*ReasoningDecision `protobuf:"bytes,5,rep,name=decisions,proto3" json:"decisions,omitempty"`
+ ConfidenceScore float64 `protobuf:"fixed64,6,opt,name=confidence_score,json=confidenceScore,proto3" json:"confidence_score,omitempty"`
+ RiskScore float64 `protobuf:"fixed64,7,opt,name=risk_score,json=riskScore,proto3" json:"risk_score,omitempty"`
+ EffectiveDeadbandPercent float64 `protobuf:"fixed64,8,opt,name=effective_deadband_percent,json=effectiveDeadbandPercent,proto3" json:"effective_deadband_percent,omitempty"`
}
-func (x *GetAttachedNodeGroupPoliciesRequest) Reset() {
- *x = GetAttachedNodeGroupPoliciesRequest{}
+func (x *ReasoningDetails) Reset() {
+ *x = ReasoningDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[156]
+ mi := &file_api_v1_recommendation_proto_msgTypes[172]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAttachedNodeGroupPoliciesRequest) String() string {
+func (x *ReasoningDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAttachedNodeGroupPoliciesRequest) ProtoMessage() {}
+func (*ReasoningDetails) ProtoMessage() {}
-func (x *GetAttachedNodeGroupPoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[156]
+func (x *ReasoningDetails) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[172]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13929,57 +16934,94 @@ func (x *GetAttachedNodeGroupPoliciesRequest) ProtoReflect() protoreflect.Messag
return mi.MessageOf(x)
}
-// Deprecated: Use GetAttachedNodeGroupPoliciesRequest.ProtoReflect.Descriptor instead.
-func (*GetAttachedNodeGroupPoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{156}
+// Deprecated: Use ReasoningDetails.ProtoReflect.Descriptor instead.
+func (*ReasoningDetails) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{172}
}
-func (x *GetAttachedNodeGroupPoliciesRequest) GetTeamId() string {
+func (x *ReasoningDetails) GetSchemaVersion() int32 {
if x != nil {
- return x.TeamId
+ return x.SchemaVersion
}
- return ""
+ return 0
}
-func (x *GetAttachedNodeGroupPoliciesRequest) GetClusterId() string {
+func (x *ReasoningDetails) GetInsights() []*ReasoningInsight {
if x != nil {
- return x.ClusterId
+ return x.Insights
}
- return ""
+ return nil
}
-func (x *GetAttachedNodeGroupPoliciesRequest) GetNodeGroupName() string {
+func (x *ReasoningDetails) GetContainerChanges() []*ReasoningContainerChange {
if x != nil {
- return x.NodeGroupName
+ return x.ContainerChanges
}
- return ""
+ return nil
}
-type GetAttachedNodeGroupPoliciesResponse struct {
+func (x *ReasoningDetails) GetReplicas() *ReasoningReplicas {
+ if x != nil {
+ return x.Replicas
+ }
+ return nil
+}
+
+func (x *ReasoningDetails) GetDecisions() []*ReasoningDecision {
+ if x != nil {
+ return x.Decisions
+ }
+ return nil
+}
+
+func (x *ReasoningDetails) GetConfidenceScore() float64 {
+ if x != nil {
+ return x.ConfidenceScore
+ }
+ return 0
+}
+
+func (x *ReasoningDetails) GetRiskScore() float64 {
+ if x != nil {
+ return x.RiskScore
+ }
+ return 0
+}
+
+func (x *ReasoningDetails) GetEffectiveDeadbandPercent() float64 {
+ if x != nil {
+ return x.EffectiveDeadbandPercent
+ }
+ return 0
+}
+
+type ReasoningEvidence struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*NodeGroupRecommendationPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+ Confidence float64 `protobuf:"fixed64,3,opt,name=confidence,proto3" json:"confidence,omitempty"`
}
-func (x *GetAttachedNodeGroupPoliciesResponse) Reset() {
- *x = GetAttachedNodeGroupPoliciesResponse{}
+func (x *ReasoningEvidence) Reset() {
+ *x = ReasoningEvidence{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[157]
+ mi := &file_api_v1_recommendation_proto_msgTypes[173]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAttachedNodeGroupPoliciesResponse) String() string {
+func (x *ReasoningEvidence) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAttachedNodeGroupPoliciesResponse) ProtoMessage() {}
+func (*ReasoningEvidence) ProtoMessage() {}
-func (x *GetAttachedNodeGroupPoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[157]
+func (x *ReasoningEvidence) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[173]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13990,47 +17032,64 @@ func (x *GetAttachedNodeGroupPoliciesResponse) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use GetAttachedNodeGroupPoliciesResponse.ProtoReflect.Descriptor instead.
-func (*GetAttachedNodeGroupPoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{157}
+// Deprecated: Use ReasoningEvidence.ProtoReflect.Descriptor instead.
+func (*ReasoningEvidence) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{173}
}
-func (x *GetAttachedNodeGroupPoliciesResponse) GetPolicies() []*NodeGroupRecommendationPolicy {
+func (x *ReasoningEvidence) GetType() string {
if x != nil {
- return x.Policies
+ return x.Type
}
- return nil
+ return ""
}
-type GetAttachedWorkloadPoliciesRequest struct {
+func (x *ReasoningEvidence) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *ReasoningEvidence) GetConfidence() float64 {
+ if x != nil {
+ return x.Confidence
+ }
+ return 0
+}
+
+type ReasoningInsight struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- WorkloadUid string `protobuf:"bytes,3,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
- Kind K8SObjectKind `protobuf:"varint,4,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"` // The kind of workload
- IncludeDeleted bool `protobuf:"varint,11,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Type ReasoningInsightType `protobuf:"varint,2,opt,name=type,proto3,enum=api.v1.ReasoningInsightType" json:"type,omitempty"`
+ Severity ReasoningInsightSeverity `protobuf:"varint,3,opt,name=severity,proto3,enum=api.v1.ReasoningInsightSeverity" json:"severity,omitempty"`
+ Confidence float64 `protobuf:"fixed64,4,opt,name=confidence,proto3" json:"confidence,omitempty"`
+ Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
+ Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
+ Impact string `protobuf:"bytes,7,opt,name=impact,proto3" json:"impact,omitempty"`
+ Evidence []*ReasoningEvidence `protobuf:"bytes,8,rep,name=evidence,proto3" json:"evidence,omitempty"`
}
-func (x *GetAttachedWorkloadPoliciesRequest) Reset() {
- *x = GetAttachedWorkloadPoliciesRequest{}
+func (x *ReasoningInsight) Reset() {
+ *x = ReasoningInsight{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[158]
+ mi := &file_api_v1_recommendation_proto_msgTypes[174]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAttachedWorkloadPoliciesRequest) String() string {
+func (x *ReasoningInsight) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAttachedWorkloadPoliciesRequest) ProtoMessage() {}
+func (*ReasoningInsight) ProtoMessage() {}
-func (x *GetAttachedWorkloadPoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[158]
+func (x *ReasoningInsight) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[174]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14041,72 +17100,98 @@ func (x *GetAttachedWorkloadPoliciesRequest) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetAttachedWorkloadPoliciesRequest.ProtoReflect.Descriptor instead.
-func (*GetAttachedWorkloadPoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{158}
+// Deprecated: Use ReasoningInsight.ProtoReflect.Descriptor instead.
+func (*ReasoningInsight) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{174}
}
-func (x *GetAttachedWorkloadPoliciesRequest) GetTeamId() string {
+func (x *ReasoningInsight) GetId() string {
if x != nil {
- return x.TeamId
+ return x.Id
}
return ""
}
-func (x *GetAttachedWorkloadPoliciesRequest) GetClusterId() string {
+func (x *ReasoningInsight) GetType() ReasoningInsightType {
if x != nil {
- return x.ClusterId
+ return x.Type
+ }
+ return ReasoningInsightType_REASONING_INSIGHT_TYPE_UNSPECIFIED
+}
+
+func (x *ReasoningInsight) GetSeverity() ReasoningInsightSeverity {
+ if x != nil {
+ return x.Severity
+ }
+ return ReasoningInsightSeverity_REASONING_INSIGHT_SEVERITY_UNSPECIFIED
+}
+
+func (x *ReasoningInsight) GetConfidence() float64 {
+ if x != nil {
+ return x.Confidence
+ }
+ return 0
+}
+
+func (x *ReasoningInsight) GetTitle() string {
+ if x != nil {
+ return x.Title
}
return ""
}
-func (x *GetAttachedWorkloadPoliciesRequest) GetWorkloadUid() string {
+func (x *ReasoningInsight) GetDescription() string {
if x != nil {
- return x.WorkloadUid
+ return x.Description
}
return ""
}
-func (x *GetAttachedWorkloadPoliciesRequest) GetKind() K8SObjectKind {
+func (x *ReasoningInsight) GetImpact() string {
if x != nil {
- return x.Kind
+ return x.Impact
}
- return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
+ return ""
}
-func (x *GetAttachedWorkloadPoliciesRequest) GetIncludeDeleted() bool {
+func (x *ReasoningInsight) GetEvidence() []*ReasoningEvidence {
if x != nil {
- return x.IncludeDeleted
+ return x.Evidence
}
- return false
+ return nil
}
-type GetAttachedWorkloadPoliciesResponse struct {
+// Raw units: millicores for CPU, bytes for memory. Before = actuals at
+// generation time, after = final recommendation. Percent changes are for
+// the consumer to compute (avoids the legacy divide-by-zero Inf%).
+type ReasoningResourceEdge struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RelevantPolicies *WorkloadRecommendationPolicyGroup `protobuf:"bytes,1,opt,name=relevant_policies,json=relevantPolicies,proto3" json:"relevant_policies,omitempty"`
- PolicyIdToMatchedTargets map[string]*WorkloadPolicyTargetGroup `protobuf:"bytes,2,rep,name=policy_id_to_matched_targets,json=policyIdToMatchedTargets,proto3" json:"policy_id_to_matched_targets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ RequestBefore int64 `protobuf:"varint,1,opt,name=request_before,json=requestBefore,proto3" json:"request_before,omitempty"`
+ RequestAfter int64 `protobuf:"varint,2,opt,name=request_after,json=requestAfter,proto3" json:"request_after,omitempty"`
+ LimitBefore int64 `protobuf:"varint,3,opt,name=limit_before,json=limitBefore,proto3" json:"limit_before,omitempty"`
+ LimitAfter int64 `protobuf:"varint,4,opt,name=limit_after,json=limitAfter,proto3" json:"limit_after,omitempty"`
}
-func (x *GetAttachedWorkloadPoliciesResponse) Reset() {
- *x = GetAttachedWorkloadPoliciesResponse{}
+func (x *ReasoningResourceEdge) Reset() {
+ *x = ReasoningResourceEdge{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[159]
+ mi := &file_api_v1_recommendation_proto_msgTypes[175]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAttachedWorkloadPoliciesResponse) String() string {
+func (x *ReasoningResourceEdge) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAttachedWorkloadPoliciesResponse) ProtoMessage() {}
+func (*ReasoningResourceEdge) ProtoMessage() {}
-func (x *GetAttachedWorkloadPoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[159]
+func (x *ReasoningResourceEdge) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[175]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14117,50 +17202,68 @@ func (x *GetAttachedWorkloadPoliciesResponse) ProtoReflect() protoreflect.Messag
return mi.MessageOf(x)
}
-// Deprecated: Use GetAttachedWorkloadPoliciesResponse.ProtoReflect.Descriptor instead.
-func (*GetAttachedWorkloadPoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{159}
+// Deprecated: Use ReasoningResourceEdge.ProtoReflect.Descriptor instead.
+func (*ReasoningResourceEdge) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{175}
}
-func (x *GetAttachedWorkloadPoliciesResponse) GetRelevantPolicies() *WorkloadRecommendationPolicyGroup {
+func (x *ReasoningResourceEdge) GetRequestBefore() int64 {
if x != nil {
- return x.RelevantPolicies
+ return x.RequestBefore
}
- return nil
+ return 0
}
-func (x *GetAttachedWorkloadPoliciesResponse) GetPolicyIdToMatchedTargets() map[string]*WorkloadPolicyTargetGroup {
+func (x *ReasoningResourceEdge) GetRequestAfter() int64 {
if x != nil {
- return x.PolicyIdToMatchedTargets
+ return x.RequestAfter
}
- return nil
+ return 0
}
-type WorkloadRecommendationPolicyGroup struct {
+func (x *ReasoningResourceEdge) GetLimitBefore() int64 {
+ if x != nil {
+ return x.LimitBefore
+ }
+ return 0
+}
+
+func (x *ReasoningResourceEdge) GetLimitAfter() int64 {
+ if x != nil {
+ return x.LimitAfter
+ }
+ return 0
+}
+
+type ReasoningContainerChange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*WorkloadRecommendationPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Container string `protobuf:"bytes,1,opt,name=container,proto3" json:"container,omitempty"`
+ Cpu *ReasoningResourceEdge `protobuf:"bytes,2,opt,name=cpu,proto3" json:"cpu,omitempty"`
+ Memory *ReasoningResourceEdge `protobuf:"bytes,3,opt,name=memory,proto3" json:"memory,omitempty"`
+ Gpu *ReasoningResourceEdge `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"`
+ OomTriggered bool `protobuf:"varint,5,opt,name=oom_triggered,json=oomTriggered,proto3" json:"oom_triggered,omitempty"`
}
-func (x *WorkloadRecommendationPolicyGroup) Reset() {
- *x = WorkloadRecommendationPolicyGroup{}
+func (x *ReasoningContainerChange) Reset() {
+ *x = ReasoningContainerChange{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[160]
+ mi := &file_api_v1_recommendation_proto_msgTypes[176]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadRecommendationPolicyGroup) String() string {
+func (x *ReasoningContainerChange) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadRecommendationPolicyGroup) ProtoMessage() {}
+func (*ReasoningContainerChange) ProtoMessage() {}
-func (x *WorkloadRecommendationPolicyGroup) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[160]
+func (x *ReasoningContainerChange) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[176]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14171,43 +17274,74 @@ func (x *WorkloadRecommendationPolicyGroup) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadRecommendationPolicyGroup.ProtoReflect.Descriptor instead.
-func (*WorkloadRecommendationPolicyGroup) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{160}
+// Deprecated: Use ReasoningContainerChange.ProtoReflect.Descriptor instead.
+func (*ReasoningContainerChange) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{176}
}
-func (x *WorkloadRecommendationPolicyGroup) GetPolicies() []*WorkloadRecommendationPolicy {
+func (x *ReasoningContainerChange) GetContainer() string {
if x != nil {
- return x.Policies
+ return x.Container
+ }
+ return ""
+}
+
+func (x *ReasoningContainerChange) GetCpu() *ReasoningResourceEdge {
+ if x != nil {
+ return x.Cpu
}
return nil
}
-type WorkloadPolicyTargetGroup struct {
+func (x *ReasoningContainerChange) GetMemory() *ReasoningResourceEdge {
+ if x != nil {
+ return x.Memory
+ }
+ return nil
+}
+
+func (x *ReasoningContainerChange) GetGpu() *ReasoningResourceEdge {
+ if x != nil {
+ return x.Gpu
+ }
+ return nil
+}
+
+func (x *ReasoningContainerChange) GetOomTriggered() bool {
+ if x != nil {
+ return x.OomTriggered
+ }
+ return false
+}
+
+type ReasoningUtilization struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Targets []*WorkloadPolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+ CpuCurrent float64 `protobuf:"fixed64,1,opt,name=cpu_current,json=cpuCurrent,proto3" json:"cpu_current,omitempty"`
+ CpuTarget float64 `protobuf:"fixed64,2,opt,name=cpu_target,json=cpuTarget,proto3" json:"cpu_target,omitempty"`
+ MemoryCurrent float64 `protobuf:"fixed64,3,opt,name=memory_current,json=memoryCurrent,proto3" json:"memory_current,omitempty"`
+ MemoryTarget float64 `protobuf:"fixed64,4,opt,name=memory_target,json=memoryTarget,proto3" json:"memory_target,omitempty"`
}
-func (x *WorkloadPolicyTargetGroup) Reset() {
- *x = WorkloadPolicyTargetGroup{}
+func (x *ReasoningUtilization) Reset() {
+ *x = ReasoningUtilization{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[161]
+ mi := &file_api_v1_recommendation_proto_msgTypes[177]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadPolicyTargetGroup) String() string {
+func (x *ReasoningUtilization) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadPolicyTargetGroup) ProtoMessage() {}
+func (*ReasoningUtilization) ProtoMessage() {}
-func (x *WorkloadPolicyTargetGroup) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[161]
+func (x *ReasoningUtilization) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[177]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14218,43 +17352,66 @@ func (x *WorkloadPolicyTargetGroup) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadPolicyTargetGroup.ProtoReflect.Descriptor instead.
-func (*WorkloadPolicyTargetGroup) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{161}
+// Deprecated: Use ReasoningUtilization.ProtoReflect.Descriptor instead.
+func (*ReasoningUtilization) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{177}
}
-func (x *WorkloadPolicyTargetGroup) GetTargets() []*WorkloadPolicyTarget {
+func (x *ReasoningUtilization) GetCpuCurrent() float64 {
if x != nil {
- return x.Targets
+ return x.CpuCurrent
}
- return nil
+ return 0
}
-type WorkloadIdentifiers struct {
+func (x *ReasoningUtilization) GetCpuTarget() float64 {
+ if x != nil {
+ return x.CpuTarget
+ }
+ return 0
+}
+
+func (x *ReasoningUtilization) GetMemoryCurrent() float64 {
+ if x != nil {
+ return x.MemoryCurrent
+ }
+ return 0
+}
+
+func (x *ReasoningUtilization) GetMemoryTarget() float64 {
+ if x != nil {
+ return x.MemoryTarget
+ }
+ return 0
+}
+
+type ReasoningHistoricalPattern struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Workloads []*WorkloadIdentifier `protobuf:"bytes,1,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"`
+ IsOscillating bool `protobuf:"varint,2,opt,name=is_oscillating,json=isOscillating,proto3" json:"is_oscillating,omitempty"`
+ ChangeFrequency float64 `protobuf:"fixed64,3,opt,name=change_frequency,json=changeFrequency,proto3" json:"change_frequency,omitempty"`
}
-func (x *WorkloadIdentifiers) Reset() {
- *x = WorkloadIdentifiers{}
+func (x *ReasoningHistoricalPattern) Reset() {
+ *x = ReasoningHistoricalPattern{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[162]
+ mi := &file_api_v1_recommendation_proto_msgTypes[178]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadIdentifiers) String() string {
+func (x *ReasoningHistoricalPattern) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadIdentifiers) ProtoMessage() {}
+func (*ReasoningHistoricalPattern) ProtoMessage() {}
-func (x *WorkloadIdentifiers) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[162]
+func (x *ReasoningHistoricalPattern) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[178]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14265,44 +17422,65 @@ func (x *WorkloadIdentifiers) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadIdentifiers.ProtoReflect.Descriptor instead.
-func (*WorkloadIdentifiers) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{162}
+// Deprecated: Use ReasoningHistoricalPattern.ProtoReflect.Descriptor instead.
+func (*ReasoningHistoricalPattern) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{178}
}
-func (x *WorkloadIdentifiers) GetWorkloads() []*WorkloadIdentifier {
+func (x *ReasoningHistoricalPattern) GetPattern() string {
if x != nil {
- return x.Workloads
+ return x.Pattern
}
- return nil
+ return ""
}
-type WorkloadPolicies struct {
+func (x *ReasoningHistoricalPattern) GetIsOscillating() bool {
+ if x != nil {
+ return x.IsOscillating
+ }
+ return false
+}
+
+func (x *ReasoningHistoricalPattern) GetChangeFrequency() float64 {
+ if x != nil {
+ return x.ChangeFrequency
+ }
+ return 0
+}
+
+type ReasoningReplicas struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Workload *WorkloadIdentifier `protobuf:"bytes,1,opt,name=workload,proto3" json:"workload,omitempty"`
- Policies []*WorkloadRecommendationPolicy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty"`
+ Current int32 `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
+ Recommended int32 `protobuf:"varint,2,opt,name=recommended,proto3" json:"recommended,omitempty"`
+ Min int32 `protobuf:"varint,3,opt,name=min,proto3" json:"min,omitempty"`
+ Max int32 `protobuf:"varint,4,opt,name=max,proto3" json:"max,omitempty"`
+ Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"`
+ PrimaryMetric string `protobuf:"bytes,6,opt,name=primary_metric,json=primaryMetric,proto3" json:"primary_metric,omitempty"`
+ Utilization *ReasoningUtilization `protobuf:"bytes,7,opt,name=utilization,proto3" json:"utilization,omitempty"`
+ WorkloadType string `protobuf:"bytes,8,opt,name=workload_type,json=workloadType,proto3" json:"workload_type,omitempty"`
+ HistoricalPattern *ReasoningHistoricalPattern `protobuf:"bytes,9,opt,name=historical_pattern,json=historicalPattern,proto3" json:"historical_pattern,omitempty"`
}
-func (x *WorkloadPolicies) Reset() {
- *x = WorkloadPolicies{}
+func (x *ReasoningReplicas) Reset() {
+ *x = ReasoningReplicas{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[163]
+ mi := &file_api_v1_recommendation_proto_msgTypes[179]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadPolicies) String() string {
+func (x *ReasoningReplicas) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadPolicies) ProtoMessage() {}
+func (*ReasoningReplicas) ProtoMessage() {}
-func (x *WorkloadPolicies) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[163]
+func (x *ReasoningReplicas) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[179]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14313,125 +17491,106 @@ func (x *WorkloadPolicies) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadPolicies.ProtoReflect.Descriptor instead.
-func (*WorkloadPolicies) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{163}
+// Deprecated: Use ReasoningReplicas.ProtoReflect.Descriptor instead.
+func (*ReasoningReplicas) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{179}
}
-func (x *WorkloadPolicies) GetWorkload() *WorkloadIdentifier {
+func (x *ReasoningReplicas) GetCurrent() int32 {
if x != nil {
- return x.Workload
+ return x.Current
}
- return nil
+ return 0
}
-func (x *WorkloadPolicies) GetPolicies() []*WorkloadRecommendationPolicy {
+func (x *ReasoningReplicas) GetRecommended() int32 {
if x != nil {
- return x.Policies
+ return x.Recommended
}
- return nil
-}
-
-// ListAttachedWorkloadPoliciesRequest is used to fetch all attached workload policies and workloads for a team.
-// All parameters except team_id are optional filters.
-type ListAttachedWorkloadPoliciesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Optional list of cluster IDs to filter by specific clusters.
- PolicyIds []string `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // Optional list of policy IDs to filter by specific policies.
- WorkloadUids []string `protobuf:"bytes,4,rep,name=workload_uids,json=workloadUids,proto3" json:"workload_uids,omitempty"` // Optional list of workload UIDs to filter by specific workloads.
+ return 0
}
-func (x *ListAttachedWorkloadPoliciesRequest) Reset() {
- *x = ListAttachedWorkloadPoliciesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[164]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *ReasoningReplicas) GetMin() int32 {
+ if x != nil {
+ return x.Min
}
+ return 0
}
-func (x *ListAttachedWorkloadPoliciesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListAttachedWorkloadPoliciesRequest) ProtoMessage() {}
-
-func (x *ListAttachedWorkloadPoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[164]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *ReasoningReplicas) GetMax() int32 {
+ if x != nil {
+ return x.Max
}
- return mi.MessageOf(x)
+ return 0
}
-// Deprecated: Use ListAttachedWorkloadPoliciesRequest.ProtoReflect.Descriptor instead.
-func (*ListAttachedWorkloadPoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{164}
+func (x *ReasoningReplicas) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
}
-func (x *ListAttachedWorkloadPoliciesRequest) GetTeamId() string {
+func (x *ReasoningReplicas) GetPrimaryMetric() string {
if x != nil {
- return x.TeamId
+ return x.PrimaryMetric
}
return ""
}
-func (x *ListAttachedWorkloadPoliciesRequest) GetClusterIds() []string {
+func (x *ReasoningReplicas) GetUtilization() *ReasoningUtilization {
if x != nil {
- return x.ClusterIds
+ return x.Utilization
}
return nil
}
-func (x *ListAttachedWorkloadPoliciesRequest) GetPolicyIds() []string {
+func (x *ReasoningReplicas) GetWorkloadType() string {
if x != nil {
- return x.PolicyIds
+ return x.WorkloadType
}
- return nil
+ return ""
}
-func (x *ListAttachedWorkloadPoliciesRequest) GetWorkloadUids() []string {
+func (x *ReasoningReplicas) GetHistoricalPattern() *ReasoningHistoricalPattern {
if x != nil {
- return x.WorkloadUids
+ return x.HistoricalPattern
}
return nil
}
-// ListAttachedWorkloadPoliciesResponse contains all attached policies and workloads with their relationships.
-type ListAttachedWorkloadPoliciesResponse struct {
+type ReasoningDecision struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PolicyMap map[string]*WorkloadRecommendationPolicy `protobuf:"bytes,1,rep,name=policy_map,json=policyMap,proto3" json:"policy_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of policy ID to WorkloadRecommendationPolicy
- WorkloadMap map[string]*WorkloadItem `protobuf:"bytes,2,rep,name=workload_map,json=workloadMap,proto3" json:"workload_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of workload UID to WorkloadItem
+ Kind ReasoningDecisionKind `protobuf:"varint,1,opt,name=kind,proto3,enum=api.v1.ReasoningDecisionKind" json:"kind,omitempty"`
+ Container string `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"` // empty = workload-scoped
+ Resource string `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"` // cpu | memory | gpu | ""
+ Field string `protobuf:"bytes,4,opt,name=field,proto3" json:"field,omitempty"` // request | limit | replicas | ""
+ Intended *int64 `protobuf:"varint,5,opt,name=intended,proto3,oneof" json:"intended,omitempty"`
+ Actual *int64 `protobuf:"varint,6,opt,name=actual,proto3,oneof" json:"actual,omitempty"`
+ Constraint string `protobuf:"bytes,7,opt,name=constraint,proto3" json:"constraint,omitempty"` // open-ended machine-readable cause token
+ Message string `protobuf:"bytes,8,opt,name=message,proto3" json:"message,omitempty"`
}
-func (x *ListAttachedWorkloadPoliciesResponse) Reset() {
- *x = ListAttachedWorkloadPoliciesResponse{}
+func (x *ReasoningDecision) Reset() {
+ *x = ReasoningDecision{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[165]
+ mi := &file_api_v1_recommendation_proto_msgTypes[180]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListAttachedWorkloadPoliciesResponse) String() string {
+func (x *ReasoningDecision) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListAttachedWorkloadPoliciesResponse) ProtoMessage() {}
+func (*ReasoningDecision) ProtoMessage() {}
-func (x *ListAttachedWorkloadPoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[165]
+func (x *ReasoningDecision) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[180]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14442,125 +17601,94 @@ func (x *ListAttachedWorkloadPoliciesResponse) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use ListAttachedWorkloadPoliciesResponse.ProtoReflect.Descriptor instead.
-func (*ListAttachedWorkloadPoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{165}
+// Deprecated: Use ReasoningDecision.ProtoReflect.Descriptor instead.
+func (*ReasoningDecision) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{180}
}
-func (x *ListAttachedWorkloadPoliciesResponse) GetPolicyMap() map[string]*WorkloadRecommendationPolicy {
+func (x *ReasoningDecision) GetKind() ReasoningDecisionKind {
if x != nil {
- return x.PolicyMap
+ return x.Kind
}
- return nil
+ return ReasoningDecisionKind_REASONING_DECISION_KIND_UNSPECIFIED
}
-func (x *ListAttachedWorkloadPoliciesResponse) GetWorkloadMap() map[string]*WorkloadItem {
+func (x *ReasoningDecision) GetContainer() string {
if x != nil {
- return x.WorkloadMap
+ return x.Container
}
- return nil
-}
-
-// ListAttachedNodeGroupPoliciesRequest is used to fetch all attached node group policies and node groups for a team.
-// All parameters except team_id are optional filters.
-type ListAttachedNodeGroupPoliciesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Optional list of cluster IDs to filter by specific clusters.
- PolicyIds []string `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // Optional list of policy IDs to filter by specific policies.
- NodeGroupNames []string `protobuf:"bytes,4,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional list of node group names to filter by specific node groups.
+ return ""
}
-func (x *ListAttachedNodeGroupPoliciesRequest) Reset() {
- *x = ListAttachedNodeGroupPoliciesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[166]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *ReasoningDecision) GetResource() string {
+ if x != nil {
+ return x.Resource
}
+ return ""
}
-func (x *ListAttachedNodeGroupPoliciesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListAttachedNodeGroupPoliciesRequest) ProtoMessage() {}
-
-func (x *ListAttachedNodeGroupPoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[166]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *ReasoningDecision) GetField() string {
+ if x != nil {
+ return x.Field
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListAttachedNodeGroupPoliciesRequest.ProtoReflect.Descriptor instead.
-func (*ListAttachedNodeGroupPoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{166}
+ return ""
}
-func (x *ListAttachedNodeGroupPoliciesRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
+func (x *ReasoningDecision) GetIntended() int64 {
+ if x != nil && x.Intended != nil {
+ return *x.Intended
}
- return ""
+ return 0
}
-func (x *ListAttachedNodeGroupPoliciesRequest) GetClusterIds() []string {
- if x != nil {
- return x.ClusterIds
+func (x *ReasoningDecision) GetActual() int64 {
+ if x != nil && x.Actual != nil {
+ return *x.Actual
}
- return nil
+ return 0
}
-func (x *ListAttachedNodeGroupPoliciesRequest) GetPolicyIds() []string {
+func (x *ReasoningDecision) GetConstraint() string {
if x != nil {
- return x.PolicyIds
+ return x.Constraint
}
- return nil
+ return ""
}
-func (x *ListAttachedNodeGroupPoliciesRequest) GetNodeGroupNames() []string {
+func (x *ReasoningDecision) GetMessage() string {
if x != nil {
- return x.NodeGroupNames
+ return x.Message
}
- return nil
+ return ""
}
-// ListAttachedNodeGroupPoliciesResponse contains all attached policies and node groups with their relationships.
-type ListAttachedNodeGroupPoliciesResponse struct {
+type GetAttachedNodeGroupPoliciesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PolicyMap map[string]*NodeGroupRecommendationPolicy `protobuf:"bytes,1,rep,name=policy_map,json=policyMap,proto3" json:"policy_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of policy ID to NodeGroupRecommendationPolicy
- NodeGroupMap map[string]*NodeGroupItem `protobuf:"bytes,2,rep,name=node_group_map,json=nodeGroupMap,proto3" json:"node_group_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of node group name to NodeGroupItem
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ NodeGroupName string `protobuf:"bytes,3,opt,name=node_group_name,json=nodeGroupName,proto3" json:"node_group_name,omitempty"`
}
-func (x *ListAttachedNodeGroupPoliciesResponse) Reset() {
- *x = ListAttachedNodeGroupPoliciesResponse{}
+func (x *GetAttachedNodeGroupPoliciesRequest) Reset() {
+ *x = GetAttachedNodeGroupPoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[167]
+ mi := &file_api_v1_recommendation_proto_msgTypes[181]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListAttachedNodeGroupPoliciesResponse) String() string {
+func (x *GetAttachedNodeGroupPoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListAttachedNodeGroupPoliciesResponse) ProtoMessage() {}
+func (*GetAttachedNodeGroupPoliciesRequest) ProtoMessage() {}
-func (x *ListAttachedNodeGroupPoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[167]
+func (x *GetAttachedNodeGroupPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[181]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14571,53 +17699,57 @@ func (x *ListAttachedNodeGroupPoliciesResponse) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use ListAttachedNodeGroupPoliciesResponse.ProtoReflect.Descriptor instead.
-func (*ListAttachedNodeGroupPoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{167}
+// Deprecated: Use GetAttachedNodeGroupPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*GetAttachedNodeGroupPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{181}
}
-func (x *ListAttachedNodeGroupPoliciesResponse) GetPolicyMap() map[string]*NodeGroupRecommendationPolicy {
+func (x *GetAttachedNodeGroupPoliciesRequest) GetTeamId() string {
if x != nil {
- return x.PolicyMap
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *ListAttachedNodeGroupPoliciesResponse) GetNodeGroupMap() map[string]*NodeGroupItem {
+func (x *GetAttachedNodeGroupPoliciesRequest) GetClusterId() string {
if x != nil {
- return x.NodeGroupMap
+ return x.ClusterId
}
- return nil
+ return ""
}
-// NodeGroupItem represents a node group and its policy attachments.
-type NodeGroupItem struct {
+func (x *GetAttachedNodeGroupPoliciesRequest) GetNodeGroupName() string {
+ if x != nil {
+ return x.NodeGroupName
+ }
+ return ""
+}
+
+type GetAttachedNodeGroupPoliciesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name of the node group.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Cluster ID where the node group exists.
- PolicyIds []string `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // List of policy IDs attached to this node group.
+ Policies []*NodeGroupRecommendationPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *NodeGroupItem) Reset() {
- *x = NodeGroupItem{}
+func (x *GetAttachedNodeGroupPoliciesResponse) Reset() {
+ *x = GetAttachedNodeGroupPoliciesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[168]
+ mi := &file_api_v1_recommendation_proto_msgTypes[182]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeGroupItem) String() string {
+func (x *GetAttachedNodeGroupPoliciesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeGroupItem) ProtoMessage() {}
+func (*GetAttachedNodeGroupPoliciesResponse) ProtoMessage() {}
-func (x *NodeGroupItem) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[168]
+func (x *GetAttachedNodeGroupPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[182]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14628,60 +17760,47 @@ func (x *NodeGroupItem) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeGroupItem.ProtoReflect.Descriptor instead.
-func (*NodeGroupItem) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{168}
-}
-
-func (x *NodeGroupItem) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *NodeGroupItem) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
+// Deprecated: Use GetAttachedNodeGroupPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*GetAttachedNodeGroupPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{182}
}
-func (x *NodeGroupItem) GetPolicyIds() []string {
+func (x *GetAttachedNodeGroupPoliciesResponse) GetPolicies() []*NodeGroupRecommendationPolicy {
if x != nil {
- return x.PolicyIds
+ return x.Policies
}
return nil
}
-type RecommendationAppliedRequest struct {
+type GetAttachedWorkloadPoliciesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- RecommendationId string `protobuf:"bytes,11,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
- Kind *K8SObjectKind `protobuf:"varint,12,opt,name=kind,proto3,enum=api.v1.K8SObjectKind,oneof" json:"kind,omitempty"` // if set, means its workload
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ WorkloadUid string `protobuf:"bytes,3,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
+ Kind K8SObjectKind `protobuf:"varint,4,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"` // The kind of workload
+ IncludeDeleted bool `protobuf:"varint,11,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
}
-func (x *RecommendationAppliedRequest) Reset() {
- *x = RecommendationAppliedRequest{}
+func (x *GetAttachedWorkloadPoliciesRequest) Reset() {
+ *x = GetAttachedWorkloadPoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[169]
+ mi := &file_api_v1_recommendation_proto_msgTypes[183]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RecommendationAppliedRequest) String() string {
+func (x *GetAttachedWorkloadPoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RecommendationAppliedRequest) ProtoMessage() {}
+func (*GetAttachedWorkloadPoliciesRequest) ProtoMessage() {}
-func (x *RecommendationAppliedRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[169]
+func (x *GetAttachedWorkloadPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[183]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14692,62 +17811,72 @@ func (x *RecommendationAppliedRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RecommendationAppliedRequest.ProtoReflect.Descriptor instead.
-func (*RecommendationAppliedRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{169}
+// Deprecated: Use GetAttachedWorkloadPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*GetAttachedWorkloadPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{183}
}
-func (x *RecommendationAppliedRequest) GetTeamId() string {
+func (x *GetAttachedWorkloadPoliciesRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *RecommendationAppliedRequest) GetClusterId() string {
+func (x *GetAttachedWorkloadPoliciesRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *RecommendationAppliedRequest) GetRecommendationId() string {
+func (x *GetAttachedWorkloadPoliciesRequest) GetWorkloadUid() string {
if x != nil {
- return x.RecommendationId
+ return x.WorkloadUid
}
return ""
}
-func (x *RecommendationAppliedRequest) GetKind() K8SObjectKind {
- if x != nil && x.Kind != nil {
- return *x.Kind
+func (x *GetAttachedWorkloadPoliciesRequest) GetKind() K8SObjectKind {
+ if x != nil {
+ return x.Kind
}
return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
}
-type RecommendationAppliedResponse struct {
+func (x *GetAttachedWorkloadPoliciesRequest) GetIncludeDeleted() bool {
+ if x != nil {
+ return x.IncludeDeleted
+ }
+ return false
+}
+
+type GetAttachedWorkloadPoliciesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ RelevantPolicies *WorkloadRecommendationPolicyGroup `protobuf:"bytes,1,opt,name=relevant_policies,json=relevantPolicies,proto3" json:"relevant_policies,omitempty"`
+ PolicyIdToMatchedTargets map[string]*WorkloadPolicyTargetGroup `protobuf:"bytes,2,rep,name=policy_id_to_matched_targets,json=policyIdToMatchedTargets,proto3" json:"policy_id_to_matched_targets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
-func (x *RecommendationAppliedResponse) Reset() {
- *x = RecommendationAppliedResponse{}
+func (x *GetAttachedWorkloadPoliciesResponse) Reset() {
+ *x = GetAttachedWorkloadPoliciesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[170]
+ mi := &file_api_v1_recommendation_proto_msgTypes[184]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RecommendationAppliedResponse) String() string {
+func (x *GetAttachedWorkloadPoliciesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RecommendationAppliedResponse) ProtoMessage() {}
+func (*GetAttachedWorkloadPoliciesResponse) ProtoMessage() {}
-func (x *RecommendationAppliedResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[170]
+func (x *GetAttachedWorkloadPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[184]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14758,44 +17887,50 @@ func (x *RecommendationAppliedResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RecommendationAppliedResponse.ProtoReflect.Descriptor instead.
-func (*RecommendationAppliedResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{170}
+// Deprecated: Use GetAttachedWorkloadPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*GetAttachedWorkloadPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{184}
}
-type ApplyRecommendationRequest struct {
+func (x *GetAttachedWorkloadPoliciesResponse) GetRelevantPolicies() *WorkloadRecommendationPolicyGroup {
+ if x != nil {
+ return x.RelevantPolicies
+ }
+ return nil
+}
+
+func (x *GetAttachedWorkloadPoliciesResponse) GetPolicyIdToMatchedTargets() map[string]*WorkloadPolicyTargetGroup {
+ if x != nil {
+ return x.PolicyIdToMatchedTargets
+ }
+ return nil
+}
+
+type WorkloadRecommendationPolicyGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- RecommendationId string `protobuf:"bytes,11,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
- Kind *K8SObjectKind `protobuf:"varint,12,opt,name=kind,proto3,enum=api.v1.K8SObjectKind,oneof" json:"kind,omitempty"` // if set, means its workload
- // If true, generate a WorkloadRule instead of applying the recommendation directly.
- // This is used when the policy has EnableInClusterMpa enabled, allowing the in-cluster
- // MPA controller to evaluate the rule and generate recommendations locally.
- GenerateRule bool `protobuf:"varint,13,opt,name=generate_rule,json=generateRule,proto3" json:"generate_rule,omitempty"`
- WorkloadRecommendation *WorkloadRecommendation `protobuf:"bytes,14,opt,name=workload_recommendation,json=workloadRecommendation,proto3,oneof" json:"workload_recommendation,omitempty"`
+ Policies []*WorkloadRecommendationPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *ApplyRecommendationRequest) Reset() {
- *x = ApplyRecommendationRequest{}
+func (x *WorkloadRecommendationPolicyGroup) Reset() {
+ *x = WorkloadRecommendationPolicyGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[171]
+ mi := &file_api_v1_recommendation_proto_msgTypes[185]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ApplyRecommendationRequest) String() string {
+func (x *WorkloadRecommendationPolicyGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ApplyRecommendationRequest) ProtoMessage() {}
+func (*WorkloadRecommendationPolicyGroup) ProtoMessage() {}
-func (x *ApplyRecommendationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[171]
+func (x *WorkloadRecommendationPolicyGroup) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[185]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14806,76 +17941,43 @@ func (x *ApplyRecommendationRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ApplyRecommendationRequest.ProtoReflect.Descriptor instead.
-func (*ApplyRecommendationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{171}
-}
-
-func (x *ApplyRecommendationRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *ApplyRecommendationRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *ApplyRecommendationRequest) GetRecommendationId() string {
- if x != nil {
- return x.RecommendationId
- }
- return ""
-}
-
-func (x *ApplyRecommendationRequest) GetKind() K8SObjectKind {
- if x != nil && x.Kind != nil {
- return *x.Kind
- }
- return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
-}
-
-func (x *ApplyRecommendationRequest) GetGenerateRule() bool {
- if x != nil {
- return x.GenerateRule
- }
- return false
+// Deprecated: Use WorkloadRecommendationPolicyGroup.ProtoReflect.Descriptor instead.
+func (*WorkloadRecommendationPolicyGroup) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{185}
}
-func (x *ApplyRecommendationRequest) GetWorkloadRecommendation() *WorkloadRecommendation {
+func (x *WorkloadRecommendationPolicyGroup) GetPolicies() []*WorkloadRecommendationPolicy {
if x != nil {
- return x.WorkloadRecommendation
+ return x.Policies
}
return nil
}
-type ApplyRecommendationResponse struct {
+type WorkloadPolicyTargetGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Targets []*WorkloadPolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *ApplyRecommendationResponse) Reset() {
- *x = ApplyRecommendationResponse{}
+func (x *WorkloadPolicyTargetGroup) Reset() {
+ *x = WorkloadPolicyTargetGroup{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[172]
+ mi := &file_api_v1_recommendation_proto_msgTypes[186]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ApplyRecommendationResponse) String() string {
+func (x *WorkloadPolicyTargetGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ApplyRecommendationResponse) ProtoMessage() {}
+func (*WorkloadPolicyTargetGroup) ProtoMessage() {}
-func (x *ApplyRecommendationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[172]
+func (x *WorkloadPolicyTargetGroup) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[186]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14886,34 +17988,43 @@ func (x *ApplyRecommendationResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ApplyRecommendationResponse.ProtoReflect.Descriptor instead.
-func (*ApplyRecommendationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{172}
+// Deprecated: Use WorkloadPolicyTargetGroup.ProtoReflect.Descriptor instead.
+func (*WorkloadPolicyTargetGroup) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{186}
}
-type RecommendationEventsRequest struct {
+func (x *WorkloadPolicyTargetGroup) GetTargets() []*WorkloadPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type WorkloadIdentifiers struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Workloads []*WorkloadIdentifier `protobuf:"bytes,1,rep,name=workloads,proto3" json:"workloads,omitempty"`
}
-func (x *RecommendationEventsRequest) Reset() {
- *x = RecommendationEventsRequest{}
+func (x *WorkloadIdentifiers) Reset() {
+ *x = WorkloadIdentifiers{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[173]
+ mi := &file_api_v1_recommendation_proto_msgTypes[187]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RecommendationEventsRequest) String() string {
+func (x *WorkloadIdentifiers) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RecommendationEventsRequest) ProtoMessage() {}
+func (*WorkloadIdentifiers) ProtoMessage() {}
-func (x *RecommendationEventsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[173]
+func (x *WorkloadIdentifiers) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[187]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14924,36 +18035,44 @@ func (x *RecommendationEventsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RecommendationEventsRequest.ProtoReflect.Descriptor instead.
-func (*RecommendationEventsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{173}
+// Deprecated: Use WorkloadIdentifiers.ProtoReflect.Descriptor instead.
+func (*WorkloadIdentifiers) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{187}
}
-type RecommendationEventsResponse struct {
+func (x *WorkloadIdentifiers) GetWorkloads() []*WorkloadIdentifier {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+type WorkloadPolicies struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Events []string `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ Workload *WorkloadIdentifier `protobuf:"bytes,1,opt,name=workload,proto3" json:"workload,omitempty"`
+ Policies []*WorkloadRecommendationPolicy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *RecommendationEventsResponse) Reset() {
- *x = RecommendationEventsResponse{}
+func (x *WorkloadPolicies) Reset() {
+ *x = WorkloadPolicies{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[174]
+ mi := &file_api_v1_recommendation_proto_msgTypes[188]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RecommendationEventsResponse) String() string {
+func (x *WorkloadPolicies) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RecommendationEventsResponse) ProtoMessage() {}
+func (*WorkloadPolicies) ProtoMessage() {}
-func (x *RecommendationEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[174]
+func (x *WorkloadPolicies) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[188]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -14964,51 +18083,55 @@ func (x *RecommendationEventsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RecommendationEventsResponse.ProtoReflect.Descriptor instead.
-func (*RecommendationEventsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{174}
+// Deprecated: Use WorkloadPolicies.ProtoReflect.Descriptor instead.
+func (*WorkloadPolicies) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{188}
}
-func (x *RecommendationEventsResponse) GetEvents() []string {
+func (x *WorkloadPolicies) GetWorkload() *WorkloadIdentifier {
if x != nil {
- return x.Events
+ return x.Workload
}
return nil
}
-// RetrieveSavingsForWorkloadRequest is used to fetch autoscaling impact information for workloads in a cluster.
-type RetrieveSavingsForWorkloadRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
- Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"` // Kind of the workload (e.g., Deployment, StatefulSet).
- Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"` // Unique identifier for the workload.
- StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
- EndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
- IncludeDeleted bool `protobuf:"varint,11,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
- IncludeGetWorkloadResp bool `protobuf:"varint,12,opt,name=include_get_workload_resp,json=includeGetWorkloadResp,proto3" json:"include_get_workload_resp,omitempty"`
+func (x *WorkloadPolicies) GetPolicies() []*WorkloadRecommendationPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
}
-func (x *RetrieveSavingsForWorkloadRequest) Reset() {
- *x = RetrieveSavingsForWorkloadRequest{}
+// ListAttachedWorkloadPoliciesRequest is used to fetch all attached workload policies and workloads for a team.
+// All parameters except team_id are optional filters.
+type ListAttachedWorkloadPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Optional list of cluster IDs to filter by specific clusters.
+ PolicyIds []string `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // Optional list of policy IDs to filter by specific policies.
+ WorkloadUids []string `protobuf:"bytes,4,rep,name=workload_uids,json=workloadUids,proto3" json:"workload_uids,omitempty"` // Optional list of workload UIDs to filter by specific workloads.
+}
+
+func (x *ListAttachedWorkloadPoliciesRequest) Reset() {
+ *x = ListAttachedWorkloadPoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[175]
+ mi := &file_api_v1_recommendation_proto_msgTypes[189]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RetrieveSavingsForWorkloadRequest) String() string {
+func (x *ListAttachedWorkloadPoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RetrieveSavingsForWorkloadRequest) ProtoMessage() {}
+func (*ListAttachedWorkloadPoliciesRequest) ProtoMessage() {}
-func (x *RetrieveSavingsForWorkloadRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[175]
+func (x *ListAttachedWorkloadPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[189]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15019,93 +18142,125 @@ func (x *RetrieveSavingsForWorkloadRequest) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use RetrieveSavingsForWorkloadRequest.ProtoReflect.Descriptor instead.
-func (*RetrieveSavingsForWorkloadRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{175}
+// Deprecated: Use ListAttachedWorkloadPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListAttachedWorkloadPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{189}
}
-func (x *RetrieveSavingsForWorkloadRequest) GetTeamId() string {
+func (x *ListAttachedWorkloadPoliciesRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *RetrieveSavingsForWorkloadRequest) GetClusterId() string {
+func (x *ListAttachedWorkloadPoliciesRequest) GetClusterIds() []string {
if x != nil {
- return x.ClusterId
+ return x.ClusterIds
}
- return ""
+ return nil
}
-func (x *RetrieveSavingsForWorkloadRequest) GetKind() string {
+func (x *ListAttachedWorkloadPoliciesRequest) GetPolicyIds() []string {
if x != nil {
- return x.Kind
+ return x.PolicyIds
}
- return ""
+ return nil
}
-func (x *RetrieveSavingsForWorkloadRequest) GetUid() string {
+func (x *ListAttachedWorkloadPoliciesRequest) GetWorkloadUids() []string {
if x != nil {
- return x.Uid
+ return x.WorkloadUids
}
- return ""
+ return nil
}
-func (x *RetrieveSavingsForWorkloadRequest) GetStartTime() *timestamppb.Timestamp {
- if x != nil {
- return x.StartTime
+// ListAttachedWorkloadPoliciesResponse contains all attached policies and workloads with their relationships.
+type ListAttachedWorkloadPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PolicyMap map[string]*WorkloadRecommendationPolicy `protobuf:"bytes,1,rep,name=policy_map,json=policyMap,proto3" json:"policy_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of policy ID to WorkloadRecommendationPolicy
+ WorkloadMap map[string]*WorkloadItem `protobuf:"bytes,2,rep,name=workload_map,json=workloadMap,proto3" json:"workload_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of workload UID to WorkloadItem
+}
+
+func (x *ListAttachedWorkloadPoliciesResponse) Reset() {
+ *x = ListAttachedWorkloadPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[190]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *RetrieveSavingsForWorkloadRequest) GetEndTime() *timestamppb.Timestamp {
- if x != nil {
- return x.EndTime
+func (x *ListAttachedWorkloadPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListAttachedWorkloadPoliciesResponse) ProtoMessage() {}
+
+func (x *ListAttachedWorkloadPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[190]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *RetrieveSavingsForWorkloadRequest) GetIncludeDeleted() bool {
+// Deprecated: Use ListAttachedWorkloadPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListAttachedWorkloadPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{190}
+}
+
+func (x *ListAttachedWorkloadPoliciesResponse) GetPolicyMap() map[string]*WorkloadRecommendationPolicy {
if x != nil {
- return x.IncludeDeleted
+ return x.PolicyMap
}
- return false
+ return nil
}
-func (x *RetrieveSavingsForWorkloadRequest) GetIncludeGetWorkloadResp() bool {
+func (x *ListAttachedWorkloadPoliciesResponse) GetWorkloadMap() map[string]*WorkloadItem {
if x != nil {
- return x.IncludeGetWorkloadResp
+ return x.WorkloadMap
}
- return false
+ return nil
}
-type RetrieveSavingsForWorkloadResponse struct {
+// ListAttachedNodeGroupPoliciesRequest is used to fetch all attached node group policies and node groups for a team.
+// All parameters except team_id are optional filters.
+type ListAttachedNodeGroupPoliciesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Savings *SavingsTimeSeries `protobuf:"bytes,1,opt,name=savings,proto3" json:"savings,omitempty"`
- GetWorkloadResp *GetWorkloadResponse `protobuf:"bytes,11,opt,name=get_workload_resp,json=getWorkloadResp,proto3,oneof" json:"get_workload_resp,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Optional list of cluster IDs to filter by specific clusters.
+ PolicyIds []string `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // Optional list of policy IDs to filter by specific policies.
+ NodeGroupNames []string `protobuf:"bytes,4,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"` // Optional list of node group names to filter by specific node groups.
}
-func (x *RetrieveSavingsForWorkloadResponse) Reset() {
- *x = RetrieveSavingsForWorkloadResponse{}
+func (x *ListAttachedNodeGroupPoliciesRequest) Reset() {
+ *x = ListAttachedNodeGroupPoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[176]
+ mi := &file_api_v1_recommendation_proto_msgTypes[191]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RetrieveSavingsForWorkloadResponse) String() string {
+func (x *ListAttachedNodeGroupPoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RetrieveSavingsForWorkloadResponse) ProtoMessage() {}
+func (*ListAttachedNodeGroupPoliciesRequest) ProtoMessage() {}
-func (x *RetrieveSavingsForWorkloadResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[176]
+func (x *ListAttachedNodeGroupPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[191]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15116,51 +18271,66 @@ func (x *RetrieveSavingsForWorkloadResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use RetrieveSavingsForWorkloadResponse.ProtoReflect.Descriptor instead.
-func (*RetrieveSavingsForWorkloadResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{176}
+// Deprecated: Use ListAttachedNodeGroupPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListAttachedNodeGroupPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{191}
}
-func (x *RetrieveSavingsForWorkloadResponse) GetSavings() *SavingsTimeSeries {
+func (x *ListAttachedNodeGroupPoliciesRequest) GetTeamId() string {
if x != nil {
- return x.Savings
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListAttachedNodeGroupPoliciesRequest) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
}
return nil
}
-func (x *RetrieveSavingsForWorkloadResponse) GetGetWorkloadResp() *GetWorkloadResponse {
+func (x *ListAttachedNodeGroupPoliciesRequest) GetPolicyIds() []string {
if x != nil {
- return x.GetWorkloadResp
+ return x.PolicyIds
}
return nil
}
-type CreateNodePoliciesRequest struct {
+func (x *ListAttachedNodeGroupPoliciesRequest) GetNodeGroupNames() []string {
+ if x != nil {
+ return x.NodeGroupNames
+ }
+ return nil
+}
+
+// ListAttachedNodeGroupPoliciesResponse contains all attached policies and node groups with their relationships.
+type ListAttachedNodeGroupPoliciesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Policies []*NodePolicy `protobuf:"bytes,11,rep,name=policies,proto3" json:"policies,omitempty"`
+ PolicyMap map[string]*NodeGroupRecommendationPolicy `protobuf:"bytes,1,rep,name=policy_map,json=policyMap,proto3" json:"policy_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of policy ID to NodeGroupRecommendationPolicy
+ NodeGroupMap map[string]*NodeGroupItem `protobuf:"bytes,2,rep,name=node_group_map,json=nodeGroupMap,proto3" json:"node_group_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of node group name to NodeGroupItem
}
-func (x *CreateNodePoliciesRequest) Reset() {
- *x = CreateNodePoliciesRequest{}
+func (x *ListAttachedNodeGroupPoliciesResponse) Reset() {
+ *x = ListAttachedNodeGroupPoliciesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[177]
+ mi := &file_api_v1_recommendation_proto_msgTypes[192]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateNodePoliciesRequest) String() string {
+func (x *ListAttachedNodeGroupPoliciesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateNodePoliciesRequest) ProtoMessage() {}
+func (*ListAttachedNodeGroupPoliciesResponse) ProtoMessage() {}
-func (x *CreateNodePoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[177]
+func (x *ListAttachedNodeGroupPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[192]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15171,50 +18341,53 @@ func (x *CreateNodePoliciesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CreateNodePoliciesRequest.ProtoReflect.Descriptor instead.
-func (*CreateNodePoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{177}
+// Deprecated: Use ListAttachedNodeGroupPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListAttachedNodeGroupPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{192}
}
-func (x *CreateNodePoliciesRequest) GetTeamId() string {
+func (x *ListAttachedNodeGroupPoliciesResponse) GetPolicyMap() map[string]*NodeGroupRecommendationPolicy {
if x != nil {
- return x.TeamId
+ return x.PolicyMap
}
- return ""
+ return nil
}
-func (x *CreateNodePoliciesRequest) GetPolicies() []*NodePolicy {
+func (x *ListAttachedNodeGroupPoliciesResponse) GetNodeGroupMap() map[string]*NodeGroupItem {
if x != nil {
- return x.Policies
+ return x.NodeGroupMap
}
return nil
}
-type CreateNodePoliciesResponse struct {
+// NodeGroupItem represents a node group and its policy attachments.
+type NodeGroupItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name of the node group.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Cluster ID where the node group exists.
+ PolicyIds []string `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // List of policy IDs attached to this node group.
}
-func (x *CreateNodePoliciesResponse) Reset() {
- *x = CreateNodePoliciesResponse{}
+func (x *NodeGroupItem) Reset() {
+ *x = NodeGroupItem{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[178]
+ mi := &file_api_v1_recommendation_proto_msgTypes[193]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateNodePoliciesResponse) String() string {
+func (x *NodeGroupItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateNodePoliciesResponse) ProtoMessage() {}
+func (*NodeGroupItem) ProtoMessage() {}
-func (x *CreateNodePoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[178]
+func (x *NodeGroupItem) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[193]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15225,44 +18398,60 @@ func (x *CreateNodePoliciesResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CreateNodePoliciesResponse.ProtoReflect.Descriptor instead.
-func (*CreateNodePoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{178}
+// Deprecated: Use NodeGroupItem.ProtoReflect.Descriptor instead.
+func (*NodeGroupItem) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{193}
}
-func (x *CreateNodePoliciesResponse) GetPolicies() []*NodePolicy {
+func (x *NodeGroupItem) GetName() string {
if x != nil {
- return x.Policies
+ return x.Name
+ }
+ return ""
+}
+
+func (x *NodeGroupItem) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *NodeGroupItem) GetPolicyIds() []string {
+ if x != nil {
+ return x.PolicyIds
}
return nil
}
-type SuggestedNodePolicyRequest struct {
+type RecommendationAppliedRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ RecommendationId string `protobuf:"bytes,11,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
+ Kind *K8SObjectKind `protobuf:"varint,12,opt,name=kind,proto3,enum=api.v1.K8SObjectKind,oneof" json:"kind,omitempty"` // if set, means its workload
}
-func (x *SuggestedNodePolicyRequest) Reset() {
- *x = SuggestedNodePolicyRequest{}
+func (x *RecommendationAppliedRequest) Reset() {
+ *x = RecommendationAppliedRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[179]
+ mi := &file_api_v1_recommendation_proto_msgTypes[194]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SuggestedNodePolicyRequest) String() string {
+func (x *RecommendationAppliedRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SuggestedNodePolicyRequest) ProtoMessage() {}
+func (*RecommendationAppliedRequest) ProtoMessage() {}
-func (x *SuggestedNodePolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[179]
+func (x *RecommendationAppliedRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[194]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15273,50 +18462,62 @@ func (x *SuggestedNodePolicyRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SuggestedNodePolicyRequest.ProtoReflect.Descriptor instead.
-func (*SuggestedNodePolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{179}
+// Deprecated: Use RecommendationAppliedRequest.ProtoReflect.Descriptor instead.
+func (*RecommendationAppliedRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{194}
}
-func (x *SuggestedNodePolicyRequest) GetTeamId() string {
+func (x *RecommendationAppliedRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *SuggestedNodePolicyRequest) GetClusterId() string {
+func (x *RecommendationAppliedRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-type SuggestedNodePolicyResponse struct {
+func (x *RecommendationAppliedRequest) GetRecommendationId() string {
+ if x != nil {
+ return x.RecommendationId
+ }
+ return ""
+}
+
+func (x *RecommendationAppliedRequest) GetKind() K8SObjectKind {
+ if x != nil && x.Kind != nil {
+ return *x.Kind
+ }
+ return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
+}
+
+type RecommendationAppliedResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
-
- Policy *NodePolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *SuggestedNodePolicyResponse) Reset() {
- *x = SuggestedNodePolicyResponse{}
+func (x *RecommendationAppliedResponse) Reset() {
+ *x = RecommendationAppliedResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[180]
+ mi := &file_api_v1_recommendation_proto_msgTypes[195]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SuggestedNodePolicyResponse) String() string {
+func (x *RecommendationAppliedResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SuggestedNodePolicyResponse) ProtoMessage() {}
+func (*RecommendationAppliedResponse) ProtoMessage() {}
-func (x *SuggestedNodePolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[180]
+func (x *RecommendationAppliedResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[195]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15327,47 +18528,44 @@ func (x *SuggestedNodePolicyResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SuggestedNodePolicyResponse.ProtoReflect.Descriptor instead.
-func (*SuggestedNodePolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{180}
-}
-
-func (x *SuggestedNodePolicyResponse) GetPolicy() *NodePolicy {
- if x != nil {
- return x.Policy
- }
- return nil
+// Deprecated: Use RecommendationAppliedResponse.ProtoReflect.Descriptor instead.
+func (*RecommendationAppliedResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{195}
}
-type GenerateNodePoliciesFromKarpenterRequest struct {
+type ApplyRecommendationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- // When true, the generated policies will be saved to the database
- // and node policy targets will be created for each policy (with enabled=false).
- PersistPolicies bool `protobuf:"varint,3,opt,name=persist_policies,json=persistPolicies,proto3" json:"persist_policies,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ RecommendationId string `protobuf:"bytes,11,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
+ Kind *K8SObjectKind `protobuf:"varint,12,opt,name=kind,proto3,enum=api.v1.K8SObjectKind,oneof" json:"kind,omitempty"` // if set, means its workload
+ // If true, generate a WorkloadRule instead of applying the recommendation directly.
+ // This is used when the policy has EnableInClusterMpa enabled, allowing the in-cluster
+ // MPA controller to evaluate the rule and generate recommendations locally.
+ GenerateRule bool `protobuf:"varint,13,opt,name=generate_rule,json=generateRule,proto3" json:"generate_rule,omitempty"`
+ WorkloadRecommendation *WorkloadRecommendation `protobuf:"bytes,14,opt,name=workload_recommendation,json=workloadRecommendation,proto3,oneof" json:"workload_recommendation,omitempty"`
}
-func (x *GenerateNodePoliciesFromKarpenterRequest) Reset() {
- *x = GenerateNodePoliciesFromKarpenterRequest{}
+func (x *ApplyRecommendationRequest) Reset() {
+ *x = ApplyRecommendationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[181]
+ mi := &file_api_v1_recommendation_proto_msgTypes[196]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GenerateNodePoliciesFromKarpenterRequest) String() string {
+func (x *ApplyRecommendationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GenerateNodePoliciesFromKarpenterRequest) ProtoMessage() {}
+func (*ApplyRecommendationRequest) ProtoMessage() {}
-func (x *GenerateNodePoliciesFromKarpenterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[181]
+func (x *ApplyRecommendationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[196]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15378,59 +18576,76 @@ func (x *GenerateNodePoliciesFromKarpenterRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use GenerateNodePoliciesFromKarpenterRequest.ProtoReflect.Descriptor instead.
-func (*GenerateNodePoliciesFromKarpenterRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{181}
+// Deprecated: Use ApplyRecommendationRequest.ProtoReflect.Descriptor instead.
+func (*ApplyRecommendationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{196}
}
-func (x *GenerateNodePoliciesFromKarpenterRequest) GetTeamId() string {
+func (x *ApplyRecommendationRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GenerateNodePoliciesFromKarpenterRequest) GetClusterId() string {
+func (x *ApplyRecommendationRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *GenerateNodePoliciesFromKarpenterRequest) GetPersistPolicies() bool {
+func (x *ApplyRecommendationRequest) GetRecommendationId() string {
if x != nil {
- return x.PersistPolicies
+ return x.RecommendationId
+ }
+ return ""
+}
+
+func (x *ApplyRecommendationRequest) GetKind() K8SObjectKind {
+ if x != nil && x.Kind != nil {
+ return *x.Kind
+ }
+ return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
+}
+
+func (x *ApplyRecommendationRequest) GetGenerateRule() bool {
+ if x != nil {
+ return x.GenerateRule
}
return false
}
-type GenerateNodePoliciesFromKarpenterResponse struct {
+func (x *ApplyRecommendationRequest) GetWorkloadRecommendation() *WorkloadRecommendation {
+ if x != nil {
+ return x.WorkloadRecommendation
+ }
+ return nil
+}
+
+type ApplyRecommendationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
-
- Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
- // Targets created when persist_policies is true
- Targets []*NodePolicyTarget `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *GenerateNodePoliciesFromKarpenterResponse) Reset() {
- *x = GenerateNodePoliciesFromKarpenterResponse{}
+func (x *ApplyRecommendationResponse) Reset() {
+ *x = ApplyRecommendationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[182]
+ mi := &file_api_v1_recommendation_proto_msgTypes[197]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GenerateNodePoliciesFromKarpenterResponse) String() string {
+func (x *ApplyRecommendationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GenerateNodePoliciesFromKarpenterResponse) ProtoMessage() {}
+func (*ApplyRecommendationResponse) ProtoMessage() {}
-func (x *GenerateNodePoliciesFromKarpenterResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[182]
+func (x *ApplyRecommendationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[197]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15441,54 +18656,34 @@ func (x *GenerateNodePoliciesFromKarpenterResponse) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use GenerateNodePoliciesFromKarpenterResponse.ProtoReflect.Descriptor instead.
-func (*GenerateNodePoliciesFromKarpenterResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{182}
-}
-
-func (x *GenerateNodePoliciesFromKarpenterResponse) GetPolicies() []*NodePolicy {
- if x != nil {
- return x.Policies
- }
- return nil
-}
-
-func (x *GenerateNodePoliciesFromKarpenterResponse) GetTargets() []*NodePolicyTarget {
- if x != nil {
- return x.Targets
- }
- return nil
+// Deprecated: Use ApplyRecommendationResponse.ProtoReflect.Descriptor instead.
+func (*ApplyRecommendationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{197}
}
-type GenerateNodePoliciesFromNodeGroupsRequest struct {
+type RecommendationEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- // When true, the generated policies will be saved to the database
- // and node policy targets will be created for each policy (with enabled=false).
- PersistPolicies bool `protobuf:"varint,3,opt,name=persist_policies,json=persistPolicies,proto3" json:"persist_policies,omitempty"`
}
-func (x *GenerateNodePoliciesFromNodeGroupsRequest) Reset() {
- *x = GenerateNodePoliciesFromNodeGroupsRequest{}
+func (x *RecommendationEventsRequest) Reset() {
+ *x = RecommendationEventsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[183]
+ mi := &file_api_v1_recommendation_proto_msgTypes[198]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GenerateNodePoliciesFromNodeGroupsRequest) String() string {
+func (x *RecommendationEventsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GenerateNodePoliciesFromNodeGroupsRequest) ProtoMessage() {}
+func (*RecommendationEventsRequest) ProtoMessage() {}
-func (x *GenerateNodePoliciesFromNodeGroupsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[183]
+func (x *RecommendationEventsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[198]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15499,65 +18694,36 @@ func (x *GenerateNodePoliciesFromNodeGroupsRequest) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use GenerateNodePoliciesFromNodeGroupsRequest.ProtoReflect.Descriptor instead.
-func (*GenerateNodePoliciesFromNodeGroupsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{183}
-}
-
-func (x *GenerateNodePoliciesFromNodeGroupsRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *GenerateNodePoliciesFromNodeGroupsRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *GenerateNodePoliciesFromNodeGroupsRequest) GetPersistPolicies() bool {
- if x != nil {
- return x.PersistPolicies
- }
- return false
+// Deprecated: Use RecommendationEventsRequest.ProtoReflect.Descriptor instead.
+func (*RecommendationEventsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{198}
}
-type GenerateNodePoliciesFromNodeGroupsResponse struct {
+type RecommendationEventsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
- Targets []*NodePolicyTarget `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"`
- Warnings []*WorkloadCompatibilityWarning `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"`
- // eligibility carries per-node-group "may this be migrated?" information
- // computed from the current node observations. The wizard reads this to
- // disable Step 3 rows for groups the operator must NOT migrate, with a
- // tooltip explaining why. Always parallel-keyed by group name (matches
- // NodePolicy.name). Empty when every group is migratable.
- Eligibility []*NodeGroupMigrationEligibility `protobuf:"bytes,4,rep,name=eligibility,proto3" json:"eligibility,omitempty"`
+ Events []string `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
}
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) Reset() {
- *x = GenerateNodePoliciesFromNodeGroupsResponse{}
+func (x *RecommendationEventsResponse) Reset() {
+ *x = RecommendationEventsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[184]
+ mi := &file_api_v1_recommendation_proto_msgTypes[199]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) String() string {
+func (x *RecommendationEventsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GenerateNodePoliciesFromNodeGroupsResponse) ProtoMessage() {}
+func (*RecommendationEventsResponse) ProtoMessage() {}
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[184]
+func (x *RecommendationEventsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[199]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15568,114 +18734,51 @@ func (x *GenerateNodePoliciesFromNodeGroupsResponse) ProtoReflect() protoreflect
return mi.MessageOf(x)
}
-// Deprecated: Use GenerateNodePoliciesFromNodeGroupsResponse.ProtoReflect.Descriptor instead.
-func (*GenerateNodePoliciesFromNodeGroupsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{184}
-}
-
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetPolicies() []*NodePolicy {
- if x != nil {
- return x.Policies
- }
- return nil
-}
-
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetTargets() []*NodePolicyTarget {
- if x != nil {
- return x.Targets
- }
- return nil
-}
-
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetWarnings() []*WorkloadCompatibilityWarning {
- if x != nil {
- return x.Warnings
- }
- return nil
+// Deprecated: Use RecommendationEventsResponse.ProtoReflect.Descriptor instead.
+func (*RecommendationEventsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{199}
}
-func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetEligibility() []*NodeGroupMigrationEligibility {
+func (x *RecommendationEventsResponse) GetEvents() []string {
if x != nil {
- return x.Eligibility
+ return x.Events
}
return nil
}
-// NodeGroupMigrationEligibility flags a node group as not-safe-to-migrate
-// for the CAS-migration wizard. Eligibility is preview-time only — it
-// describes the *current* state of the source pool, not a property of the
-// generated NodePolicy, so it's surfaced alongside the policies rather
-// than embedded in NodePolicy itself.
-type NodeGroupMigrationEligibility struct {
+// RetrieveSavingsForWorkloadRequest is used to fetch autoscaling impact information for workloads in a cluster.
+type RetrieveSavingsForWorkloadRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // group_name matches NodePolicy.name (the source node group's name).
- GroupName string `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
- // migratable=false means the wizard MUST disable this row in Step 3
- // (BLOCKING reason present). True (or absent) means safe-to-migrate;
- // an ADVISORY reason may still be present, in which case the wizard
- // should show a non-blocking yellow caveat next to the row.
- Migratable bool `protobuf:"varint,2,opt,name=migratable,proto3" json:"migratable,omitempty"`
- // reasons documents why migration is blocked OR carries caveats.
- // Stable identifier strings the wizard maps to human-readable messages.
- //
- // Blocking reasons (force migratable=false; row is disabled):
- //
- // "system_pool" — AKS pool with kubernetes.azure.com/mode=system
- // or GKE pool with cloud.google.com/gke-system-only=true
- // or the GKE system-only taint
- // (CriticalAddonsOnly=true:NoSchedule). AKS
- // requires ≥1 System pool to keep kube-system
- // schedulable; draining the last one bricks
- // the control plane.
- // "karpenter_ops_pool" — pool labelled devzero.io/karpenter-ops-pool=true
- // by dz-installer (setup-azure.sh /
- // setup-gcp.sh). Migrating the pool that runs
- // karpenter itself is a chicken-and-egg —
- // karpenter would have to drain itself.
- // "azure_sku_restricted" — source pool runs an AKS-restricted VM size
- // (Basic A-series, B1s/B1ms, F1/F1s,
- // A0/A1/A1_v2). kp-azure refuses to provision
- // these. No workaround at the policy layer.
- // "azure_sku_confidential" — source pool runs a Confidential Compute
- // SKU (DC* / EC*). kp-azure's isConfidential
- // predicate excludes these.
- //
- // Advisory reasons (migratable stays true; show as caveat):
- //
- // "azure_sku_nvme_under_cig" — source pool's SKU is NVMe-only
- // (Standard_D*ads_v6 / D*alds_v6 / E*ads_v6 etc).
- // kp-azure's default CIG image source isn't
- // NVMe-tagged, so the controller filters these
- // SKUs out of its catalog. Migration still
- // works because the generated NodePool only
- // requires sku-family (instance-category) —
- // karpenter picks a compatible non-NVMe SKU
- // from the same family. Operator should know
- // the launched nodes won't exactly match the
- // source pool.
- Reasons []string `protobuf:"bytes,3,rep,name=reasons,proto3" json:"reasons,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Unique identifier for the cluster.
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"` // Kind of the workload (e.g., Deployment, StatefulSet).
+ Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"` // Unique identifier for the workload.
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+ EndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
+ IncludeDeleted bool `protobuf:"varint,11,opt,name=include_deleted,json=includeDeleted,proto3" json:"include_deleted,omitempty"`
+ IncludeGetWorkloadResp bool `protobuf:"varint,12,opt,name=include_get_workload_resp,json=includeGetWorkloadResp,proto3" json:"include_get_workload_resp,omitempty"`
}
-func (x *NodeGroupMigrationEligibility) Reset() {
- *x = NodeGroupMigrationEligibility{}
+func (x *RetrieveSavingsForWorkloadRequest) Reset() {
+ *x = RetrieveSavingsForWorkloadRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[185]
+ mi := &file_api_v1_recommendation_proto_msgTypes[200]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeGroupMigrationEligibility) String() string {
+func (x *RetrieveSavingsForWorkloadRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeGroupMigrationEligibility) ProtoMessage() {}
+func (*RetrieveSavingsForWorkloadRequest) ProtoMessage() {}
-func (x *NodeGroupMigrationEligibility) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[185]
+func (x *RetrieveSavingsForWorkloadRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[200]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15686,58 +18789,93 @@ func (x *NodeGroupMigrationEligibility) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeGroupMigrationEligibility.ProtoReflect.Descriptor instead.
-func (*NodeGroupMigrationEligibility) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{185}
+// Deprecated: Use RetrieveSavingsForWorkloadRequest.ProtoReflect.Descriptor instead.
+func (*RetrieveSavingsForWorkloadRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{200}
}
-func (x *NodeGroupMigrationEligibility) GetGroupName() string {
+func (x *RetrieveSavingsForWorkloadRequest) GetTeamId() string {
if x != nil {
- return x.GroupName
+ return x.TeamId
}
return ""
}
-func (x *NodeGroupMigrationEligibility) GetMigratable() bool {
+func (x *RetrieveSavingsForWorkloadRequest) GetClusterId() string {
if x != nil {
- return x.Migratable
+ return x.ClusterId
}
- return false
+ return ""
}
-func (x *NodeGroupMigrationEligibility) GetReasons() []string {
+func (x *RetrieveSavingsForWorkloadRequest) GetKind() string {
if x != nil {
- return x.Reasons
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *RetrieveSavingsForWorkloadRequest) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *RetrieveSavingsForWorkloadRequest) GetStartTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.StartTime
}
return nil
}
-type GetNodeAnnotationReadinessRequest struct {
+func (x *RetrieveSavingsForWorkloadRequest) GetEndTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EndTime
+ }
+ return nil
+}
+
+func (x *RetrieveSavingsForWorkloadRequest) GetIncludeDeleted() bool {
+ if x != nil {
+ return x.IncludeDeleted
+ }
+ return false
+}
+
+func (x *RetrieveSavingsForWorkloadRequest) GetIncludeGetWorkloadResp() bool {
+ if x != nil {
+ return x.IncludeGetWorkloadResp
+ }
+ return false
+}
+
+type RetrieveSavingsForWorkloadResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Savings *SavingsTimeSeries `protobuf:"bytes,1,opt,name=savings,proto3" json:"savings,omitempty"`
+ GetWorkloadResp *GetWorkloadResponse `protobuf:"bytes,11,opt,name=get_workload_resp,json=getWorkloadResp,proto3,oneof" json:"get_workload_resp,omitempty"`
}
-func (x *GetNodeAnnotationReadinessRequest) Reset() {
- *x = GetNodeAnnotationReadinessRequest{}
+func (x *RetrieveSavingsForWorkloadResponse) Reset() {
+ *x = RetrieveSavingsForWorkloadResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[186]
+ mi := &file_api_v1_recommendation_proto_msgTypes[201]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeAnnotationReadinessRequest) String() string {
+func (x *RetrieveSavingsForWorkloadResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeAnnotationReadinessRequest) ProtoMessage() {}
+func (*RetrieveSavingsForWorkloadResponse) ProtoMessage() {}
-func (x *GetNodeAnnotationReadinessRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[186]
+func (x *RetrieveSavingsForWorkloadResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[201]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15748,67 +18886,51 @@ func (x *GetNodeAnnotationReadinessRequest) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeAnnotationReadinessRequest.ProtoReflect.Descriptor instead.
-func (*GetNodeAnnotationReadinessRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{186}
+// Deprecated: Use RetrieveSavingsForWorkloadResponse.ProtoReflect.Descriptor instead.
+func (*RetrieveSavingsForWorkloadResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{201}
}
-func (x *GetNodeAnnotationReadinessRequest) GetTeamId() string {
+func (x *RetrieveSavingsForWorkloadResponse) GetSavings() *SavingsTimeSeries {
if x != nil {
- return x.TeamId
+ return x.Savings
}
- return ""
+ return nil
}
-func (x *GetNodeAnnotationReadinessRequest) GetClusterId() string {
+func (x *RetrieveSavingsForWorkloadResponse) GetGetWorkloadResp() *GetWorkloadResponse {
if x != nil {
- return x.ClusterId
+ return x.GetWorkloadResp
}
- return ""
+ return nil
}
-type GetNodeAnnotationReadinessResponse struct {
+type CreateNodePoliciesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TotalNodes int32 `protobuf:"varint,1,opt,name=total_nodes,json=totalNodes,proto3" json:"total_nodes,omitempty"`
- AnnotatedNodes int32 `protobuf:"varint,2,opt,name=annotated_nodes,json=annotatedNodes,proto3" json:"annotated_nodes,omitempty"`
- UnannotatedNodes int32 `protobuf:"varint,3,opt,name=unannotated_nodes,json=unannotatedNodes,proto3" json:"unannotated_nodes,omitempty"`
- Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"`
- UnannotatedNodeNames []string `protobuf:"bytes,5,rep,name=unannotated_node_names,json=unannotatedNodeNames,proto3" json:"unannotated_node_names,omitempty"`
- // supported is false when the cluster's cloud provider has no annotation
- // schema yet (OCI today). The wizard renders a clear "not supported"
- // state instead of polling indefinitely.
- Supported bool `protobuf:"varint,6,opt,name=supported,proto3" json:"supported,omitempty"`
- // aks_cluster_resource_group is the resource group that hosts the AKS
- // managed-cluster resource (NOT the MC_* node RG). Surfaced here so the
- // wizard's Step 5 / Step 7 commands (`az aks nodepool update/scale`)
- // can drop the placeholder. Populated from
- // devzero.io/azure-aks-cluster-rg on any annotated node. Empty when
- // the cluster isn't Azure or when the controller wasn't configured
- // with ARM_RESOURCE_GROUP — in either case the wizard falls back to
- // the placeholder.
- AksClusterResourceGroup string `protobuf:"bytes,7,opt,name=aks_cluster_resource_group,json=aksClusterResourceGroup,proto3" json:"aks_cluster_resource_group,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Policies []*NodePolicy `protobuf:"bytes,11,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *GetNodeAnnotationReadinessResponse) Reset() {
- *x = GetNodeAnnotationReadinessResponse{}
+func (x *CreateNodePoliciesRequest) Reset() {
+ *x = CreateNodePoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[187]
+ mi := &file_api_v1_recommendation_proto_msgTypes[202]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeAnnotationReadinessResponse) String() string {
+func (x *CreateNodePoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeAnnotationReadinessResponse) ProtoMessage() {}
+func (*CreateNodePoliciesRequest) ProtoMessage() {}
-func (x *GetNodeAnnotationReadinessResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[187]
+func (x *CreateNodePoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[202]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15819,62 +18941,73 @@ func (x *GetNodeAnnotationReadinessResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeAnnotationReadinessResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeAnnotationReadinessResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{187}
+// Deprecated: Use CreateNodePoliciesRequest.ProtoReflect.Descriptor instead.
+func (*CreateNodePoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{202}
}
-func (x *GetNodeAnnotationReadinessResponse) GetTotalNodes() int32 {
+func (x *CreateNodePoliciesRequest) GetTeamId() string {
if x != nil {
- return x.TotalNodes
+ return x.TeamId
}
- return 0
+ return ""
}
-func (x *GetNodeAnnotationReadinessResponse) GetAnnotatedNodes() int32 {
+func (x *CreateNodePoliciesRequest) GetPolicies() []*NodePolicy {
if x != nil {
- return x.AnnotatedNodes
+ return x.Policies
}
- return 0
+ return nil
}
-func (x *GetNodeAnnotationReadinessResponse) GetUnannotatedNodes() int32 {
- if x != nil {
- return x.UnannotatedNodes
- }
- return 0
+type CreateNodePoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *GetNodeAnnotationReadinessResponse) GetReady() bool {
- if x != nil {
- return x.Ready
+func (x *CreateNodePoliciesResponse) Reset() {
+ *x = CreateNodePoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[203]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return false
}
-func (x *GetNodeAnnotationReadinessResponse) GetUnannotatedNodeNames() []string {
- if x != nil {
- return x.UnannotatedNodeNames
- }
- return nil
+func (x *CreateNodePoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *GetNodeAnnotationReadinessResponse) GetSupported() bool {
- if x != nil {
- return x.Supported
+func (*CreateNodePoliciesResponse) ProtoMessage() {}
+
+func (x *CreateNodePoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[203]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return false
+ return mi.MessageOf(x)
}
-func (x *GetNodeAnnotationReadinessResponse) GetAksClusterResourceGroup() string {
+// Deprecated: Use CreateNodePoliciesResponse.ProtoReflect.Descriptor instead.
+func (*CreateNodePoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{203}
+}
+
+func (x *CreateNodePoliciesResponse) GetPolicies() []*NodePolicy {
if x != nil {
- return x.AksClusterResourceGroup
+ return x.Policies
}
- return ""
+ return nil
}
-// Migration wizard state
-type GetMigrationStateRequest struct {
+type SuggestedNodePolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -15883,23 +19016,23 @@ type GetMigrationStateRequest struct {
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *GetMigrationStateRequest) Reset() {
- *x = GetMigrationStateRequest{}
+func (x *SuggestedNodePolicyRequest) Reset() {
+ *x = SuggestedNodePolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[188]
+ mi := &file_api_v1_recommendation_proto_msgTypes[204]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetMigrationStateRequest) String() string {
+func (x *SuggestedNodePolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetMigrationStateRequest) ProtoMessage() {}
+func (*SuggestedNodePolicyRequest) ProtoMessage() {}
-func (x *GetMigrationStateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[188]
+func (x *SuggestedNodePolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[204]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15910,56 +19043,50 @@ func (x *GetMigrationStateRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetMigrationStateRequest.ProtoReflect.Descriptor instead.
-func (*GetMigrationStateRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{188}
+// Deprecated: Use SuggestedNodePolicyRequest.ProtoReflect.Descriptor instead.
+func (*SuggestedNodePolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{204}
}
-func (x *GetMigrationStateRequest) GetTeamId() string {
+func (x *SuggestedNodePolicyRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetMigrationStateRequest) GetClusterId() string {
+func (x *SuggestedNodePolicyRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-type GetMigrationStateResponse struct {
+type SuggestedNodePolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
- CurrentStep int32 `protobuf:"varint,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
- StateJson string `protobuf:"bytes,5,opt,name=state_json,json=stateJson,proto3" json:"state_json,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ Policy *NodePolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *GetMigrationStateResponse) Reset() {
- *x = GetMigrationStateResponse{}
+func (x *SuggestedNodePolicyResponse) Reset() {
+ *x = SuggestedNodePolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[189]
+ mi := &file_api_v1_recommendation_proto_msgTypes[205]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetMigrationStateResponse) String() string {
+func (x *SuggestedNodePolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetMigrationStateResponse) ProtoMessage() {}
+func (*SuggestedNodePolicyResponse) ProtoMessage() {}
-func (x *GetMigrationStateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[189]
+func (x *SuggestedNodePolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[205]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -15970,89 +19097,47 @@ func (x *GetMigrationStateResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetMigrationStateResponse.ProtoReflect.Descriptor instead.
-func (*GetMigrationStateResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{189}
-}
-
-func (x *GetMigrationStateResponse) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *GetMigrationStateResponse) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *GetMigrationStateResponse) GetStatus() string {
- if x != nil {
- return x.Status
- }
- return ""
-}
-
-func (x *GetMigrationStateResponse) GetCurrentStep() int32 {
- if x != nil {
- return x.CurrentStep
- }
- return 0
-}
-
-func (x *GetMigrationStateResponse) GetStateJson() string {
- if x != nil {
- return x.StateJson
- }
- return ""
-}
-
-func (x *GetMigrationStateResponse) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
+// Deprecated: Use SuggestedNodePolicyResponse.ProtoReflect.Descriptor instead.
+func (*SuggestedNodePolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{205}
}
-func (x *GetMigrationStateResponse) GetUpdatedAt() *timestamppb.Timestamp {
+func (x *SuggestedNodePolicyResponse) GetPolicy() *NodePolicy {
if x != nil {
- return x.UpdatedAt
+ return x.Policy
}
return nil
}
-type UpdateMigrationStateRequest struct {
+type GenerateNodePoliciesFromKarpenterRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
- CurrentStep int32 `protobuf:"varint,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
- StateJson string `protobuf:"bytes,5,opt,name=state_json,json=stateJson,proto3" json:"state_json,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ // When true, the generated policies will be saved to the database
+ // and node policy targets will be created for each policy (with enabled=false).
+ PersistPolicies bool `protobuf:"varint,3,opt,name=persist_policies,json=persistPolicies,proto3" json:"persist_policies,omitempty"`
}
-func (x *UpdateMigrationStateRequest) Reset() {
- *x = UpdateMigrationStateRequest{}
+func (x *GenerateNodePoliciesFromKarpenterRequest) Reset() {
+ *x = GenerateNodePoliciesFromKarpenterRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[190]
+ mi := &file_api_v1_recommendation_proto_msgTypes[206]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateMigrationStateRequest) String() string {
+func (x *GenerateNodePoliciesFromKarpenterRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateMigrationStateRequest) ProtoMessage() {}
+func (*GenerateNodePoliciesFromKarpenterRequest) ProtoMessage() {}
-func (x *UpdateMigrationStateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[190]
+func (x *GenerateNodePoliciesFromKarpenterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[206]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16063,71 +19148,59 @@ func (x *UpdateMigrationStateRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateMigrationStateRequest.ProtoReflect.Descriptor instead.
-func (*UpdateMigrationStateRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{190}
+// Deprecated: Use GenerateNodePoliciesFromKarpenterRequest.ProtoReflect.Descriptor instead.
+func (*GenerateNodePoliciesFromKarpenterRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{206}
}
-func (x *UpdateMigrationStateRequest) GetTeamId() string {
+func (x *GenerateNodePoliciesFromKarpenterRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *UpdateMigrationStateRequest) GetClusterId() string {
+func (x *GenerateNodePoliciesFromKarpenterRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *UpdateMigrationStateRequest) GetStatus() string {
- if x != nil {
- return x.Status
- }
- return ""
-}
-
-func (x *UpdateMigrationStateRequest) GetCurrentStep() int32 {
- if x != nil {
- return x.CurrentStep
- }
- return 0
-}
-
-func (x *UpdateMigrationStateRequest) GetStateJson() string {
+func (x *GenerateNodePoliciesFromKarpenterRequest) GetPersistPolicies() bool {
if x != nil {
- return x.StateJson
+ return x.PersistPolicies
}
- return ""
+ return false
}
-type UpdateMigrationStateResponse struct {
+type GenerateNodePoliciesFromKarpenterResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ // Targets created when persist_policies is true
+ Targets []*NodePolicyTarget `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *UpdateMigrationStateResponse) Reset() {
- *x = UpdateMigrationStateResponse{}
+func (x *GenerateNodePoliciesFromKarpenterResponse) Reset() {
+ *x = GenerateNodePoliciesFromKarpenterResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[191]
+ mi := &file_api_v1_recommendation_proto_msgTypes[207]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateMigrationStateResponse) String() string {
+func (x *GenerateNodePoliciesFromKarpenterResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateMigrationStateResponse) ProtoMessage() {}
+func (*GenerateNodePoliciesFromKarpenterResponse) ProtoMessage() {}
-func (x *UpdateMigrationStateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[191]
+func (x *GenerateNodePoliciesFromKarpenterResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[207]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16138,49 +19211,54 @@ func (x *UpdateMigrationStateResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateMigrationStateResponse.ProtoReflect.Descriptor instead.
-func (*UpdateMigrationStateResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{191}
+// Deprecated: Use GenerateNodePoliciesFromKarpenterResponse.ProtoReflect.Descriptor instead.
+func (*GenerateNodePoliciesFromKarpenterResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{207}
}
-func (x *UpdateMigrationStateResponse) GetId() string {
+func (x *GenerateNodePoliciesFromKarpenterResponse) GetPolicies() []*NodePolicy {
if x != nil {
- return x.Id
+ return x.Policies
}
- return ""
+ return nil
}
-// NodePool validation
-type ReportNodePoolValidationRequest struct {
+func (x *GenerateNodePoliciesFromKarpenterResponse) GetTargets() []*NodePolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type GenerateNodePoliciesFromNodeGroupsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- NodepoolName string `protobuf:"bytes,2,opt,name=nodepool_name,json=nodepoolName,proto3" json:"nodepool_name,omitempty"`
- NodeName string `protobuf:"bytes,3,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
- InstanceType string `protobuf:"bytes,4,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"`
- Zone string `protobuf:"bytes,5,opt,name=zone,proto3" json:"zone,omitempty"`
- TeamId string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ // When true, the generated policies will be saved to the database
+ // and node policy targets will be created for each policy (with enabled=false).
+ PersistPolicies bool `protobuf:"varint,3,opt,name=persist_policies,json=persistPolicies,proto3" json:"persist_policies,omitempty"`
}
-func (x *ReportNodePoolValidationRequest) Reset() {
- *x = ReportNodePoolValidationRequest{}
+func (x *GenerateNodePoliciesFromNodeGroupsRequest) Reset() {
+ *x = GenerateNodePoliciesFromNodeGroupsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[192]
+ mi := &file_api_v1_recommendation_proto_msgTypes[208]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ReportNodePoolValidationRequest) String() string {
+func (x *GenerateNodePoliciesFromNodeGroupsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ReportNodePoolValidationRequest) ProtoMessage() {}
+func (*GenerateNodePoliciesFromNodeGroupsRequest) ProtoMessage() {}
-func (x *ReportNodePoolValidationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[192]
+func (x *GenerateNodePoliciesFromNodeGroupsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[208]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16191,76 +19269,67 @@ func (x *ReportNodePoolValidationRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ReportNodePoolValidationRequest.ProtoReflect.Descriptor instead.
-func (*ReportNodePoolValidationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{192}
-}
-
-func (x *ReportNodePoolValidationRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *ReportNodePoolValidationRequest) GetNodepoolName() string {
- if x != nil {
- return x.NodepoolName
- }
- return ""
-}
-
-func (x *ReportNodePoolValidationRequest) GetNodeName() string {
- if x != nil {
- return x.NodeName
- }
- return ""
+// Deprecated: Use GenerateNodePoliciesFromNodeGroupsRequest.ProtoReflect.Descriptor instead.
+func (*GenerateNodePoliciesFromNodeGroupsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{208}
}
-func (x *ReportNodePoolValidationRequest) GetInstanceType() string {
+func (x *GenerateNodePoliciesFromNodeGroupsRequest) GetTeamId() string {
if x != nil {
- return x.InstanceType
+ return x.TeamId
}
return ""
}
-func (x *ReportNodePoolValidationRequest) GetZone() string {
+func (x *GenerateNodePoliciesFromNodeGroupsRequest) GetClusterId() string {
if x != nil {
- return x.Zone
+ return x.ClusterId
}
return ""
}
-func (x *ReportNodePoolValidationRequest) GetTeamId() string {
+func (x *GenerateNodePoliciesFromNodeGroupsRequest) GetPersistPolicies() bool {
if x != nil {
- return x.TeamId
+ return x.PersistPolicies
}
- return ""
+ return false
}
-type ReportNodePoolValidationResponse struct {
+type GenerateNodePoliciesFromNodeGroupsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Targets []*NodePolicyTarget `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"`
+ Warnings []*WorkloadCompatibilityWarning `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"`
+ // eligibility carries per-node-group "may this be migrated?" information
+ // computed from the current node observations. The wizard reads this to
+ // disable Step 3 rows for groups the operator must NOT migrate, with a
+ // tooltip explaining why. Keyed by group name (matches NodePolicy.name)
+ // and populated for every discovered group — including groups that are
+ // already managed by an existing node policy, which carry the
+ // "already_migrated" reason and have NO corresponding entry in policies.
+ Eligibility []*NodeGroupMigrationEligibility `protobuf:"bytes,4,rep,name=eligibility,proto3" json:"eligibility,omitempty"`
}
-func (x *ReportNodePoolValidationResponse) Reset() {
- *x = ReportNodePoolValidationResponse{}
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) Reset() {
+ *x = GenerateNodePoliciesFromNodeGroupsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[193]
+ mi := &file_api_v1_recommendation_proto_msgTypes[209]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ReportNodePoolValidationResponse) String() string {
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ReportNodePoolValidationResponse) ProtoMessage() {}
+func (*GenerateNodePoliciesFromNodeGroupsResponse) ProtoMessage() {}
-func (x *ReportNodePoolValidationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[193]
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[209]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16271,95 +19340,125 @@ func (x *ReportNodePoolValidationResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ReportNodePoolValidationResponse.ProtoReflect.Descriptor instead.
-func (*ReportNodePoolValidationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{193}
-}
-
-type GetNodePoolValidationsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+// Deprecated: Use GenerateNodePoliciesFromNodeGroupsResponse.ProtoReflect.Descriptor instead.
+func (*GenerateNodePoliciesFromNodeGroupsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{209}
}
-func (x *GetNodePoolValidationsRequest) Reset() {
- *x = GetNodePoolValidationsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[194]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetPolicies() []*NodePolicy {
+ if x != nil {
+ return x.Policies
}
+ return nil
}
-func (x *GetNodePoolValidationsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetNodePoolValidationsRequest) ProtoMessage() {}
-
-func (x *GetNodePoolValidationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[194]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetTargets() []*NodePolicyTarget {
+ if x != nil {
+ return x.Targets
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetNodePoolValidationsRequest.ProtoReflect.Descriptor instead.
-func (*GetNodePoolValidationsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{194}
+ return nil
}
-func (x *GetNodePoolValidationsRequest) GetClusterId() string {
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetWarnings() []*WorkloadCompatibilityWarning {
if x != nil {
- return x.ClusterId
+ return x.Warnings
}
- return ""
+ return nil
}
-func (x *GetNodePoolValidationsRequest) GetTeamId() string {
+func (x *GenerateNodePoliciesFromNodeGroupsResponse) GetEligibility() []*NodeGroupMigrationEligibility {
if x != nil {
- return x.TeamId
+ return x.Eligibility
}
- return ""
+ return nil
}
-type NodePoolValidationReport struct {
+// NodeGroupMigrationEligibility flags a node group as not-safe-to-migrate
+// for the CAS-migration wizard. Eligibility is preview-time only — it
+// describes the *current* state of the source pool, not a property of the
+// generated NodePolicy, so it's surfaced alongside the policies rather
+// than embedded in NodePolicy itself.
+type NodeGroupMigrationEligibility struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodepoolName string `protobuf:"bytes,1,opt,name=nodepool_name,json=nodepoolName,proto3" json:"nodepool_name,omitempty"`
- NodeName string `protobuf:"bytes,2,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
- InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"`
- Zone string `protobuf:"bytes,4,opt,name=zone,proto3" json:"zone,omitempty"`
- ReportedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=reported_at,json=reportedAt,proto3" json:"reported_at,omitempty"`
+ // group_name matches NodePolicy.name (the source node group's name).
+ GroupName string `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
+ // migratable=false means the wizard MUST disable this row in Step 3
+ // (BLOCKING reason present). True (or absent) means safe-to-migrate;
+ // an ADVISORY reason may still be present, in which case the wizard
+ // should show a non-blocking yellow caveat next to the row.
+ Migratable bool `protobuf:"varint,2,opt,name=migratable,proto3" json:"migratable,omitempty"`
+ // reasons documents why migration is blocked OR carries caveats.
+ // Stable identifier strings the wizard maps to human-readable messages.
+ //
+ // Blocking reasons (force migratable=false; row is disabled):
+ //
+ // "system_pool" — AKS pool with kubernetes.azure.com/mode=system
+ // or GKE pool with cloud.google.com/gke-system-only=true
+ // or the GKE system-only taint
+ // (CriticalAddonsOnly=true:NoSchedule). AKS
+ // requires ≥1 System pool to keep kube-system
+ // schedulable; draining the last one bricks
+ // the control plane.
+ // "karpenter_ops_pool" — pool labelled devzero.io/karpenter-ops-pool=true
+ // by dz-installer (setup-azure.sh /
+ // setup-gcp.sh). Migrating the pool that runs
+ // karpenter itself is a chicken-and-egg —
+ // karpenter would have to drain itself.
+ // "azure_sku_restricted" — source pool runs an AKS-restricted VM size
+ // (Basic A-series, B1s/B1ms, F1/F1s,
+ // A0/A1/A1_v2). kp-azure refuses to provision
+ // these. No workaround at the policy layer.
+ // "azure_sku_confidential" — source pool runs a Confidential Compute
+ // SKU (DC* / EC*). kp-azure's isConfidential
+ // predicate excludes these.
+ // "already_migrated" — the group is already managed by a live node
+ // policy with a live target scoped to this
+ // cluster. Unlike the other reasons, such
+ // groups are excluded from the policies list
+ // entirely (regenerating would create a
+ // duplicate policy); the entry exists so the
+ // UI can explain why the group is absent.
+ //
+ // Advisory reasons (migratable stays true; show as caveat):
+ //
+ // "azure_sku_nvme_under_cig" — source pool's SKU is NVMe-only
+ // (Standard_D*ads_v6 / D*alds_v6 / E*ads_v6 etc).
+ // kp-azure's default CIG image source isn't
+ // NVMe-tagged, so the controller filters these
+ // SKUs out of its catalog. Migration still
+ // works because the generated NodePool only
+ // requires sku-family (instance-category) —
+ // karpenter picks a compatible non-NVMe SKU
+ // from the same family. Operator should know
+ // the launched nodes won't exactly match the
+ // source pool.
+ // "cast_ai_live_migration_pool" — the group hosts cast.ai
+ // live-migration components, which stop
+ // working once those components are disabled
+ // during this migration.
+ Reasons []string `protobuf:"bytes,3,rep,name=reasons,proto3" json:"reasons,omitempty"`
}
-func (x *NodePoolValidationReport) Reset() {
- *x = NodePoolValidationReport{}
+func (x *NodeGroupMigrationEligibility) Reset() {
+ *x = NodeGroupMigrationEligibility{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[195]
+ mi := &file_api_v1_recommendation_proto_msgTypes[210]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodePoolValidationReport) String() string {
+func (x *NodeGroupMigrationEligibility) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodePoolValidationReport) ProtoMessage() {}
+func (*NodeGroupMigrationEligibility) ProtoMessage() {}
-func (x *NodePoolValidationReport) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[195]
+func (x *NodeGroupMigrationEligibility) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[210]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16370,71 +19469,58 @@ func (x *NodePoolValidationReport) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodePoolValidationReport.ProtoReflect.Descriptor instead.
-func (*NodePoolValidationReport) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{195}
-}
-
-func (x *NodePoolValidationReport) GetNodepoolName() string {
- if x != nil {
- return x.NodepoolName
- }
- return ""
-}
-
-func (x *NodePoolValidationReport) GetNodeName() string {
- if x != nil {
- return x.NodeName
- }
- return ""
+// Deprecated: Use NodeGroupMigrationEligibility.ProtoReflect.Descriptor instead.
+func (*NodeGroupMigrationEligibility) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{210}
}
-func (x *NodePoolValidationReport) GetInstanceType() string {
+func (x *NodeGroupMigrationEligibility) GetGroupName() string {
if x != nil {
- return x.InstanceType
+ return x.GroupName
}
return ""
}
-func (x *NodePoolValidationReport) GetZone() string {
+func (x *NodeGroupMigrationEligibility) GetMigratable() bool {
if x != nil {
- return x.Zone
+ return x.Migratable
}
- return ""
+ return false
}
-func (x *NodePoolValidationReport) GetReportedAt() *timestamppb.Timestamp {
+func (x *NodeGroupMigrationEligibility) GetReasons() []string {
if x != nil {
- return x.ReportedAt
+ return x.Reasons
}
return nil
}
-type GetNodePoolValidationsResponse struct {
+type GetNodeAnnotationReadinessRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Validations []*NodePoolValidationReport `protobuf:"bytes,1,rep,name=validations,proto3" json:"validations,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *GetNodePoolValidationsResponse) Reset() {
- *x = GetNodePoolValidationsResponse{}
+func (x *GetNodeAnnotationReadinessRequest) Reset() {
+ *x = GetNodeAnnotationReadinessRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[196]
+ mi := &file_api_v1_recommendation_proto_msgTypes[211]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodePoolValidationsResponse) String() string {
+func (x *GetNodeAnnotationReadinessRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodePoolValidationsResponse) ProtoMessage() {}
+func (*GetNodeAnnotationReadinessRequest) ProtoMessage() {}
-func (x *GetNodePoolValidationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[196]
+func (x *GetNodeAnnotationReadinessRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[211]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16445,47 +19531,67 @@ func (x *GetNodePoolValidationsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodePoolValidationsResponse.ProtoReflect.Descriptor instead.
-func (*GetNodePoolValidationsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{196}
+// Deprecated: Use GetNodeAnnotationReadinessRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeAnnotationReadinessRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{211}
}
-func (x *GetNodePoolValidationsResponse) GetValidations() []*NodePoolValidationReport {
+func (x *GetNodeAnnotationReadinessRequest) GetTeamId() string {
if x != nil {
- return x.Validations
+ return x.TeamId
}
- return nil
+ return ""
}
-type WorkloadCompatibilityWarning struct {
+func (x *GetNodeAnnotationReadinessRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type GetNodeAnnotationReadinessResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- WorkloadName string `protobuf:"bytes,1,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
- WorkloadNamespace string `protobuf:"bytes,2,opt,name=workload_namespace,json=workloadNamespace,proto3" json:"workload_namespace,omitempty"`
- Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
- NodeGroup string `protobuf:"bytes,4,opt,name=node_group,json=nodeGroup,proto3" json:"node_group,omitempty"`
- Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"`
+ TotalNodes int32 `protobuf:"varint,1,opt,name=total_nodes,json=totalNodes,proto3" json:"total_nodes,omitempty"`
+ AnnotatedNodes int32 `protobuf:"varint,2,opt,name=annotated_nodes,json=annotatedNodes,proto3" json:"annotated_nodes,omitempty"`
+ UnannotatedNodes int32 `protobuf:"varint,3,opt,name=unannotated_nodes,json=unannotatedNodes,proto3" json:"unannotated_nodes,omitempty"`
+ Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"`
+ UnannotatedNodeNames []string `protobuf:"bytes,5,rep,name=unannotated_node_names,json=unannotatedNodeNames,proto3" json:"unannotated_node_names,omitempty"`
+ // supported is false when the cluster's cloud provider has no annotation
+ // schema yet (OCI today). The wizard renders a clear "not supported"
+ // state instead of polling indefinitely.
+ Supported bool `protobuf:"varint,6,opt,name=supported,proto3" json:"supported,omitempty"`
+ // aks_cluster_resource_group is the resource group that hosts the AKS
+ // managed-cluster resource (NOT the MC_* node RG). Surfaced here so the
+ // wizard's Step 5 / Step 7 commands (`az aks nodepool update/scale`)
+ // can drop the placeholder. Populated from
+ // devzero.io/azure-aks-cluster-rg on any annotated node. Empty when
+ // the cluster isn't Azure or when the controller wasn't configured
+ // with ARM_RESOURCE_GROUP — in either case the wizard falls back to
+ // the placeholder.
+ AksClusterResourceGroup string `protobuf:"bytes,7,opt,name=aks_cluster_resource_group,json=aksClusterResourceGroup,proto3" json:"aks_cluster_resource_group,omitempty"`
}
-func (x *WorkloadCompatibilityWarning) Reset() {
- *x = WorkloadCompatibilityWarning{}
+func (x *GetNodeAnnotationReadinessResponse) Reset() {
+ *x = GetNodeAnnotationReadinessResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[197]
+ mi := &file_api_v1_recommendation_proto_msgTypes[212]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadCompatibilityWarning) String() string {
+func (x *GetNodeAnnotationReadinessResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadCompatibilityWarning) ProtoMessage() {}
+func (*GetNodeAnnotationReadinessResponse) ProtoMessage() {}
-func (x *WorkloadCompatibilityWarning) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[197]
+func (x *GetNodeAnnotationReadinessResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[212]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16496,71 +19602,86 @@ func (x *WorkloadCompatibilityWarning) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadCompatibilityWarning.ProtoReflect.Descriptor instead.
-func (*WorkloadCompatibilityWarning) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{197}
+// Deprecated: Use GetNodeAnnotationReadinessResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeAnnotationReadinessResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{212}
}
-func (x *WorkloadCompatibilityWarning) GetWorkloadName() string {
+func (x *GetNodeAnnotationReadinessResponse) GetTotalNodes() int32 {
if x != nil {
- return x.WorkloadName
+ return x.TotalNodes
}
- return ""
+ return 0
}
-func (x *WorkloadCompatibilityWarning) GetWorkloadNamespace() string {
+func (x *GetNodeAnnotationReadinessResponse) GetAnnotatedNodes() int32 {
if x != nil {
- return x.WorkloadNamespace
+ return x.AnnotatedNodes
}
- return ""
+ return 0
}
-func (x *WorkloadCompatibilityWarning) GetKind() string {
+func (x *GetNodeAnnotationReadinessResponse) GetUnannotatedNodes() int32 {
if x != nil {
- return x.Kind
+ return x.UnannotatedNodes
}
- return ""
+ return 0
}
-func (x *WorkloadCompatibilityWarning) GetNodeGroup() string {
+func (x *GetNodeAnnotationReadinessResponse) GetReady() bool {
if x != nil {
- return x.NodeGroup
+ return x.Ready
}
- return ""
+ return false
}
-func (x *WorkloadCompatibilityWarning) GetReason() string {
+func (x *GetNodeAnnotationReadinessResponse) GetUnannotatedNodeNames() []string {
if x != nil {
- return x.Reason
+ return x.UnannotatedNodeNames
+ }
+ return nil
+}
+
+func (x *GetNodeAnnotationReadinessResponse) GetSupported() bool {
+ if x != nil {
+ return x.Supported
+ }
+ return false
+}
+
+func (x *GetNodeAnnotationReadinessResponse) GetAksClusterResourceGroup() string {
+ if x != nil {
+ return x.AksClusterResourceGroup
}
return ""
}
-type ListNodePoliciesRequest struct {
+type DetectClusterAutoscalerRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *ListNodePoliciesRequest) Reset() {
- *x = ListNodePoliciesRequest{}
+func (x *DetectClusterAutoscalerRequest) Reset() {
+ *x = DetectClusterAutoscalerRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[198]
+ mi := &file_api_v1_recommendation_proto_msgTypes[213]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListNodePoliciesRequest) String() string {
+func (x *DetectClusterAutoscalerRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListNodePoliciesRequest) ProtoMessage() {}
+func (*DetectClusterAutoscalerRequest) ProtoMessage() {}
-func (x *ListNodePoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[198]
+func (x *DetectClusterAutoscalerRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[213]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16571,43 +19692,58 @@ func (x *ListNodePoliciesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListNodePoliciesRequest.ProtoReflect.Descriptor instead.
-func (*ListNodePoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{198}
+// Deprecated: Use DetectClusterAutoscalerRequest.ProtoReflect.Descriptor instead.
+func (*DetectClusterAutoscalerRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{213}
}
-func (x *ListNodePoliciesRequest) GetTeamId() string {
+func (x *DetectClusterAutoscalerRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-type ListNodePoliciesResponse struct {
+func (x *DetectClusterAutoscalerRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type DetectClusterAutoscalerResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ // One of: karpenter | cluster_autoscaler | cast_ai | transitioning | unmanaged.
+ // Plain string (not an enum) so new families ship without a proto bump,
+ // matching node_scheduling_health.proto's autoscaler_type convention.
+ AutoscalerType string `protobuf:"bytes,1,opt,name=autoscaler_type,json=autoscalerType,proto3" json:"autoscaler_type,omitempty"`
+ // Per-family raw booleans so the wizard can pick the SOURCE autoscaler even
+ // while autoscaler_type reads transitioning (mid-migration both are live).
+ HasKarpenter bool `protobuf:"varint,2,opt,name=has_karpenter,json=hasKarpenter,proto3" json:"has_karpenter,omitempty"`
+ HasClusterAutoscaler bool `protobuf:"varint,3,opt,name=has_cluster_autoscaler,json=hasClusterAutoscaler,proto3" json:"has_cluster_autoscaler,omitempty"`
+ HasCastAi bool `protobuf:"varint,4,opt,name=has_cast_ai,json=hasCastAi,proto3" json:"has_cast_ai,omitempty"`
}
-func (x *ListNodePoliciesResponse) Reset() {
- *x = ListNodePoliciesResponse{}
+func (x *DetectClusterAutoscalerResponse) Reset() {
+ *x = DetectClusterAutoscalerResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[199]
+ mi := &file_api_v1_recommendation_proto_msgTypes[214]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListNodePoliciesResponse) String() string {
+func (x *DetectClusterAutoscalerResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListNodePoliciesResponse) ProtoMessage() {}
+func (*DetectClusterAutoscalerResponse) ProtoMessage() {}
-func (x *ListNodePoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[199]
+func (x *DetectClusterAutoscalerResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[214]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16618,44 +19754,66 @@ func (x *ListNodePoliciesResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListNodePoliciesResponse.ProtoReflect.Descriptor instead.
-func (*ListNodePoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{199}
+// Deprecated: Use DetectClusterAutoscalerResponse.ProtoReflect.Descriptor instead.
+func (*DetectClusterAutoscalerResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{214}
}
-func (x *ListNodePoliciesResponse) GetPolicies() []*NodePolicy {
+func (x *DetectClusterAutoscalerResponse) GetAutoscalerType() string {
if x != nil {
- return x.Policies
+ return x.AutoscalerType
}
- return nil
+ return ""
}
-type UpdateNodePolicyRequest struct {
+func (x *DetectClusterAutoscalerResponse) GetHasKarpenter() bool {
+ if x != nil {
+ return x.HasKarpenter
+ }
+ return false
+}
+
+func (x *DetectClusterAutoscalerResponse) GetHasClusterAutoscaler() bool {
+ if x != nil {
+ return x.HasClusterAutoscaler
+ }
+ return false
+}
+
+func (x *DetectClusterAutoscalerResponse) GetHasCastAi() bool {
+ if x != nil {
+ return x.HasCastAi
+ }
+ return false
+}
+
+// Migration wizard state
+type GetMigrationStateRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Policy *NodePolicy `protobuf:"bytes,11,opt,name=policy,proto3" json:"policy,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *UpdateNodePolicyRequest) Reset() {
- *x = UpdateNodePolicyRequest{}
+func (x *GetMigrationStateRequest) Reset() {
+ *x = GetMigrationStateRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[200]
+ mi := &file_api_v1_recommendation_proto_msgTypes[215]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateNodePolicyRequest) String() string {
+func (x *GetMigrationStateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateNodePolicyRequest) ProtoMessage() {}
+func (*GetMigrationStateRequest) ProtoMessage() {}
-func (x *UpdateNodePolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[200]
+func (x *GetMigrationStateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[215]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16666,50 +19824,56 @@ func (x *UpdateNodePolicyRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateNodePolicyRequest.ProtoReflect.Descriptor instead.
-func (*UpdateNodePolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{200}
+// Deprecated: Use GetMigrationStateRequest.ProtoReflect.Descriptor instead.
+func (*GetMigrationStateRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{215}
}
-func (x *UpdateNodePolicyRequest) GetTeamId() string {
+func (x *GetMigrationStateRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *UpdateNodePolicyRequest) GetPolicy() *NodePolicy {
+func (x *GetMigrationStateRequest) GetClusterId() string {
if x != nil {
- return x.Policy
+ return x.ClusterId
}
- return nil
+ return ""
}
-type UpdateNodePolicyResponse struct {
+type GetMigrationStateResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *NodePolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ CurrentStep int32 `protobuf:"varint,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
+ StateJson string `protobuf:"bytes,5,opt,name=state_json,json=stateJson,proto3" json:"state_json,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
}
-func (x *UpdateNodePolicyResponse) Reset() {
- *x = UpdateNodePolicyResponse{}
+func (x *GetMigrationStateResponse) Reset() {
+ *x = GetMigrationStateResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[201]
+ mi := &file_api_v1_recommendation_proto_msgTypes[216]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateNodePolicyResponse) String() string {
+func (x *GetMigrationStateResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateNodePolicyResponse) ProtoMessage() {}
+func (*GetMigrationStateResponse) ProtoMessage() {}
-func (x *UpdateNodePolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[201]
+func (x *GetMigrationStateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[216]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16720,126 +19884,89 @@ func (x *UpdateNodePolicyResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateNodePolicyResponse.ProtoReflect.Descriptor instead.
-func (*UpdateNodePolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{201}
+// Deprecated: Use GetMigrationStateResponse.ProtoReflect.Descriptor instead.
+func (*GetMigrationStateResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{216}
}
-func (x *UpdateNodePolicyResponse) GetPolicy() *NodePolicy {
+func (x *GetMigrationStateResponse) GetId() string {
if x != nil {
- return x.Policy
+ return x.Id
}
- return nil
+ return ""
}
-type NodeGroupCheckpointStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- State NodeGroupCheckpointState `protobuf:"varint,1,opt,name=state,proto3,enum=api.v1.NodeGroupCheckpointState" json:"state,omitempty"`
- // Associated node policy (empty when NOT_DZ_MANAGED).
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- PolicyName string `protobuf:"bytes,3,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"`
- // For scope disclosure on the CTA: all node pool names this policy compiles
- // to / clusters it targets — toggling the label affects all of them.
- SharedNodePoolNames []string `protobuf:"bytes,4,rep,name=shared_node_pool_names,json=sharedNodePoolNames,proto3" json:"shared_node_pool_names,omitempty"`
- SharedClusterIds []string `protobuf:"bytes,5,rep,name=shared_cluster_ids,json=sharedClusterIds,proto3" json:"shared_cluster_ids,omitempty"`
-}
-
-func (x *NodeGroupCheckpointStatus) Reset() {
- *x = NodeGroupCheckpointStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[202]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NodeGroupCheckpointStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NodeGroupCheckpointStatus) ProtoMessage() {}
-
-func (x *NodeGroupCheckpointStatus) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[202]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *GetMigrationStateResponse) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NodeGroupCheckpointStatus.ProtoReflect.Descriptor instead.
-func (*NodeGroupCheckpointStatus) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{202}
+ return ""
}
-func (x *NodeGroupCheckpointStatus) GetState() NodeGroupCheckpointState {
+func (x *GetMigrationStateResponse) GetStatus() string {
if x != nil {
- return x.State
+ return x.Status
}
- return NodeGroupCheckpointState_NODE_GROUP_CHECKPOINT_STATE_UNSPECIFIED
+ return ""
}
-func (x *NodeGroupCheckpointStatus) GetPolicyId() string {
+func (x *GetMigrationStateResponse) GetCurrentStep() int32 {
if x != nil {
- return x.PolicyId
+ return x.CurrentStep
}
- return ""
+ return 0
}
-func (x *NodeGroupCheckpointStatus) GetPolicyName() string {
+func (x *GetMigrationStateResponse) GetStateJson() string {
if x != nil {
- return x.PolicyName
+ return x.StateJson
}
return ""
}
-func (x *NodeGroupCheckpointStatus) GetSharedNodePoolNames() []string {
+func (x *GetMigrationStateResponse) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.SharedNodePoolNames
+ return x.CreatedAt
}
return nil
}
-func (x *NodeGroupCheckpointStatus) GetSharedClusterIds() []string {
+func (x *GetMigrationStateResponse) GetUpdatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.SharedClusterIds
+ return x.UpdatedAt
}
return nil
}
-type GetNodeGroupsCheckpointStatusRequest struct {
+type UpdateMigrationStateRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ CurrentStep int32 `protobuf:"varint,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
+ StateJson string `protobuf:"bytes,5,opt,name=state_json,json=stateJson,proto3" json:"state_json,omitempty"`
}
-func (x *GetNodeGroupsCheckpointStatusRequest) Reset() {
- *x = GetNodeGroupsCheckpointStatusRequest{}
+func (x *UpdateMigrationStateRequest) Reset() {
+ *x = UpdateMigrationStateRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[203]
+ mi := &file_api_v1_recommendation_proto_msgTypes[217]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupsCheckpointStatusRequest) String() string {
+func (x *UpdateMigrationStateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupsCheckpointStatusRequest) ProtoMessage() {}
+func (*UpdateMigrationStateRequest) ProtoMessage() {}
-func (x *GetNodeGroupsCheckpointStatusRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[203]
+func (x *UpdateMigrationStateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[217]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16850,51 +19977,71 @@ func (x *GetNodeGroupsCheckpointStatusRequest) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupsCheckpointStatusRequest.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupsCheckpointStatusRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{203}
+// Deprecated: Use UpdateMigrationStateRequest.ProtoReflect.Descriptor instead.
+func (*UpdateMigrationStateRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{217}
}
-func (x *GetNodeGroupsCheckpointStatusRequest) GetTeamId() string {
+func (x *UpdateMigrationStateRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetNodeGroupsCheckpointStatusRequest) GetClusterId() string {
+func (x *UpdateMigrationStateRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-type GetNodeGroupsCheckpointStatusResponse struct {
+func (x *UpdateMigrationStateRequest) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *UpdateMigrationStateRequest) GetCurrentStep() int32 {
+ if x != nil {
+ return x.CurrentStep
+ }
+ return 0
+}
+
+func (x *UpdateMigrationStateRequest) GetStateJson() string {
+ if x != nil {
+ return x.StateJson
+ }
+ return ""
+}
+
+type UpdateMigrationStateResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Keyed by node group name.
- ByNodeGroup map[string]*NodeGroupCheckpointStatus `protobuf:"bytes,1,rep,name=by_node_group,json=byNodeGroup,proto3" json:"by_node_group,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}
-func (x *GetNodeGroupsCheckpointStatusResponse) Reset() {
- *x = GetNodeGroupsCheckpointStatusResponse{}
+func (x *UpdateMigrationStateResponse) Reset() {
+ *x = UpdateMigrationStateResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[204]
+ mi := &file_api_v1_recommendation_proto_msgTypes[218]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeGroupsCheckpointStatusResponse) String() string {
+func (x *UpdateMigrationStateResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeGroupsCheckpointStatusResponse) ProtoMessage() {}
+func (*UpdateMigrationStateResponse) ProtoMessage() {}
-func (x *GetNodeGroupsCheckpointStatusResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[204]
+func (x *UpdateMigrationStateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[218]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16905,46 +20052,45 @@ func (x *GetNodeGroupsCheckpointStatusResponse) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeGroupsCheckpointStatusResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeGroupsCheckpointStatusResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{204}
+// Deprecated: Use UpdateMigrationStateResponse.ProtoReflect.Descriptor instead.
+func (*UpdateMigrationStateResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{218}
}
-func (x *GetNodeGroupsCheckpointStatusResponse) GetByNodeGroup() map[string]*NodeGroupCheckpointStatus {
+func (x *UpdateMigrationStateResponse) GetId() string {
if x != nil {
- return x.ByNodeGroup
+ return x.Id
}
- return nil
+ return ""
}
-type SetNodePolicyCheckpointLabelRequest struct {
+// Karpenter migration wizard
+type GetKarpenterMigrationStateRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- // true adds dakr.devzero.io/checkpoint-node=true; false removes the key.
- Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *SetNodePolicyCheckpointLabelRequest) Reset() {
- *x = SetNodePolicyCheckpointLabelRequest{}
+func (x *GetKarpenterMigrationStateRequest) Reset() {
+ *x = GetKarpenterMigrationStateRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[205]
+ mi := &file_api_v1_recommendation_proto_msgTypes[219]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SetNodePolicyCheckpointLabelRequest) String() string {
+func (x *GetKarpenterMigrationStateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SetNodePolicyCheckpointLabelRequest) ProtoMessage() {}
+func (*GetKarpenterMigrationStateRequest) ProtoMessage() {}
-func (x *SetNodePolicyCheckpointLabelRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[205]
+func (x *GetKarpenterMigrationStateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[219]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -16955,57 +20101,56 @@ func (x *SetNodePolicyCheckpointLabelRequest) ProtoReflect() protoreflect.Messag
return mi.MessageOf(x)
}
-// Deprecated: Use SetNodePolicyCheckpointLabelRequest.ProtoReflect.Descriptor instead.
-func (*SetNodePolicyCheckpointLabelRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{205}
+// Deprecated: Use GetKarpenterMigrationStateRequest.ProtoReflect.Descriptor instead.
+func (*GetKarpenterMigrationStateRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{219}
}
-func (x *SetNodePolicyCheckpointLabelRequest) GetTeamId() string {
+func (x *GetKarpenterMigrationStateRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *SetNodePolicyCheckpointLabelRequest) GetPolicyId() string {
+func (x *GetKarpenterMigrationStateRequest) GetClusterId() string {
if x != nil {
- return x.PolicyId
+ return x.ClusterId
}
return ""
}
-func (x *SetNodePolicyCheckpointLabelRequest) GetEnabled() bool {
- if x != nil {
- return x.Enabled
- }
- return false
-}
-
-type SetNodePolicyCheckpointLabelResponse struct {
+type GetKarpenterMigrationStateResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ CurrentStep int32 `protobuf:"varint,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
+ StateJson string `protobuf:"bytes,5,opt,name=state_json,json=stateJson,proto3" json:"state_json,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
}
-func (x *SetNodePolicyCheckpointLabelResponse) Reset() {
- *x = SetNodePolicyCheckpointLabelResponse{}
+func (x *GetKarpenterMigrationStateResponse) Reset() {
+ *x = GetKarpenterMigrationStateResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[206]
+ mi := &file_api_v1_recommendation_proto_msgTypes[220]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SetNodePolicyCheckpointLabelResponse) String() string {
+func (x *GetKarpenterMigrationStateResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SetNodePolicyCheckpointLabelResponse) ProtoMessage() {}
+func (*GetKarpenterMigrationStateResponse) ProtoMessage() {}
-func (x *SetNodePolicyCheckpointLabelResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[206]
+func (x *GetKarpenterMigrationStateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[220]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17016,44 +20161,89 @@ func (x *SetNodePolicyCheckpointLabelResponse) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use SetNodePolicyCheckpointLabelResponse.ProtoReflect.Descriptor instead.
-func (*SetNodePolicyCheckpointLabelResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{206}
+// Deprecated: Use GetKarpenterMigrationStateResponse.ProtoReflect.Descriptor instead.
+func (*GetKarpenterMigrationStateResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{220}
}
-func (x *SetNodePolicyCheckpointLabelResponse) GetSuccess() bool {
+func (x *GetKarpenterMigrationStateResponse) GetId() string {
if x != nil {
- return x.Success
+ return x.Id
}
- return false
+ return ""
}
-type DeleteNodePolicyRequest struct {
+func (x *GetKarpenterMigrationStateResponse) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetKarpenterMigrationStateResponse) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *GetKarpenterMigrationStateResponse) GetCurrentStep() int32 {
+ if x != nil {
+ return x.CurrentStep
+ }
+ return 0
+}
+
+func (x *GetKarpenterMigrationStateResponse) GetStateJson() string {
+ if x != nil {
+ return x.StateJson
+ }
+ return ""
+}
+
+func (x *GetKarpenterMigrationStateResponse) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *GetKarpenterMigrationStateResponse) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+type UpdateKarpenterMigrationStateRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ CurrentStep int32 `protobuf:"varint,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
+ StateJson string `protobuf:"bytes,5,opt,name=state_json,json=stateJson,proto3" json:"state_json,omitempty"`
}
-func (x *DeleteNodePolicyRequest) Reset() {
- *x = DeleteNodePolicyRequest{}
+func (x *UpdateKarpenterMigrationStateRequest) Reset() {
+ *x = UpdateKarpenterMigrationStateRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[207]
+ mi := &file_api_v1_recommendation_proto_msgTypes[221]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteNodePolicyRequest) String() string {
+func (x *UpdateKarpenterMigrationStateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteNodePolicyRequest) ProtoMessage() {}
+func (*UpdateKarpenterMigrationStateRequest) ProtoMessage() {}
-func (x *DeleteNodePolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[207]
+func (x *UpdateKarpenterMigrationStateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[221]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17064,52 +20254,71 @@ func (x *DeleteNodePolicyRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteNodePolicyRequest.ProtoReflect.Descriptor instead.
-func (*DeleteNodePolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{207}
+// Deprecated: Use UpdateKarpenterMigrationStateRequest.ProtoReflect.Descriptor instead.
+func (*UpdateKarpenterMigrationStateRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{221}
}
-func (x *DeleteNodePolicyRequest) GetTeamId() string {
+func (x *UpdateKarpenterMigrationStateRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *DeleteNodePolicyRequest) GetPolicyId() string {
+func (x *UpdateKarpenterMigrationStateRequest) GetClusterId() string {
if x != nil {
- return x.PolicyId
+ return x.ClusterId
}
return ""
}
-type DeleteNodePolicyResponse struct {
+func (x *UpdateKarpenterMigrationStateRequest) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *UpdateKarpenterMigrationStateRequest) GetCurrentStep() int32 {
+ if x != nil {
+ return x.CurrentStep
+ }
+ return 0
+}
+
+func (x *UpdateKarpenterMigrationStateRequest) GetStateJson() string {
+ if x != nil {
+ return x.StateJson
+ }
+ return ""
+}
+
+type UpdateKarpenterMigrationStateResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
- // Number of NodePolicyTargets that were cascade-deleted along with the policy.
- DeletedTargetCount int32 `protobuf:"varint,2,opt,name=deleted_target_count,json=deletedTargetCount,proto3" json:"deleted_target_count,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}
-func (x *DeleteNodePolicyResponse) Reset() {
- *x = DeleteNodePolicyResponse{}
+func (x *UpdateKarpenterMigrationStateResponse) Reset() {
+ *x = UpdateKarpenterMigrationStateResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[208]
+ mi := &file_api_v1_recommendation_proto_msgTypes[222]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteNodePolicyResponse) String() string {
+func (x *UpdateKarpenterMigrationStateResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteNodePolicyResponse) ProtoMessage() {}
+func (*UpdateKarpenterMigrationStateResponse) ProtoMessage() {}
-func (x *DeleteNodePolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[208]
+func (x *UpdateKarpenterMigrationStateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[222]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17120,109 +20329,49 @@ func (x *DeleteNodePolicyResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteNodePolicyResponse.ProtoReflect.Descriptor instead.
-func (*DeleteNodePolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{208}
-}
-
-func (x *DeleteNodePolicyResponse) GetSuccess() bool {
- if x != nil {
- return x.Success
- }
- return false
+// Deprecated: Use UpdateKarpenterMigrationStateResponse.ProtoReflect.Descriptor instead.
+func (*UpdateKarpenterMigrationStateResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{222}
}
-func (x *DeleteNodePolicyResponse) GetDeletedTargetCount() int32 {
+func (x *UpdateKarpenterMigrationStateResponse) GetId() string {
if x != nil {
- return x.DeletedTargetCount
+ return x.Id
}
- return 0
+ return ""
}
-type NodePolicy struct {
+type KarpenterOwnershipConflict struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- TeamId string `protobuf:"bytes,4,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- // Cross-cloud core
- InstanceCategories *LabelSelector `protobuf:"bytes,10,opt,name=instance_categories,json=instanceCategories,proto3" json:"instance_categories,omitempty"` // abstract, per-cloud mapping; UI: Family; e.g., D (Azure), m (AWS)
- InstanceFamilies *LabelSelector `protobuf:"bytes,11,opt,name=instance_families,json=instanceFamilies,proto3" json:"instance_families,omitempty"` // abstract, per-cloud mapping (c5, m5d, r4, etc)
- InstanceCpus *LabelSelector `protobuf:"bytes,12,opt,name=instance_cpus,json=instanceCpus,proto3" json:"instance_cpus,omitempty"` // cpu count in cores (4, 8, 1, 2, etc)
- InstanceHypervisors *LabelSelector `protobuf:"bytes,13,opt,name=instance_hypervisors,json=instanceHypervisors,proto3" json:"instance_hypervisors,omitempty"` // self explanatory
- InstanceGenerations *LabelSelector `protobuf:"bytes,14,opt,name=instance_generations,json=instanceGenerations,proto3" json:"instance_generations,omitempty"` // self explanatory; UI: Generation; e.g., 4 (Azure), 5 (AWS)
- InstanceSizes *LabelSelector `protobuf:"bytes,15,opt,name=instance_sizes,json=instanceSizes,proto3" json:"instance_sizes,omitempty"` // UI: Size; eg: Standard_D4s (Azure), large (AWS)
- InstanceTypes *LabelSelector `protobuf:"bytes,16,opt,name=instance_types,json=instanceTypes,proto3" json:"instance_types,omitempty"` // UI: Type; eg: Standard_D4s_v2 (Azure), m4.2xlarge (AWS)
- // AWS only — karpenter.k8s.aws/instance-local-nvme. Ephemeral NVMe GiB per
- // node. Karpenter-provider-gcp/-azure/-oci have no equivalent label; this
- // field is silently dropped on the compile path for those providers.
- InstanceLocalNvme *LabelSelector `protobuf:"bytes,113,opt,name=instance_local_nvme,json=instanceLocalNvme,proto3" json:"instance_local_nvme,omitempty"`
- InstanceCategoriesTip *string `protobuf:"bytes,26,opt,name=instance_categories_tip,json=instanceCategoriesTip,proto3,oneof" json:"instance_categories_tip,omitempty"`
- InstanceFamiliesTip *string `protobuf:"bytes,27,opt,name=instance_families_tip,json=instanceFamiliesTip,proto3,oneof" json:"instance_families_tip,omitempty"`
- InstanceCpusTip *string `protobuf:"bytes,28,opt,name=instance_cpus_tip,json=instanceCpusTip,proto3,oneof" json:"instance_cpus_tip,omitempty"`
- InstanceHypervisorsTip *string `protobuf:"bytes,29,opt,name=instance_hypervisors_tip,json=instanceHypervisorsTip,proto3,oneof" json:"instance_hypervisors_tip,omitempty"`
- InstanceGenerationsTip *string `protobuf:"bytes,30,opt,name=instance_generations_tip,json=instanceGenerationsTip,proto3,oneof" json:"instance_generations_tip,omitempty"`
- InstanceSizesTip *string `protobuf:"bytes,31,opt,name=instance_sizes_tip,json=instanceSizesTip,proto3,oneof" json:"instance_sizes_tip,omitempty"`
- InstanceLocalNvmeTip *string `protobuf:"bytes,114,opt,name=instance_local_nvme_tip,json=instanceLocalNvmeTip,proto3,oneof" json:"instance_local_nvme_tip,omitempty"`
- Zones *LabelSelector `protobuf:"bytes,36,opt,name=zones,proto3" json:"zones,omitempty"` // abstract, per-cloud mapping
- Architectures *LabelSelector `protobuf:"bytes,37,opt,name=architectures,proto3" json:"architectures,omitempty"` // amd64, arm64
- CapacityTypes *LabelSelector `protobuf:"bytes,38,opt,name=capacity_types,json=capacityTypes,proto3" json:"capacity_types,omitempty"` // spot, on-demand, reserved
- OperatingSystems *LabelSelector `protobuf:"bytes,39,opt,name=operating_systems,json=operatingSystems,proto3" json:"operating_systems,omitempty"` // linux, windows
- Weight int32 `protobuf:"varint,40,opt,name=weight,proto3" json:"weight,omitempty"`
- ZonesTip *string `protobuf:"bytes,45,opt,name=zones_tip,json=zonesTip,proto3,oneof" json:"zones_tip,omitempty"`
- ArchitecturesTip *string `protobuf:"bytes,46,opt,name=architectures_tip,json=architecturesTip,proto3,oneof" json:"architectures_tip,omitempty"`
- CapacityTypeTip *string `protobuf:"bytes,47,opt,name=capacity_type_tip,json=capacityTypeTip,proto3,oneof" json:"capacity_type_tip,omitempty"`
- OperatingSystemsTip *string `protobuf:"bytes,48,opt,name=operating_systems_tip,json=operatingSystemsTip,proto3,oneof" json:"operating_systems_tip,omitempty"`
- Labels map[string]string `protobuf:"bytes,51,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Taints []*Taint `protobuf:"bytes,52,rep,name=taints,proto3" json:"taints,omitempty"`
- Disruption *DisruptionPolicy `protobuf:"bytes,53,opt,name=disruption,proto3" json:"disruption,omitempty"`
- Limits *ResourceLimits `protobuf:"bytes,54,opt,name=limits,proto3" json:"limits,omitempty"`
- StartupTaints []*Taint `protobuf:"bytes,55,rep,name=startup_taints,json=startupTaints,proto3" json:"startup_taints,omitempty"`
- TaintsTip *string `protobuf:"bytes,57,opt,name=taints_tip,json=taintsTip,proto3,oneof" json:"taints_tip,omitempty"`
- DisruptionsTip *string `protobuf:"bytes,58,opt,name=disruptions_tip,json=disruptionsTip,proto3,oneof" json:"disruptions_tip,omitempty"`
- LimitsTip *string `protobuf:"bytes,59,opt,name=limits_tip,json=limitsTip,proto3,oneof" json:"limits_tip,omitempty"`
- StartupTaintsTip *string `protobuf:"bytes,60,opt,name=startup_taints_tip,json=startupTaintsTip,proto3,oneof" json:"startup_taints_tip,omitempty"`
- MasterOverrideRoleName string `protobuf:"bytes,61,opt,name=master_override_role_name,json=masterOverrideRoleName,proto3" json:"master_override_role_name,omitempty"`
- NodePoolName string `protobuf:"bytes,71,opt,name=node_pool_name,json=nodePoolName,proto3" json:"node_pool_name,omitempty"`
- NodeClassName string `protobuf:"bytes,72,opt,name=node_class_name,json=nodeClassName,proto3" json:"node_class_name,omitempty"`
- // Provider-specific overrides
- Aws *AWSNodeClassSpec `protobuf:"bytes,81,opt,name=aws,proto3" json:"aws,omitempty"`
- Gcp *GCPNodeClassSpec `protobuf:"bytes,82,opt,name=gcp,proto3" json:"gcp,omitempty"`
- Azure *AzureNodeClassSpec `protobuf:"bytes,83,opt,name=azure,proto3" json:"azure,omitempty"`
- Oci *OCINodeClassSpec `protobuf:"bytes,84,opt,name=oci,proto3" json:"oci,omitempty"`
- CloudProviderId *int64 `protobuf:"varint,85,opt,name=cloud_provider_id,json=cloudProviderId,proto3,oneof" json:"cloud_provider_id,omitempty"`
- CloudProvider *CloudProvider `protobuf:"bytes,86,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"`
- // Cloud-agnostic opt-in for AZ outage handling (AWS ARC zonal shift today;
- // analogous GCP behavior planned). The compile step translates this to
- // provider-specific annotations on the Karpenter NodePool.
- ZonalShift *ZonalShiftConfig `protobuf:"bytes,90,opt,name=zonal_shift,json=zonalShift,proto3" json:"zonal_shift,omitempty"`
- // Raw escape hatch for node pool
- Raw []*RawKarpenterSpec `protobuf:"bytes,100,rep,name=raw,proto3" json:"raw,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,110,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,111,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- DeletedAt *timestamppb.Timestamp `protobuf:"bytes,112,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ ResourceKind string `protobuf:"bytes,2,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"`
+ ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
+ OwnerTool string `protobuf:"bytes,4,opt,name=owner_tool,json=ownerTool,proto3" json:"owner_tool,omitempty"`
+ DetectedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=detected_at,json=detectedAt,proto3" json:"detected_at,omitempty"`
+ AcknowledgedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=acknowledged_at,json=acknowledgedAt,proto3" json:"acknowledged_at,omitempty"` // unset if not yet acknowledged
+ AcknowledgedBy string `protobuf:"bytes,7,opt,name=acknowledged_by,json=acknowledgedBy,proto3" json:"acknowledged_by,omitempty"`
}
-func (x *NodePolicy) Reset() {
- *x = NodePolicy{}
+func (x *KarpenterOwnershipConflict) Reset() {
+ *x = KarpenterOwnershipConflict{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[209]
+ mi := &file_api_v1_recommendation_proto_msgTypes[223]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodePolicy) String() string {
+func (x *KarpenterOwnershipConflict) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodePolicy) ProtoMessage() {}
+func (*KarpenterOwnershipConflict) ProtoMessage() {}
-func (x *NodePolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[209]
+func (x *KarpenterOwnershipConflict) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[223]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17233,396 +20382,527 @@ func (x *NodePolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodePolicy.ProtoReflect.Descriptor instead.
-func (*NodePolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{209}
+// Deprecated: Use KarpenterOwnershipConflict.ProtoReflect.Descriptor instead.
+func (*KarpenterOwnershipConflict) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{223}
}
-func (x *NodePolicy) GetId() string {
+func (x *KarpenterOwnershipConflict) GetId() string {
if x != nil {
return x.Id
}
return ""
}
-func (x *NodePolicy) GetName() string {
+func (x *KarpenterOwnershipConflict) GetResourceKind() string {
if x != nil {
- return x.Name
+ return x.ResourceKind
}
return ""
}
-func (x *NodePolicy) GetDescription() string {
+func (x *KarpenterOwnershipConflict) GetResourceName() string {
if x != nil {
- return x.Description
+ return x.ResourceName
}
return ""
}
-func (x *NodePolicy) GetTeamId() string {
+func (x *KarpenterOwnershipConflict) GetOwnerTool() string {
if x != nil {
- return x.TeamId
+ return x.OwnerTool
}
return ""
}
-func (x *NodePolicy) GetInstanceCategories() *LabelSelector {
+func (x *KarpenterOwnershipConflict) GetDetectedAt() *timestamppb.Timestamp {
if x != nil {
- return x.InstanceCategories
+ return x.DetectedAt
}
return nil
}
-func (x *NodePolicy) GetInstanceFamilies() *LabelSelector {
+func (x *KarpenterOwnershipConflict) GetAcknowledgedAt() *timestamppb.Timestamp {
if x != nil {
- return x.InstanceFamilies
+ return x.AcknowledgedAt
}
return nil
}
-func (x *NodePolicy) GetInstanceCpus() *LabelSelector {
+func (x *KarpenterOwnershipConflict) GetAcknowledgedBy() string {
if x != nil {
- return x.InstanceCpus
+ return x.AcknowledgedBy
}
- return nil
+ return ""
}
-func (x *NodePolicy) GetInstanceHypervisors() *LabelSelector {
- if x != nil {
- return x.InstanceHypervisors
- }
- return nil
+type DetectKarpenterOwnershipConflictsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *NodePolicy) GetInstanceGenerations() *LabelSelector {
- if x != nil {
- return x.InstanceGenerations
+func (x *DetectKarpenterOwnershipConflictsRequest) Reset() {
+ *x = DetectKarpenterOwnershipConflictsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[224]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodePolicy) GetInstanceSizes() *LabelSelector {
- if x != nil {
- return x.InstanceSizes
- }
- return nil
+func (x *DetectKarpenterOwnershipConflictsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *NodePolicy) GetInstanceTypes() *LabelSelector {
- if x != nil {
- return x.InstanceTypes
+func (*DetectKarpenterOwnershipConflictsRequest) ProtoMessage() {}
+
+func (x *DetectKarpenterOwnershipConflictsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[224]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetInstanceLocalNvme() *LabelSelector {
- if x != nil {
- return x.InstanceLocalNvme
- }
- return nil
+// Deprecated: Use DetectKarpenterOwnershipConflictsRequest.ProtoReflect.Descriptor instead.
+func (*DetectKarpenterOwnershipConflictsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{224}
}
-func (x *NodePolicy) GetInstanceCategoriesTip() string {
- if x != nil && x.InstanceCategoriesTip != nil {
- return *x.InstanceCategoriesTip
+func (x *DetectKarpenterOwnershipConflictsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
}
return ""
}
-func (x *NodePolicy) GetInstanceFamiliesTip() string {
- if x != nil && x.InstanceFamiliesTip != nil {
- return *x.InstanceFamiliesTip
+func (x *DetectKarpenterOwnershipConflictsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
}
return ""
}
-func (x *NodePolicy) GetInstanceCpusTip() string {
- if x != nil && x.InstanceCpusTip != nil {
- return *x.InstanceCpusTip
- }
- return ""
+type DetectKarpenterOwnershipConflictsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Conflicts []*KarpenterOwnershipConflict `protobuf:"bytes,1,rep,name=conflicts,proto3" json:"conflicts,omitempty"` // includes previously-acknowledged ones so the UI can show history
+ AlreadyDevZeroManaged bool `protobuf:"varint,2,opt,name=already_dev_zero_managed,json=alreadyDevZeroManaged,proto3" json:"already_dev_zero_managed,omitempty"` // true if karpDeployment.IsDevZeroManaged() — short-circuit signal for Detect step
}
-func (x *NodePolicy) GetInstanceHypervisorsTip() string {
- if x != nil && x.InstanceHypervisorsTip != nil {
- return *x.InstanceHypervisorsTip
+func (x *DetectKarpenterOwnershipConflictsResponse) Reset() {
+ *x = DetectKarpenterOwnershipConflictsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[225]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *NodePolicy) GetInstanceGenerationsTip() string {
- if x != nil && x.InstanceGenerationsTip != nil {
- return *x.InstanceGenerationsTip
- }
- return ""
+func (x *DetectKarpenterOwnershipConflictsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *NodePolicy) GetInstanceSizesTip() string {
- if x != nil && x.InstanceSizesTip != nil {
- return *x.InstanceSizesTip
+func (*DetectKarpenterOwnershipConflictsResponse) ProtoMessage() {}
+
+func (x *DetectKarpenterOwnershipConflictsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[225]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetInstanceLocalNvmeTip() string {
- if x != nil && x.InstanceLocalNvmeTip != nil {
- return *x.InstanceLocalNvmeTip
- }
- return ""
+// Deprecated: Use DetectKarpenterOwnershipConflictsResponse.ProtoReflect.Descriptor instead.
+func (*DetectKarpenterOwnershipConflictsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{225}
}
-func (x *NodePolicy) GetZones() *LabelSelector {
+func (x *DetectKarpenterOwnershipConflictsResponse) GetConflicts() []*KarpenterOwnershipConflict {
if x != nil {
- return x.Zones
+ return x.Conflicts
}
return nil
}
-func (x *NodePolicy) GetArchitectures() *LabelSelector {
+func (x *DetectKarpenterOwnershipConflictsResponse) GetAlreadyDevZeroManaged() bool {
if x != nil {
- return x.Architectures
+ return x.AlreadyDevZeroManaged
}
- return nil
+ return false
}
-func (x *NodePolicy) GetCapacityTypes() *LabelSelector {
- if x != nil {
- return x.CapacityTypes
- }
- return nil
+type AcknowledgeKarpenterOwnershipConflictRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ConflictId string `protobuf:"bytes,2,opt,name=conflict_id,json=conflictId,proto3" json:"conflict_id,omitempty"`
+ AcknowledgedBy string `protobuf:"bytes,3,opt,name=acknowledged_by,json=acknowledgedBy,proto3" json:"acknowledged_by,omitempty"`
}
-func (x *NodePolicy) GetOperatingSystems() *LabelSelector {
- if x != nil {
- return x.OperatingSystems
+func (x *AcknowledgeKarpenterOwnershipConflictRequest) Reset() {
+ *x = AcknowledgeKarpenterOwnershipConflictRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[226]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodePolicy) GetWeight() int32 {
- if x != nil {
- return x.Weight
- }
- return 0
+func (x *AcknowledgeKarpenterOwnershipConflictRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *NodePolicy) GetZonesTip() string {
- if x != nil && x.ZonesTip != nil {
- return *x.ZonesTip
+func (*AcknowledgeKarpenterOwnershipConflictRequest) ProtoMessage() {}
+
+func (x *AcknowledgeKarpenterOwnershipConflictRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[226]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetArchitecturesTip() string {
- if x != nil && x.ArchitecturesTip != nil {
- return *x.ArchitecturesTip
- }
- return ""
+// Deprecated: Use AcknowledgeKarpenterOwnershipConflictRequest.ProtoReflect.Descriptor instead.
+func (*AcknowledgeKarpenterOwnershipConflictRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{226}
}
-func (x *NodePolicy) GetCapacityTypeTip() string {
- if x != nil && x.CapacityTypeTip != nil {
- return *x.CapacityTypeTip
+func (x *AcknowledgeKarpenterOwnershipConflictRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
}
return ""
}
-func (x *NodePolicy) GetOperatingSystemsTip() string {
- if x != nil && x.OperatingSystemsTip != nil {
- return *x.OperatingSystemsTip
+func (x *AcknowledgeKarpenterOwnershipConflictRequest) GetConflictId() string {
+ if x != nil {
+ return x.ConflictId
}
return ""
}
-func (x *NodePolicy) GetLabels() map[string]string {
+func (x *AcknowledgeKarpenterOwnershipConflictRequest) GetAcknowledgedBy() string {
if x != nil {
- return x.Labels
+ return x.AcknowledgedBy
}
- return nil
+ return ""
}
-func (x *NodePolicy) GetTaints() []*Taint {
- if x != nil {
- return x.Taints
- }
- return nil
+type AcknowledgeKarpenterOwnershipConflictResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}
-func (x *NodePolicy) GetDisruption() *DisruptionPolicy {
- if x != nil {
- return x.Disruption
+func (x *AcknowledgeKarpenterOwnershipConflictResponse) Reset() {
+ *x = AcknowledgeKarpenterOwnershipConflictResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[227]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodePolicy) GetLimits() *ResourceLimits {
- if x != nil {
- return x.Limits
- }
- return nil
+func (x *AcknowledgeKarpenterOwnershipConflictResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *NodePolicy) GetStartupTaints() []*Taint {
- if x != nil {
- return x.StartupTaints
+func (*AcknowledgeKarpenterOwnershipConflictResponse) ProtoMessage() {}
+
+func (x *AcknowledgeKarpenterOwnershipConflictResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[227]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetTaintsTip() string {
- if x != nil && x.TaintsTip != nil {
- return *x.TaintsTip
- }
- return ""
+// Deprecated: Use AcknowledgeKarpenterOwnershipConflictResponse.ProtoReflect.Descriptor instead.
+func (*AcknowledgeKarpenterOwnershipConflictResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{227}
}
-func (x *NodePolicy) GetDisruptionsTip() string {
- if x != nil && x.DisruptionsTip != nil {
- return *x.DisruptionsTip
+func (x *AcknowledgeKarpenterOwnershipConflictResponse) GetId() string {
+ if x != nil {
+ return x.Id
}
return ""
}
-func (x *NodePolicy) GetLimitsTip() string {
- if x != nil && x.LimitsTip != nil {
- return *x.LimitsTip
+type KarpenterSourceResource struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // "NodePool" | "EC2NodeClass" | "AKSNodeClass" | "GCENodeClass"
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Yaml string `protobuf:"bytes,3,opt,name=yaml,proto3" json:"yaml,omitempty"`
+}
+
+func (x *KarpenterSourceResource) Reset() {
+ *x = KarpenterSourceResource{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[228]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *NodePolicy) GetStartupTaintsTip() string {
- if x != nil && x.StartupTaintsTip != nil {
- return *x.StartupTaintsTip
+func (x *KarpenterSourceResource) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KarpenterSourceResource) ProtoMessage() {}
+
+func (x *KarpenterSourceResource) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[228]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetMasterOverrideRoleName() string {
+// Deprecated: Use KarpenterSourceResource.ProtoReflect.Descriptor instead.
+func (*KarpenterSourceResource) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{228}
+}
+
+func (x *KarpenterSourceResource) GetKind() string {
if x != nil {
- return x.MasterOverrideRoleName
+ return x.Kind
}
return ""
}
-func (x *NodePolicy) GetNodePoolName() string {
+func (x *KarpenterSourceResource) GetName() string {
if x != nil {
- return x.NodePoolName
+ return x.Name
}
return ""
}
-func (x *NodePolicy) GetNodeClassName() string {
+func (x *KarpenterSourceResource) GetYaml() string {
if x != nil {
- return x.NodeClassName
+ return x.Yaml
}
return ""
}
-func (x *NodePolicy) GetAws() *AWSNodeClassSpec {
- if x != nil {
- return x.Aws
+type GetKarpenterSourceResourcesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *GetKarpenterSourceResourcesRequest) Reset() {
+ *x = GetKarpenterSourceResourcesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[229]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodePolicy) GetGcp() *GCPNodeClassSpec {
- if x != nil {
- return x.Gcp
+func (x *GetKarpenterSourceResourcesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetKarpenterSourceResourcesRequest) ProtoMessage() {}
+
+func (x *GetKarpenterSourceResourcesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[229]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetAzure() *AzureNodeClassSpec {
+// Deprecated: Use GetKarpenterSourceResourcesRequest.ProtoReflect.Descriptor instead.
+func (*GetKarpenterSourceResourcesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{229}
+}
+
+func (x *GetKarpenterSourceResourcesRequest) GetTeamId() string {
if x != nil {
- return x.Azure
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *NodePolicy) GetOci() *OCINodeClassSpec {
+func (x *GetKarpenterSourceResourcesRequest) GetClusterId() string {
if x != nil {
- return x.Oci
+ return x.ClusterId
}
- return nil
+ return ""
}
-func (x *NodePolicy) GetCloudProviderId() int64 {
- if x != nil && x.CloudProviderId != nil {
- return *x.CloudProviderId
+type GetKarpenterSourceResourcesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Resources []*KarpenterSourceResource `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"`
+}
+
+func (x *GetKarpenterSourceResourcesResponse) Reset() {
+ *x = GetKarpenterSourceResourcesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[230]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *NodePolicy) GetCloudProvider() *CloudProvider {
- if x != nil {
- return x.CloudProvider
+func (x *GetKarpenterSourceResourcesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetKarpenterSourceResourcesResponse) ProtoMessage() {}
+
+func (x *GetKarpenterSourceResourcesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[230]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetZonalShift() *ZonalShiftConfig {
+// Deprecated: Use GetKarpenterSourceResourcesResponse.ProtoReflect.Descriptor instead.
+func (*GetKarpenterSourceResourcesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{230}
+}
+
+func (x *GetKarpenterSourceResourcesResponse) GetResources() []*KarpenterSourceResource {
if x != nil {
- return x.ZonalShift
+ return x.Resources
}
return nil
}
-func (x *NodePolicy) GetRaw() []*RawKarpenterSpec {
- if x != nil {
- return x.Raw
+type NodePoolAdoptionStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodePoolName string `protobuf:"bytes,1,opt,name=node_pool_name,json=nodePoolName,proto3" json:"node_pool_name,omitempty"`
+ Ready bool `protobuf:"varint,2,opt,name=ready,proto3" json:"ready,omitempty"`
+}
+
+func (x *NodePoolAdoptionStatus) Reset() {
+ *x = NodePoolAdoptionStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[231]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodePolicy) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
+func (x *NodePoolAdoptionStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodePoolAdoptionStatus) ProtoMessage() {}
+
+func (x *NodePoolAdoptionStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[231]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *NodePolicy) GetUpdatedAt() *timestamppb.Timestamp {
+// Deprecated: Use NodePoolAdoptionStatus.ProtoReflect.Descriptor instead.
+func (*NodePoolAdoptionStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{231}
+}
+
+func (x *NodePoolAdoptionStatus) GetNodePoolName() string {
if x != nil {
- return x.UpdatedAt
+ return x.NodePoolName
}
- return nil
+ return ""
}
-func (x *NodePolicy) GetDeletedAt() *timestamppb.Timestamp {
+func (x *NodePoolAdoptionStatus) GetReady() bool {
if x != nil {
- return x.DeletedAt
+ return x.Ready
}
- return nil
+ return false
}
-type PreviewNodeRecommendationConfigRequest struct {
+type GetKarpenterAdoptionStatusRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Policies []*NodePolicy `protobuf:"bytes,6,rep,name=policies,proto3" json:"policies,omitempty"`
- PolicyIds []string `protobuf:"bytes,11,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // if set, `repeated NodePolicy policies = 6;` is ignored
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ NodePoolNames []string `protobuf:"bytes,3,rep,name=node_pool_names,json=nodePoolNames,proto3" json:"node_pool_names,omitempty"`
}
-func (x *PreviewNodeRecommendationConfigRequest) Reset() {
- *x = PreviewNodeRecommendationConfigRequest{}
+func (x *GetKarpenterAdoptionStatusRequest) Reset() {
+ *x = GetKarpenterAdoptionStatusRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[210]
+ mi := &file_api_v1_recommendation_proto_msgTypes[232]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PreviewNodeRecommendationConfigRequest) String() string {
+func (x *GetKarpenterAdoptionStatusRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PreviewNodeRecommendationConfigRequest) ProtoMessage() {}
+func (*GetKarpenterAdoptionStatusRequest) ProtoMessage() {}
-func (x *PreviewNodeRecommendationConfigRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[210]
+func (x *GetKarpenterAdoptionStatusRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[232]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17633,64 +20913,57 @@ func (x *PreviewNodeRecommendationConfigRequest) ProtoReflect() protoreflect.Mes
return mi.MessageOf(x)
}
-// Deprecated: Use PreviewNodeRecommendationConfigRequest.ProtoReflect.Descriptor instead.
-func (*PreviewNodeRecommendationConfigRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{210}
+// Deprecated: Use GetKarpenterAdoptionStatusRequest.ProtoReflect.Descriptor instead.
+func (*GetKarpenterAdoptionStatusRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{232}
}
-func (x *PreviewNodeRecommendationConfigRequest) GetTeamId() string {
+func (x *GetKarpenterAdoptionStatusRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *PreviewNodeRecommendationConfigRequest) GetClusterId() string {
+func (x *GetKarpenterAdoptionStatusRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *PreviewNodeRecommendationConfigRequest) GetPolicies() []*NodePolicy {
- if x != nil {
- return x.Policies
- }
- return nil
-}
-
-func (x *PreviewNodeRecommendationConfigRequest) GetPolicyIds() []string {
+func (x *GetKarpenterAdoptionStatusRequest) GetNodePoolNames() []string {
if x != nil {
- return x.PolicyIds
+ return x.NodePoolNames
}
return nil
}
-type PreviewNodeRecommendationConfigResponse struct {
+type GetKarpenterAdoptionStatusResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Nrc *NodeRecommendationConfig `protobuf:"bytes,1,opt,name=nrc,proto3" json:"nrc,omitempty"`
+ Statuses []*NodePoolAdoptionStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty"`
}
-func (x *PreviewNodeRecommendationConfigResponse) Reset() {
- *x = PreviewNodeRecommendationConfigResponse{}
+func (x *GetKarpenterAdoptionStatusResponse) Reset() {
+ *x = GetKarpenterAdoptionStatusResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[211]
+ mi := &file_api_v1_recommendation_proto_msgTypes[233]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PreviewNodeRecommendationConfigResponse) String() string {
+func (x *GetKarpenterAdoptionStatusResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PreviewNodeRecommendationConfigResponse) ProtoMessage() {}
+func (*GetKarpenterAdoptionStatusResponse) ProtoMessage() {}
-func (x *PreviewNodeRecommendationConfigResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[211]
+func (x *GetKarpenterAdoptionStatusResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[233]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17701,51 +20974,49 @@ func (x *PreviewNodeRecommendationConfigResponse) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use PreviewNodeRecommendationConfigResponse.ProtoReflect.Descriptor instead.
-func (*PreviewNodeRecommendationConfigResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{211}
+// Deprecated: Use GetKarpenterAdoptionStatusResponse.ProtoReflect.Descriptor instead.
+func (*GetKarpenterAdoptionStatusResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{233}
}
-func (x *PreviewNodeRecommendationConfigResponse) GetNrc() *NodeRecommendationConfig {
+func (x *GetKarpenterAdoptionStatusResponse) GetStatuses() []*NodePoolAdoptionStatus {
if x != nil {
- return x.Nrc
+ return x.Statuses
}
return nil
}
-type NodeRecommendationConfig struct {
+// NodePool validation
+type ReportNodePoolValidationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- PolicyContainersJson string `protobuf:"bytes,6,opt,name=policy_containers_json,json=policyContainersJson,proto3" json:"policy_containers_json,omitempty"`
- PolicyContainersYaml string `protobuf:"bytes,7,opt,name=policy_containers_yaml,json=policyContainersYaml,proto3" json:"policy_containers_yaml,omitempty"`
- Status RecommendationStatus `protobuf:"varint,11,opt,name=status,proto3,enum=api.v1.RecommendationStatus" json:"status,omitempty"`
- Error string `protobuf:"bytes,12,opt,name=error,proto3" json:"error,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- DeletedAt *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ NodepoolName string `protobuf:"bytes,2,opt,name=nodepool_name,json=nodepoolName,proto3" json:"nodepool_name,omitempty"`
+ NodeName string `protobuf:"bytes,3,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
+ InstanceType string `protobuf:"bytes,4,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"`
+ Zone string `protobuf:"bytes,5,opt,name=zone,proto3" json:"zone,omitempty"`
+ TeamId string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *NodeRecommendationConfig) Reset() {
- *x = NodeRecommendationConfig{}
+func (x *ReportNodePoolValidationRequest) Reset() {
+ *x = ReportNodePoolValidationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[212]
+ mi := &file_api_v1_recommendation_proto_msgTypes[234]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeRecommendationConfig) String() string {
+func (x *ReportNodePoolValidationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeRecommendationConfig) ProtoMessage() {}
+func (*ReportNodePoolValidationRequest) ProtoMessage() {}
-func (x *NodeRecommendationConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[212]
+func (x *ReportNodePoolValidationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[234]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17756,100 +21027,76 @@ func (x *NodeRecommendationConfig) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeRecommendationConfig.ProtoReflect.Descriptor instead.
-func (*NodeRecommendationConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{212}
-}
-
-func (x *NodeRecommendationConfig) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
+// Deprecated: Use ReportNodePoolValidationRequest.ProtoReflect.Descriptor instead.
+func (*ReportNodePoolValidationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{234}
}
-func (x *NodeRecommendationConfig) GetClusterId() string {
+func (x *ReportNodePoolValidationRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *NodeRecommendationConfig) GetPolicyContainersJson() string {
+func (x *ReportNodePoolValidationRequest) GetNodepoolName() string {
if x != nil {
- return x.PolicyContainersJson
+ return x.NodepoolName
}
return ""
}
-func (x *NodeRecommendationConfig) GetPolicyContainersYaml() string {
+func (x *ReportNodePoolValidationRequest) GetNodeName() string {
if x != nil {
- return x.PolicyContainersYaml
+ return x.NodeName
}
return ""
}
-func (x *NodeRecommendationConfig) GetStatus() RecommendationStatus {
- if x != nil {
- return x.Status
- }
- return RecommendationStatus_RECOMMENDATION_STATUS_UNSPECIFIED
-}
-
-func (x *NodeRecommendationConfig) GetError() string {
+func (x *ReportNodePoolValidationRequest) GetInstanceType() string {
if x != nil {
- return x.Error
+ return x.InstanceType
}
return ""
}
-func (x *NodeRecommendationConfig) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *NodeRecommendationConfig) GetUpdatedAt() *timestamppb.Timestamp {
+func (x *ReportNodePoolValidationRequest) GetZone() string {
if x != nil {
- return x.UpdatedAt
+ return x.Zone
}
- return nil
+ return ""
}
-func (x *NodeRecommendationConfig) GetDeletedAt() *timestamppb.Timestamp {
+func (x *ReportNodePoolValidationRequest) GetTeamId() string {
if x != nil {
- return x.DeletedAt
+ return x.TeamId
}
- return nil
+ return ""
}
-type SuggestedKarpenterConfigRequest struct {
+type ReportNodePoolValidationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
-
- ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *SuggestedKarpenterConfigRequest) Reset() {
- *x = SuggestedKarpenterConfigRequest{}
+func (x *ReportNodePoolValidationResponse) Reset() {
+ *x = ReportNodePoolValidationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[213]
+ mi := &file_api_v1_recommendation_proto_msgTypes[235]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SuggestedKarpenterConfigRequest) String() string {
+func (x *ReportNodePoolValidationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SuggestedKarpenterConfigRequest) ProtoMessage() {}
+func (*ReportNodePoolValidationResponse) ProtoMessage() {}
-func (x *SuggestedKarpenterConfigRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[213]
+func (x *ReportNodePoolValidationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[235]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17860,51 +21107,37 @@ func (x *SuggestedKarpenterConfigRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SuggestedKarpenterConfigRequest.ProtoReflect.Descriptor instead.
-func (*SuggestedKarpenterConfigRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{213}
-}
-
-func (x *SuggestedKarpenterConfigRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *SuggestedKarpenterConfigRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use ReportNodePoolValidationResponse.ProtoReflect.Descriptor instead.
+func (*ReportNodePoolValidationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{235}
}
-type SuggestedKarpenterConfigResponse struct {
+type GetNodePoolValidationsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NgToOriginal map[string]*NodeRecommendationConfig `protobuf:"bytes,1,rep,name=ng_to_original,json=ngToOriginal,proto3" json:"ng_to_original,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- NgToSuggested map[string]*NodeRecommendationConfig `protobuf:"bytes,11,rep,name=ng_to_suggested,json=ngToSuggested,proto3" json:"ng_to_suggested,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *SuggestedKarpenterConfigResponse) Reset() {
- *x = SuggestedKarpenterConfigResponse{}
+func (x *GetNodePoolValidationsRequest) Reset() {
+ *x = GetNodePoolValidationsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[214]
+ mi := &file_api_v1_recommendation_proto_msgTypes[236]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SuggestedKarpenterConfigResponse) String() string {
+func (x *GetNodePoolValidationsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SuggestedKarpenterConfigResponse) ProtoMessage() {}
+func (*GetNodePoolValidationsRequest) ProtoMessage() {}
-func (x *SuggestedKarpenterConfigResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[214]
+func (x *GetNodePoolValidationsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[236]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17915,52 +21148,54 @@ func (x *SuggestedKarpenterConfigResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SuggestedKarpenterConfigResponse.ProtoReflect.Descriptor instead.
-func (*SuggestedKarpenterConfigResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{214}
+// Deprecated: Use GetNodePoolValidationsRequest.ProtoReflect.Descriptor instead.
+func (*GetNodePoolValidationsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{236}
}
-func (x *SuggestedKarpenterConfigResponse) GetNgToOriginal() map[string]*NodeRecommendationConfig {
+func (x *GetNodePoolValidationsRequest) GetClusterId() string {
if x != nil {
- return x.NgToOriginal
+ return x.ClusterId
}
- return nil
+ return ""
}
-func (x *SuggestedKarpenterConfigResponse) GetNgToSuggested() map[string]*NodeRecommendationConfig {
+func (x *GetNodePoolValidationsRequest) GetTeamId() string {
if x != nil {
- return x.NgToSuggested
+ return x.TeamId
}
- return nil
+ return ""
}
-type GetAvailableKindsByTargetingFiltersRequest struct {
+type NodePoolValidationReport struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- TargetFilters *TargetFilters `protobuf:"bytes,3,opt,name=target_filters,json=targetFilters,proto3" json:"target_filters,omitempty"`
+ NodepoolName string `protobuf:"bytes,1,opt,name=nodepool_name,json=nodepoolName,proto3" json:"nodepool_name,omitempty"`
+ NodeName string `protobuf:"bytes,2,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
+ InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"`
+ Zone string `protobuf:"bytes,4,opt,name=zone,proto3" json:"zone,omitempty"`
+ ReportedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=reported_at,json=reportedAt,proto3" json:"reported_at,omitempty"`
}
-func (x *GetAvailableKindsByTargetingFiltersRequest) Reset() {
- *x = GetAvailableKindsByTargetingFiltersRequest{}
+func (x *NodePoolValidationReport) Reset() {
+ *x = NodePoolValidationReport{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[215]
+ mi := &file_api_v1_recommendation_proto_msgTypes[237]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAvailableKindsByTargetingFiltersRequest) String() string {
+func (x *NodePoolValidationReport) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAvailableKindsByTargetingFiltersRequest) ProtoMessage() {}
+func (*NodePoolValidationReport) ProtoMessage() {}
-func (x *GetAvailableKindsByTargetingFiltersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[215]
+func (x *NodePoolValidationReport) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[237]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -17971,62 +21206,71 @@ func (x *GetAvailableKindsByTargetingFiltersRequest) ProtoReflect() protoreflect
return mi.MessageOf(x)
}
-// Deprecated: Use GetAvailableKindsByTargetingFiltersRequest.ProtoReflect.Descriptor instead.
-func (*GetAvailableKindsByTargetingFiltersRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{215}
+// Deprecated: Use NodePoolValidationReport.ProtoReflect.Descriptor instead.
+func (*NodePoolValidationReport) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{237}
}
-func (x *GetAvailableKindsByTargetingFiltersRequest) GetTeamId() string {
+func (x *NodePoolValidationReport) GetNodepoolName() string {
if x != nil {
- return x.TeamId
+ return x.NodepoolName
}
return ""
}
-func (x *GetAvailableKindsByTargetingFiltersRequest) GetClusterIds() []string {
+func (x *NodePoolValidationReport) GetNodeName() string {
if x != nil {
- return x.ClusterIds
+ return x.NodeName
}
- return nil
+ return ""
}
-func (x *GetAvailableKindsByTargetingFiltersRequest) GetTargetFilters() *TargetFilters {
+func (x *NodePoolValidationReport) GetInstanceType() string {
if x != nil {
- return x.TargetFilters
+ return x.InstanceType
+ }
+ return ""
+}
+
+func (x *NodePoolValidationReport) GetZone() string {
+ if x != nil {
+ return x.Zone
+ }
+ return ""
+}
+
+func (x *NodePoolValidationReport) GetReportedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ReportedAt
}
return nil
}
-// SearchResourcesByTargetingFilters allows searching for resources that match targeting filter criteria
-type SearchResourcesByTargetingFiltersRequest struct {
+type GetNodePoolValidationsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
- ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Unique identifiers for the clusters.
- SearchQuery string `protobuf:"bytes,3,opt,name=search_query,json=searchQuery,proto3" json:"search_query,omitempty"` // Search term to match against resources.
- TargetFilterType TargetFilterType `protobuf:"varint,4,opt,name=target_filter_type,json=targetFilterType,proto3,enum=api.v1.TargetFilterType" json:"target_filter_type,omitempty"` // Type of filter to apply.
- TargetFilters *TargetFilters `protobuf:"bytes,5,opt,name=target_filters,json=targetFilters,proto3" json:"target_filters,omitempty"`
+ Validations []*NodePoolValidationReport `protobuf:"bytes,1,rep,name=validations,proto3" json:"validations,omitempty"`
}
-func (x *SearchResourcesByTargetingFiltersRequest) Reset() {
- *x = SearchResourcesByTargetingFiltersRequest{}
+func (x *GetNodePoolValidationsResponse) Reset() {
+ *x = GetNodePoolValidationsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[216]
+ mi := &file_api_v1_recommendation_proto_msgTypes[238]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SearchResourcesByTargetingFiltersRequest) String() string {
+func (x *GetNodePoolValidationsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SearchResourcesByTargetingFiltersRequest) ProtoMessage() {}
+func (*GetNodePoolValidationsResponse) ProtoMessage() {}
-func (x *SearchResourcesByTargetingFiltersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[216]
+func (x *GetNodePoolValidationsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[238]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18037,79 +21281,47 @@ func (x *SearchResourcesByTargetingFiltersRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use SearchResourcesByTargetingFiltersRequest.ProtoReflect.Descriptor instead.
-func (*SearchResourcesByTargetingFiltersRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{216}
-}
-
-func (x *SearchResourcesByTargetingFiltersRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *SearchResourcesByTargetingFiltersRequest) GetClusterIds() []string {
- if x != nil {
- return x.ClusterIds
- }
- return nil
-}
-
-func (x *SearchResourcesByTargetingFiltersRequest) GetSearchQuery() string {
- if x != nil {
- return x.SearchQuery
- }
- return ""
-}
-
-func (x *SearchResourcesByTargetingFiltersRequest) GetTargetFilterType() TargetFilterType {
- if x != nil {
- return x.TargetFilterType
- }
- return TargetFilterType_TARGET_FILTER_TYPE_UNSPECIFIED
+// Deprecated: Use GetNodePoolValidationsResponse.ProtoReflect.Descriptor instead.
+func (*GetNodePoolValidationsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{238}
}
-func (x *SearchResourcesByTargetingFiltersRequest) GetTargetFilters() *TargetFilters {
+func (x *GetNodePoolValidationsResponse) GetValidations() []*NodePoolValidationReport {
if x != nil {
- return x.TargetFilters
+ return x.Validations
}
return nil
}
-type TargetFilters struct {
+type WorkloadCompatibilityWarning struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NamespaceNames []string `protobuf:"bytes,1,rep,name=namespace_names,json=namespaceNames,proto3" json:"namespace_names,omitempty"`
- // optional LabelSelector namespace_selector = 1; // Target namespaces by labels
- // optional LabelSelector annotation_selector = 2; // Target workloads by annotations
- WorkloadNames []string `protobuf:"bytes,2,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
- NodeGroupNames []string `protobuf:"bytes,3,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
- Labels []string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"`
- KindFilter []K8SObjectKind `protobuf:"varint,5,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"` // Target specific workload kinds
- NamePattern *RegexPattern `protobuf:"bytes,6,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
- NamespacePattern *RegexPattern `protobuf:"bytes,7,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
+ WorkloadName string `protobuf:"bytes,1,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ WorkloadNamespace string `protobuf:"bytes,2,opt,name=workload_namespace,json=workloadNamespace,proto3" json:"workload_namespace,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ NodeGroup string `protobuf:"bytes,4,opt,name=node_group,json=nodeGroup,proto3" json:"node_group,omitempty"`
+ Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"`
}
-func (x *TargetFilters) Reset() {
- *x = TargetFilters{}
+func (x *WorkloadCompatibilityWarning) Reset() {
+ *x = WorkloadCompatibilityWarning{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[217]
+ mi := &file_api_v1_recommendation_proto_msgTypes[239]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *TargetFilters) String() string {
+func (x *WorkloadCompatibilityWarning) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*TargetFilters) ProtoMessage() {}
+func (*WorkloadCompatibilityWarning) ProtoMessage() {}
-func (x *TargetFilters) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[217]
+func (x *WorkloadCompatibilityWarning) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[239]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18120,85 +21332,71 @@ func (x *TargetFilters) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use TargetFilters.ProtoReflect.Descriptor instead.
-func (*TargetFilters) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{217}
-}
-
-func (x *TargetFilters) GetNamespaceNames() []string {
- if x != nil {
- return x.NamespaceNames
- }
- return nil
-}
-
-func (x *TargetFilters) GetWorkloadNames() []string {
- if x != nil {
- return x.WorkloadNames
- }
- return nil
+// Deprecated: Use WorkloadCompatibilityWarning.ProtoReflect.Descriptor instead.
+func (*WorkloadCompatibilityWarning) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{239}
}
-func (x *TargetFilters) GetNodeGroupNames() []string {
+func (x *WorkloadCompatibilityWarning) GetWorkloadName() string {
if x != nil {
- return x.NodeGroupNames
+ return x.WorkloadName
}
- return nil
+ return ""
}
-func (x *TargetFilters) GetLabels() []string {
+func (x *WorkloadCompatibilityWarning) GetWorkloadNamespace() string {
if x != nil {
- return x.Labels
+ return x.WorkloadNamespace
}
- return nil
+ return ""
}
-func (x *TargetFilters) GetKindFilter() []K8SObjectKind {
+func (x *WorkloadCompatibilityWarning) GetKind() string {
if x != nil {
- return x.KindFilter
+ return x.Kind
}
- return nil
+ return ""
}
-func (x *TargetFilters) GetNamePattern() *RegexPattern {
+func (x *WorkloadCompatibilityWarning) GetNodeGroup() string {
if x != nil {
- return x.NamePattern
+ return x.NodeGroup
}
- return nil
+ return ""
}
-func (x *TargetFilters) GetNamespacePattern() *RegexPattern {
+func (x *WorkloadCompatibilityWarning) GetReason() string {
if x != nil {
- return x.NamespacePattern
+ return x.Reason
}
- return nil
+ return ""
}
-type GetAvailableKindsByTargetingFiltersResponse struct {
+type ListNodePoliciesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kinds []K8SObjectKind `protobuf:"varint,1,rep,packed,name=kinds,proto3,enum=api.v1.K8SObjectKind" json:"kinds,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *GetAvailableKindsByTargetingFiltersResponse) Reset() {
- *x = GetAvailableKindsByTargetingFiltersResponse{}
+func (x *ListNodePoliciesRequest) Reset() {
+ *x = ListNodePoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[218]
+ mi := &file_api_v1_recommendation_proto_msgTypes[240]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetAvailableKindsByTargetingFiltersResponse) String() string {
+func (x *ListNodePoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetAvailableKindsByTargetingFiltersResponse) ProtoMessage() {}
+func (*ListNodePoliciesRequest) ProtoMessage() {}
-func (x *GetAvailableKindsByTargetingFiltersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[218]
+func (x *ListNodePoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[240]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18209,46 +21407,43 @@ func (x *GetAvailableKindsByTargetingFiltersResponse) ProtoReflect() protoreflec
return mi.MessageOf(x)
}
-// Deprecated: Use GetAvailableKindsByTargetingFiltersResponse.ProtoReflect.Descriptor instead.
-func (*GetAvailableKindsByTargetingFiltersResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{218}
+// Deprecated: Use ListNodePoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListNodePoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{240}
}
-func (x *GetAvailableKindsByTargetingFiltersResponse) GetKinds() []K8SObjectKind {
+func (x *ListNodePoliciesRequest) GetTeamId() string {
if x != nil {
- return x.Kinds
+ return x.TeamId
}
- return nil
+ return ""
}
-type SearchResourcesByTargetingFiltersResponse struct {
+type ListNodePoliciesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Namespaces []*NamespaceSearchResult `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
- Workloads []*WorkloadSearchResult `protobuf:"bytes,2,rep,name=workloads,proto3" json:"workloads,omitempty"`
- NodeGroups []*NodeGroupSearchResult `protobuf:"bytes,3,rep,name=node_groups,json=nodeGroups,proto3" json:"node_groups,omitempty"`
- Labels []*LabelSearchResult `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"`
+ Policies []*NodePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *SearchResourcesByTargetingFiltersResponse) Reset() {
- *x = SearchResourcesByTargetingFiltersResponse{}
+func (x *ListNodePoliciesResponse) Reset() {
+ *x = ListNodePoliciesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[219]
+ mi := &file_api_v1_recommendation_proto_msgTypes[241]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SearchResourcesByTargetingFiltersResponse) String() string {
+func (x *ListNodePoliciesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SearchResourcesByTargetingFiltersResponse) ProtoMessage() {}
+func (*ListNodePoliciesResponse) ProtoMessage() {}
-func (x *SearchResourcesByTargetingFiltersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[219]
+func (x *ListNodePoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[241]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18259,64 +21454,44 @@ func (x *SearchResourcesByTargetingFiltersResponse) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use SearchResourcesByTargetingFiltersResponse.ProtoReflect.Descriptor instead.
-func (*SearchResourcesByTargetingFiltersResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{219}
-}
-
-func (x *SearchResourcesByTargetingFiltersResponse) GetNamespaces() []*NamespaceSearchResult {
- if x != nil {
- return x.Namespaces
- }
- return nil
-}
-
-func (x *SearchResourcesByTargetingFiltersResponse) GetWorkloads() []*WorkloadSearchResult {
- if x != nil {
- return x.Workloads
- }
- return nil
-}
-
-func (x *SearchResourcesByTargetingFiltersResponse) GetNodeGroups() []*NodeGroupSearchResult {
- if x != nil {
- return x.NodeGroups
- }
- return nil
+// Deprecated: Use ListNodePoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListNodePoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{241}
}
-func (x *SearchResourcesByTargetingFiltersResponse) GetLabels() []*LabelSearchResult {
+func (x *ListNodePoliciesResponse) GetPolicies() []*NodePolicy {
if x != nil {
- return x.Labels
+ return x.Policies
}
return nil
}
-type NamespaceSearchResult struct {
+type UpdateNodePolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Policy *NodePolicy `protobuf:"bytes,11,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *NamespaceSearchResult) Reset() {
- *x = NamespaceSearchResult{}
+func (x *UpdateNodePolicyRequest) Reset() {
+ *x = UpdateNodePolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[220]
+ mi := &file_api_v1_recommendation_proto_msgTypes[242]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NamespaceSearchResult) String() string {
+func (x *UpdateNodePolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NamespaceSearchResult) ProtoMessage() {}
+func (*UpdateNodePolicyRequest) ProtoMessage() {}
-func (x *NamespaceSearchResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[220]
+func (x *UpdateNodePolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[242]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18327,44 +21502,50 @@ func (x *NamespaceSearchResult) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NamespaceSearchResult.ProtoReflect.Descriptor instead.
-func (*NamespaceSearchResult) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{220}
+// Deprecated: Use UpdateNodePolicyRequest.ProtoReflect.Descriptor instead.
+func (*UpdateNodePolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{242}
}
-func (x *NamespaceSearchResult) GetName() string {
+func (x *UpdateNodePolicyRequest) GetTeamId() string {
if x != nil {
- return x.Name
+ return x.TeamId
}
return ""
}
-type WorkloadSearchResult struct {
+func (x *UpdateNodePolicyRequest) GetPolicy() *NodePolicy {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type UpdateNodePolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Policy *NodePolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *WorkloadSearchResult) Reset() {
- *x = WorkloadSearchResult{}
+func (x *UpdateNodePolicyResponse) Reset() {
+ *x = UpdateNodePolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[221]
+ mi := &file_api_v1_recommendation_proto_msgTypes[243]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadSearchResult) String() string {
+func (x *UpdateNodePolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadSearchResult) ProtoMessage() {}
+func (*UpdateNodePolicyResponse) ProtoMessage() {}
-func (x *WorkloadSearchResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[221]
+func (x *UpdateNodePolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[243]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18375,50 +21556,53 @@ func (x *WorkloadSearchResult) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadSearchResult.ProtoReflect.Descriptor instead.
-func (*WorkloadSearchResult) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{221}
-}
-
-func (x *WorkloadSearchResult) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
+// Deprecated: Use UpdateNodePolicyResponse.ProtoReflect.Descriptor instead.
+func (*UpdateNodePolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{243}
}
-func (x *WorkloadSearchResult) GetName() string {
+func (x *UpdateNodePolicyResponse) GetPolicy() *NodePolicy {
if x != nil {
- return x.Name
+ return x.Policy
}
- return ""
+ return nil
}
-type NodeGroupSearchResult struct {
+type NodeGroupCheckpointStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ State NodeGroupCheckpointState `protobuf:"varint,1,opt,name=state,proto3,enum=api.v1.NodeGroupCheckpointState" json:"state,omitempty"`
+ // Associated node policy (empty when NOT_DZ_MANAGED).
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ PolicyName string `protobuf:"bytes,3,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"`
+ // For scope disclosure on the CTA: all node pool names this policy compiles
+ // to / clusters it targets — toggling the label affects all of them.
+ SharedNodePoolNames []string `protobuf:"bytes,4,rep,name=shared_node_pool_names,json=sharedNodePoolNames,proto3" json:"shared_node_pool_names,omitempty"`
+ SharedClusterIds []string `protobuf:"bytes,5,rep,name=shared_cluster_ids,json=sharedClusterIds,proto3" json:"shared_cluster_ids,omitempty"`
+ // Why this NG is in CONFIGURED (vs ENABLED). UNSPECIFIED for non-CONFIGURED
+ // states.
+ Reason CheckpointReason `protobuf:"varint,6,opt,name=reason,proto3,enum=api.v1.CheckpointReason" json:"reason,omitempty"`
}
-func (x *NodeGroupSearchResult) Reset() {
- *x = NodeGroupSearchResult{}
+func (x *NodeGroupCheckpointStatus) Reset() {
+ *x = NodeGroupCheckpointStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[222]
+ mi := &file_api_v1_recommendation_proto_msgTypes[244]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeGroupSearchResult) String() string {
+func (x *NodeGroupCheckpointStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeGroupSearchResult) ProtoMessage() {}
+func (*NodeGroupCheckpointStatus) ProtoMessage() {}
-func (x *NodeGroupSearchResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[222]
+func (x *NodeGroupCheckpointStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[244]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18429,44 +21613,79 @@ func (x *NodeGroupSearchResult) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeGroupSearchResult.ProtoReflect.Descriptor instead.
-func (*NodeGroupSearchResult) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{222}
+// Deprecated: Use NodeGroupCheckpointStatus.ProtoReflect.Descriptor instead.
+func (*NodeGroupCheckpointStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{244}
}
-func (x *NodeGroupSearchResult) GetName() string {
+func (x *NodeGroupCheckpointStatus) GetState() NodeGroupCheckpointState {
if x != nil {
- return x.Name
+ return x.State
+ }
+ return NodeGroupCheckpointState_NODE_GROUP_CHECKPOINT_STATE_UNSPECIFIED
+}
+
+func (x *NodeGroupCheckpointStatus) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
}
return ""
}
-type LabelSearchResult struct {
+func (x *NodeGroupCheckpointStatus) GetPolicyName() string {
+ if x != nil {
+ return x.PolicyName
+ }
+ return ""
+}
+
+func (x *NodeGroupCheckpointStatus) GetSharedNodePoolNames() []string {
+ if x != nil {
+ return x.SharedNodePoolNames
+ }
+ return nil
+}
+
+func (x *NodeGroupCheckpointStatus) GetSharedClusterIds() []string {
+ if x != nil {
+ return x.SharedClusterIds
+ }
+ return nil
+}
+
+func (x *NodeGroupCheckpointStatus) GetReason() CheckpointReason {
+ if x != nil {
+ return x.Reason
+ }
+ return CheckpointReason_CHECKPOINT_REASON_UNSPECIFIED
+}
+
+type GetNodeGroupsCheckpointStatusRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}
-func (x *LabelSearchResult) Reset() {
- *x = LabelSearchResult{}
+func (x *GetNodeGroupsCheckpointStatusRequest) Reset() {
+ *x = GetNodeGroupsCheckpointStatusRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[223]
+ mi := &file_api_v1_recommendation_proto_msgTypes[245]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *LabelSearchResult) String() string {
+func (x *GetNodeGroupsCheckpointStatusRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*LabelSearchResult) ProtoMessage() {}
+func (*GetNodeGroupsCheckpointStatusRequest) ProtoMessage() {}
-func (x *LabelSearchResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[223]
+func (x *GetNodeGroupsCheckpointStatusRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[245]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18477,50 +21696,51 @@ func (x *LabelSearchResult) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use LabelSearchResult.ProtoReflect.Descriptor instead.
-func (*LabelSearchResult) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{223}
+// Deprecated: Use GetNodeGroupsCheckpointStatusRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupsCheckpointStatusRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{245}
}
-func (x *LabelSearchResult) GetKey() string {
+func (x *GetNodeGroupsCheckpointStatusRequest) GetTeamId() string {
if x != nil {
- return x.Key
+ return x.TeamId
}
return ""
}
-func (x *LabelSearchResult) GetValue() string {
+func (x *GetNodeGroupsCheckpointStatusRequest) GetClusterId() string {
if x != nil {
- return x.Value
+ return x.ClusterId
}
return ""
}
-type CreateNodePolicyTargetsRequest struct {
+type GetNodeGroupsCheckpointStatusResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Targets []*NodePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+ // Keyed by node group name.
+ ByNodeGroup map[string]*NodeGroupCheckpointStatus `protobuf:"bytes,1,rep,name=by_node_group,json=byNodeGroup,proto3" json:"by_node_group,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
-func (x *CreateNodePolicyTargetsRequest) Reset() {
- *x = CreateNodePolicyTargetsRequest{}
+func (x *GetNodeGroupsCheckpointStatusResponse) Reset() {
+ *x = GetNodeGroupsCheckpointStatusResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[224]
+ mi := &file_api_v1_recommendation_proto_msgTypes[246]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateNodePolicyTargetsRequest) String() string {
+func (x *GetNodeGroupsCheckpointStatusResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateNodePolicyTargetsRequest) ProtoMessage() {}
+func (*GetNodeGroupsCheckpointStatusResponse) ProtoMessage() {}
-func (x *CreateNodePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[224]
+func (x *GetNodeGroupsCheckpointStatusResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[246]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18531,43 +21751,46 @@ func (x *CreateNodePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CreateNodePolicyTargetsRequest.ProtoReflect.Descriptor instead.
-func (*CreateNodePolicyTargetsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{224}
+// Deprecated: Use GetNodeGroupsCheckpointStatusResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeGroupsCheckpointStatusResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{246}
}
-func (x *CreateNodePolicyTargetsRequest) GetTargets() []*NodePolicyTarget {
+func (x *GetNodeGroupsCheckpointStatusResponse) GetByNodeGroup() map[string]*NodeGroupCheckpointStatus {
if x != nil {
- return x.Targets
+ return x.ByNodeGroup
}
return nil
}
-type CreateNodePolicyTargetsResponse struct {
+type SetNodePolicyCheckpointLabelRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Targets []*NodePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // true adds dakr.devzero.io/checkpoint-node=true; false removes the key.
+ Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
}
-func (x *CreateNodePolicyTargetsResponse) Reset() {
- *x = CreateNodePolicyTargetsResponse{}
+func (x *SetNodePolicyCheckpointLabelRequest) Reset() {
+ *x = SetNodePolicyCheckpointLabelRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[225]
+ mi := &file_api_v1_recommendation_proto_msgTypes[247]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateNodePolicyTargetsResponse) String() string {
+func (x *SetNodePolicyCheckpointLabelRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateNodePolicyTargetsResponse) ProtoMessage() {}
+func (*SetNodePolicyCheckpointLabelRequest) ProtoMessage() {}
-func (x *CreateNodePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[225]
+func (x *SetNodePolicyCheckpointLabelRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[247]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18578,43 +21801,57 @@ func (x *CreateNodePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CreateNodePolicyTargetsResponse.ProtoReflect.Descriptor instead.
-func (*CreateNodePolicyTargetsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{225}
+// Deprecated: Use SetNodePolicyCheckpointLabelRequest.ProtoReflect.Descriptor instead.
+func (*SetNodePolicyCheckpointLabelRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{247}
}
-func (x *CreateNodePolicyTargetsResponse) GetTargets() []*NodePolicyTarget {
+func (x *SetNodePolicyCheckpointLabelRequest) GetTeamId() string {
if x != nil {
- return x.Targets
+ return x.TeamId
}
- return nil
+ return ""
}
-type ListNodePolicyTargetsRequest struct {
+func (x *SetNodePolicyCheckpointLabelRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SetNodePolicyCheckpointLabelRequest) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+type SetNodePolicyCheckpointLabelResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}
-func (x *ListNodePolicyTargetsRequest) Reset() {
- *x = ListNodePolicyTargetsRequest{}
+func (x *SetNodePolicyCheckpointLabelResponse) Reset() {
+ *x = SetNodePolicyCheckpointLabelResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[226]
+ mi := &file_api_v1_recommendation_proto_msgTypes[248]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListNodePolicyTargetsRequest) String() string {
+func (x *SetNodePolicyCheckpointLabelResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListNodePolicyTargetsRequest) ProtoMessage() {}
+func (*SetNodePolicyCheckpointLabelResponse) ProtoMessage() {}
-func (x *ListNodePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[226]
+func (x *SetNodePolicyCheckpointLabelResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[248]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18625,43 +21862,44 @@ func (x *ListNodePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListNodePolicyTargetsRequest.ProtoReflect.Descriptor instead.
-func (*ListNodePolicyTargetsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{226}
+// Deprecated: Use SetNodePolicyCheckpointLabelResponse.ProtoReflect.Descriptor instead.
+func (*SetNodePolicyCheckpointLabelResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{248}
}
-func (x *ListNodePolicyTargetsRequest) GetTeamId() string {
+func (x *SetNodePolicyCheckpointLabelResponse) GetSuccess() bool {
if x != nil {
- return x.TeamId
+ return x.Success
}
- return ""
+ return false
}
-type ListNodePolicyTargetsResponse struct {
+type DeleteNodePolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Targets []*NodePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
}
-func (x *ListNodePolicyTargetsResponse) Reset() {
- *x = ListNodePolicyTargetsResponse{}
+func (x *DeleteNodePolicyRequest) Reset() {
+ *x = DeleteNodePolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[227]
+ mi := &file_api_v1_recommendation_proto_msgTypes[249]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListNodePolicyTargetsResponse) String() string {
+func (x *DeleteNodePolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListNodePolicyTargetsResponse) ProtoMessage() {}
+func (*DeleteNodePolicyRequest) ProtoMessage() {}
-func (x *ListNodePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[227]
+func (x *DeleteNodePolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[249]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18672,90 +21910,52 @@ func (x *ListNodePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListNodePolicyTargetsResponse.ProtoReflect.Descriptor instead.
-func (*ListNodePolicyTargetsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{227}
+// Deprecated: Use DeleteNodePolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeleteNodePolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{249}
}
-func (x *ListNodePolicyTargetsResponse) GetTargets() []*NodePolicyTarget {
+func (x *DeleteNodePolicyRequest) GetTeamId() string {
if x != nil {
- return x.Targets
- }
- return nil
-}
-
-type UpdateNodePolicyTargetRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Target *NodePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
-}
-
-func (x *UpdateNodePolicyTargetRequest) Reset() {
- *x = UpdateNodePolicyTargetRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[228]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpdateNodePolicyTargetRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateNodePolicyTargetRequest) ProtoMessage() {}
-
-func (x *UpdateNodePolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[228]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+ return x.TeamId
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateNodePolicyTargetRequest.ProtoReflect.Descriptor instead.
-func (*UpdateNodePolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{228}
+ return ""
}
-func (x *UpdateNodePolicyTargetRequest) GetTarget() *NodePolicyTarget {
+func (x *DeleteNodePolicyRequest) GetPolicyId() string {
if x != nil {
- return x.Target
+ return x.PolicyId
}
- return nil
+ return ""
}
-type UpdateNodePolicyTargetResponse struct {
+type DeleteNodePolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Target *NodePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ // Number of NodePolicyTargets that were cascade-deleted along with the policy.
+ DeletedTargetCount int32 `protobuf:"varint,2,opt,name=deleted_target_count,json=deletedTargetCount,proto3" json:"deleted_target_count,omitempty"`
}
-func (x *UpdateNodePolicyTargetResponse) Reset() {
- *x = UpdateNodePolicyTargetResponse{}
+func (x *DeleteNodePolicyResponse) Reset() {
+ *x = DeleteNodePolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[229]
+ mi := &file_api_v1_recommendation_proto_msgTypes[250]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateNodePolicyTargetResponse) String() string {
+func (x *DeleteNodePolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateNodePolicyTargetResponse) ProtoMessage() {}
+func (*DeleteNodePolicyResponse) ProtoMessage() {}
-func (x *UpdateNodePolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[229]
+func (x *DeleteNodePolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[250]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18766,58 +21966,126 @@ func (x *UpdateNodePolicyTargetResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateNodePolicyTargetResponse.ProtoReflect.Descriptor instead.
-func (*UpdateNodePolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{229}
+// Deprecated: Use DeleteNodePolicyResponse.ProtoReflect.Descriptor instead.
+func (*DeleteNodePolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{250}
}
-func (x *UpdateNodePolicyTargetResponse) GetTarget() *NodePolicyTarget {
+func (x *DeleteNodePolicyResponse) GetSuccess() bool {
if x != nil {
- return x.Target
+ return x.Success
}
- return nil
+ return false
}
-type NodePolicyTarget struct {
+func (x *DeleteNodePolicyResponse) GetDeletedTargetCount() int32 {
+ if x != nil {
+ return x.DeletedTargetCount
+ }
+ return 0
+}
+
+type NodePolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
TeamId string `protobuf:"bytes,4,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- // Invariant: at most 1 entry. Server rejects >1. Will be narrowed to a scalar once all clients migrate.
- ClusterIds []string `protobuf:"bytes,5,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // uuid[]
- PolicyId string `protobuf:"bytes,6,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- Enabled bool `protobuf:"varint,11,opt,name=enabled,proto3" json:"enabled,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,110,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,111,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- DeletedAt *timestamppb.Timestamp `protobuf:"bytes,112,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
- // Runtime status conditions read from the compiled Karpenter NodePool in the
- // target cluster (e.g. ZonalShiftReady / ZonalShiftActive). Populated by
- // ListNodePolicyTargets via a join against k8s_karpenter_resources. Empty
- // when no conditions are observed for this target.
- Status *NodePolicyTargetStatus `protobuf:"bytes,120,opt,name=status,proto3" json:"status,omitempty"`
+ // Cross-cloud core
+ InstanceCategories *LabelSelector `protobuf:"bytes,10,opt,name=instance_categories,json=instanceCategories,proto3" json:"instance_categories,omitempty"` // abstract, per-cloud mapping; UI: Family; e.g., D (Azure), m (AWS)
+ InstanceFamilies *LabelSelector `protobuf:"bytes,11,opt,name=instance_families,json=instanceFamilies,proto3" json:"instance_families,omitempty"` // abstract, per-cloud mapping (c5, m5d, r4, etc)
+ InstanceCpus *LabelSelector `protobuf:"bytes,12,opt,name=instance_cpus,json=instanceCpus,proto3" json:"instance_cpus,omitempty"` // cpu count in cores (4, 8, 1, 2, etc)
+ InstanceHypervisors *LabelSelector `protobuf:"bytes,13,opt,name=instance_hypervisors,json=instanceHypervisors,proto3" json:"instance_hypervisors,omitempty"` // self explanatory
+ InstanceGenerations *LabelSelector `protobuf:"bytes,14,opt,name=instance_generations,json=instanceGenerations,proto3" json:"instance_generations,omitempty"` // self explanatory; UI: Generation; e.g., 4 (Azure), 5 (AWS)
+ InstanceSizes *LabelSelector `protobuf:"bytes,15,opt,name=instance_sizes,json=instanceSizes,proto3" json:"instance_sizes,omitempty"` // UI: Size; eg: Standard_D4s (Azure), large (AWS)
+ InstanceShapes *LabelSelector `protobuf:"bytes,116,opt,name=instance_shapes,json=instanceShapes,proto3" json:"instance_shapes,omitempty"` // GCP-only: standard/highcpu/highmem shape token
+ InstanceTypes *LabelSelector `protobuf:"bytes,16,opt,name=instance_types,json=instanceTypes,proto3" json:"instance_types,omitempty"` // UI: Type; eg: Standard_D4s_v2 (Azure), m4.2xlarge (AWS)
+ // AWS only — karpenter.k8s.aws/instance-local-nvme. Ephemeral NVMe GiB per
+ // node. Karpenter-provider-gcp/-azure/-oci have no equivalent label; this
+ // field is silently dropped on the compile path for those providers.
+ InstanceLocalNvme *LabelSelector `protobuf:"bytes,113,opt,name=instance_local_nvme,json=instanceLocalNvme,proto3" json:"instance_local_nvme,omitempty"`
+ InstanceCategoriesTip *string `protobuf:"bytes,26,opt,name=instance_categories_tip,json=instanceCategoriesTip,proto3,oneof" json:"instance_categories_tip,omitempty"`
+ InstanceFamiliesTip *string `protobuf:"bytes,27,opt,name=instance_families_tip,json=instanceFamiliesTip,proto3,oneof" json:"instance_families_tip,omitempty"`
+ InstanceCpusTip *string `protobuf:"bytes,28,opt,name=instance_cpus_tip,json=instanceCpusTip,proto3,oneof" json:"instance_cpus_tip,omitempty"`
+ InstanceHypervisorsTip *string `protobuf:"bytes,29,opt,name=instance_hypervisors_tip,json=instanceHypervisorsTip,proto3,oneof" json:"instance_hypervisors_tip,omitempty"`
+ InstanceGenerationsTip *string `protobuf:"bytes,30,opt,name=instance_generations_tip,json=instanceGenerationsTip,proto3,oneof" json:"instance_generations_tip,omitempty"`
+ InstanceSizesTip *string `protobuf:"bytes,31,opt,name=instance_sizes_tip,json=instanceSizesTip,proto3,oneof" json:"instance_sizes_tip,omitempty"`
+ InstanceShapesTip *string `protobuf:"bytes,117,opt,name=instance_shapes_tip,json=instanceShapesTip,proto3,oneof" json:"instance_shapes_tip,omitempty"`
+ InstanceLocalNvmeTip *string `protobuf:"bytes,114,opt,name=instance_local_nvme_tip,json=instanceLocalNvmeTip,proto3,oneof" json:"instance_local_nvme_tip,omitempty"`
+ Zones *LabelSelector `protobuf:"bytes,36,opt,name=zones,proto3" json:"zones,omitempty"` // abstract, per-cloud mapping
+ Architectures *LabelSelector `protobuf:"bytes,37,opt,name=architectures,proto3" json:"architectures,omitempty"` // amd64, arm64
+ CapacityTypes *LabelSelector `protobuf:"bytes,38,opt,name=capacity_types,json=capacityTypes,proto3" json:"capacity_types,omitempty"` // spot, on-demand, reserved
+ OperatingSystems *LabelSelector `protobuf:"bytes,39,opt,name=operating_systems,json=operatingSystems,proto3" json:"operating_systems,omitempty"` // linux, windows
+ Weight int32 `protobuf:"varint,40,opt,name=weight,proto3" json:"weight,omitempty"`
+ ZonesTip *string `protobuf:"bytes,45,opt,name=zones_tip,json=zonesTip,proto3,oneof" json:"zones_tip,omitempty"`
+ ArchitecturesTip *string `protobuf:"bytes,46,opt,name=architectures_tip,json=architecturesTip,proto3,oneof" json:"architectures_tip,omitempty"`
+ CapacityTypeTip *string `protobuf:"bytes,47,opt,name=capacity_type_tip,json=capacityTypeTip,proto3,oneof" json:"capacity_type_tip,omitempty"`
+ OperatingSystemsTip *string `protobuf:"bytes,48,opt,name=operating_systems_tip,json=operatingSystemsTip,proto3,oneof" json:"operating_systems_tip,omitempty"`
+ Labels map[string]string `protobuf:"bytes,51,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Taints []*Taint `protobuf:"bytes,52,rep,name=taints,proto3" json:"taints,omitempty"`
+ Disruption *DisruptionPolicy `protobuf:"bytes,53,opt,name=disruption,proto3" json:"disruption,omitempty"`
+ Limits *ResourceLimits `protobuf:"bytes,54,opt,name=limits,proto3" json:"limits,omitempty"`
+ StartupTaints []*Taint `protobuf:"bytes,55,rep,name=startup_taints,json=startupTaints,proto3" json:"startup_taints,omitempty"`
+ TaintsTip *string `protobuf:"bytes,57,opt,name=taints_tip,json=taintsTip,proto3,oneof" json:"taints_tip,omitempty"`
+ DisruptionsTip *string `protobuf:"bytes,58,opt,name=disruptions_tip,json=disruptionsTip,proto3,oneof" json:"disruptions_tip,omitempty"`
+ LimitsTip *string `protobuf:"bytes,59,opt,name=limits_tip,json=limitsTip,proto3,oneof" json:"limits_tip,omitempty"`
+ StartupTaintsTip *string `protobuf:"bytes,60,opt,name=startup_taints_tip,json=startupTaintsTip,proto3,oneof" json:"startup_taints_tip,omitempty"`
+ MasterOverrideRoleName string `protobuf:"bytes,61,opt,name=master_override_role_name,json=masterOverrideRoleName,proto3" json:"master_override_role_name,omitempty"`
+ NodePoolName string `protobuf:"bytes,71,opt,name=node_pool_name,json=nodePoolName,proto3" json:"node_pool_name,omitempty"`
+ NodeClassName string `protobuf:"bytes,72,opt,name=node_class_name,json=nodeClassName,proto3" json:"node_class_name,omitempty"`
+ // Provider-specific overrides
+ Aws *AWSNodeClassSpec `protobuf:"bytes,81,opt,name=aws,proto3" json:"aws,omitempty"`
+ Gcp *GCPNodeClassSpec `protobuf:"bytes,82,opt,name=gcp,proto3" json:"gcp,omitempty"`
+ Azure *AzureNodeClassSpec `protobuf:"bytes,83,opt,name=azure,proto3" json:"azure,omitempty"`
+ Oci *OCINodeClassSpec `protobuf:"bytes,84,opt,name=oci,proto3" json:"oci,omitempty"`
+ CloudProviderId *int64 `protobuf:"varint,85,opt,name=cloud_provider_id,json=cloudProviderId,proto3,oneof" json:"cloud_provider_id,omitempty"`
+ CloudProvider *CloudProvider `protobuf:"bytes,86,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"`
+ // Cloud-agnostic opt-in for AZ outage handling (AWS ARC zonal shift today;
+ // analogous GCP behavior planned). The compile step translates this to
+ // provider-specific annotations on the Karpenter NodePool.
+ ZonalShift *ZonalShiftConfig `protobuf:"bytes,90,opt,name=zonal_shift,json=zonalShift,proto3" json:"zonal_shift,omitempty"`
+ // Raw escape hatch for node pool
+ Raw []*RawKarpenterSpec `protobuf:"bytes,100,rep,name=raw,proto3" json:"raw,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,110,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,111,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ DeletedAt *timestamppb.Timestamp `protobuf:"bytes,112,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
+ // "dakr" (user-authored, pushed to cluster) or "cluster" (read-only,
+ // computed from Karpenter CRDs NOT labeled devzero.io/managed-by=dakr — i.e.
+ // anything dakr does not own; see repositories.scopeNotDakrManaged).
+ Source string `protobuf:"bytes,115,opt,name=source,proto3" json:"source,omitempty"`
+ // For source == "cluster" only: the cluster whose Karpenter NodePool this
+ // policy mirrors. A cluster-managed policy belongs to exactly one cluster and
+ // has no NodePolicyTargets, so this is the frontend's only way to scope it
+ // (e.g. for suggestions). Empty for dakr-authored policies.
+ SourceClusterId string `protobuf:"bytes,118,opt,name=source_cluster_id,json=sourceClusterId,proto3" json:"source_cluster_id,omitempty"`
+ // For source == "cluster" only: NodePool requirement keys on the mirrored CRD
+ // that this message has no field for (Azure/GCP SKU keys, custom label
+ // requirements). Computed per request like source and source_cluster_id, never
+ // stored, and empty for dakr-authored policies — which are authoritative by
+ // construction, since dakr compiled the NodePool from them.
+ UnrepresentedRequirementKeys []string `protobuf:"bytes,119,rep,name=unrepresented_requirement_keys,json=unrepresentedRequirementKeys,proto3" json:"unrepresented_requirement_keys,omitempty"`
}
-func (x *NodePolicyTarget) Reset() {
- *x = NodePolicyTarget{}
+func (x *NodePolicy) Reset() {
+ *x = NodePolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[230]
+ mi := &file_api_v1_recommendation_proto_msgTypes[251]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodePolicyTarget) String() string {
+func (x *NodePolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodePolicyTarget) ProtoMessage() {}
+func (*NodePolicy) ProtoMessage() {}
-func (x *NodePolicyTarget) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[230]
+func (x *NodePolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[251]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -18828,456 +22096,431 @@ func (x *NodePolicyTarget) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodePolicyTarget.ProtoReflect.Descriptor instead.
-func (*NodePolicyTarget) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{230}
+// Deprecated: Use NodePolicy.ProtoReflect.Descriptor instead.
+func (*NodePolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{251}
}
-func (x *NodePolicyTarget) GetTargetId() string {
+func (x *NodePolicy) GetId() string {
if x != nil {
- return x.TargetId
+ return x.Id
}
return ""
}
-func (x *NodePolicyTarget) GetName() string {
+func (x *NodePolicy) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *NodePolicyTarget) GetDescription() string {
+func (x *NodePolicy) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
-func (x *NodePolicyTarget) GetTeamId() string {
+func (x *NodePolicy) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *NodePolicyTarget) GetClusterIds() []string {
+func (x *NodePolicy) GetInstanceCategories() *LabelSelector {
if x != nil {
- return x.ClusterIds
+ return x.InstanceCategories
}
return nil
}
-func (x *NodePolicyTarget) GetPolicyId() string {
+func (x *NodePolicy) GetInstanceFamilies() *LabelSelector {
if x != nil {
- return x.PolicyId
+ return x.InstanceFamilies
}
- return ""
+ return nil
}
-func (x *NodePolicyTarget) GetEnabled() bool {
+func (x *NodePolicy) GetInstanceCpus() *LabelSelector {
if x != nil {
- return x.Enabled
+ return x.InstanceCpus
}
- return false
+ return nil
}
-func (x *NodePolicyTarget) GetCreatedAt() *timestamppb.Timestamp {
+func (x *NodePolicy) GetInstanceHypervisors() *LabelSelector {
if x != nil {
- return x.CreatedAt
+ return x.InstanceHypervisors
}
return nil
}
-func (x *NodePolicyTarget) GetUpdatedAt() *timestamppb.Timestamp {
+func (x *NodePolicy) GetInstanceGenerations() *LabelSelector {
if x != nil {
- return x.UpdatedAt
+ return x.InstanceGenerations
}
return nil
}
-func (x *NodePolicyTarget) GetDeletedAt() *timestamppb.Timestamp {
+func (x *NodePolicy) GetInstanceSizes() *LabelSelector {
if x != nil {
- return x.DeletedAt
+ return x.InstanceSizes
}
return nil
}
-func (x *NodePolicyTarget) GetStatus() *NodePolicyTargetStatus {
+func (x *NodePolicy) GetInstanceShapes() *LabelSelector {
if x != nil {
- return x.Status
+ return x.InstanceShapes
}
return nil
}
-type NodePolicyCondition struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // e.g. "ZonalShiftReady", "ZonalShiftActive"
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
- // "True" | "False" | "Unknown"
- Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
- // Machine-readable reason code (e.g. "Ready", "ZonePinned", "NoFallbackZones",
- // "NoActiveShift", "AwayFrom", "ZoneConstraintConflict").
- Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
- // Human-readable detail (e.g. impacted zone names).
- Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
- LastTransitionTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"`
+func (x *NodePolicy) GetInstanceTypes() *LabelSelector {
+ if x != nil {
+ return x.InstanceTypes
+ }
+ return nil
}
-func (x *NodePolicyCondition) Reset() {
- *x = NodePolicyCondition{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[231]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *NodePolicy) GetInstanceLocalNvme() *LabelSelector {
+ if x != nil {
+ return x.InstanceLocalNvme
}
+ return nil
}
-func (x *NodePolicyCondition) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *NodePolicy) GetInstanceCategoriesTip() string {
+ if x != nil && x.InstanceCategoriesTip != nil {
+ return *x.InstanceCategoriesTip
+ }
+ return ""
}
-func (*NodePolicyCondition) ProtoMessage() {}
+func (x *NodePolicy) GetInstanceFamiliesTip() string {
+ if x != nil && x.InstanceFamiliesTip != nil {
+ return *x.InstanceFamiliesTip
+ }
+ return ""
+}
-func (x *NodePolicyCondition) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[231]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *NodePolicy) GetInstanceCpusTip() string {
+ if x != nil && x.InstanceCpusTip != nil {
+ return *x.InstanceCpusTip
}
- return mi.MessageOf(x)
+ return ""
}
-// Deprecated: Use NodePolicyCondition.ProtoReflect.Descriptor instead.
-func (*NodePolicyCondition) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{231}
+func (x *NodePolicy) GetInstanceHypervisorsTip() string {
+ if x != nil && x.InstanceHypervisorsTip != nil {
+ return *x.InstanceHypervisorsTip
+ }
+ return ""
}
-func (x *NodePolicyCondition) GetType() string {
- if x != nil {
- return x.Type
+func (x *NodePolicy) GetInstanceGenerationsTip() string {
+ if x != nil && x.InstanceGenerationsTip != nil {
+ return *x.InstanceGenerationsTip
}
return ""
}
-func (x *NodePolicyCondition) GetStatus() string {
- if x != nil {
- return x.Status
+func (x *NodePolicy) GetInstanceSizesTip() string {
+ if x != nil && x.InstanceSizesTip != nil {
+ return *x.InstanceSizesTip
}
return ""
}
-func (x *NodePolicyCondition) GetReason() string {
- if x != nil {
- return x.Reason
+func (x *NodePolicy) GetInstanceShapesTip() string {
+ if x != nil && x.InstanceShapesTip != nil {
+ return *x.InstanceShapesTip
}
return ""
}
-func (x *NodePolicyCondition) GetMessage() string {
- if x != nil {
- return x.Message
+func (x *NodePolicy) GetInstanceLocalNvmeTip() string {
+ if x != nil && x.InstanceLocalNvmeTip != nil {
+ return *x.InstanceLocalNvmeTip
}
return ""
}
-func (x *NodePolicyCondition) GetLastTransitionTime() *timestamppb.Timestamp {
+func (x *NodePolicy) GetZones() *LabelSelector {
if x != nil {
- return x.LastTransitionTime
+ return x.Zones
}
return nil
}
-type NodePolicyTargetStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Conditions []*NodePolicyCondition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"`
-}
-
-func (x *NodePolicyTargetStatus) Reset() {
- *x = NodePolicyTargetStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[232]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *NodePolicy) GetArchitectures() *LabelSelector {
+ if x != nil {
+ return x.Architectures
}
+ return nil
}
-func (x *NodePolicyTargetStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NodePolicyTargetStatus) ProtoMessage() {}
-
-func (x *NodePolicyTargetStatus) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[232]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *NodePolicy) GetCapacityTypes() *LabelSelector {
+ if x != nil {
+ return x.CapacityTypes
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NodePolicyTargetStatus.ProtoReflect.Descriptor instead.
-func (*NodePolicyTargetStatus) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{232}
+ return nil
}
-func (x *NodePolicyTargetStatus) GetConditions() []*NodePolicyCondition {
+func (x *NodePolicy) GetOperatingSystems() *LabelSelector {
if x != nil {
- return x.Conditions
+ return x.OperatingSystems
}
return nil
}
-// Cloud-agnostic config for how a node policy should react to AZ outage
-// signals from the cloud provider (AWS ARC zonal shift today; GCP analogue
-// planned). The compile step maps these intents to provider-specific
-// annotations on the resulting Karpenter NodePool.
-type ZonalShiftConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Master opt-in. When false the other two fields are ignored.
- RespectZonalShift bool `protobuf:"varint,1,opt,name=respect_zonal_shift,json=respectZonalShift,proto3" json:"respect_zonal_shift,omitempty"`
- // Also terminate existing nodes in the impacted zone, forcing reschedule.
- // Respects pod disruption budgets. Only meaningful when respect_zonal_shift is true.
- EvictImpactedNodes bool `protobuf:"varint,2,opt,name=evict_impacted_nodes,json=evictImpactedNodes,proto3" json:"evict_impacted_nodes,omitempty"`
- // If the policy is pinned to a single zone and that zone is impacted, expand
- // to other zones available on the node class. Only meaningful when
- // respect_zonal_shift is true.
- AllowZoneFallback bool `protobuf:"varint,3,opt,name=allow_zone_fallback,json=allowZoneFallback,proto3" json:"allow_zone_fallback,omitempty"`
+func (x *NodePolicy) GetWeight() int32 {
+ if x != nil {
+ return x.Weight
+ }
+ return 0
}
-func (x *ZonalShiftConfig) Reset() {
- *x = ZonalShiftConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[233]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *NodePolicy) GetZonesTip() string {
+ if x != nil && x.ZonesTip != nil {
+ return *x.ZonesTip
}
+ return ""
}
-func (x *ZonalShiftConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *NodePolicy) GetArchitecturesTip() string {
+ if x != nil && x.ArchitecturesTip != nil {
+ return *x.ArchitecturesTip
+ }
+ return ""
}
-func (*ZonalShiftConfig) ProtoMessage() {}
-
-func (x *ZonalShiftConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[233]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *NodePolicy) GetCapacityTypeTip() string {
+ if x != nil && x.CapacityTypeTip != nil {
+ return *x.CapacityTypeTip
}
- return mi.MessageOf(x)
+ return ""
}
-// Deprecated: Use ZonalShiftConfig.ProtoReflect.Descriptor instead.
-func (*ZonalShiftConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{233}
+func (x *NodePolicy) GetOperatingSystemsTip() string {
+ if x != nil && x.OperatingSystemsTip != nil {
+ return *x.OperatingSystemsTip
+ }
+ return ""
}
-func (x *ZonalShiftConfig) GetRespectZonalShift() bool {
+func (x *NodePolicy) GetLabels() map[string]string {
if x != nil {
- return x.RespectZonalShift
+ return x.Labels
}
- return false
+ return nil
}
-func (x *ZonalShiftConfig) GetEvictImpactedNodes() bool {
+func (x *NodePolicy) GetTaints() []*Taint {
if x != nil {
- return x.EvictImpactedNodes
+ return x.Taints
}
- return false
+ return nil
}
-func (x *ZonalShiftConfig) GetAllowZoneFallback() bool {
+func (x *NodePolicy) GetDisruption() *DisruptionPolicy {
if x != nil {
- return x.AllowZoneFallback
+ return x.Disruption
}
- return false
+ return nil
}
-type Taint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *NodePolicy) GetLimits() *ResourceLimits {
+ if x != nil {
+ return x.Limits
+ }
+ return nil
+}
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
- Effect string `protobuf:"bytes,3,opt,name=effect,proto3" json:"effect,omitempty"` // NoSchedule, PreferNoSchedule, NoExecute
+func (x *NodePolicy) GetStartupTaints() []*Taint {
+ if x != nil {
+ return x.StartupTaints
+ }
+ return nil
}
-func (x *Taint) Reset() {
- *x = Taint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[234]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *NodePolicy) GetTaintsTip() string {
+ if x != nil && x.TaintsTip != nil {
+ return *x.TaintsTip
}
+ return ""
}
-func (x *Taint) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *NodePolicy) GetDisruptionsTip() string {
+ if x != nil && x.DisruptionsTip != nil {
+ return *x.DisruptionsTip
+ }
+ return ""
}
-func (*Taint) ProtoMessage() {}
-
-func (x *Taint) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[234]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *NodePolicy) GetLimitsTip() string {
+ if x != nil && x.LimitsTip != nil {
+ return *x.LimitsTip
}
- return mi.MessageOf(x)
+ return ""
}
-// Deprecated: Use Taint.ProtoReflect.Descriptor instead.
-func (*Taint) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{234}
+func (x *NodePolicy) GetStartupTaintsTip() string {
+ if x != nil && x.StartupTaintsTip != nil {
+ return *x.StartupTaintsTip
+ }
+ return ""
}
-func (x *Taint) GetKey() string {
+func (x *NodePolicy) GetMasterOverrideRoleName() string {
if x != nil {
- return x.Key
+ return x.MasterOverrideRoleName
}
return ""
}
-func (x *Taint) GetValue() string {
+func (x *NodePolicy) GetNodePoolName() string {
if x != nil {
- return x.Value
+ return x.NodePoolName
}
return ""
}
-func (x *Taint) GetEffect() string {
+func (x *NodePolicy) GetNodeClassName() string {
if x != nil {
- return x.Effect
+ return x.NodeClassName
}
return ""
}
-type DisruptionBudget struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *NodePolicy) GetAws() *AWSNodeClassSpec {
+ if x != nil {
+ return x.Aws
+ }
+ return nil
+}
- Reasons []string `protobuf:"bytes,1,rep,name=reasons,proto3" json:"reasons,omitempty"` // e.g. ["Underutilized", "Empty"]
- Nodes string `protobuf:"bytes,2,opt,name=nodes,proto3" json:"nodes,omitempty"` // e.g. "10%" or "2"
- Schedule string `protobuf:"bytes,3,opt,name=schedule,proto3" json:"schedule,omitempty"` // optional cron schedule
- Duration string `protobuf:"bytes,4,opt,name=duration,proto3" json:"duration,omitempty"` // e.g. "1h30m"
+func (x *NodePolicy) GetGcp() *GCPNodeClassSpec {
+ if x != nil {
+ return x.Gcp
+ }
+ return nil
}
-func (x *DisruptionBudget) Reset() {
- *x = DisruptionBudget{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[235]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *NodePolicy) GetAzure() *AzureNodeClassSpec {
+ if x != nil {
+ return x.Azure
+ }
+ return nil
+}
+
+func (x *NodePolicy) GetOci() *OCINodeClassSpec {
+ if x != nil {
+ return x.Oci
}
+ return nil
}
-func (x *DisruptionBudget) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *NodePolicy) GetCloudProviderId() int64 {
+ if x != nil && x.CloudProviderId != nil {
+ return *x.CloudProviderId
+ }
+ return 0
}
-func (*DisruptionBudget) ProtoMessage() {}
+func (x *NodePolicy) GetCloudProvider() *CloudProvider {
+ if x != nil {
+ return x.CloudProvider
+ }
+ return nil
+}
-func (x *DisruptionBudget) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[235]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *NodePolicy) GetZonalShift() *ZonalShiftConfig {
+ if x != nil {
+ return x.ZonalShift
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use DisruptionBudget.ProtoReflect.Descriptor instead.
-func (*DisruptionBudget) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{235}
+func (x *NodePolicy) GetRaw() []*RawKarpenterSpec {
+ if x != nil {
+ return x.Raw
+ }
+ return nil
}
-func (x *DisruptionBudget) GetReasons() []string {
+func (x *NodePolicy) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Reasons
+ return x.CreatedAt
}
return nil
}
-func (x *DisruptionBudget) GetNodes() string {
+func (x *NodePolicy) GetUpdatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Nodes
+ return x.UpdatedAt
}
- return ""
+ return nil
}
-func (x *DisruptionBudget) GetSchedule() string {
+func (x *NodePolicy) GetDeletedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Schedule
+ return x.DeletedAt
+ }
+ return nil
+}
+
+func (x *NodePolicy) GetSource() string {
+ if x != nil {
+ return x.Source
}
return ""
}
-func (x *DisruptionBudget) GetDuration() string {
+func (x *NodePolicy) GetSourceClusterId() string {
if x != nil {
- return x.Duration
+ return x.SourceClusterId
}
return ""
}
-type DisruptionPolicy struct {
+func (x *NodePolicy) GetUnrepresentedRequirementKeys() []string {
+ if x != nil {
+ return x.UnrepresentedRequirementKeys
+ }
+ return nil
+}
+
+type PreviewNodeRecommendationConfigRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ConsolidateAfter string `protobuf:"bytes,1,opt,name=consolidate_after,json=consolidateAfter,proto3" json:"consolidate_after,omitempty"` // required by Karpenter
- ConsolidationPolicy string `protobuf:"bytes,2,opt,name=consolidation_policy,json=consolidationPolicy,proto3" json:"consolidation_policy,omitempty"` // WhenEmpty / WhenEmptyOrUnderutilized
- ExpireAfter string `protobuf:"bytes,3,opt,name=expire_after,json=expireAfter,proto3" json:"expire_after,omitempty"`
- TtlSecondsAfterEmpty int32 `protobuf:"varint,4,opt,name=ttl_seconds_after_empty,json=ttlSecondsAfterEmpty,proto3" json:"ttl_seconds_after_empty,omitempty"`
- TerminationGracePeriodSeconds int32 `protobuf:"varint,5,opt,name=termination_grace_period_seconds,json=terminationGracePeriodSeconds,proto3" json:"termination_grace_period_seconds,omitempty"`
- Budgets []*DisruptionBudget `protobuf:"bytes,6,rep,name=budgets,proto3" json:"budgets,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Policies []*NodePolicy `protobuf:"bytes,6,rep,name=policies,proto3" json:"policies,omitempty"`
+ PolicyIds []string `protobuf:"bytes,11,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"` // if set, `repeated NodePolicy policies = 6;` is ignored
}
-func (x *DisruptionPolicy) Reset() {
- *x = DisruptionPolicy{}
+func (x *PreviewNodeRecommendationConfigRequest) Reset() {
+ *x = PreviewNodeRecommendationConfigRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[236]
+ mi := &file_api_v1_recommendation_proto_msgTypes[252]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DisruptionPolicy) String() string {
+func (x *PreviewNodeRecommendationConfigRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DisruptionPolicy) ProtoMessage() {}
+func (*PreviewNodeRecommendationConfigRequest) ProtoMessage() {}
-func (x *DisruptionPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[236]
+func (x *PreviewNodeRecommendationConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[252]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19288,79 +22531,64 @@ func (x *DisruptionPolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DisruptionPolicy.ProtoReflect.Descriptor instead.
-func (*DisruptionPolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{236}
-}
-
-func (x *DisruptionPolicy) GetConsolidateAfter() string {
- if x != nil {
- return x.ConsolidateAfter
- }
- return ""
+// Deprecated: Use PreviewNodeRecommendationConfigRequest.ProtoReflect.Descriptor instead.
+func (*PreviewNodeRecommendationConfigRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{252}
}
-func (x *DisruptionPolicy) GetConsolidationPolicy() string {
+func (x *PreviewNodeRecommendationConfigRequest) GetTeamId() string {
if x != nil {
- return x.ConsolidationPolicy
+ return x.TeamId
}
return ""
}
-func (x *DisruptionPolicy) GetExpireAfter() string {
+func (x *PreviewNodeRecommendationConfigRequest) GetClusterId() string {
if x != nil {
- return x.ExpireAfter
+ return x.ClusterId
}
return ""
}
-func (x *DisruptionPolicy) GetTtlSecondsAfterEmpty() int32 {
- if x != nil {
- return x.TtlSecondsAfterEmpty
- }
- return 0
-}
-
-func (x *DisruptionPolicy) GetTerminationGracePeriodSeconds() int32 {
+func (x *PreviewNodeRecommendationConfigRequest) GetPolicies() []*NodePolicy {
if x != nil {
- return x.TerminationGracePeriodSeconds
+ return x.Policies
}
- return 0
+ return nil
}
-func (x *DisruptionPolicy) GetBudgets() []*DisruptionBudget {
+func (x *PreviewNodeRecommendationConfigRequest) GetPolicyIds() []string {
if x != nil {
- return x.Budgets
+ return x.PolicyIds
}
return nil
}
-type ResourceLimits struct {
+type PreviewNodeRecommendationConfigResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Cpu string `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
- Memory string `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
+ Nrc *NodeRecommendationConfig `protobuf:"bytes,1,opt,name=nrc,proto3" json:"nrc,omitempty"`
}
-func (x *ResourceLimits) Reset() {
- *x = ResourceLimits{}
+func (x *PreviewNodeRecommendationConfigResponse) Reset() {
+ *x = PreviewNodeRecommendationConfigResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[237]
+ mi := &file_api_v1_recommendation_proto_msgTypes[253]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ResourceLimits) String() string {
+func (x *PreviewNodeRecommendationConfigResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResourceLimits) ProtoMessage() {}
+func (*PreviewNodeRecommendationConfigResponse) ProtoMessage() {}
-func (x *ResourceLimits) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[237]
+func (x *PreviewNodeRecommendationConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[253]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19371,66 +22599,51 @@ func (x *ResourceLimits) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ResourceLimits.ProtoReflect.Descriptor instead.
-func (*ResourceLimits) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{237}
-}
-
-func (x *ResourceLimits) GetCpu() string {
- if x != nil {
- return x.Cpu
- }
- return ""
+// Deprecated: Use PreviewNodeRecommendationConfigResponse.ProtoReflect.Descriptor instead.
+func (*PreviewNodeRecommendationConfigResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{253}
}
-func (x *ResourceLimits) GetMemory() string {
+func (x *PreviewNodeRecommendationConfigResponse) GetNrc() *NodeRecommendationConfig {
if x != nil {
- return x.Memory
+ return x.Nrc
}
- return ""
+ return nil
}
-// Provider-specific stubs
-type AWSNodeClassSpec struct {
+type NodeRecommendationConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- SubnetSelectorTerms []*SubnetSelectorTerm `protobuf:"bytes,1,rep,name=subnet_selector_terms,json=subnetSelectorTerms,proto3" json:"subnet_selector_terms,omitempty"`
- SecurityGroupSelectorTerms []*SecurityGroupSelectorTerm `protobuf:"bytes,2,rep,name=security_group_selector_terms,json=securityGroupSelectorTerms,proto3" json:"security_group_selector_terms,omitempty"`
- CapacityReservationSelectorTerms []*CapacityReservationSelectorTerm `protobuf:"bytes,3,rep,name=capacity_reservation_selector_terms,json=capacityReservationSelectorTerms,proto3" json:"capacity_reservation_selector_terms,omitempty"`
- AssociatePublicIpAddress *bool `protobuf:"varint,4,opt,name=associate_public_ip_address,json=associatePublicIpAddress,proto3,oneof" json:"associate_public_ip_address,omitempty"`
- AmiSelectorTerms []*AMISelectorTerm `protobuf:"bytes,5,rep,name=ami_selector_terms,json=amiSelectorTerms,proto3" json:"ami_selector_terms,omitempty"`
- AmiFamily *string `protobuf:"bytes,6,opt,name=ami_family,json=amiFamily,proto3,oneof" json:"ami_family,omitempty"`
- UserData *string `protobuf:"bytes,7,opt,name=user_data,json=userData,proto3,oneof" json:"user_data,omitempty"`
- Role *string `protobuf:"bytes,8,opt,name=role,proto3,oneof" json:"role,omitempty"`
- InstanceProfile *string `protobuf:"bytes,9,opt,name=instance_profile,json=instanceProfile,proto3,oneof" json:"instance_profile,omitempty"`
- Tags map[string]string `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Kubelet *KubeletConfiguration `protobuf:"bytes,11,opt,name=kubelet,proto3,oneof" json:"kubelet,omitempty"`
- BlockDeviceMappings []*BlockDeviceMapping `protobuf:"bytes,12,rep,name=block_device_mappings,json=blockDeviceMappings,proto3" json:"block_device_mappings,omitempty"`
- InstanceStorePolicy *InstanceStorePolicy `protobuf:"varint,13,opt,name=instance_store_policy,json=instanceStorePolicy,proto3,enum=api.v1.InstanceStorePolicy,oneof" json:"instance_store_policy,omitempty"`
- DetailedMonitoring *bool `protobuf:"varint,14,opt,name=detailed_monitoring,json=detailedMonitoring,proto3,oneof" json:"detailed_monitoring,omitempty"`
- MetadataOptions *MetadataOptions `protobuf:"bytes,15,opt,name=metadata_options,json=metadataOptions,proto3,oneof" json:"metadata_options,omitempty"`
- Context *string `protobuf:"bytes,16,opt,name=context,proto3,oneof" json:"context,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ PolicyContainersJson string `protobuf:"bytes,6,opt,name=policy_containers_json,json=policyContainersJson,proto3" json:"policy_containers_json,omitempty"`
+ PolicyContainersYaml string `protobuf:"bytes,7,opt,name=policy_containers_yaml,json=policyContainersYaml,proto3" json:"policy_containers_yaml,omitempty"`
+ Status RecommendationStatus `protobuf:"varint,11,opt,name=status,proto3,enum=api.v1.RecommendationStatus" json:"status,omitempty"`
+ Error string `protobuf:"bytes,12,opt,name=error,proto3" json:"error,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ DeletedAt *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
}
-func (x *AWSNodeClassSpec) Reset() {
- *x = AWSNodeClassSpec{}
+func (x *NodeRecommendationConfig) Reset() {
+ *x = NodeRecommendationConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[238]
+ mi := &file_api_v1_recommendation_proto_msgTypes[254]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AWSNodeClassSpec) String() string {
+func (x *NodeRecommendationConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AWSNodeClassSpec) ProtoMessage() {}
+func (*NodeRecommendationConfig) ProtoMessage() {}
-func (x *AWSNodeClassSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[238]
+func (x *NodeRecommendationConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[254]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19441,148 +22654,100 @@ func (x *AWSNodeClassSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AWSNodeClassSpec.ProtoReflect.Descriptor instead.
-func (*AWSNodeClassSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{238}
-}
-
-func (x *AWSNodeClassSpec) GetSubnetSelectorTerms() []*SubnetSelectorTerm {
- if x != nil {
- return x.SubnetSelectorTerms
- }
- return nil
-}
-
-func (x *AWSNodeClassSpec) GetSecurityGroupSelectorTerms() []*SecurityGroupSelectorTerm {
- if x != nil {
- return x.SecurityGroupSelectorTerms
- }
- return nil
+// Deprecated: Use NodeRecommendationConfig.ProtoReflect.Descriptor instead.
+func (*NodeRecommendationConfig) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{254}
}
-func (x *AWSNodeClassSpec) GetCapacityReservationSelectorTerms() []*CapacityReservationSelectorTerm {
+func (x *NodeRecommendationConfig) GetId() string {
if x != nil {
- return x.CapacityReservationSelectorTerms
- }
- return nil
-}
-
-func (x *AWSNodeClassSpec) GetAssociatePublicIpAddress() bool {
- if x != nil && x.AssociatePublicIpAddress != nil {
- return *x.AssociatePublicIpAddress
+ return x.Id
}
- return false
+ return ""
}
-func (x *AWSNodeClassSpec) GetAmiSelectorTerms() []*AMISelectorTerm {
+func (x *NodeRecommendationConfig) GetClusterId() string {
if x != nil {
- return x.AmiSelectorTerms
- }
- return nil
-}
-
-func (x *AWSNodeClassSpec) GetAmiFamily() string {
- if x != nil && x.AmiFamily != nil {
- return *x.AmiFamily
+ return x.ClusterId
}
return ""
}
-func (x *AWSNodeClassSpec) GetUserData() string {
- if x != nil && x.UserData != nil {
- return *x.UserData
+func (x *NodeRecommendationConfig) GetPolicyContainersJson() string {
+ if x != nil {
+ return x.PolicyContainersJson
}
return ""
}
-func (x *AWSNodeClassSpec) GetRole() string {
- if x != nil && x.Role != nil {
- return *x.Role
+func (x *NodeRecommendationConfig) GetPolicyContainersYaml() string {
+ if x != nil {
+ return x.PolicyContainersYaml
}
return ""
}
-func (x *AWSNodeClassSpec) GetInstanceProfile() string {
- if x != nil && x.InstanceProfile != nil {
- return *x.InstanceProfile
+func (x *NodeRecommendationConfig) GetStatus() RecommendationStatus {
+ if x != nil {
+ return x.Status
}
- return ""
+ return RecommendationStatus_RECOMMENDATION_STATUS_UNSPECIFIED
}
-func (x *AWSNodeClassSpec) GetTags() map[string]string {
+func (x *NodeRecommendationConfig) GetError() string {
if x != nil {
- return x.Tags
+ return x.Error
}
- return nil
+ return ""
}
-func (x *AWSNodeClassSpec) GetKubelet() *KubeletConfiguration {
+func (x *NodeRecommendationConfig) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Kubelet
+ return x.CreatedAt
}
return nil
}
-func (x *AWSNodeClassSpec) GetBlockDeviceMappings() []*BlockDeviceMapping {
+func (x *NodeRecommendationConfig) GetUpdatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.BlockDeviceMappings
+ return x.UpdatedAt
}
return nil
}
-func (x *AWSNodeClassSpec) GetInstanceStorePolicy() InstanceStorePolicy {
- if x != nil && x.InstanceStorePolicy != nil {
- return *x.InstanceStorePolicy
- }
- return InstanceStorePolicy_INSTANCE_STORE_POLICY_RAID0
-}
-
-func (x *AWSNodeClassSpec) GetDetailedMonitoring() bool {
- if x != nil && x.DetailedMonitoring != nil {
- return *x.DetailedMonitoring
- }
- return false
-}
-
-func (x *AWSNodeClassSpec) GetMetadataOptions() *MetadataOptions {
+func (x *NodeRecommendationConfig) GetDeletedAt() *timestamppb.Timestamp {
if x != nil {
- return x.MetadataOptions
+ return x.DeletedAt
}
return nil
}
-func (x *AWSNodeClassSpec) GetContext() string {
- if x != nil && x.Context != nil {
- return *x.Context
- }
- return ""
-}
-
-type GetInstanceFamiliesRequest struct {
+type SuggestedKarpenterConfigRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"` // Cloud provider names (e.g., "aws", "azure", "gcp")
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *GetInstanceFamiliesRequest) Reset() {
- *x = GetInstanceFamiliesRequest{}
+func (x *SuggestedKarpenterConfigRequest) Reset() {
+ *x = SuggestedKarpenterConfigRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[239]
+ mi := &file_api_v1_recommendation_proto_msgTypes[255]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceFamiliesRequest) String() string {
+func (x *SuggestedKarpenterConfigRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceFamiliesRequest) ProtoMessage() {}
+func (*SuggestedKarpenterConfigRequest) ProtoMessage() {}
-func (x *GetInstanceFamiliesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[239]
+func (x *SuggestedKarpenterConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[255]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19593,43 +22758,51 @@ func (x *GetInstanceFamiliesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceFamiliesRequest.ProtoReflect.Descriptor instead.
-func (*GetInstanceFamiliesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{239}
+// Deprecated: Use SuggestedKarpenterConfigRequest.ProtoReflect.Descriptor instead.
+func (*SuggestedKarpenterConfigRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{255}
}
-func (x *GetInstanceFamiliesRequest) GetCloudProviders() []string {
+func (x *SuggestedKarpenterConfigRequest) GetClusterId() string {
if x != nil {
- return x.CloudProviders
+ return x.ClusterId
}
- return nil
+ return ""
}
-type GetInstanceFamiliesResponse struct {
+func (x *SuggestedKarpenterConfigRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+type SuggestedKarpenterConfigResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- InstanceFamilies []*InstanceFamily `protobuf:"bytes,1,rep,name=instance_families,json=instanceFamilies,proto3" json:"instance_families,omitempty"`
+ NgToOriginal map[string]*NodeRecommendationConfig `protobuf:"bytes,1,rep,name=ng_to_original,json=ngToOriginal,proto3" json:"ng_to_original,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ NgToSuggested map[string]*NodeRecommendationConfig `protobuf:"bytes,11,rep,name=ng_to_suggested,json=ngToSuggested,proto3" json:"ng_to_suggested,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
-func (x *GetInstanceFamiliesResponse) Reset() {
- *x = GetInstanceFamiliesResponse{}
+func (x *SuggestedKarpenterConfigResponse) Reset() {
+ *x = SuggestedKarpenterConfigResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[240]
+ mi := &file_api_v1_recommendation_proto_msgTypes[256]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceFamiliesResponse) String() string {
+func (x *SuggestedKarpenterConfigResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceFamiliesResponse) ProtoMessage() {}
+func (*SuggestedKarpenterConfigResponse) ProtoMessage() {}
-func (x *GetInstanceFamiliesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[240]
+func (x *SuggestedKarpenterConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[256]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19640,43 +22813,61 @@ func (x *GetInstanceFamiliesResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceFamiliesResponse.ProtoReflect.Descriptor instead.
-func (*GetInstanceFamiliesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{240}
+// Deprecated: Use SuggestedKarpenterConfigResponse.ProtoReflect.Descriptor instead.
+func (*SuggestedKarpenterConfigResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{256}
}
-func (x *GetInstanceFamiliesResponse) GetInstanceFamilies() []*InstanceFamily {
+func (x *SuggestedKarpenterConfigResponse) GetNgToOriginal() map[string]*NodeRecommendationConfig {
if x != nil {
- return x.InstanceFamilies
+ return x.NgToOriginal
}
return nil
}
-type GetInstanceSizesRequest struct {
+func (x *SuggestedKarpenterConfigResponse) GetNgToSuggested() map[string]*NodeRecommendationConfig {
+ if x != nil {
+ return x.NgToSuggested
+ }
+ return nil
+}
+
+type SuggestNodePolicyImprovementsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"` // Cloud provider names (e.g., "aws", "azure", "gcp")
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // Required. Suggestions are computed per (policy, cluster) pair: the evidence is the
+ // cluster's live NodePools/nodes/workloads attributed to this policy.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ // Stored policy to evaluate. Takes precedence over `policy`, mirroring
+ // PreviewNodeRecommendationConfigRequest.
+ PolicyId string `protobuf:"bytes,3,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // Inline draft to evaluate when `policy_id` is empty. Always computed live, never
+ // persisted.
+ Policy *NodePolicy `protobuf:"bytes,4,opt,name=policy,proto3" json:"policy,omitempty"`
+ // Evidence lookback window. Defaults to PROFILE_WINDOW_7D when unspecified.
+ Window ProfileWindow `protobuf:"varint,5,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
}
-func (x *GetInstanceSizesRequest) Reset() {
- *x = GetInstanceSizesRequest{}
+func (x *SuggestNodePolicyImprovementsRequest) Reset() {
+ *x = SuggestNodePolicyImprovementsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[241]
+ mi := &file_api_v1_recommendation_proto_msgTypes[257]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceSizesRequest) String() string {
+func (x *SuggestNodePolicyImprovementsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceSizesRequest) ProtoMessage() {}
+func (*SuggestNodePolicyImprovementsRequest) ProtoMessage() {}
-func (x *GetInstanceSizesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[241]
+func (x *SuggestNodePolicyImprovementsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[257]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19687,43 +22878,84 @@ func (x *GetInstanceSizesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceSizesRequest.ProtoReflect.Descriptor instead.
-func (*GetInstanceSizesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{241}
+// Deprecated: Use SuggestNodePolicyImprovementsRequest.ProtoReflect.Descriptor instead.
+func (*SuggestNodePolicyImprovementsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{257}
}
-func (x *GetInstanceSizesRequest) GetCloudProviders() []string {
+func (x *SuggestNodePolicyImprovementsRequest) GetTeamId() string {
if x != nil {
- return x.CloudProviders
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *SuggestNodePolicyImprovementsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *SuggestNodePolicyImprovementsRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SuggestNodePolicyImprovementsRequest) GetPolicy() *NodePolicy {
+ if x != nil {
+ return x.Policy
}
return nil
}
-type GetInstanceSizesResponse struct {
+func (x *SuggestNodePolicyImprovementsRequest) GetWindow() ProfileWindow {
+ if x != nil {
+ return x.Window
+ }
+ return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+}
+
+type SuggestNodePolicyImprovementsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- InstanceSizes []*InstanceSize `protobuf:"bytes,1,rep,name=instance_sizes,json=instanceSizes,proto3" json:"instance_sizes,omitempty"`
+ Original *NodePolicy `protobuf:"bytes,1,opt,name=original,proto3" json:"original,omitempty"`
+ // Deep copy of `original` with every suggestion applied — the "accept all" payload.
+ Suggested *NodePolicy `protobuf:"bytes,2,opt,name=suggested,proto3" json:"suggested,omitempty"`
+ Suggestions []*NodePolicySuggestion `protobuf:"bytes,3,rep,name=suggestions,proto3" json:"suggestions,omitempty"`
+ Context *SuggestionContext `protobuf:"bytes,4,opt,name=context,proto3" json:"context,omitempty"`
+ ComputedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=computed_at,json=computedAt,proto3" json:"computed_at,omitempty"`
+ // False when the response was computed synchronously for this request rather than
+ // served from a precomputed row.
+ FromCache bool `protobuf:"varint,6,opt,name=from_cache,json=fromCache,proto3" json:"from_cache,omitempty"`
+ // True when the served row predates the policy's current revision (or an engine
+ // rule-set change). A background refresh has been enqueued; clients should surface
+ // the computed_at staleness and may refetch shortly. Large clusters serve stale
+ // rather than recomputing in the request path.
+ Stale bool `protobuf:"varint,7,opt,name=stale,proto3" json:"stale,omitempty"`
}
-func (x *GetInstanceSizesResponse) Reset() {
- *x = GetInstanceSizesResponse{}
+func (x *SuggestNodePolicyImprovementsResponse) Reset() {
+ *x = SuggestNodePolicyImprovementsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[242]
+ mi := &file_api_v1_recommendation_proto_msgTypes[258]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceSizesResponse) String() string {
+func (x *SuggestNodePolicyImprovementsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceSizesResponse) ProtoMessage() {}
+func (*SuggestNodePolicyImprovementsResponse) ProtoMessage() {}
-func (x *GetInstanceSizesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[242]
+func (x *SuggestNodePolicyImprovementsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[258]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19734,99 +22966,88 @@ func (x *GetInstanceSizesResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceSizesResponse.ProtoReflect.Descriptor instead.
-func (*GetInstanceSizesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{242}
+// Deprecated: Use SuggestNodePolicyImprovementsResponse.ProtoReflect.Descriptor instead.
+func (*SuggestNodePolicyImprovementsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{258}
}
-func (x *GetInstanceSizesResponse) GetInstanceSizes() []*InstanceSize {
+func (x *SuggestNodePolicyImprovementsResponse) GetOriginal() *NodePolicy {
if x != nil {
- return x.InstanceSizes
+ return x.Original
}
return nil
}
-type InstanceFamily struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
-}
-
-func (x *InstanceFamily) Reset() {
- *x = InstanceFamily{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[243]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *SuggestNodePolicyImprovementsResponse) GetSuggested() *NodePolicy {
+ if x != nil {
+ return x.Suggested
}
+ return nil
}
-func (x *InstanceFamily) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *SuggestNodePolicyImprovementsResponse) GetSuggestions() []*NodePolicySuggestion {
+ if x != nil {
+ return x.Suggestions
+ }
+ return nil
}
-func (*InstanceFamily) ProtoMessage() {}
-
-func (x *InstanceFamily) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[243]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *SuggestNodePolicyImprovementsResponse) GetContext() *SuggestionContext {
+ if x != nil {
+ return x.Context
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use InstanceFamily.ProtoReflect.Descriptor instead.
-func (*InstanceFamily) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{243}
+func (x *SuggestNodePolicyImprovementsResponse) GetComputedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ComputedAt
+ }
+ return nil
}
-func (x *InstanceFamily) GetName() string {
+func (x *SuggestNodePolicyImprovementsResponse) GetFromCache() bool {
if x != nil {
- return x.Name
+ return x.FromCache
}
- return ""
+ return false
}
-func (x *InstanceFamily) GetProviderName() string {
+func (x *SuggestNodePolicyImprovementsResponse) GetStale() bool {
if x != nil {
- return x.ProviderName
+ return x.Stale
}
- return ""
+ return false
}
-type InstanceSize struct {
+type ListClusterNodePolicySuggestionsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ // Evidence lookback window. Defaults to PROFILE_WINDOW_7D when unspecified.
+ Window ProfileWindow `protobuf:"varint,3,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
}
-func (x *InstanceSize) Reset() {
- *x = InstanceSize{}
+func (x *ListClusterNodePolicySuggestionsRequest) Reset() {
+ *x = ListClusterNodePolicySuggestionsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[244]
+ mi := &file_api_v1_recommendation_proto_msgTypes[259]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *InstanceSize) String() string {
+func (x *ListClusterNodePolicySuggestionsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*InstanceSize) ProtoMessage() {}
+func (*ListClusterNodePolicySuggestionsRequest) ProtoMessage() {}
-func (x *InstanceSize) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[244]
+func (x *ListClusterNodePolicySuggestionsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[259]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19837,52 +23058,65 @@ func (x *InstanceSize) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use InstanceSize.ProtoReflect.Descriptor instead.
-func (*InstanceSize) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{244}
+// Deprecated: Use ListClusterNodePolicySuggestionsRequest.ProtoReflect.Descriptor instead.
+func (*ListClusterNodePolicySuggestionsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{259}
}
-func (x *InstanceSize) GetName() string {
+func (x *ListClusterNodePolicySuggestionsRequest) GetTeamId() string {
if x != nil {
- return x.Name
+ return x.TeamId
}
return ""
}
-func (x *InstanceSize) GetProviderName() string {
+func (x *ListClusterNodePolicySuggestionsRequest) GetClusterId() string {
if x != nil {
- return x.ProviderName
+ return x.ClusterId
}
return ""
}
-type InstanceCategory struct {
+func (x *ListClusterNodePolicySuggestionsRequest) GetWindow() ProfileWindow {
+ if x != nil {
+ return x.Window
+ }
+ return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+}
+
+type ListClusterNodePolicySuggestionsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // e.g., "c", "D", "n"
- Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` // e.g., "Compute Optimized"
- ProviderName string `protobuf:"bytes,3,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // e.g., "AWS", "Azure", "GCP"
+ Policies []*NodePolicySuggestionsForPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ // The oldest computed_at among the included policies — the bound a caller can trust
+ // the whole response by, even though each policy's own row has its own computed_at.
+ ComputedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=computed_at,json=computedAt,proto3" json:"computed_at,omitempty"`
+ // True when at least one policy has no row yet, or a row stale enough to recompute.
+ // A background refresh of the whole cluster has been enqueued; clients should
+ // surface staleness and may refetch shortly, the same contract as
+ // SuggestNodePolicyImprovementsResponse.stale.
+ Stale bool `protobuf:"varint,3,opt,name=stale,proto3" json:"stale,omitempty"`
}
-func (x *InstanceCategory) Reset() {
- *x = InstanceCategory{}
+func (x *ListClusterNodePolicySuggestionsResponse) Reset() {
+ *x = ListClusterNodePolicySuggestionsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[245]
+ mi := &file_api_v1_recommendation_proto_msgTypes[260]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *InstanceCategory) String() string {
+func (x *ListClusterNodePolicySuggestionsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*InstanceCategory) ProtoMessage() {}
+func (*ListClusterNodePolicySuggestionsResponse) ProtoMessage() {}
-func (x *InstanceCategory) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[245]
+func (x *ListClusterNodePolicySuggestionsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[260]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19893,58 +23127,73 @@ func (x *InstanceCategory) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use InstanceCategory.ProtoReflect.Descriptor instead.
-func (*InstanceCategory) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{245}
+// Deprecated: Use ListClusterNodePolicySuggestionsResponse.ProtoReflect.Descriptor instead.
+func (*ListClusterNodePolicySuggestionsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{260}
}
-func (x *InstanceCategory) GetKey() string {
+func (x *ListClusterNodePolicySuggestionsResponse) GetPolicies() []*NodePolicySuggestionsForPolicy {
if x != nil {
- return x.Key
+ return x.Policies
}
- return ""
+ return nil
}
-func (x *InstanceCategory) GetLabel() string {
+func (x *ListClusterNodePolicySuggestionsResponse) GetComputedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Label
+ return x.ComputedAt
}
- return ""
+ return nil
}
-func (x *InstanceCategory) GetProviderName() string {
+func (x *ListClusterNodePolicySuggestionsResponse) GetStale() bool {
if x != nil {
- return x.ProviderName
+ return x.Stale
}
- return ""
+ return false
}
-type InstanceCPU struct {
+// NodePolicySuggestionsForPolicy is one policy's entry in a cluster-wide suggestions
+// list: everything ListClusterNodePolicySuggestions can say about a single policy
+// without the original/suggested NodePolicy payload SuggestNodePolicyImprovements
+// carries — that RPC is still where accepting a suggestion happens.
+type NodePolicySuggestionsForPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Vcpu int32 `protobuf:"varint,1,opt,name=vcpu,proto3" json:"vcpu,omitempty"` // e.g., 2, 4, 8, 16
- ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // e.g., "AWS", "Azure"
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ PolicyName string `protobuf:"bytes,2,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"`
+ // "dakr" or "cluster", mirroring NodePolicy.source — cluster-managed mirrors get
+ // suggestions surfaced here the same as dakr-authored policies, visualization-only:
+ // accepting one still routes to that mirror's own Karpenter manifest, not this RPC.
+ PolicySource string `protobuf:"bytes,3,opt,name=policy_source,json=policySource,proto3" json:"policy_source,omitempty"`
+ Suggestions []*NodePolicySuggestion `protobuf:"bytes,4,rep,name=suggestions,proto3" json:"suggestions,omitempty"`
+ Context *SuggestionContext `protobuf:"bytes,5,opt,name=context,proto3" json:"context,omitempty"`
+ ComputedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=computed_at,json=computedAt,proto3" json:"computed_at,omitempty"`
+ // True when this policy's own row is missing, predates its current revision, or
+ // predates an engine rule-set change — same definition as
+ // SuggestNodePolicyImprovementsResponse.stale, just scoped to this one policy.
+ Stale bool `protobuf:"varint,7,opt,name=stale,proto3" json:"stale,omitempty"`
}
-func (x *InstanceCPU) Reset() {
- *x = InstanceCPU{}
+func (x *NodePolicySuggestionsForPolicy) Reset() {
+ *x = NodePolicySuggestionsForPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[246]
+ mi := &file_api_v1_recommendation_proto_msgTypes[261]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *InstanceCPU) String() string {
+func (x *NodePolicySuggestionsForPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*InstanceCPU) ProtoMessage() {}
+func (*NodePolicySuggestionsForPolicy) ProtoMessage() {}
-func (x *InstanceCPU) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[246]
+func (x *NodePolicySuggestionsForPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[261]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -19955,51 +23204,139 @@ func (x *InstanceCPU) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use InstanceCPU.ProtoReflect.Descriptor instead.
-func (*InstanceCPU) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{246}
+// Deprecated: Use NodePolicySuggestionsForPolicy.ProtoReflect.Descriptor instead.
+func (*NodePolicySuggestionsForPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{261}
}
-func (x *InstanceCPU) GetVcpu() int32 {
+func (x *NodePolicySuggestionsForPolicy) GetPolicyId() string {
if x != nil {
- return x.Vcpu
+ return x.PolicyId
}
- return 0
+ return ""
}
-func (x *InstanceCPU) GetProviderName() string {
+func (x *NodePolicySuggestionsForPolicy) GetPolicyName() string {
if x != nil {
- return x.ProviderName
+ return x.PolicyName
}
return ""
}
-type InstanceTypeName struct {
+func (x *NodePolicySuggestionsForPolicy) GetPolicySource() string {
+ if x != nil {
+ return x.PolicySource
+ }
+ return ""
+}
+
+func (x *NodePolicySuggestionsForPolicy) GetSuggestions() []*NodePolicySuggestion {
+ if x != nil {
+ return x.Suggestions
+ }
+ return nil
+}
+
+func (x *NodePolicySuggestionsForPolicy) GetContext() *SuggestionContext {
+ if x != nil {
+ return x.Context
+ }
+ return nil
+}
+
+func (x *NodePolicySuggestionsForPolicy) GetComputedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ComputedAt
+ }
+ return nil
+}
+
+func (x *NodePolicySuggestionsForPolicy) GetStale() bool {
+ if x != nil {
+ return x.Stale
+ }
+ return false
+}
+
+type NodePolicySuggestion struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // e.g., "m5.large", "Standard_D4s_v3"
- ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // e.g., "AWS", "Azure"
-}
-
-func (x *InstanceTypeName) Reset() {
- *x = InstanceTypeName{}
+ // Stable rule identifier, e.g. "disruption.consolidation_policy". Stable across
+ // engine versions so the frontend can special-case rendering per rule.
+ RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ Group SuggestionGroup `protobuf:"varint,2,opt,name=group,proto3,enum=api.v1.SuggestionGroup" json:"group,omitempty"`
+ Flavor SuggestionFlavor `protobuf:"varint,3,opt,name=flavor,proto3,enum=api.v1.SuggestionFlavor" json:"flavor,omitempty"`
+ Severity SuggestionSeverity `protobuf:"varint,4,opt,name=severity,proto3,enum=api.v1.SuggestionSeverity" json:"severity,omitempty"`
+ // NodePolicy field the suggestion mutates, as a proto field path relative to
+ // NodePolicy, e.g. "disruption.consolidate_after", "capacity_types" or "limits.cpu".
+ // This names the FIRST (or only) field the suggestion changes; additional_field_changes
+ // below carries the rest for the rare suggestion that changes more than one. Two
+ // guarantees the per-card accept in the UI depends on, over the union of this path and
+ // every additional_field_changes[].field_path. First, the paths name exactly what this
+ // suggestion changes and nothing more: taking `original` and copying only these paths'
+ // values out of `suggested` yields the same policy as applying this one suggestion, so a
+ // card can be accepted on its own. Second, at most one suggestion per response claims a
+ // given path, and no claimed path is an ancestor of another — "limits" and "limits.cpu"
+ // never both appear — so accepting one card can never carry a neighbouring card's change
+ // with it. A rule with a finding on fields that do not belong together emits separate
+ // suggestions instead of naming their parent.
+ //
+ // Empty for a SUGGESTION_GROUP_COVERAGE suggestion, the one deliberate exception: it names
+ // no field because it does not mutate this NodePolicy at all. current_value_yaml and
+ // suggested_value_yaml are empty for the same reason.
+ FieldPath string `protobuf:"bytes,5,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"`
+ Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"`
+ // Detailed explanation of why this change is being suggested, written against the
+ // cited evidence. Rendered as the card body.
+ Rationale string `protobuf:"bytes,7,opt,name=rationale,proto3" json:"rationale,omitempty"`
+ // Display-ready YAML renderings of the field's current and suggested values, for
+ // field_path above.
+ CurrentValueYaml string `protobuf:"bytes,8,opt,name=current_value_yaml,json=currentValueYaml,proto3" json:"current_value_yaml,omitempty"`
+ SuggestedValueYaml string `protobuf:"bytes,9,opt,name=suggested_value_yaml,json=suggestedValueYaml,proto3" json:"suggested_value_yaml,omitempty"`
+ Evidence []*SuggestionEvidence `protobuf:"bytes,10,rep,name=evidence,proto3" json:"evidence,omitempty"`
+ // A directly attributable, non-overlapping monthly saving: a price delta (spot vs
+ // on-demand, gp2 vs gp3, a cheaper eligible candidate) applied to a known quantity. Safe
+ // to sum across every suggestion in a response, including others on the same policy,
+ // because each rule that sets this draws from its own independent price comparison —
+ // never from a shared, policy-wide figure two rules could both cite.
+ EstimatedMonthlySavingsUsd *float64 `protobuf:"fixed64,11,opt,name=estimated_monthly_savings_usd,json=estimatedMonthlySavingsUsd,proto3,oneof" json:"estimated_monthly_savings_usd,omitempty"`
+ // Additional NodePolicy fields this suggestion mutates together with field_path, when
+ // loosening several selector fields as one combination fits the population better than
+ // loosening any single one. Empty for almost every suggestion; see field_path's comment
+ // for the guarantees that apply across the whole set.
+ AdditionalFieldChanges []*SuggestionFieldChange `protobuf:"bytes,12,rep,name=additional_field_changes,json=additionalFieldChanges,proto3" json:"additional_field_changes,omitempty"`
+ // The most this suggestion could save if fully realized, for a rule whose saving is real
+ // but not directly attributable to this one change: reclaiming a pool's idle capacity
+ // (disruption.consolidation_policy, disruption.consolidate_after, disruption.budgets,
+ // requirements.size_mismatch) all draw the same ceiling from that pool's own idle spend,
+ // since each only widens Karpenter's ability to reclaim it rather than guaranteeing it
+ // does. Unlike estimated_monthly_savings_usd, this is NOT safe to sum across a policy:
+ // when more than one suggestion on the same policy sets it, the true ceiling is the
+ // maximum across them, not their total, because they are bounds on the same underlying
+ // capacity rather than independent savings. A rule never sets both this and
+ // estimated_monthly_savings_usd on the same suggestion.
+ UpperBoundMonthlySavingsUsd *float64 `protobuf:"fixed64,13,opt,name=upper_bound_monthly_savings_usd,json=upperBoundMonthlySavingsUsd,proto3,oneof" json:"upper_bound_monthly_savings_usd,omitempty"`
+}
+
+func (x *NodePolicySuggestion) Reset() {
+ *x = NodePolicySuggestion{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[247]
+ mi := &file_api_v1_recommendation_proto_msgTypes[262]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *InstanceTypeName) String() string {
+func (x *NodePolicySuggestion) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*InstanceTypeName) ProtoMessage() {}
+func (*NodePolicySuggestion) ProtoMessage() {}
-func (x *InstanceTypeName) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[247]
+func (x *NodePolicySuggestion) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[262]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20010,97 +23347,134 @@ func (x *InstanceTypeName) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use InstanceTypeName.ProtoReflect.Descriptor instead.
-func (*InstanceTypeName) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{247}
+// Deprecated: Use NodePolicySuggestion.ProtoReflect.Descriptor instead.
+func (*NodePolicySuggestion) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{262}
}
-func (x *InstanceTypeName) GetName() string {
+func (x *NodePolicySuggestion) GetRuleId() string {
if x != nil {
- return x.Name
+ return x.RuleId
}
return ""
}
-func (x *InstanceTypeName) GetProviderName() string {
+func (x *NodePolicySuggestion) GetGroup() SuggestionGroup {
if x != nil {
- return x.ProviderName
+ return x.Group
}
- return ""
+ return SuggestionGroup_SUGGESTION_GROUP_UNSPECIFIED
}
-type GetInstanceCategoriesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *NodePolicySuggestion) GetFlavor() SuggestionFlavor {
+ if x != nil {
+ return x.Flavor
+ }
+ return SuggestionFlavor_SUGGESTION_FLAVOR_UNSPECIFIED
+}
- CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"`
+func (x *NodePolicySuggestion) GetSeverity() SuggestionSeverity {
+ if x != nil {
+ return x.Severity
+ }
+ return SuggestionSeverity_SUGGESTION_SEVERITY_UNSPECIFIED
}
-func (x *GetInstanceCategoriesRequest) Reset() {
- *x = GetInstanceCategoriesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[248]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *NodePolicySuggestion) GetFieldPath() string {
+ if x != nil {
+ return x.FieldPath
}
+ return ""
}
-func (x *GetInstanceCategoriesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *NodePolicySuggestion) GetTitle() string {
+ if x != nil {
+ return x.Title
+ }
+ return ""
}
-func (*GetInstanceCategoriesRequest) ProtoMessage() {}
+func (x *NodePolicySuggestion) GetRationale() string {
+ if x != nil {
+ return x.Rationale
+ }
+ return ""
+}
-func (x *GetInstanceCategoriesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[248]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *NodePolicySuggestion) GetCurrentValueYaml() string {
+ if x != nil {
+ return x.CurrentValueYaml
}
- return mi.MessageOf(x)
+ return ""
}
-// Deprecated: Use GetInstanceCategoriesRequest.ProtoReflect.Descriptor instead.
-func (*GetInstanceCategoriesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{248}
+func (x *NodePolicySuggestion) GetSuggestedValueYaml() string {
+ if x != nil {
+ return x.SuggestedValueYaml
+ }
+ return ""
}
-func (x *GetInstanceCategoriesRequest) GetCloudProviders() []string {
+func (x *NodePolicySuggestion) GetEvidence() []*SuggestionEvidence {
if x != nil {
- return x.CloudProviders
+ return x.Evidence
}
return nil
}
-type GetInstanceCategoriesResponse struct {
+func (x *NodePolicySuggestion) GetEstimatedMonthlySavingsUsd() float64 {
+ if x != nil && x.EstimatedMonthlySavingsUsd != nil {
+ return *x.EstimatedMonthlySavingsUsd
+ }
+ return 0
+}
+
+func (x *NodePolicySuggestion) GetAdditionalFieldChanges() []*SuggestionFieldChange {
+ if x != nil {
+ return x.AdditionalFieldChanges
+ }
+ return nil
+}
+
+func (x *NodePolicySuggestion) GetUpperBoundMonthlySavingsUsd() float64 {
+ if x != nil && x.UpperBoundMonthlySavingsUsd != nil {
+ return *x.UpperBoundMonthlySavingsUsd
+ }
+ return 0
+}
+
+// SuggestionFieldChange is one additional NodePolicy field a suggestion mutates, beyond
+// field_path/current_value_yaml/suggested_value_yaml on NodePolicySuggestion, which always
+// name the first (or only) one. Almost every suggestion touches exactly one field and
+// leaves NodePolicySuggestion.additional_field_changes empty; only a combination-search
+// suggestion (currently just requirements.overpinned) populates it.
+type SuggestionFieldChange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- InstanceCategories []*InstanceCategory `protobuf:"bytes,1,rep,name=instance_categories,json=instanceCategories,proto3" json:"instance_categories,omitempty"`
+ FieldPath string `protobuf:"bytes,1,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"`
+ CurrentValueYaml string `protobuf:"bytes,2,opt,name=current_value_yaml,json=currentValueYaml,proto3" json:"current_value_yaml,omitempty"`
+ SuggestedValueYaml string `protobuf:"bytes,3,opt,name=suggested_value_yaml,json=suggestedValueYaml,proto3" json:"suggested_value_yaml,omitempty"`
}
-func (x *GetInstanceCategoriesResponse) Reset() {
- *x = GetInstanceCategoriesResponse{}
+func (x *SuggestionFieldChange) Reset() {
+ *x = SuggestionFieldChange{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[249]
+ mi := &file_api_v1_recommendation_proto_msgTypes[263]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceCategoriesResponse) String() string {
+func (x *SuggestionFieldChange) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceCategoriesResponse) ProtoMessage() {}
+func (*SuggestionFieldChange) ProtoMessage() {}
-func (x *GetInstanceCategoriesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[249]
+func (x *SuggestionFieldChange) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[263]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20111,43 +23485,70 @@ func (x *GetInstanceCategoriesResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceCategoriesResponse.ProtoReflect.Descriptor instead.
-func (*GetInstanceCategoriesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{249}
+// Deprecated: Use SuggestionFieldChange.ProtoReflect.Descriptor instead.
+func (*SuggestionFieldChange) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{263}
}
-func (x *GetInstanceCategoriesResponse) GetInstanceCategories() []*InstanceCategory {
+func (x *SuggestionFieldChange) GetFieldPath() string {
if x != nil {
- return x.InstanceCategories
+ return x.FieldPath
}
- return nil
+ return ""
}
-type GetInstanceCPUsRequest struct {
+func (x *SuggestionFieldChange) GetCurrentValueYaml() string {
+ if x != nil {
+ return x.CurrentValueYaml
+ }
+ return ""
+}
+
+func (x *SuggestionFieldChange) GetSuggestedValueYaml() string {
+ if x != nil {
+ return x.SuggestedValueYaml
+ }
+ return ""
+}
+
+// SuggestionEvidence is one observed data point cited by a suggestion, e.g.
+// label="p95 CPU utilization (7d)", value="22%", detail="across 14 nodes managed by
+// nodepool workers-a".
+type SuggestionEvidence struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"`
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ Detail string `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"`
+ Scope EvidenceScope `protobuf:"varint,4,opt,name=scope,proto3,enum=api.v1.EvidenceScope" json:"scope,omitempty"`
+ // The workloads this citation names, in the order they appear in `detail` and in
+ // the rationale. Carries the identity behind the "namespace/name" text so the UI
+ // can open each one's drawer, which needs the uid and kind that the display
+ // string drops. Empty for citations about nodes or pricing rather than
+ // workloads, and for a workload whose metadata read missed it (the display
+ // string falls back to a bare uid there, and the drawer needs the kind too).
+ Workloads []*SuggestionWorkloadRef `protobuf:"bytes,5,rep,name=workloads,proto3" json:"workloads,omitempty"`
}
-func (x *GetInstanceCPUsRequest) Reset() {
- *x = GetInstanceCPUsRequest{}
+func (x *SuggestionEvidence) Reset() {
+ *x = SuggestionEvidence{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[250]
+ mi := &file_api_v1_recommendation_proto_msgTypes[264]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceCPUsRequest) String() string {
+func (x *SuggestionEvidence) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceCPUsRequest) ProtoMessage() {}
+func (*SuggestionEvidence) ProtoMessage() {}
-func (x *GetInstanceCPUsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[250]
+func (x *SuggestionEvidence) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[264]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20158,43 +23559,84 @@ func (x *GetInstanceCPUsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceCPUsRequest.ProtoReflect.Descriptor instead.
-func (*GetInstanceCPUsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{250}
+// Deprecated: Use SuggestionEvidence.ProtoReflect.Descriptor instead.
+func (*SuggestionEvidence) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{264}
}
-func (x *GetInstanceCPUsRequest) GetCloudProviders() []string {
+func (x *SuggestionEvidence) GetLabel() string {
if x != nil {
- return x.CloudProviders
+ return x.Label
+ }
+ return ""
+}
+
+func (x *SuggestionEvidence) GetValue() string {
+ if x != nil {
+ return x.Value
+ }
+ return ""
+}
+
+func (x *SuggestionEvidence) GetDetail() string {
+ if x != nil {
+ return x.Detail
+ }
+ return ""
+}
+
+func (x *SuggestionEvidence) GetScope() EvidenceScope {
+ if x != nil {
+ return x.Scope
+ }
+ return EvidenceScope_EVIDENCE_SCOPE_UNSPECIFIED
+}
+
+func (x *SuggestionEvidence) GetWorkloads() []*SuggestionWorkloadRef {
+ if x != nil {
+ return x.Workloads
}
return nil
}
-type GetInstanceCPUsResponse struct {
+// SuggestionWorkloadRef identifies one workload named by a suggestion well enough
+// to open its drawer: the panel takes uid, kind and the cluster the suggestion was
+// computed for.
+type SuggestionWorkloadRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- InstanceCpus []*InstanceCPU `protobuf:"bytes,1,rep,name=instance_cpus,json=instanceCpus,proto3" json:"instance_cpus,omitempty"`
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
+ // Kubernetes kind as written on the owner ("Deployment", "StatefulSet"), not the
+ // K8sObjectKind enum: this is passed straight to GetWorkload, which matches on
+ // the string.
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ // Exactly the text this workload appears as in `detail` and in the rationale, so
+ // the UI links the same token the sentence was written with instead of
+ // reassembling one and hoping it matches.
+ Display string `protobuf:"bytes,5,opt,name=display,proto3" json:"display,omitempty"`
}
-func (x *GetInstanceCPUsResponse) Reset() {
- *x = GetInstanceCPUsResponse{}
+func (x *SuggestionWorkloadRef) Reset() {
+ *x = SuggestionWorkloadRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[251]
+ mi := &file_api_v1_recommendation_proto_msgTypes[265]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceCPUsResponse) String() string {
+func (x *SuggestionWorkloadRef) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceCPUsResponse) ProtoMessage() {}
+func (*SuggestionWorkloadRef) ProtoMessage() {}
-func (x *GetInstanceCPUsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[251]
+func (x *SuggestionWorkloadRef) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[265]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20205,43 +23647,87 @@ func (x *GetInstanceCPUsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceCPUsResponse.ProtoReflect.Descriptor instead.
-func (*GetInstanceCPUsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{251}
+// Deprecated: Use SuggestionWorkloadRef.ProtoReflect.Descriptor instead.
+func (*SuggestionWorkloadRef) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{265}
}
-func (x *GetInstanceCPUsResponse) GetInstanceCpus() []*InstanceCPU {
+func (x *SuggestionWorkloadRef) GetUid() string {
if x != nil {
- return x.InstanceCpus
+ return x.Uid
}
- return nil
+ return ""
}
-type GetInstanceTypeNamesRequest struct {
+func (x *SuggestionWorkloadRef) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *SuggestionWorkloadRef) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SuggestionWorkloadRef) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SuggestionWorkloadRef) GetDisplay() string {
+ if x != nil {
+ return x.Display
+ }
+ return ""
+}
+
+// SuggestionContext describes the evidence population a suggestion run was computed
+// against, so the UI can qualify the results ("based on 14 nodes across 2 nodepools,
+// last 7d, 23 workload profiles").
+type SuggestionContext struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"`
+ Window ProfileWindow `protobuf:"varint,1,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
+ // Live NodePool names attributed to the policy via the dakr.devzero.io/node-policy-id
+ // annotation. Empty on cold-start.
+ MatchedNodePools []string `protobuf:"bytes,2,rep,name=matched_node_pools,json=matchedNodePools,proto3" json:"matched_node_pools,omitempty"`
+ NodeCount int32 `protobuf:"varint,3,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
+ EvidenceScope EvidenceScope `protobuf:"varint,4,opt,name=evidence_scope,json=evidenceScope,proto3,enum=api.v1.EvidenceScope" json:"evidence_scope,omitempty"`
+ // Number of fresh workload profile snapshots that informed the run.
+ WorkloadProfileCount int32 `protobuf:"varint,5,opt,name=workload_profile_count,json=workloadProfileCount,proto3" json:"workload_profile_count,omitempty"`
+ // For cluster-managed policies only: NodePool requirement keys present on the
+ // customer's CRD that this policy view cannot represent (Azure/GCP SKU keys,
+ // custom label requirements). Non-empty means both the suggestions and the
+ // compiled preview describe a partial picture of the real NodePool, and the
+ // UI should say so. Always empty for dakr-authored policies.
+ UnrepresentedRequirementKeys []string `protobuf:"bytes,6,rep,name=unrepresented_requirement_keys,json=unrepresentedRequirementKeys,proto3" json:"unrepresented_requirement_keys,omitempty"`
}
-func (x *GetInstanceTypeNamesRequest) Reset() {
- *x = GetInstanceTypeNamesRequest{}
+func (x *SuggestionContext) Reset() {
+ *x = SuggestionContext{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[252]
+ mi := &file_api_v1_recommendation_proto_msgTypes[266]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetInstanceTypeNamesRequest) String() string {
+func (x *SuggestionContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetInstanceTypeNamesRequest) ProtoMessage() {}
+func (*SuggestionContext) ProtoMessage() {}
-func (x *GetInstanceTypeNamesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[252]
+func (x *SuggestionContext) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[266]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20252,91 +23738,80 @@ func (x *GetInstanceTypeNamesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetInstanceTypeNamesRequest.ProtoReflect.Descriptor instead.
-func (*GetInstanceTypeNamesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{252}
+// Deprecated: Use SuggestionContext.ProtoReflect.Descriptor instead.
+func (*SuggestionContext) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{266}
}
-func (x *GetInstanceTypeNamesRequest) GetCloudProviders() []string {
+func (x *SuggestionContext) GetWindow() ProfileWindow {
if x != nil {
- return x.CloudProviders
+ return x.Window
}
- return nil
-}
-
-type GetInstanceTypeNamesResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- InstanceTypes []*InstanceTypeName `protobuf:"bytes,1,rep,name=instance_types,json=instanceTypes,proto3" json:"instance_types,omitempty"`
+ return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
}
-func (x *GetInstanceTypeNamesResponse) Reset() {
- *x = GetInstanceTypeNamesResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[253]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *SuggestionContext) GetMatchedNodePools() []string {
+ if x != nil {
+ return x.MatchedNodePools
}
+ return nil
}
-func (x *GetInstanceTypeNamesResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *SuggestionContext) GetNodeCount() int32 {
+ if x != nil {
+ return x.NodeCount
+ }
+ return 0
}
-func (*GetInstanceTypeNamesResponse) ProtoMessage() {}
-
-func (x *GetInstanceTypeNamesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[253]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *SuggestionContext) GetEvidenceScope() EvidenceScope {
+ if x != nil {
+ return x.EvidenceScope
}
- return mi.MessageOf(x)
+ return EvidenceScope_EVIDENCE_SCOPE_UNSPECIFIED
}
-// Deprecated: Use GetInstanceTypeNamesResponse.ProtoReflect.Descriptor instead.
-func (*GetInstanceTypeNamesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{253}
+func (x *SuggestionContext) GetWorkloadProfileCount() int32 {
+ if x != nil {
+ return x.WorkloadProfileCount
+ }
+ return 0
}
-func (x *GetInstanceTypeNamesResponse) GetInstanceTypes() []*InstanceTypeName {
+func (x *SuggestionContext) GetUnrepresentedRequirementKeys() []string {
if x != nil {
- return x.InstanceTypes
+ return x.UnrepresentedRequirementKeys
}
return nil
}
-type SubnetSelectorTerm struct {
+type GetAvailableKindsByTargetingFiltersRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ TargetFilters *TargetFilters `protobuf:"bytes,3,opt,name=target_filters,json=targetFilters,proto3" json:"target_filters,omitempty"`
}
-func (x *SubnetSelectorTerm) Reset() {
- *x = SubnetSelectorTerm{}
+func (x *GetAvailableKindsByTargetingFiltersRequest) Reset() {
+ *x = GetAvailableKindsByTargetingFiltersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[254]
+ mi := &file_api_v1_recommendation_proto_msgTypes[267]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SubnetSelectorTerm) String() string {
+func (x *GetAvailableKindsByTargetingFiltersRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SubnetSelectorTerm) ProtoMessage() {}
+func (*GetAvailableKindsByTargetingFiltersRequest) ProtoMessage() {}
-func (x *SubnetSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[254]
+func (x *GetAvailableKindsByTargetingFiltersRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[267]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20347,52 +23822,62 @@ func (x *SubnetSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SubnetSelectorTerm.ProtoReflect.Descriptor instead.
-func (*SubnetSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{254}
+// Deprecated: Use GetAvailableKindsByTargetingFiltersRequest.ProtoReflect.Descriptor instead.
+func (*GetAvailableKindsByTargetingFiltersRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{267}
}
-func (x *SubnetSelectorTerm) GetTags() map[string]string {
+func (x *GetAvailableKindsByTargetingFiltersRequest) GetTeamId() string {
if x != nil {
- return x.Tags
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetAvailableKindsByTargetingFiltersRequest) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
}
return nil
}
-func (x *SubnetSelectorTerm) GetId() string {
+func (x *GetAvailableKindsByTargetingFiltersRequest) GetTargetFilters() *TargetFilters {
if x != nil {
- return x.Id
+ return x.TargetFilters
}
- return ""
+ return nil
}
-type SecurityGroupSelectorTerm struct {
+// SearchResourcesByTargetingFilters allows searching for resources that match targeting filter criteria
+type SearchResourcesByTargetingFiltersRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Unique identifier for the team.
+ ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Unique identifiers for the clusters.
+ SearchQuery string `protobuf:"bytes,3,opt,name=search_query,json=searchQuery,proto3" json:"search_query,omitempty"` // Search term to match against resources.
+ TargetFilterType TargetFilterType `protobuf:"varint,4,opt,name=target_filter_type,json=targetFilterType,proto3,enum=api.v1.TargetFilterType" json:"target_filter_type,omitempty"` // Type of filter to apply.
+ TargetFilters *TargetFilters `protobuf:"bytes,5,opt,name=target_filters,json=targetFilters,proto3" json:"target_filters,omitempty"`
}
-func (x *SecurityGroupSelectorTerm) Reset() {
- *x = SecurityGroupSelectorTerm{}
+func (x *SearchResourcesByTargetingFiltersRequest) Reset() {
+ *x = SearchResourcesByTargetingFiltersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[255]
+ mi := &file_api_v1_recommendation_proto_msgTypes[268]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *SecurityGroupSelectorTerm) String() string {
+func (x *SearchResourcesByTargetingFiltersRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*SecurityGroupSelectorTerm) ProtoMessage() {}
+func (*SearchResourcesByTargetingFiltersRequest) ProtoMessage() {}
-func (x *SecurityGroupSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[255]
+func (x *SearchResourcesByTargetingFiltersRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[268]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20403,125 +23888,79 @@ func (x *SecurityGroupSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use SecurityGroupSelectorTerm.ProtoReflect.Descriptor instead.
-func (*SecurityGroupSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{255}
+// Deprecated: Use SearchResourcesByTargetingFiltersRequest.ProtoReflect.Descriptor instead.
+func (*SearchResourcesByTargetingFiltersRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{268}
}
-func (x *SecurityGroupSelectorTerm) GetTags() map[string]string {
+func (x *SearchResourcesByTargetingFiltersRequest) GetTeamId() string {
if x != nil {
- return x.Tags
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *SecurityGroupSelectorTerm) GetId() string {
+func (x *SearchResourcesByTargetingFiltersRequest) GetClusterIds() []string {
if x != nil {
- return x.Id
+ return x.ClusterIds
}
- return ""
+ return nil
}
-func (x *SecurityGroupSelectorTerm) GetName() string {
+func (x *SearchResourcesByTargetingFiltersRequest) GetSearchQuery() string {
if x != nil {
- return x.Name
+ return x.SearchQuery
}
return ""
}
-type CapacityReservationSelectorTerm struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
- OwnerId string `protobuf:"bytes,3,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
-}
-
-func (x *CapacityReservationSelectorTerm) Reset() {
- *x = CapacityReservationSelectorTerm{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[256]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CapacityReservationSelectorTerm) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CapacityReservationSelectorTerm) ProtoMessage() {}
-
-func (x *CapacityReservationSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[256]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CapacityReservationSelectorTerm.ProtoReflect.Descriptor instead.
-func (*CapacityReservationSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{256}
-}
-
-func (x *CapacityReservationSelectorTerm) GetTags() map[string]string {
- if x != nil {
- return x.Tags
- }
- return nil
-}
-
-func (x *CapacityReservationSelectorTerm) GetId() string {
+func (x *SearchResourcesByTargetingFiltersRequest) GetTargetFilterType() TargetFilterType {
if x != nil {
- return x.Id
+ return x.TargetFilterType
}
- return ""
+ return TargetFilterType_TARGET_FILTER_TYPE_UNSPECIFIED
}
-func (x *CapacityReservationSelectorTerm) GetOwnerId() string {
+func (x *SearchResourcesByTargetingFiltersRequest) GetTargetFilters() *TargetFilters {
if x != nil {
- return x.OwnerId
+ return x.TargetFilters
}
- return ""
+ return nil
}
-type AMISelectorTerm struct {
+type TargetFilters struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Alias string `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"`
- Tags map[string]string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- Owner string `protobuf:"bytes,5,opt,name=owner,proto3" json:"owner,omitempty"`
- SsmParameter string `protobuf:"bytes,6,opt,name=ssm_parameter,json=ssmParameter,proto3" json:"ssm_parameter,omitempty"`
+ NamespaceNames []string `protobuf:"bytes,1,rep,name=namespace_names,json=namespaceNames,proto3" json:"namespace_names,omitempty"`
+ // optional LabelSelector namespace_selector = 1; // Target namespaces by labels
+ // optional LabelSelector annotation_selector = 2; // Target workloads by annotations
+ WorkloadNames []string `protobuf:"bytes,2,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
+ NodeGroupNames []string `protobuf:"bytes,3,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
+ Labels []string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"`
+ KindFilter []K8SObjectKind `protobuf:"varint,5,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"` // Target specific workload kinds
+ NamePattern *RegexPattern `protobuf:"bytes,6,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"` // Target workloads by name pattern
+ NamespacePattern *RegexPattern `protobuf:"bytes,7,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"` // Target namespaces by name pattern
}
-func (x *AMISelectorTerm) Reset() {
- *x = AMISelectorTerm{}
+func (x *TargetFilters) Reset() {
+ *x = TargetFilters{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[257]
+ mi := &file_api_v1_recommendation_proto_msgTypes[269]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AMISelectorTerm) String() string {
+func (x *TargetFilters) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AMISelectorTerm) ProtoMessage() {}
+func (*TargetFilters) ProtoMessage() {}
-func (x *AMISelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[257]
+func (x *TargetFilters) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[269]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20532,89 +23971,85 @@ func (x *AMISelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AMISelectorTerm.ProtoReflect.Descriptor instead.
-func (*AMISelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{257}
+// Deprecated: Use TargetFilters.ProtoReflect.Descriptor instead.
+func (*TargetFilters) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{269}
}
-func (x *AMISelectorTerm) GetAlias() string {
+func (x *TargetFilters) GetNamespaceNames() []string {
if x != nil {
- return x.Alias
+ return x.NamespaceNames
}
- return ""
+ return nil
}
-func (x *AMISelectorTerm) GetTags() map[string]string {
+func (x *TargetFilters) GetWorkloadNames() []string {
if x != nil {
- return x.Tags
+ return x.WorkloadNames
}
return nil
}
-func (x *AMISelectorTerm) GetId() string {
+func (x *TargetFilters) GetNodeGroupNames() []string {
if x != nil {
- return x.Id
+ return x.NodeGroupNames
}
- return ""
+ return nil
}
-func (x *AMISelectorTerm) GetName() string {
+func (x *TargetFilters) GetLabels() []string {
if x != nil {
- return x.Name
+ return x.Labels
}
- return ""
+ return nil
}
-func (x *AMISelectorTerm) GetOwner() string {
+func (x *TargetFilters) GetKindFilter() []K8SObjectKind {
if x != nil {
- return x.Owner
+ return x.KindFilter
}
- return ""
+ return nil
}
-func (x *AMISelectorTerm) GetSsmParameter() string {
+func (x *TargetFilters) GetNamePattern() *RegexPattern {
if x != nil {
- return x.SsmParameter
+ return x.NamePattern
}
- return ""
+ return nil
}
-type KubeletConfiguration struct {
+func (x *TargetFilters) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+type GetAvailableKindsByTargetingFiltersResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ClusterDns []string `protobuf:"bytes,1,rep,name=cluster_dns,json=clusterDns,proto3" json:"cluster_dns,omitempty"`
- MaxPods *int32 `protobuf:"varint,2,opt,name=max_pods,json=maxPods,proto3,oneof" json:"max_pods,omitempty"`
- PodsPerCore *int32 `protobuf:"varint,3,opt,name=pods_per_core,json=podsPerCore,proto3,oneof" json:"pods_per_core,omitempty"`
- SystemReserved map[string]string `protobuf:"bytes,4,rep,name=system_reserved,json=systemReserved,proto3" json:"system_reserved,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- KubeReserved map[string]string `protobuf:"bytes,5,rep,name=kube_reserved,json=kubeReserved,proto3" json:"kube_reserved,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- EvictionHard map[string]string `protobuf:"bytes,6,rep,name=eviction_hard,json=evictionHard,proto3" json:"eviction_hard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- EvictionSoft map[string]string `protobuf:"bytes,7,rep,name=eviction_soft,json=evictionSoft,proto3" json:"eviction_soft,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- EvictionSoftGracePeriod map[string]string `protobuf:"bytes,8,rep,name=eviction_soft_grace_period,json=evictionSoftGracePeriod,proto3" json:"eviction_soft_grace_period,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- EvictionMaxPodGracePeriod *int32 `protobuf:"varint,9,opt,name=eviction_max_pod_grace_period,json=evictionMaxPodGracePeriod,proto3,oneof" json:"eviction_max_pod_grace_period,omitempty"`
- ImageGcHighThresholdPercent *int32 `protobuf:"varint,10,opt,name=image_gc_high_threshold_percent,json=imageGcHighThresholdPercent,proto3,oneof" json:"image_gc_high_threshold_percent,omitempty"`
- ImageGcLowThresholdPercent *int32 `protobuf:"varint,11,opt,name=image_gc_low_threshold_percent,json=imageGcLowThresholdPercent,proto3,oneof" json:"image_gc_low_threshold_percent,omitempty"`
- CpuCfsQuota *bool `protobuf:"varint,12,opt,name=cpu_cfs_quota,json=cpuCfsQuota,proto3,oneof" json:"cpu_cfs_quota,omitempty"`
+ Kinds []K8SObjectKind `protobuf:"varint,1,rep,packed,name=kinds,proto3,enum=api.v1.K8SObjectKind" json:"kinds,omitempty"`
}
-func (x *KubeletConfiguration) Reset() {
- *x = KubeletConfiguration{}
+func (x *GetAvailableKindsByTargetingFiltersResponse) Reset() {
+ *x = GetAvailableKindsByTargetingFiltersResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[258]
+ mi := &file_api_v1_recommendation_proto_msgTypes[270]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KubeletConfiguration) String() string {
+func (x *GetAvailableKindsByTargetingFiltersResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KubeletConfiguration) ProtoMessage() {}
+func (*GetAvailableKindsByTargetingFiltersResponse) ProtoMessage() {}
-func (x *KubeletConfiguration) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[258]
+func (x *GetAvailableKindsByTargetingFiltersResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[270]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20625,122 +24060,114 @@ func (x *KubeletConfiguration) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KubeletConfiguration.ProtoReflect.Descriptor instead.
-func (*KubeletConfiguration) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{258}
+// Deprecated: Use GetAvailableKindsByTargetingFiltersResponse.ProtoReflect.Descriptor instead.
+func (*GetAvailableKindsByTargetingFiltersResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{270}
}
-func (x *KubeletConfiguration) GetClusterDns() []string {
+func (x *GetAvailableKindsByTargetingFiltersResponse) GetKinds() []K8SObjectKind {
if x != nil {
- return x.ClusterDns
+ return x.Kinds
}
return nil
}
-func (x *KubeletConfiguration) GetMaxPods() int32 {
- if x != nil && x.MaxPods != nil {
- return *x.MaxPods
- }
- return 0
+type SearchResourcesByTargetingFiltersResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespaces []*NamespaceSearchResult `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
+ Workloads []*WorkloadSearchResult `protobuf:"bytes,2,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ NodeGroups []*NodeGroupSearchResult `protobuf:"bytes,3,rep,name=node_groups,json=nodeGroups,proto3" json:"node_groups,omitempty"`
+ Labels []*LabelSearchResult `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"`
}
-func (x *KubeletConfiguration) GetPodsPerCore() int32 {
- if x != nil && x.PodsPerCore != nil {
- return *x.PodsPerCore
+func (x *SearchResourcesByTargetingFiltersResponse) Reset() {
+ *x = SearchResourcesByTargetingFiltersResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[271]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *KubeletConfiguration) GetSystemReserved() map[string]string {
- if x != nil {
- return x.SystemReserved
- }
- return nil
+func (x *SearchResourcesByTargetingFiltersResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *KubeletConfiguration) GetKubeReserved() map[string]string {
- if x != nil {
- return x.KubeReserved
+func (*SearchResourcesByTargetingFiltersResponse) ProtoMessage() {}
+
+func (x *SearchResourcesByTargetingFiltersResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[271]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *KubeletConfiguration) GetEvictionHard() map[string]string {
- if x != nil {
- return x.EvictionHard
- }
- return nil
+// Deprecated: Use SearchResourcesByTargetingFiltersResponse.ProtoReflect.Descriptor instead.
+func (*SearchResourcesByTargetingFiltersResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{271}
}
-func (x *KubeletConfiguration) GetEvictionSoft() map[string]string {
+func (x *SearchResourcesByTargetingFiltersResponse) GetNamespaces() []*NamespaceSearchResult {
if x != nil {
- return x.EvictionSoft
+ return x.Namespaces
}
return nil
}
-func (x *KubeletConfiguration) GetEvictionSoftGracePeriod() map[string]string {
+func (x *SearchResourcesByTargetingFiltersResponse) GetWorkloads() []*WorkloadSearchResult {
if x != nil {
- return x.EvictionSoftGracePeriod
+ return x.Workloads
}
return nil
}
-func (x *KubeletConfiguration) GetEvictionMaxPodGracePeriod() int32 {
- if x != nil && x.EvictionMaxPodGracePeriod != nil {
- return *x.EvictionMaxPodGracePeriod
- }
- return 0
-}
-
-func (x *KubeletConfiguration) GetImageGcHighThresholdPercent() int32 {
- if x != nil && x.ImageGcHighThresholdPercent != nil {
- return *x.ImageGcHighThresholdPercent
- }
- return 0
-}
-
-func (x *KubeletConfiguration) GetImageGcLowThresholdPercent() int32 {
- if x != nil && x.ImageGcLowThresholdPercent != nil {
- return *x.ImageGcLowThresholdPercent
+func (x *SearchResourcesByTargetingFiltersResponse) GetNodeGroups() []*NodeGroupSearchResult {
+ if x != nil {
+ return x.NodeGroups
}
- return 0
+ return nil
}
-func (x *KubeletConfiguration) GetCpuCfsQuota() bool {
- if x != nil && x.CpuCfsQuota != nil {
- return *x.CpuCfsQuota
+func (x *SearchResourcesByTargetingFiltersResponse) GetLabels() []*LabelSearchResult {
+ if x != nil {
+ return x.Labels
}
- return false
+ return nil
}
-type BlockDeviceMapping struct {
+type NamespaceSearchResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- DeviceName *string `protobuf:"bytes,1,opt,name=device_name,json=deviceName,proto3,oneof" json:"device_name,omitempty"`
- Ebs *BlockDevice `protobuf:"bytes,2,opt,name=ebs,proto3,oneof" json:"ebs,omitempty"`
- RootVolume *bool `protobuf:"varint,3,opt,name=root_volume,json=rootVolume,proto3,oneof" json:"root_volume,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
-func (x *BlockDeviceMapping) Reset() {
- *x = BlockDeviceMapping{}
+func (x *NamespaceSearchResult) Reset() {
+ *x = NamespaceSearchResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[259]
+ mi := &file_api_v1_recommendation_proto_msgTypes[272]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BlockDeviceMapping) String() string {
+func (x *NamespaceSearchResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BlockDeviceMapping) ProtoMessage() {}
+func (*NamespaceSearchResult) ProtoMessage() {}
-func (x *BlockDeviceMapping) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[259]
+func (x *NamespaceSearchResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[272]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20751,65 +24178,44 @@ func (x *BlockDeviceMapping) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BlockDeviceMapping.ProtoReflect.Descriptor instead.
-func (*BlockDeviceMapping) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{259}
-}
-
-func (x *BlockDeviceMapping) GetDeviceName() string {
- if x != nil && x.DeviceName != nil {
- return *x.DeviceName
- }
- return ""
+// Deprecated: Use NamespaceSearchResult.ProtoReflect.Descriptor instead.
+func (*NamespaceSearchResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{272}
}
-func (x *BlockDeviceMapping) GetEbs() *BlockDevice {
+func (x *NamespaceSearchResult) GetName() string {
if x != nil {
- return x.Ebs
- }
- return nil
-}
-
-func (x *BlockDeviceMapping) GetRootVolume() bool {
- if x != nil && x.RootVolume != nil {
- return *x.RootVolume
+ return x.Name
}
- return false
+ return ""
}
-type BlockDevice struct {
+type WorkloadSearchResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- DeleteOnTermination *bool `protobuf:"varint,1,opt,name=delete_on_termination,json=deleteOnTermination,proto3,oneof" json:"delete_on_termination,omitempty"`
- Encrypted *bool `protobuf:"varint,2,opt,name=encrypted,proto3,oneof" json:"encrypted,omitempty"`
- Iops *int64 `protobuf:"varint,3,opt,name=iops,proto3,oneof" json:"iops,omitempty"`
- KmsKeyId *string `protobuf:"bytes,4,opt,name=kms_key_id,json=kmsKeyId,proto3,oneof" json:"kms_key_id,omitempty"`
- SnapshotId *string `protobuf:"bytes,5,opt,name=snapshot_id,json=snapshotId,proto3,oneof" json:"snapshot_id,omitempty"`
- Throughput *int64 `protobuf:"varint,6,opt,name=throughput,proto3,oneof" json:"throughput,omitempty"`
- VolumeInitializationRate *int32 `protobuf:"varint,7,opt,name=volume_initialization_rate,json=volumeInitializationRate,proto3,oneof" json:"volume_initialization_rate,omitempty"`
- VolumeSize *string `protobuf:"bytes,8,opt,name=volume_size,json=volumeSize,proto3,oneof" json:"volume_size,omitempty"`
- VolumeType *string `protobuf:"bytes,9,opt,name=volume_type,json=volumeType,proto3,oneof" json:"volume_type,omitempty"`
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
}
-func (x *BlockDevice) Reset() {
- *x = BlockDevice{}
+func (x *WorkloadSearchResult) Reset() {
+ *x = WorkloadSearchResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[260]
+ mi := &file_api_v1_recommendation_proto_msgTypes[273]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BlockDevice) String() string {
+func (x *WorkloadSearchResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BlockDevice) ProtoMessage() {}
+func (*WorkloadSearchResult) ProtoMessage() {}
-func (x *BlockDevice) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[260]
+func (x *WorkloadSearchResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[273]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20820,102 +24226,98 @@ func (x *BlockDevice) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BlockDevice.ProtoReflect.Descriptor instead.
-func (*BlockDevice) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{260}
+// Deprecated: Use WorkloadSearchResult.ProtoReflect.Descriptor instead.
+func (*WorkloadSearchResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{273}
}
-func (x *BlockDevice) GetDeleteOnTermination() bool {
- if x != nil && x.DeleteOnTermination != nil {
- return *x.DeleteOnTermination
+func (x *WorkloadSearchResult) GetKind() string {
+ if x != nil {
+ return x.Kind
}
- return false
+ return ""
}
-func (x *BlockDevice) GetEncrypted() bool {
- if x != nil && x.Encrypted != nil {
- return *x.Encrypted
+func (x *WorkloadSearchResult) GetName() string {
+ if x != nil {
+ return x.Name
}
- return false
+ return ""
}
-func (x *BlockDevice) GetIops() int64 {
- if x != nil && x.Iops != nil {
- return *x.Iops
- }
- return 0
-}
+type NodeGroupSearchResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *BlockDevice) GetKmsKeyId() string {
- if x != nil && x.KmsKeyId != nil {
- return *x.KmsKeyId
- }
- return ""
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
-func (x *BlockDevice) GetSnapshotId() string {
- if x != nil && x.SnapshotId != nil {
- return *x.SnapshotId
+func (x *NodeGroupSearchResult) Reset() {
+ *x = NodeGroupSearchResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[274]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *BlockDevice) GetThroughput() int64 {
- if x != nil && x.Throughput != nil {
- return *x.Throughput
- }
- return 0
+func (x *NodeGroupSearchResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *BlockDevice) GetVolumeInitializationRate() int32 {
- if x != nil && x.VolumeInitializationRate != nil {
- return *x.VolumeInitializationRate
+func (*NodeGroupSearchResult) ProtoMessage() {}
+
+func (x *NodeGroupSearchResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[274]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *BlockDevice) GetVolumeSize() string {
- if x != nil && x.VolumeSize != nil {
- return *x.VolumeSize
- }
- return ""
+// Deprecated: Use NodeGroupSearchResult.ProtoReflect.Descriptor instead.
+func (*NodeGroupSearchResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{274}
}
-func (x *BlockDevice) GetVolumeType() string {
- if x != nil && x.VolumeType != nil {
- return *x.VolumeType
+func (x *NodeGroupSearchResult) GetName() string {
+ if x != nil {
+ return x.Name
}
return ""
}
-type MetadataOptions struct {
+type LabelSearchResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- HttpEndpoint *string `protobuf:"bytes,1,opt,name=http_endpoint,json=httpEndpoint,proto3,oneof" json:"http_endpoint,omitempty"`
- HttpProtocolIpv6 *string `protobuf:"bytes,2,opt,name=http_protocol_ipv6,json=httpProtocolIpv6,proto3,oneof" json:"http_protocol_ipv6,omitempty"`
- HttpPutResponseHopLimit *int64 `protobuf:"varint,3,opt,name=http_put_response_hop_limit,json=httpPutResponseHopLimit,proto3,oneof" json:"http_put_response_hop_limit,omitempty"`
- HttpTokens *string `protobuf:"bytes,4,opt,name=http_tokens,json=httpTokens,proto3,oneof" json:"http_tokens,omitempty"`
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
-func (x *MetadataOptions) Reset() {
- *x = MetadataOptions{}
+func (x *LabelSearchResult) Reset() {
+ *x = LabelSearchResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[261]
+ mi := &file_api_v1_recommendation_proto_msgTypes[275]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *MetadataOptions) String() string {
+func (x *LabelSearchResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*MetadataOptions) ProtoMessage() {}
+func (*LabelSearchResult) ProtoMessage() {}
-func (x *MetadataOptions) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[261]
+func (x *LabelSearchResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[275]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -20926,71 +24328,50 @@ func (x *MetadataOptions) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use MetadataOptions.ProtoReflect.Descriptor instead.
-func (*MetadataOptions) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{261}
-}
-
-func (x *MetadataOptions) GetHttpEndpoint() string {
- if x != nil && x.HttpEndpoint != nil {
- return *x.HttpEndpoint
- }
- return ""
+// Deprecated: Use LabelSearchResult.ProtoReflect.Descriptor instead.
+func (*LabelSearchResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{275}
}
-func (x *MetadataOptions) GetHttpProtocolIpv6() string {
- if x != nil && x.HttpProtocolIpv6 != nil {
- return *x.HttpProtocolIpv6
+func (x *LabelSearchResult) GetKey() string {
+ if x != nil {
+ return x.Key
}
return ""
}
-func (x *MetadataOptions) GetHttpPutResponseHopLimit() int64 {
- if x != nil && x.HttpPutResponseHopLimit != nil {
- return *x.HttpPutResponseHopLimit
- }
- return 0
-}
-
-func (x *MetadataOptions) GetHttpTokens() string {
- if x != nil && x.HttpTokens != nil {
- return *x.HttpTokens
+func (x *LabelSearchResult) GetValue() string {
+ if x != nil {
+ return x.Value
}
return ""
}
-type GCPNodeClassSpec struct {
+type CreateNodePolicyTargetsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
- ImageSelectorTerms []*GCPImageSelectorTerm `protobuf:"bytes,2,rep,name=image_selector_terms,json=imageSelectorTerms,proto3" json:"image_selector_terms,omitempty"`
- ImageFamily *string `protobuf:"bytes,3,opt,name=image_family,json=imageFamily,proto3,oneof" json:"image_family,omitempty"`
- KubeletConfiguration *KubeletConfiguration `protobuf:"bytes,4,opt,name=kubelet_configuration,json=kubeletConfiguration,proto3,oneof" json:"kubelet_configuration,omitempty"`
- Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- NetworkTags []string `protobuf:"bytes,7,rep,name=network_tags,json=networkTags,proto3" json:"network_tags,omitempty"`
- Disks []*GCPDisk `protobuf:"bytes,8,rep,name=disks,proto3" json:"disks,omitempty"`
+ Targets []*NodePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *GCPNodeClassSpec) Reset() {
- *x = GCPNodeClassSpec{}
+func (x *CreateNodePolicyTargetsRequest) Reset() {
+ *x = CreateNodePolicyTargetsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[262]
+ mi := &file_api_v1_recommendation_proto_msgTypes[276]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GCPNodeClassSpec) String() string {
+func (x *CreateNodePolicyTargetsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GCPNodeClassSpec) ProtoMessage() {}
+func (*CreateNodePolicyTargetsRequest) ProtoMessage() {}
-func (x *GCPNodeClassSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[262]
+func (x *CreateNodePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[276]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21001,93 +24382,90 @@ func (x *GCPNodeClassSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GCPNodeClassSpec.ProtoReflect.Descriptor instead.
-func (*GCPNodeClassSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{262}
+// Deprecated: Use CreateNodePolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*CreateNodePolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{276}
}
-func (x *GCPNodeClassSpec) GetServiceAccount() string {
- if x != nil {
- return x.ServiceAccount
- }
- return ""
-}
-
-func (x *GCPNodeClassSpec) GetImageSelectorTerms() []*GCPImageSelectorTerm {
+func (x *CreateNodePolicyTargetsRequest) GetTargets() []*NodePolicyTarget {
if x != nil {
- return x.ImageSelectorTerms
+ return x.Targets
}
return nil
}
-func (x *GCPNodeClassSpec) GetImageFamily() string {
- if x != nil && x.ImageFamily != nil {
- return *x.ImageFamily
- }
- return ""
+type CreateNodePolicyTargetsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Targets []*NodePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *GCPNodeClassSpec) GetKubeletConfiguration() *KubeletConfiguration {
- if x != nil {
- return x.KubeletConfiguration
+func (x *CreateNodePolicyTargetsResponse) Reset() {
+ *x = CreateNodePolicyTargetsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[277]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *GCPNodeClassSpec) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
+func (x *CreateNodePolicyTargetsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *GCPNodeClassSpec) GetMetadata() map[string]string {
- if x != nil {
- return x.Metadata
+func (*CreateNodePolicyTargetsResponse) ProtoMessage() {}
+
+func (x *CreateNodePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[277]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *GCPNodeClassSpec) GetNetworkTags() []string {
- if x != nil {
- return x.NetworkTags
- }
- return nil
+// Deprecated: Use CreateNodePolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*CreateNodePolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{277}
}
-func (x *GCPNodeClassSpec) GetDisks() []*GCPDisk {
+func (x *CreateNodePolicyTargetsResponse) GetTargets() []*NodePolicyTarget {
if x != nil {
- return x.Disks
+ return x.Targets
}
return nil
}
-type GCPImageSelectorTerm struct {
+type ListNodePolicyTargetsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Alias string `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"`
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *GCPImageSelectorTerm) Reset() {
- *x = GCPImageSelectorTerm{}
+func (x *ListNodePolicyTargetsRequest) Reset() {
+ *x = ListNodePolicyTargetsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[263]
+ mi := &file_api_v1_recommendation_proto_msgTypes[278]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GCPImageSelectorTerm) String() string {
+func (x *ListNodePolicyTargetsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GCPImageSelectorTerm) ProtoMessage() {}
+func (*ListNodePolicyTargetsRequest) ProtoMessage() {}
-func (x *GCPImageSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[263]
+func (x *ListNodePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[278]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21098,54 +24476,43 @@ func (x *GCPImageSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GCPImageSelectorTerm.ProtoReflect.Descriptor instead.
-func (*GCPImageSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{263}
-}
-
-func (x *GCPImageSelectorTerm) GetAlias() string {
- if x != nil {
- return x.Alias
- }
- return ""
+// Deprecated: Use ListNodePolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*ListNodePolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{278}
}
-func (x *GCPImageSelectorTerm) GetId() string {
+func (x *ListNodePolicyTargetsRequest) GetTeamId() string {
if x != nil {
- return x.Id
+ return x.TeamId
}
return ""
}
-type GCPDisk struct {
+type ListNodePolicyTargetsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- SizeGib int32 `protobuf:"varint,1,opt,name=size_gib,json=sizeGib,proto3" json:"size_gib,omitempty"`
- Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"`
- Boot bool `protobuf:"varint,3,opt,name=boot,proto3" json:"boot,omitempty"`
- SecondaryBootImage string `protobuf:"bytes,4,opt,name=secondary_boot_image,json=secondaryBootImage,proto3" json:"secondary_boot_image,omitempty"`
- SecondaryBootMode string `protobuf:"bytes,5,opt,name=secondary_boot_mode,json=secondaryBootMode,proto3" json:"secondary_boot_mode,omitempty"`
+ Targets []*NodePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *GCPDisk) Reset() {
- *x = GCPDisk{}
+func (x *ListNodePolicyTargetsResponse) Reset() {
+ *x = ListNodePolicyTargetsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[264]
+ mi := &file_api_v1_recommendation_proto_msgTypes[279]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GCPDisk) String() string {
+func (x *ListNodePolicyTargetsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GCPDisk) ProtoMessage() {}
+func (*ListNodePolicyTargetsResponse) ProtoMessage() {}
-func (x *GCPDisk) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[264]
+func (x *ListNodePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[279]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21156,77 +24523,43 @@ func (x *GCPDisk) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GCPDisk.ProtoReflect.Descriptor instead.
-func (*GCPDisk) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{264}
-}
-
-func (x *GCPDisk) GetSizeGib() int32 {
- if x != nil {
- return x.SizeGib
- }
- return 0
-}
-
-func (x *GCPDisk) GetCategory() string {
- if x != nil {
- return x.Category
- }
- return ""
-}
-
-func (x *GCPDisk) GetBoot() bool {
- if x != nil {
- return x.Boot
- }
- return false
-}
-
-func (x *GCPDisk) GetSecondaryBootImage() string {
- if x != nil {
- return x.SecondaryBootImage
- }
- return ""
+// Deprecated: Use ListNodePolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*ListNodePolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{279}
}
-func (x *GCPDisk) GetSecondaryBootMode() string {
+func (x *ListNodePolicyTargetsResponse) GetTargets() []*NodePolicyTarget {
if x != nil {
- return x.SecondaryBootMode
+ return x.Targets
}
- return ""
+ return nil
}
-type AzureNodeClassSpec struct {
+type UpdateNodePolicyTargetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- VnetSubnetId *string `protobuf:"bytes,1,opt,name=vnet_subnet_id,json=vnetSubnetId,proto3,oneof" json:"vnet_subnet_id,omitempty"`
- OsDiskSizeGb *int32 `protobuf:"varint,2,opt,name=os_disk_size_gb,json=osDiskSizeGb,proto3,oneof" json:"os_disk_size_gb,omitempty"`
- ImageFamily *string `protobuf:"bytes,3,opt,name=image_family,json=imageFamily,proto3,oneof" json:"image_family,omitempty"` // Ubuntu, Ubuntu2204, Ubuntu2404, AzureLinux
- FipsMode *string `protobuf:"bytes,4,opt,name=fips_mode,json=fipsMode,proto3,oneof" json:"fips_mode,omitempty"` // FIPS or Disabled
- Tags map[string]string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Kubelet *AzureKubeletConfiguration `protobuf:"bytes,6,opt,name=kubelet,proto3,oneof" json:"kubelet,omitempty"`
- MaxPods *int32 `protobuf:"varint,7,opt,name=max_pods,json=maxPods,proto3,oneof" json:"max_pods,omitempty"`
+ Target *NodePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
}
-func (x *AzureNodeClassSpec) Reset() {
- *x = AzureNodeClassSpec{}
+func (x *UpdateNodePolicyTargetRequest) Reset() {
+ *x = UpdateNodePolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[265]
+ mi := &file_api_v1_recommendation_proto_msgTypes[280]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AzureNodeClassSpec) String() string {
+func (x *UpdateNodePolicyTargetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AzureNodeClassSpec) ProtoMessage() {}
+func (*UpdateNodePolicyTargetRequest) ProtoMessage() {}
-func (x *AzureNodeClassSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[265]
+func (x *UpdateNodePolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[280]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21237,94 +24570,105 @@ func (x *AzureNodeClassSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AzureNodeClassSpec.ProtoReflect.Descriptor instead.
-func (*AzureNodeClassSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{265}
+// Deprecated: Use UpdateNodePolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*UpdateNodePolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{280}
}
-func (x *AzureNodeClassSpec) GetVnetSubnetId() string {
- if x != nil && x.VnetSubnetId != nil {
- return *x.VnetSubnetId
+func (x *UpdateNodePolicyTargetRequest) GetTarget() *NodePolicyTarget {
+ if x != nil {
+ return x.Target
}
- return ""
+ return nil
}
-func (x *AzureNodeClassSpec) GetOsDiskSizeGb() int32 {
- if x != nil && x.OsDiskSizeGb != nil {
- return *x.OsDiskSizeGb
- }
- return 0
+type UpdateNodePolicyTargetResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Target *NodePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
}
-func (x *AzureNodeClassSpec) GetImageFamily() string {
- if x != nil && x.ImageFamily != nil {
- return *x.ImageFamily
+func (x *UpdateNodePolicyTargetResponse) Reset() {
+ *x = UpdateNodePolicyTargetResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[281]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *AzureNodeClassSpec) GetFipsMode() string {
- if x != nil && x.FipsMode != nil {
- return *x.FipsMode
- }
- return ""
+func (x *UpdateNodePolicyTargetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *AzureNodeClassSpec) GetTags() map[string]string {
- if x != nil {
- return x.Tags
+func (*UpdateNodePolicyTargetResponse) ProtoMessage() {}
+
+func (x *UpdateNodePolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[281]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *AzureNodeClassSpec) GetKubelet() *AzureKubeletConfiguration {
- if x != nil {
- return x.Kubelet
- }
- return nil
+// Deprecated: Use UpdateNodePolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*UpdateNodePolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{281}
}
-func (x *AzureNodeClassSpec) GetMaxPods() int32 {
- if x != nil && x.MaxPods != nil {
- return *x.MaxPods
+func (x *UpdateNodePolicyTargetResponse) GetTarget() *NodePolicyTarget {
+ if x != nil {
+ return x.Target
}
- return 0
+ return nil
}
-type AzureKubeletConfiguration struct {
+type NodePolicyTarget struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CpuManagerPolicy *string `protobuf:"bytes,1,opt,name=cpu_manager_policy,json=cpuManagerPolicy,proto3,oneof" json:"cpu_manager_policy,omitempty"` // none, static
- CpuCfsQuota *bool `protobuf:"varint,2,opt,name=cpu_cfs_quota,json=cpuCfsQuota,proto3,oneof" json:"cpu_cfs_quota,omitempty"`
- CpuCfsQuotaPeriod *string `protobuf:"bytes,3,opt,name=cpu_cfs_quota_period,json=cpuCfsQuotaPeriod,proto3,oneof" json:"cpu_cfs_quota_period,omitempty"` // e.g., "100ms"
- ImageGcHighThresholdPercent *int32 `protobuf:"varint,4,opt,name=image_gc_high_threshold_percent,json=imageGcHighThresholdPercent,proto3,oneof" json:"image_gc_high_threshold_percent,omitempty"`
- ImageGcLowThresholdPercent *int32 `protobuf:"varint,5,opt,name=image_gc_low_threshold_percent,json=imageGcLowThresholdPercent,proto3,oneof" json:"image_gc_low_threshold_percent,omitempty"`
- TopologyManagerPolicy *string `protobuf:"bytes,6,opt,name=topology_manager_policy,json=topologyManagerPolicy,proto3,oneof" json:"topology_manager_policy,omitempty"` // restricted, best-effort, none, single-numa-node
- AllowedUnsafeSysctls []string `protobuf:"bytes,7,rep,name=allowed_unsafe_sysctls,json=allowedUnsafeSysctls,proto3" json:"allowed_unsafe_sysctls,omitempty"`
- ContainerLogMaxSize *string `protobuf:"bytes,8,opt,name=container_log_max_size,json=containerLogMaxSize,proto3,oneof" json:"container_log_max_size,omitempty"` // e.g., "50Mi"
- ContainerLogMaxFiles *int32 `protobuf:"varint,9,opt,name=container_log_max_files,json=containerLogMaxFiles,proto3,oneof" json:"container_log_max_files,omitempty"`
- PodPidsLimit *int64 `protobuf:"varint,10,opt,name=pod_pids_limit,json=podPidsLimit,proto3,oneof" json:"pod_pids_limit,omitempty"`
+ TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ TeamId string `protobuf:"bytes,4,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // Invariant: at most 1 entry. Server rejects >1. Will be narrowed to a scalar once all clients migrate.
+ ClusterIds []string `protobuf:"bytes,5,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // uuid[]
+ PolicyId string `protobuf:"bytes,6,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Enabled bool `protobuf:"varint,11,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,110,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,111,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ DeletedAt *timestamppb.Timestamp `protobuf:"bytes,112,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
+ // Runtime status conditions read from the compiled Karpenter NodePool in the
+ // target cluster (e.g. ZonalShiftReady / ZonalShiftActive). Populated by
+ // ListNodePolicyTargets via a join against k8s_karpenter_resources. Empty
+ // when no conditions are observed for this target.
+ Status *NodePolicyTargetStatus `protobuf:"bytes,120,opt,name=status,proto3" json:"status,omitempty"`
}
-func (x *AzureKubeletConfiguration) Reset() {
- *x = AzureKubeletConfiguration{}
+func (x *NodePolicyTarget) Reset() {
+ *x = NodePolicyTarget{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[266]
+ mi := &file_api_v1_recommendation_proto_msgTypes[282]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AzureKubeletConfiguration) String() string {
+func (x *NodePolicyTarget) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AzureKubeletConfiguration) ProtoMessage() {}
+func (*NodePolicyTarget) ProtoMessage() {}
-func (x *AzureKubeletConfiguration) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[266]
+func (x *NodePolicyTarget) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[282]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21335,108 +24679,122 @@ func (x *AzureKubeletConfiguration) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AzureKubeletConfiguration.ProtoReflect.Descriptor instead.
-func (*AzureKubeletConfiguration) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{266}
+// Deprecated: Use NodePolicyTarget.ProtoReflect.Descriptor instead.
+func (*NodePolicyTarget) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{282}
}
-func (x *AzureKubeletConfiguration) GetCpuManagerPolicy() string {
- if x != nil && x.CpuManagerPolicy != nil {
- return *x.CpuManagerPolicy
+func (x *NodePolicyTarget) GetTargetId() string {
+ if x != nil {
+ return x.TargetId
}
return ""
}
-func (x *AzureKubeletConfiguration) GetCpuCfsQuota() bool {
- if x != nil && x.CpuCfsQuota != nil {
- return *x.CpuCfsQuota
+func (x *NodePolicyTarget) GetName() string {
+ if x != nil {
+ return x.Name
}
- return false
+ return ""
}
-func (x *AzureKubeletConfiguration) GetCpuCfsQuotaPeriod() string {
- if x != nil && x.CpuCfsQuotaPeriod != nil {
- return *x.CpuCfsQuotaPeriod
+func (x *NodePolicyTarget) GetDescription() string {
+ if x != nil {
+ return x.Description
}
return ""
}
-func (x *AzureKubeletConfiguration) GetImageGcHighThresholdPercent() int32 {
- if x != nil && x.ImageGcHighThresholdPercent != nil {
- return *x.ImageGcHighThresholdPercent
+func (x *NodePolicyTarget) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
}
- return 0
+ return ""
}
-func (x *AzureKubeletConfiguration) GetImageGcLowThresholdPercent() int32 {
- if x != nil && x.ImageGcLowThresholdPercent != nil {
- return *x.ImageGcLowThresholdPercent
+func (x *NodePolicyTarget) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
}
- return 0
+ return nil
}
-func (x *AzureKubeletConfiguration) GetTopologyManagerPolicy() string {
- if x != nil && x.TopologyManagerPolicy != nil {
- return *x.TopologyManagerPolicy
+func (x *NodePolicyTarget) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
}
return ""
}
-func (x *AzureKubeletConfiguration) GetAllowedUnsafeSysctls() []string {
+func (x *NodePolicyTarget) GetEnabled() bool {
if x != nil {
- return x.AllowedUnsafeSysctls
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *NodePolicyTarget) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
}
return nil
}
-func (x *AzureKubeletConfiguration) GetContainerLogMaxSize() string {
- if x != nil && x.ContainerLogMaxSize != nil {
- return *x.ContainerLogMaxSize
+func (x *NodePolicyTarget) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
}
- return ""
+ return nil
}
-func (x *AzureKubeletConfiguration) GetContainerLogMaxFiles() int32 {
- if x != nil && x.ContainerLogMaxFiles != nil {
- return *x.ContainerLogMaxFiles
+func (x *NodePolicyTarget) GetDeletedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.DeletedAt
}
- return 0
+ return nil
}
-func (x *AzureKubeletConfiguration) GetPodPidsLimit() int64 {
- if x != nil && x.PodPidsLimit != nil {
- return *x.PodPidsLimit
+func (x *NodePolicyTarget) GetStatus() *NodePolicyTargetStatus {
+ if x != nil {
+ return x.Status
}
- return 0
+ return nil
}
-type OCIImageSelectorTerm struct {
+type NodePolicyCondition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- CompartmentId string `protobuf:"bytes,3,opt,name=compartment_id,json=compartmentId,proto3" json:"compartment_id,omitempty"`
+ // e.g. "ZonalShiftReady", "ZonalShiftActive"
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ // "True" | "False" | "Unknown"
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+ // Machine-readable reason code (e.g. "Ready", "ZonePinned", "NoFallbackZones",
+ // "NoActiveShift", "AwayFrom", "ZoneConstraintConflict").
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
+ // Human-readable detail (e.g. impacted zone names).
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
+ LastTransitionTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"`
}
-func (x *OCIImageSelectorTerm) Reset() {
- *x = OCIImageSelectorTerm{}
+func (x *NodePolicyCondition) Reset() {
+ *x = NodePolicyCondition{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[267]
+ mi := &file_api_v1_recommendation_proto_msgTypes[283]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCIImageSelectorTerm) String() string {
+func (x *NodePolicyCondition) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCIImageSelectorTerm) ProtoMessage() {}
+func (*NodePolicyCondition) ProtoMessage() {}
-func (x *OCIImageSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[267]
+func (x *NodePolicyCondition) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[283]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21447,58 +24805,71 @@ func (x *OCIImageSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCIImageSelectorTerm.ProtoReflect.Descriptor instead.
-func (*OCIImageSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{267}
+// Deprecated: Use NodePolicyCondition.ProtoReflect.Descriptor instead.
+func (*NodePolicyCondition) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{283}
}
-func (x *OCIImageSelectorTerm) GetId() string {
+func (x *NodePolicyCondition) GetType() string {
if x != nil {
- return x.Id
+ return x.Type
}
return ""
}
-func (x *OCIImageSelectorTerm) GetName() string {
+func (x *NodePolicyCondition) GetStatus() string {
if x != nil {
- return x.Name
+ return x.Status
}
return ""
}
-func (x *OCIImageSelectorTerm) GetCompartmentId() string {
+func (x *NodePolicyCondition) GetReason() string {
if x != nil {
- return x.CompartmentId
+ return x.Reason
}
return ""
}
-type OCISubnetSelectorTerm struct {
+func (x *NodePolicyCondition) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *NodePolicyCondition) GetLastTransitionTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastTransitionTime
+ }
+ return nil
+}
+
+type NodePolicyTargetStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Conditions []*NodePolicyCondition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"`
}
-func (x *OCISubnetSelectorTerm) Reset() {
- *x = OCISubnetSelectorTerm{}
+func (x *NodePolicyTargetStatus) Reset() {
+ *x = NodePolicyTargetStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[268]
+ mi := &file_api_v1_recommendation_proto_msgTypes[284]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCISubnetSelectorTerm) String() string {
+func (x *NodePolicyTargetStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCISubnetSelectorTerm) ProtoMessage() {}
+func (*NodePolicyTargetStatus) ProtoMessage() {}
-func (x *OCISubnetSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[268]
+func (x *NodePolicyTargetStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[284]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21509,51 +24880,55 @@ func (x *OCISubnetSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCISubnetSelectorTerm.ProtoReflect.Descriptor instead.
-func (*OCISubnetSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{268}
-}
-
-func (x *OCISubnetSelectorTerm) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
+// Deprecated: Use NodePolicyTargetStatus.ProtoReflect.Descriptor instead.
+func (*NodePolicyTargetStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{284}
}
-func (x *OCISubnetSelectorTerm) GetName() string {
+func (x *NodePolicyTargetStatus) GetConditions() []*NodePolicyCondition {
if x != nil {
- return x.Name
+ return x.Conditions
}
- return ""
+ return nil
}
-type OCISecurityGroupSelectorTerm struct {
+// Cloud-agnostic config for how a node policy should react to AZ outage
+// signals from the cloud provider (AWS ARC zonal shift today; GCP analogue
+// planned). The compile step maps these intents to provider-specific
+// annotations on the resulting Karpenter NodePool.
+type ZonalShiftConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // Master opt-in. When false the other two fields are ignored.
+ RespectZonalShift bool `protobuf:"varint,1,opt,name=respect_zonal_shift,json=respectZonalShift,proto3" json:"respect_zonal_shift,omitempty"`
+ // Also terminate existing nodes in the impacted zone, forcing reschedule.
+ // Respects pod disruption budgets. Only meaningful when respect_zonal_shift is true.
+ EvictImpactedNodes bool `protobuf:"varint,2,opt,name=evict_impacted_nodes,json=evictImpactedNodes,proto3" json:"evict_impacted_nodes,omitempty"`
+ // If the policy is pinned to a single zone and that zone is impacted, expand
+ // to other zones available on the node class. Only meaningful when
+ // respect_zonal_shift is true.
+ AllowZoneFallback bool `protobuf:"varint,3,opt,name=allow_zone_fallback,json=allowZoneFallback,proto3" json:"allow_zone_fallback,omitempty"`
}
-func (x *OCISecurityGroupSelectorTerm) Reset() {
- *x = OCISecurityGroupSelectorTerm{}
+func (x *ZonalShiftConfig) Reset() {
+ *x = ZonalShiftConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[269]
+ mi := &file_api_v1_recommendation_proto_msgTypes[285]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCISecurityGroupSelectorTerm) String() string {
+func (x *ZonalShiftConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCISecurityGroupSelectorTerm) ProtoMessage() {}
+func (*ZonalShiftConfig) ProtoMessage() {}
-func (x *OCISecurityGroupSelectorTerm) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[269]
+func (x *ZonalShiftConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[285]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21564,51 +24939,123 @@ func (x *OCISecurityGroupSelectorTerm) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCISecurityGroupSelectorTerm.ProtoReflect.Descriptor instead.
-func (*OCISecurityGroupSelectorTerm) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{269}
+// Deprecated: Use ZonalShiftConfig.ProtoReflect.Descriptor instead.
+func (*ZonalShiftConfig) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{285}
}
-func (x *OCISecurityGroupSelectorTerm) GetId() string {
+func (x *ZonalShiftConfig) GetRespectZonalShift() bool {
if x != nil {
- return x.Id
+ return x.RespectZonalShift
+ }
+ return false
+}
+
+func (x *ZonalShiftConfig) GetEvictImpactedNodes() bool {
+ if x != nil {
+ return x.EvictImpactedNodes
+ }
+ return false
+}
+
+func (x *ZonalShiftConfig) GetAllowZoneFallback() bool {
+ if x != nil {
+ return x.AllowZoneFallback
+ }
+ return false
+}
+
+type Taint struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ Effect string `protobuf:"bytes,3,opt,name=effect,proto3" json:"effect,omitempty"` // NoSchedule, PreferNoSchedule, NoExecute
+}
+
+func (x *Taint) Reset() {
+ *x = Taint{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[286]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Taint) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Taint) ProtoMessage() {}
+
+func (x *Taint) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[286]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Taint.ProtoReflect.Descriptor instead.
+func (*Taint) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{286}
+}
+
+func (x *Taint) GetKey() string {
+ if x != nil {
+ return x.Key
}
return ""
}
-func (x *OCISecurityGroupSelectorTerm) GetName() string {
+func (x *Taint) GetValue() string {
if x != nil {
- return x.Name
+ return x.Value
}
return ""
}
-type OCIBootConfig struct {
+func (x *Taint) GetEffect() string {
+ if x != nil {
+ return x.Effect
+ }
+ return ""
+}
+
+type DisruptionBudget struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- BootVolumeSizeInGbs int64 `protobuf:"varint,1,opt,name=boot_volume_size_in_gbs,json=bootVolumeSizeInGbs,proto3" json:"boot_volume_size_in_gbs,omitempty"`
- BootVolumeVpusPerGb int64 `protobuf:"varint,2,opt,name=boot_volume_vpus_per_gb,json=bootVolumeVpusPerGb,proto3" json:"boot_volume_vpus_per_gb,omitempty"`
+ Reasons []string `protobuf:"bytes,1,rep,name=reasons,proto3" json:"reasons,omitempty"` // e.g. ["Underutilized", "Empty"]
+ Nodes string `protobuf:"bytes,2,opt,name=nodes,proto3" json:"nodes,omitempty"` // e.g. "10%" or "2"
+ Schedule string `protobuf:"bytes,3,opt,name=schedule,proto3" json:"schedule,omitempty"` // optional cron schedule
+ Duration string `protobuf:"bytes,4,opt,name=duration,proto3" json:"duration,omitempty"` // e.g. "1h30m"
}
-func (x *OCIBootConfig) Reset() {
- *x = OCIBootConfig{}
+func (x *DisruptionBudget) Reset() {
+ *x = DisruptionBudget{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[270]
+ mi := &file_api_v1_recommendation_proto_msgTypes[287]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCIBootConfig) String() string {
+func (x *DisruptionBudget) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCIBootConfig) ProtoMessage() {}
+func (*DisruptionBudget) ProtoMessage() {}
-func (x *OCIBootConfig) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[270]
+func (x *DisruptionBudget) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[287]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21619,54 +25066,69 @@ func (x *OCIBootConfig) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCIBootConfig.ProtoReflect.Descriptor instead.
-func (*OCIBootConfig) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{270}
+// Deprecated: Use DisruptionBudget.ProtoReflect.Descriptor instead.
+func (*DisruptionBudget) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{287}
}
-func (x *OCIBootConfig) GetBootVolumeSizeInGbs() int64 {
+func (x *DisruptionBudget) GetReasons() []string {
if x != nil {
- return x.BootVolumeSizeInGbs
+ return x.Reasons
}
- return 0
+ return nil
}
-func (x *OCIBootConfig) GetBootVolumeVpusPerGb() int64 {
+func (x *DisruptionBudget) GetNodes() string {
if x != nil {
- return x.BootVolumeVpusPerGb
+ return x.Nodes
}
- return 0
+ return ""
}
-type OCILaunchOptions struct {
+func (x *DisruptionBudget) GetSchedule() string {
+ if x != nil {
+ return x.Schedule
+ }
+ return ""
+}
+
+func (x *DisruptionBudget) GetDuration() string {
+ if x != nil {
+ return x.Duration
+ }
+ return ""
+}
+
+type DisruptionPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- BootVolumeType *string `protobuf:"bytes,1,opt,name=boot_volume_type,json=bootVolumeType,proto3,oneof" json:"boot_volume_type,omitempty"`
- Firmware *string `protobuf:"bytes,2,opt,name=firmware,proto3,oneof" json:"firmware,omitempty"`
- NetworkType *string `protobuf:"bytes,3,opt,name=network_type,json=networkType,proto3,oneof" json:"network_type,omitempty"`
- RemoteDataVolumeType *string `protobuf:"bytes,4,opt,name=remote_data_volume_type,json=remoteDataVolumeType,proto3,oneof" json:"remote_data_volume_type,omitempty"`
- IsConsistentVolumeNamingEnabled *bool `protobuf:"varint,5,opt,name=is_consistent_volume_naming_enabled,json=isConsistentVolumeNamingEnabled,proto3,oneof" json:"is_consistent_volume_naming_enabled,omitempty"`
+ ConsolidateAfter string `protobuf:"bytes,1,opt,name=consolidate_after,json=consolidateAfter,proto3" json:"consolidate_after,omitempty"` // required by Karpenter
+ ConsolidationPolicy string `protobuf:"bytes,2,opt,name=consolidation_policy,json=consolidationPolicy,proto3" json:"consolidation_policy,omitempty"` // WhenEmpty / WhenEmptyOrUnderutilized
+ ExpireAfter string `protobuf:"bytes,3,opt,name=expire_after,json=expireAfter,proto3" json:"expire_after,omitempty"`
+ TtlSecondsAfterEmpty int32 `protobuf:"varint,4,opt,name=ttl_seconds_after_empty,json=ttlSecondsAfterEmpty,proto3" json:"ttl_seconds_after_empty,omitempty"`
+ TerminationGracePeriodSeconds int32 `protobuf:"varint,5,opt,name=termination_grace_period_seconds,json=terminationGracePeriodSeconds,proto3" json:"termination_grace_period_seconds,omitempty"`
+ Budgets []*DisruptionBudget `protobuf:"bytes,6,rep,name=budgets,proto3" json:"budgets,omitempty"`
}
-func (x *OCILaunchOptions) Reset() {
- *x = OCILaunchOptions{}
+func (x *DisruptionPolicy) Reset() {
+ *x = DisruptionPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[271]
+ mi := &file_api_v1_recommendation_proto_msgTypes[288]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCILaunchOptions) String() string {
+func (x *DisruptionPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCILaunchOptions) ProtoMessage() {}
+func (*DisruptionPolicy) ProtoMessage() {}
-func (x *OCILaunchOptions) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[271]
+func (x *DisruptionPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[288]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21677,72 +25139,79 @@ func (x *OCILaunchOptions) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCILaunchOptions.ProtoReflect.Descriptor instead.
-func (*OCILaunchOptions) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{271}
+// Deprecated: Use DisruptionPolicy.ProtoReflect.Descriptor instead.
+func (*DisruptionPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{288}
}
-func (x *OCILaunchOptions) GetBootVolumeType() string {
- if x != nil && x.BootVolumeType != nil {
- return *x.BootVolumeType
+func (x *DisruptionPolicy) GetConsolidateAfter() string {
+ if x != nil {
+ return x.ConsolidateAfter
}
return ""
}
-func (x *OCILaunchOptions) GetFirmware() string {
- if x != nil && x.Firmware != nil {
- return *x.Firmware
+func (x *DisruptionPolicy) GetConsolidationPolicy() string {
+ if x != nil {
+ return x.ConsolidationPolicy
}
return ""
}
-func (x *OCILaunchOptions) GetNetworkType() string {
- if x != nil && x.NetworkType != nil {
- return *x.NetworkType
+func (x *DisruptionPolicy) GetExpireAfter() string {
+ if x != nil {
+ return x.ExpireAfter
}
return ""
}
-func (x *OCILaunchOptions) GetRemoteDataVolumeType() string {
- if x != nil && x.RemoteDataVolumeType != nil {
- return *x.RemoteDataVolumeType
+func (x *DisruptionPolicy) GetTtlSecondsAfterEmpty() int32 {
+ if x != nil {
+ return x.TtlSecondsAfterEmpty
}
- return ""
+ return 0
}
-func (x *OCILaunchOptions) GetIsConsistentVolumeNamingEnabled() bool {
- if x != nil && x.IsConsistentVolumeNamingEnabled != nil {
- return *x.IsConsistentVolumeNamingEnabled
+func (x *DisruptionPolicy) GetTerminationGracePeriodSeconds() int32 {
+ if x != nil {
+ return x.TerminationGracePeriodSeconds
}
- return false
+ return 0
}
-type OCIVolumeAttributes struct {
+func (x *DisruptionPolicy) GetBudgets() []*DisruptionBudget {
+ if x != nil {
+ return x.Budgets
+ }
+ return nil
+}
+
+type ResourceLimits struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- SizeInGbs int64 `protobuf:"varint,1,opt,name=size_in_gbs,json=sizeInGbs,proto3" json:"size_in_gbs,omitempty"`
- VpusPerGb int64 `protobuf:"varint,2,opt,name=vpus_per_gb,json=vpusPerGb,proto3" json:"vpus_per_gb,omitempty"`
+ Cpu string `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
+ Memory string `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
}
-func (x *OCIVolumeAttributes) Reset() {
- *x = OCIVolumeAttributes{}
+func (x *ResourceLimits) Reset() {
+ *x = ResourceLimits{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[272]
+ mi := &file_api_v1_recommendation_proto_msgTypes[289]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCIVolumeAttributes) String() string {
+func (x *ResourceLimits) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCIVolumeAttributes) ProtoMessage() {}
+func (*ResourceLimits) ProtoMessage() {}
-func (x *OCIVolumeAttributes) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[272]
+func (x *ResourceLimits) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[289]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21753,63 +25222,66 @@ func (x *OCIVolumeAttributes) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCIVolumeAttributes.ProtoReflect.Descriptor instead.
-func (*OCIVolumeAttributes) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{272}
+// Deprecated: Use ResourceLimits.ProtoReflect.Descriptor instead.
+func (*ResourceLimits) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{289}
}
-func (x *OCIVolumeAttributes) GetSizeInGbs() int64 {
+func (x *ResourceLimits) GetCpu() string {
if x != nil {
- return x.SizeInGbs
+ return x.Cpu
}
- return 0
+ return ""
}
-func (x *OCIVolumeAttributes) GetVpusPerGb() int64 {
+func (x *ResourceLimits) GetMemory() string {
if x != nil {
- return x.VpusPerGb
+ return x.Memory
}
- return 0
+ return ""
}
-type OCINodeClassSpec struct {
+// Provider-specific stubs
+type AWSNodeClassSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- VcnId string `protobuf:"bytes,1,opt,name=vcn_id,json=vcnId,proto3" json:"vcn_id,omitempty"`
- ImageSelector []*OCIImageSelectorTerm `protobuf:"bytes,2,rep,name=image_selector,json=imageSelector,proto3" json:"image_selector,omitempty"`
- SubnetSelector []*OCISubnetSelectorTerm `protobuf:"bytes,3,rep,name=subnet_selector,json=subnetSelector,proto3" json:"subnet_selector,omitempty"`
- SecurityGroupSelector []*OCISecurityGroupSelectorTerm `protobuf:"bytes,4,rep,name=security_group_selector,json=securityGroupSelector,proto3" json:"security_group_selector,omitempty"`
- UserData *string `protobuf:"bytes,5,opt,name=user_data,json=userData,proto3,oneof" json:"user_data,omitempty"`
- PreInstallScript *string `protobuf:"bytes,6,opt,name=pre_install_script,json=preInstallScript,proto3,oneof" json:"pre_install_script,omitempty"`
- MetaData map[string]string `protobuf:"bytes,7,rep,name=meta_data,json=metaData,proto3" json:"meta_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- ImageFamily string `protobuf:"bytes,8,opt,name=image_family,json=imageFamily,proto3" json:"image_family,omitempty"`
- Tags map[string]string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- FreeFormTags map[string]string `protobuf:"bytes,10,rep,name=free_form_tags,json=freeFormTags,proto3" json:"free_form_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- BootConfig *OCIBootConfig `protobuf:"bytes,11,opt,name=boot_config,json=bootConfig,proto3" json:"boot_config,omitempty"`
- LaunchOptions *OCILaunchOptions `protobuf:"bytes,12,opt,name=launch_options,json=launchOptions,proto3" json:"launch_options,omitempty"`
- BlockDevices []*OCIVolumeAttributes `protobuf:"bytes,13,rep,name=block_devices,json=blockDevices,proto3" json:"block_devices,omitempty"`
- AgentList []string `protobuf:"bytes,14,rep,name=agent_list,json=agentList,proto3" json:"agent_list,omitempty"`
+ SubnetSelectorTerms []*SubnetSelectorTerm `protobuf:"bytes,1,rep,name=subnet_selector_terms,json=subnetSelectorTerms,proto3" json:"subnet_selector_terms,omitempty"`
+ SecurityGroupSelectorTerms []*SecurityGroupSelectorTerm `protobuf:"bytes,2,rep,name=security_group_selector_terms,json=securityGroupSelectorTerms,proto3" json:"security_group_selector_terms,omitempty"`
+ CapacityReservationSelectorTerms []*CapacityReservationSelectorTerm `protobuf:"bytes,3,rep,name=capacity_reservation_selector_terms,json=capacityReservationSelectorTerms,proto3" json:"capacity_reservation_selector_terms,omitempty"`
+ AssociatePublicIpAddress *bool `protobuf:"varint,4,opt,name=associate_public_ip_address,json=associatePublicIpAddress,proto3,oneof" json:"associate_public_ip_address,omitempty"`
+ AmiSelectorTerms []*AMISelectorTerm `protobuf:"bytes,5,rep,name=ami_selector_terms,json=amiSelectorTerms,proto3" json:"ami_selector_terms,omitempty"`
+ AmiFamily *string `protobuf:"bytes,6,opt,name=ami_family,json=amiFamily,proto3,oneof" json:"ami_family,omitempty"`
+ UserData *string `protobuf:"bytes,7,opt,name=user_data,json=userData,proto3,oneof" json:"user_data,omitempty"`
+ Role *string `protobuf:"bytes,8,opt,name=role,proto3,oneof" json:"role,omitempty"`
+ InstanceProfile *string `protobuf:"bytes,9,opt,name=instance_profile,json=instanceProfile,proto3,oneof" json:"instance_profile,omitempty"`
+ Tags map[string]string `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Kubelet *KubeletConfiguration `protobuf:"bytes,11,opt,name=kubelet,proto3,oneof" json:"kubelet,omitempty"`
+ BlockDeviceMappings []*BlockDeviceMapping `protobuf:"bytes,12,rep,name=block_device_mappings,json=blockDeviceMappings,proto3" json:"block_device_mappings,omitempty"`
+ InstanceStorePolicy *InstanceStorePolicy `protobuf:"varint,13,opt,name=instance_store_policy,json=instanceStorePolicy,proto3,enum=api.v1.InstanceStorePolicy,oneof" json:"instance_store_policy,omitempty"`
+ DetailedMonitoring *bool `protobuf:"varint,14,opt,name=detailed_monitoring,json=detailedMonitoring,proto3,oneof" json:"detailed_monitoring,omitempty"`
+ MetadataOptions *MetadataOptions `protobuf:"bytes,15,opt,name=metadata_options,json=metadataOptions,proto3,oneof" json:"metadata_options,omitempty"`
+ Context *string `protobuf:"bytes,16,opt,name=context,proto3,oneof" json:"context,omitempty"`
}
-func (x *OCINodeClassSpec) Reset() {
- *x = OCINodeClassSpec{}
+func (x *AWSNodeClassSpec) Reset() {
+ *x = AWSNodeClassSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[273]
+ mi := &file_api_v1_recommendation_proto_msgTypes[290]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCINodeClassSpec) String() string {
+func (x *AWSNodeClassSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCINodeClassSpec) ProtoMessage() {}
+func (*AWSNodeClassSpec) ProtoMessage() {}
-func (x *OCINodeClassSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[273]
+func (x *AWSNodeClassSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[290]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21820,136 +25292,148 @@ func (x *OCINodeClassSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCINodeClassSpec.ProtoReflect.Descriptor instead.
-func (*OCINodeClassSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{273}
+// Deprecated: Use AWSNodeClassSpec.ProtoReflect.Descriptor instead.
+func (*AWSNodeClassSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{290}
}
-func (x *OCINodeClassSpec) GetVcnId() string {
+func (x *AWSNodeClassSpec) GetSubnetSelectorTerms() []*SubnetSelectorTerm {
if x != nil {
- return x.VcnId
+ return x.SubnetSelectorTerms
}
- return ""
+ return nil
}
-func (x *OCINodeClassSpec) GetImageSelector() []*OCIImageSelectorTerm {
+func (x *AWSNodeClassSpec) GetSecurityGroupSelectorTerms() []*SecurityGroupSelectorTerm {
if x != nil {
- return x.ImageSelector
+ return x.SecurityGroupSelectorTerms
}
return nil
}
-func (x *OCINodeClassSpec) GetSubnetSelector() []*OCISubnetSelectorTerm {
+func (x *AWSNodeClassSpec) GetCapacityReservationSelectorTerms() []*CapacityReservationSelectorTerm {
if x != nil {
- return x.SubnetSelector
+ return x.CapacityReservationSelectorTerms
}
return nil
}
-func (x *OCINodeClassSpec) GetSecurityGroupSelector() []*OCISecurityGroupSelectorTerm {
+func (x *AWSNodeClassSpec) GetAssociatePublicIpAddress() bool {
+ if x != nil && x.AssociatePublicIpAddress != nil {
+ return *x.AssociatePublicIpAddress
+ }
+ return false
+}
+
+func (x *AWSNodeClassSpec) GetAmiSelectorTerms() []*AMISelectorTerm {
if x != nil {
- return x.SecurityGroupSelector
+ return x.AmiSelectorTerms
}
return nil
}
-func (x *OCINodeClassSpec) GetUserData() string {
- if x != nil && x.UserData != nil {
- return *x.UserData
+func (x *AWSNodeClassSpec) GetAmiFamily() string {
+ if x != nil && x.AmiFamily != nil {
+ return *x.AmiFamily
}
return ""
}
-func (x *OCINodeClassSpec) GetPreInstallScript() string {
- if x != nil && x.PreInstallScript != nil {
- return *x.PreInstallScript
+func (x *AWSNodeClassSpec) GetUserData() string {
+ if x != nil && x.UserData != nil {
+ return *x.UserData
}
return ""
}
-func (x *OCINodeClassSpec) GetMetaData() map[string]string {
- if x != nil {
- return x.MetaData
+func (x *AWSNodeClassSpec) GetRole() string {
+ if x != nil && x.Role != nil {
+ return *x.Role
}
- return nil
+ return ""
}
-func (x *OCINodeClassSpec) GetImageFamily() string {
- if x != nil {
- return x.ImageFamily
+func (x *AWSNodeClassSpec) GetInstanceProfile() string {
+ if x != nil && x.InstanceProfile != nil {
+ return *x.InstanceProfile
}
return ""
}
-func (x *OCINodeClassSpec) GetTags() map[string]string {
+func (x *AWSNodeClassSpec) GetTags() map[string]string {
if x != nil {
return x.Tags
}
return nil
}
-func (x *OCINodeClassSpec) GetFreeFormTags() map[string]string {
+func (x *AWSNodeClassSpec) GetKubelet() *KubeletConfiguration {
if x != nil {
- return x.FreeFormTags
+ return x.Kubelet
}
return nil
}
-func (x *OCINodeClassSpec) GetBootConfig() *OCIBootConfig {
+func (x *AWSNodeClassSpec) GetBlockDeviceMappings() []*BlockDeviceMapping {
if x != nil {
- return x.BootConfig
+ return x.BlockDeviceMappings
}
return nil
}
-func (x *OCINodeClassSpec) GetLaunchOptions() *OCILaunchOptions {
- if x != nil {
- return x.LaunchOptions
+func (x *AWSNodeClassSpec) GetInstanceStorePolicy() InstanceStorePolicy {
+ if x != nil && x.InstanceStorePolicy != nil {
+ return *x.InstanceStorePolicy
}
- return nil
+ return InstanceStorePolicy_INSTANCE_STORE_POLICY_RAID0
}
-func (x *OCINodeClassSpec) GetBlockDevices() []*OCIVolumeAttributes {
- if x != nil {
- return x.BlockDevices
+func (x *AWSNodeClassSpec) GetDetailedMonitoring() bool {
+ if x != nil && x.DetailedMonitoring != nil {
+ return *x.DetailedMonitoring
}
- return nil
+ return false
}
-func (x *OCINodeClassSpec) GetAgentList() []string {
+func (x *AWSNodeClassSpec) GetMetadataOptions() *MetadataOptions {
if x != nil {
- return x.AgentList
+ return x.MetadataOptions
}
return nil
}
-type KarpenterSettingsRecommendation struct {
+func (x *AWSNodeClassSpec) GetContext() string {
+ if x != nil && x.Context != nil {
+ return *x.Context
+ }
+ return ""
+}
+
+type GetInstanceFamiliesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // contents is the full KarpenterSettings YAML (devzero.karpenter.sh/v1alpha1, name "default").
- Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"`
- RecommendationId string `protobuf:"bytes,2,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
+ CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"` // Cloud provider names (e.g., "aws", "azure", "gcp")
}
-func (x *KarpenterSettingsRecommendation) Reset() {
- *x = KarpenterSettingsRecommendation{}
+func (x *GetInstanceFamiliesRequest) Reset() {
+ *x = GetInstanceFamiliesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[274]
+ mi := &file_api_v1_recommendation_proto_msgTypes[291]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *KarpenterSettingsRecommendation) String() string {
+func (x *GetInstanceFamiliesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*KarpenterSettingsRecommendation) ProtoMessage() {}
+func (*GetInstanceFamiliesRequest) ProtoMessage() {}
-func (x *KarpenterSettingsRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[274]
+func (x *GetInstanceFamiliesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[291]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -21960,51 +25444,43 @@ func (x *KarpenterSettingsRecommendation) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use KarpenterSettingsRecommendation.ProtoReflect.Descriptor instead.
-func (*KarpenterSettingsRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{274}
+// Deprecated: Use GetInstanceFamiliesRequest.ProtoReflect.Descriptor instead.
+func (*GetInstanceFamiliesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{291}
}
-func (x *KarpenterSettingsRecommendation) GetContents() []byte {
+func (x *GetInstanceFamiliesRequest) GetCloudProviders() []string {
if x != nil {
- return x.Contents
+ return x.CloudProviders
}
return nil
}
-func (x *KarpenterSettingsRecommendation) GetRecommendationId() string {
- if x != nil {
- return x.RecommendationId
- }
- return ""
-}
-
-type RawKarpenterSpec struct {
+type GetInstanceFamiliesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodepoolYaml string `protobuf:"bytes,1,opt,name=nodepool_yaml,json=nodepoolYaml,proto3" json:"nodepool_yaml,omitempty"`
- NodeclassYaml string `protobuf:"bytes,2,opt,name=nodeclass_yaml,json=nodeclassYaml,proto3" json:"nodeclass_yaml,omitempty"`
+ InstanceFamilies []*InstanceFamily `protobuf:"bytes,1,rep,name=instance_families,json=instanceFamilies,proto3" json:"instance_families,omitempty"`
}
-func (x *RawKarpenterSpec) Reset() {
- *x = RawKarpenterSpec{}
+func (x *GetInstanceFamiliesResponse) Reset() {
+ *x = GetInstanceFamiliesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[275]
+ mi := &file_api_v1_recommendation_proto_msgTypes[292]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *RawKarpenterSpec) String() string {
+func (x *GetInstanceFamiliesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*RawKarpenterSpec) ProtoMessage() {}
+func (*GetInstanceFamiliesResponse) ProtoMessage() {}
-func (x *RawKarpenterSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[275]
+func (x *GetInstanceFamiliesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[292]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22015,54 +25491,43 @@ func (x *RawKarpenterSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use RawKarpenterSpec.ProtoReflect.Descriptor instead.
-func (*RawKarpenterSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{275}
-}
-
-func (x *RawKarpenterSpec) GetNodepoolYaml() string {
- if x != nil {
- return x.NodepoolYaml
- }
- return ""
+// Deprecated: Use GetInstanceFamiliesResponse.ProtoReflect.Descriptor instead.
+func (*GetInstanceFamiliesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{292}
}
-func (x *RawKarpenterSpec) GetNodeclassYaml() string {
+func (x *GetInstanceFamiliesResponse) GetInstanceFamilies() []*InstanceFamily {
if x != nil {
- return x.NodeclassYaml
+ return x.InstanceFamilies
}
- return ""
+ return nil
}
-type NodeRecommendation struct {
+type GetInstanceSizesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Aws *AWSKarpenterSpec `protobuf:"bytes,1,opt,name=aws,proto3" json:"aws,omitempty"`
- Aks *AKSKarpenterSpec `protobuf:"bytes,2,opt,name=aks,proto3" json:"aks,omitempty"`
- Gcp *GCPKarpenterSpec `protobuf:"bytes,3,opt,name=gcp,proto3" json:"gcp,omitempty"`
- Oci *OCIKarpenterSpec `protobuf:"bytes,4,opt,name=oci,proto3" json:"oci,omitempty"`
- NodeRecCfgId string `protobuf:"bytes,41,opt,name=node_rec_cfg_id,json=nodeRecCfgId,proto3" json:"node_rec_cfg_id,omitempty"`
+ CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"` // Cloud provider names (e.g., "aws", "azure", "gcp")
}
-func (x *NodeRecommendation) Reset() {
- *x = NodeRecommendation{}
+func (x *GetInstanceSizesRequest) Reset() {
+ *x = GetInstanceSizesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[276]
+ mi := &file_api_v1_recommendation_proto_msgTypes[293]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeRecommendation) String() string {
+func (x *GetInstanceSizesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeRecommendation) ProtoMessage() {}
+func (*GetInstanceSizesRequest) ProtoMessage() {}
-func (x *NodeRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[276]
+func (x *GetInstanceSizesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[293]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22073,72 +25538,90 @@ func (x *NodeRecommendation) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeRecommendation.ProtoReflect.Descriptor instead.
-func (*NodeRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{276}
+// Deprecated: Use GetInstanceSizesRequest.ProtoReflect.Descriptor instead.
+func (*GetInstanceSizesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{293}
}
-func (x *NodeRecommendation) GetAws() *AWSKarpenterSpec {
+func (x *GetInstanceSizesRequest) GetCloudProviders() []string {
if x != nil {
- return x.Aws
+ return x.CloudProviders
}
return nil
}
-func (x *NodeRecommendation) GetAks() *AKSKarpenterSpec {
- if x != nil {
- return x.Aks
- }
- return nil
-}
+type GetInstanceSizesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *NodeRecommendation) GetGcp() *GCPKarpenterSpec {
- if x != nil {
- return x.Gcp
+ InstanceSizes []*InstanceSize `protobuf:"bytes,1,rep,name=instance_sizes,json=instanceSizes,proto3" json:"instance_sizes,omitempty"`
+}
+
+func (x *GetInstanceSizesResponse) Reset() {
+ *x = GetInstanceSizesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[294]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *NodeRecommendation) GetOci() *OCIKarpenterSpec {
- if x != nil {
- return x.Oci
+func (x *GetInstanceSizesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetInstanceSizesResponse) ProtoMessage() {}
+
+func (x *GetInstanceSizesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[294]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *NodeRecommendation) GetNodeRecCfgId() string {
+// Deprecated: Use GetInstanceSizesResponse.ProtoReflect.Descriptor instead.
+func (*GetInstanceSizesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{294}
+}
+
+func (x *GetInstanceSizesResponse) GetInstanceSizes() []*InstanceSize {
if x != nil {
- return x.NodeRecCfgId
+ return x.InstanceSizes
}
- return ""
+ return nil
}
-type AWSKarpenterSpec struct {
+type GetInstanceShapesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
- Ec2Nc []*EC2NodeClass `protobuf:"bytes,6,rep,name=ec2nc,proto3" json:"ec2nc,omitempty"`
+ CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"` // Cloud provider names (e.g., "aws", "azure", "gcp")
}
-func (x *AWSKarpenterSpec) Reset() {
- *x = AWSKarpenterSpec{}
+func (x *GetInstanceShapesRequest) Reset() {
+ *x = GetInstanceShapesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[277]
+ mi := &file_api_v1_recommendation_proto_msgTypes[295]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AWSKarpenterSpec) String() string {
+func (x *GetInstanceShapesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AWSKarpenterSpec) ProtoMessage() {}
+func (*GetInstanceShapesRequest) ProtoMessage() {}
-func (x *AWSKarpenterSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[277]
+func (x *GetInstanceShapesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[295]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22149,51 +25632,43 @@ func (x *AWSKarpenterSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AWSKarpenterSpec.ProtoReflect.Descriptor instead.
-func (*AWSKarpenterSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{277}
-}
-
-func (x *AWSKarpenterSpec) GetNp() []*NodePool {
- if x != nil {
- return x.Np
- }
- return nil
+// Deprecated: Use GetInstanceShapesRequest.ProtoReflect.Descriptor instead.
+func (*GetInstanceShapesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{295}
}
-func (x *AWSKarpenterSpec) GetEc2Nc() []*EC2NodeClass {
+func (x *GetInstanceShapesRequest) GetCloudProviders() []string {
if x != nil {
- return x.Ec2Nc
+ return x.CloudProviders
}
return nil
}
-type AKSKarpenterSpec struct {
+type GetInstanceShapesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
- Aksnc []*AKSNodeClass `protobuf:"bytes,6,rep,name=aksnc,proto3" json:"aksnc,omitempty"`
+ InstanceShapes []*InstanceShape `protobuf:"bytes,1,rep,name=instance_shapes,json=instanceShapes,proto3" json:"instance_shapes,omitempty"`
}
-func (x *AKSKarpenterSpec) Reset() {
- *x = AKSKarpenterSpec{}
+func (x *GetInstanceShapesResponse) Reset() {
+ *x = GetInstanceShapesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[278]
+ mi := &file_api_v1_recommendation_proto_msgTypes[296]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AKSKarpenterSpec) String() string {
+func (x *GetInstanceShapesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AKSKarpenterSpec) ProtoMessage() {}
+func (*GetInstanceShapesResponse) ProtoMessage() {}
-func (x *AKSKarpenterSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[278]
+func (x *GetInstanceShapesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[296]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22204,50 +25679,44 @@ func (x *AKSKarpenterSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AKSKarpenterSpec.ProtoReflect.Descriptor instead.
-func (*AKSKarpenterSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{278}
-}
-
-func (x *AKSKarpenterSpec) GetNp() []*NodePool {
- if x != nil {
- return x.Np
- }
- return nil
+// Deprecated: Use GetInstanceShapesResponse.ProtoReflect.Descriptor instead.
+func (*GetInstanceShapesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{296}
}
-func (x *AKSKarpenterSpec) GetAksnc() []*AKSNodeClass {
+func (x *GetInstanceShapesResponse) GetInstanceShapes() []*InstanceShape {
if x != nil {
- return x.Aksnc
+ return x.InstanceShapes
}
return nil
}
-type NodePool struct {
+type InstanceFamily struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into sigs.k8s.io/karpenter/pkg/apis/v1.NodePool
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
}
-func (x *NodePool) Reset() {
- *x = NodePool{}
+func (x *InstanceFamily) Reset() {
+ *x = InstanceFamily{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[279]
+ mi := &file_api_v1_recommendation_proto_msgTypes[297]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodePool) String() string {
+func (x *InstanceFamily) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodePool) ProtoMessage() {}
+func (*InstanceFamily) ProtoMessage() {}
-func (x *NodePool) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[279]
+func (x *InstanceFamily) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[297]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22258,43 +25727,51 @@ func (x *NodePool) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodePool.ProtoReflect.Descriptor instead.
-func (*NodePool) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{279}
+// Deprecated: Use InstanceFamily.ProtoReflect.Descriptor instead.
+func (*InstanceFamily) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{297}
}
-func (x *NodePool) GetContents() []byte {
+func (x *InstanceFamily) GetName() string {
if x != nil {
- return x.Contents
+ return x.Name
}
- return nil
+ return ""
}
-type EC2NodeClass struct {
+func (x *InstanceFamily) GetProviderName() string {
+ if x != nil {
+ return x.ProviderName
+ }
+ return ""
+}
+
+type InstanceShape struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/aws/karpenter-provider-aws/pkg/apis/v1.EC2NodeClass
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
}
-func (x *EC2NodeClass) Reset() {
- *x = EC2NodeClass{}
+func (x *InstanceShape) Reset() {
+ *x = InstanceShape{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[280]
+ mi := &file_api_v1_recommendation_proto_msgTypes[298]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *EC2NodeClass) String() string {
+func (x *InstanceShape) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*EC2NodeClass) ProtoMessage() {}
+func (*InstanceShape) ProtoMessage() {}
-func (x *EC2NodeClass) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[280]
+func (x *InstanceShape) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[298]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22305,43 +25782,51 @@ func (x *EC2NodeClass) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use EC2NodeClass.ProtoReflect.Descriptor instead.
-func (*EC2NodeClass) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{280}
+// Deprecated: Use InstanceShape.ProtoReflect.Descriptor instead.
+func (*InstanceShape) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{298}
}
-func (x *EC2NodeClass) GetContents() []byte {
+func (x *InstanceShape) GetName() string {
if x != nil {
- return x.Contents
+ return x.Name
}
- return nil
+ return ""
}
-type AKSNodeClass struct {
+func (x *InstanceShape) GetProviderName() string {
+ if x != nil {
+ return x.ProviderName
+ }
+ return ""
+}
+
+type InstanceSize struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/Azure/karpenter-provider-azure/pkg/apis/v1beta1.AKSNodeClass
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
}
-func (x *AKSNodeClass) Reset() {
- *x = AKSNodeClass{}
+func (x *InstanceSize) Reset() {
+ *x = InstanceSize{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[281]
+ mi := &file_api_v1_recommendation_proto_msgTypes[299]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *AKSNodeClass) String() string {
+func (x *InstanceSize) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*AKSNodeClass) ProtoMessage() {}
+func (*InstanceSize) ProtoMessage() {}
-func (x *AKSNodeClass) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[281]
+func (x *InstanceSize) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[299]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22352,44 +25837,52 @@ func (x *AKSNodeClass) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use AKSNodeClass.ProtoReflect.Descriptor instead.
-func (*AKSNodeClass) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{281}
+// Deprecated: Use InstanceSize.ProtoReflect.Descriptor instead.
+func (*InstanceSize) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{299}
}
-func (x *AKSNodeClass) GetContents() []byte {
+func (x *InstanceSize) GetName() string {
if x != nil {
- return x.Contents
+ return x.Name
}
- return nil
+ return ""
}
-type GCPKarpenterSpec struct {
+func (x *InstanceSize) GetProviderName() string {
+ if x != nil {
+ return x.ProviderName
+ }
+ return ""
+}
+
+type InstanceCategory struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
- NodeClasses []*GCENodeClass `protobuf:"bytes,2,rep,name=node_classes,json=nodeClasses,proto3" json:"node_classes,omitempty"`
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // e.g., "c", "D", "n"
+ Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` // e.g., "Compute Optimized"
+ ProviderName string `protobuf:"bytes,3,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // e.g., "AWS", "Azure", "GCP"
}
-func (x *GCPKarpenterSpec) Reset() {
- *x = GCPKarpenterSpec{}
+func (x *InstanceCategory) Reset() {
+ *x = InstanceCategory{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[282]
+ mi := &file_api_v1_recommendation_proto_msgTypes[300]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GCPKarpenterSpec) String() string {
+func (x *InstanceCategory) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GCPKarpenterSpec) ProtoMessage() {}
+func (*InstanceCategory) ProtoMessage() {}
-func (x *GCPKarpenterSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[282]
+func (x *InstanceCategory) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[300]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22400,50 +25893,58 @@ func (x *GCPKarpenterSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GCPKarpenterSpec.ProtoReflect.Descriptor instead.
-func (*GCPKarpenterSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{282}
+// Deprecated: Use InstanceCategory.ProtoReflect.Descriptor instead.
+func (*InstanceCategory) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{300}
}
-func (x *GCPKarpenterSpec) GetNp() []*NodePool {
+func (x *InstanceCategory) GetKey() string {
if x != nil {
- return x.Np
+ return x.Key
}
- return nil
+ return ""
}
-func (x *GCPKarpenterSpec) GetNodeClasses() []*GCENodeClass {
+func (x *InstanceCategory) GetLabel() string {
if x != nil {
- return x.NodeClasses
+ return x.Label
}
- return nil
+ return ""
}
-type GCENodeClass struct {
+func (x *InstanceCategory) GetProviderName() string {
+ if x != nil {
+ return x.ProviderName
+ }
+ return ""
+}
+
+type InstanceCPU struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/cloudpilot-ai/karpenter-provider-gcp/pkg/apis/v1alpha1.GCENodeClass
+ Vcpu int32 `protobuf:"varint,1,opt,name=vcpu,proto3" json:"vcpu,omitempty"` // e.g., 2, 4, 8, 16
+ ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // e.g., "AWS", "Azure"
}
-func (x *GCENodeClass) Reset() {
- *x = GCENodeClass{}
+func (x *InstanceCPU) Reset() {
+ *x = InstanceCPU{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[283]
+ mi := &file_api_v1_recommendation_proto_msgTypes[301]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GCENodeClass) String() string {
+func (x *InstanceCPU) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GCENodeClass) ProtoMessage() {}
+func (*InstanceCPU) ProtoMessage() {}
-func (x *GCENodeClass) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[283]
+func (x *InstanceCPU) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[301]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22454,44 +25955,51 @@ func (x *GCENodeClass) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GCENodeClass.ProtoReflect.Descriptor instead.
-func (*GCENodeClass) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{283}
+// Deprecated: Use InstanceCPU.ProtoReflect.Descriptor instead.
+func (*InstanceCPU) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{301}
}
-func (x *GCENodeClass) GetContents() []byte {
+func (x *InstanceCPU) GetVcpu() int32 {
if x != nil {
- return x.Contents
+ return x.Vcpu
}
- return nil
+ return 0
}
-type OCIKarpenterSpec struct {
+func (x *InstanceCPU) GetProviderName() string {
+ if x != nil {
+ return x.ProviderName
+ }
+ return ""
+}
+
+type InstanceTypeName struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
- NodeClasses []*OCINodeClass `protobuf:"bytes,2,rep,name=node_classes,json=nodeClasses,proto3" json:"node_classes,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // e.g., "m5.large", "Standard_D4s_v3"
+ ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` // e.g., "AWS", "Azure"
}
-func (x *OCIKarpenterSpec) Reset() {
- *x = OCIKarpenterSpec{}
+func (x *InstanceTypeName) Reset() {
+ *x = InstanceTypeName{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[284]
+ mi := &file_api_v1_recommendation_proto_msgTypes[302]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCIKarpenterSpec) String() string {
+func (x *InstanceTypeName) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCIKarpenterSpec) ProtoMessage() {}
+func (*InstanceTypeName) ProtoMessage() {}
-func (x *OCIKarpenterSpec) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[284]
+func (x *InstanceTypeName) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[302]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22502,50 +26010,50 @@ func (x *OCIKarpenterSpec) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCIKarpenterSpec.ProtoReflect.Descriptor instead.
-func (*OCIKarpenterSpec) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{284}
+// Deprecated: Use InstanceTypeName.ProtoReflect.Descriptor instead.
+func (*InstanceTypeName) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{302}
}
-func (x *OCIKarpenterSpec) GetNp() []*NodePool {
+func (x *InstanceTypeName) GetName() string {
if x != nil {
- return x.Np
+ return x.Name
}
- return nil
+ return ""
}
-func (x *OCIKarpenterSpec) GetNodeClasses() []*OCINodeClass {
+func (x *InstanceTypeName) GetProviderName() string {
if x != nil {
- return x.NodeClasses
+ return x.ProviderName
}
- return nil
+ return ""
}
-type OCINodeClass struct {
+type GetInstanceCategoriesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/zoom/karpenter-oci/pkg/apis/v1alpha1.OciNodeClass
+ CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"`
}
-func (x *OCINodeClass) Reset() {
- *x = OCINodeClass{}
+func (x *GetInstanceCategoriesRequest) Reset() {
+ *x = GetInstanceCategoriesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[285]
+ mi := &file_api_v1_recommendation_proto_msgTypes[303]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *OCINodeClass) String() string {
+func (x *GetInstanceCategoriesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*OCINodeClass) ProtoMessage() {}
+func (*GetInstanceCategoriesRequest) ProtoMessage() {}
-func (x *OCINodeClass) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[285]
+func (x *GetInstanceCategoriesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[303]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22556,65 +26064,43 @@ func (x *OCINodeClass) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use OCINodeClass.ProtoReflect.Descriptor instead.
-func (*OCINodeClass) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{285}
+// Deprecated: Use GetInstanceCategoriesRequest.ProtoReflect.Descriptor instead.
+func (*GetInstanceCategoriesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{303}
}
-func (x *OCINodeClass) GetContents() []byte {
+func (x *GetInstanceCategoriesRequest) GetCloudProviders() []string {
if x != nil {
- return x.Contents
+ return x.CloudProviders
}
return nil
}
-// StorageRecommendationPolicy represents a policy for PVC/storage optimization
-type StorageRecommendationPolicy struct {
+type GetInstanceCategoriesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
- ActionTrigger ActionTrigger `protobuf:"varint,5,opt,name=action_trigger,json=actionTrigger,proto3,enum=api.v1.ActionTrigger" json:"action_trigger,omitempty"`
- ActionTriggers []ActionTrigger `protobuf:"varint,6,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- CronSchedule *string `protobuf:"bytes,7,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- LookbackPeriodSeconds *int32 `protobuf:"varint,8,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
- // Storage-specific parameters
- TargetUtilizationPercent *float32 `protobuf:"fixed32,10,opt,name=target_utilization_percent,json=targetUtilizationPercent,proto3,oneof" json:"target_utilization_percent,omitempty"`
- WarnDaysToFull *int32 `protobuf:"varint,11,opt,name=warn_days_to_full,json=warnDaysToFull,proto3,oneof" json:"warn_days_to_full,omitempty"`
- MaxExpansionPerAction *float32 `protobuf:"fixed32,12,opt,name=max_expansion_per_action,json=maxExpansionPerAction,proto3,oneof" json:"max_expansion_per_action,omitempty"`
- MinDataPoints *int32 `protobuf:"varint,13,opt,name=min_data_points,json=minDataPoints,proto3,oneof" json:"min_data_points,omitempty"`
- // New storage policy fields
- CriticalDaysToFull *int32 `protobuf:"varint,14,opt,name=critical_days_to_full,json=criticalDaysToFull,proto3,oneof" json:"critical_days_to_full,omitempty"`
- HeadroomDays *int32 `protobuf:"varint,15,opt,name=headroom_days,json=headroomDays,proto3,oneof" json:"headroom_days,omitempty"`
- MinResizeIncrementGib *int32 `protobuf:"varint,16,opt,name=min_resize_increment_gib,json=minResizeIncrementGib,proto3,oneof" json:"min_resize_increment_gib,omitempty"`
- MaxMonthlyCostUsd *float32 `protobuf:"fixed32,17,opt,name=max_monthly_cost_usd,json=maxMonthlyCostUsd,proto3,oneof" json:"max_monthly_cost_usd,omitempty"`
- CooldownWindowSeconds *int32 `protobuf:"varint,18,opt,name=cooldown_window_seconds,json=cooldownWindowSeconds,proto3,oneof" json:"cooldown_window_seconds,omitempty"`
- IsDefaultPolicy bool `protobuf:"varint,50,opt,name=is_default_policy,json=isDefaultPolicy,proto3" json:"is_default_policy,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ InstanceCategories []*InstanceCategory `protobuf:"bytes,1,rep,name=instance_categories,json=instanceCategories,proto3" json:"instance_categories,omitempty"`
}
-func (x *StorageRecommendationPolicy) Reset() {
- *x = StorageRecommendationPolicy{}
+func (x *GetInstanceCategoriesResponse) Reset() {
+ *x = GetInstanceCategoriesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[286]
+ mi := &file_api_v1_recommendation_proto_msgTypes[304]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *StorageRecommendationPolicy) String() string {
+func (x *GetInstanceCategoriesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*StorageRecommendationPolicy) ProtoMessage() {}
+func (*GetInstanceCategoriesResponse) ProtoMessage() {}
-func (x *StorageRecommendationPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[286]
+func (x *GetInstanceCategoriesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[304]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22625,190 +26111,137 @@ func (x *StorageRecommendationPolicy) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use StorageRecommendationPolicy.ProtoReflect.Descriptor instead.
-func (*StorageRecommendationPolicy) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{286}
+// Deprecated: Use GetInstanceCategoriesResponse.ProtoReflect.Descriptor instead.
+func (*GetInstanceCategoriesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{304}
}
-func (x *StorageRecommendationPolicy) GetPolicyId() string {
+func (x *GetInstanceCategoriesResponse) GetInstanceCategories() []*InstanceCategory {
if x != nil {
- return x.PolicyId
+ return x.InstanceCategories
}
- return ""
+ return nil
}
-func (x *StorageRecommendationPolicy) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+type GetInstanceCPUsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"`
}
-func (x *StorageRecommendationPolicy) GetName() string {
- if x != nil {
- return x.Name
+func (x *GetInstanceCPUsRequest) Reset() {
+ *x = GetInstanceCPUsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[305]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *StorageRecommendationPolicy) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
+func (x *GetInstanceCPUsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *StorageRecommendationPolicy) GetActionTrigger() ActionTrigger {
- if x != nil {
- return x.ActionTrigger
+func (*GetInstanceCPUsRequest) ProtoMessage() {}
+
+func (x *GetInstanceCPUsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[305]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ActionTrigger_ACTION_TRIGGER_UNSPECIFIED
+ return mi.MessageOf(x)
}
-func (x *StorageRecommendationPolicy) GetActionTriggers() []ActionTrigger {
+// Deprecated: Use GetInstanceCPUsRequest.ProtoReflect.Descriptor instead.
+func (*GetInstanceCPUsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{305}
+}
+
+func (x *GetInstanceCPUsRequest) GetCloudProviders() []string {
if x != nil {
- return x.ActionTriggers
+ return x.CloudProviders
}
return nil
}
-func (x *StorageRecommendationPolicy) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
- }
- return ""
+type GetInstanceCPUsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ InstanceCpus []*InstanceCPU `protobuf:"bytes,1,rep,name=instance_cpus,json=instanceCpus,proto3" json:"instance_cpus,omitempty"`
}
-func (x *StorageRecommendationPolicy) GetLookbackPeriodSeconds() int32 {
- if x != nil && x.LookbackPeriodSeconds != nil {
- return *x.LookbackPeriodSeconds
+func (x *GetInstanceCPUsResponse) Reset() {
+ *x = GetInstanceCPUsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[306]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *StorageRecommendationPolicy) GetTargetUtilizationPercent() float32 {
- if x != nil && x.TargetUtilizationPercent != nil {
- return *x.TargetUtilizationPercent
- }
- return 0
+func (x *GetInstanceCPUsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *StorageRecommendationPolicy) GetWarnDaysToFull() int32 {
- if x != nil && x.WarnDaysToFull != nil {
- return *x.WarnDaysToFull
+func (*GetInstanceCPUsResponse) ProtoMessage() {}
+
+func (x *GetInstanceCPUsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[306]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *StorageRecommendationPolicy) GetMaxExpansionPerAction() float32 {
- if x != nil && x.MaxExpansionPerAction != nil {
- return *x.MaxExpansionPerAction
- }
- return 0
+// Deprecated: Use GetInstanceCPUsResponse.ProtoReflect.Descriptor instead.
+func (*GetInstanceCPUsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{306}
}
-func (x *StorageRecommendationPolicy) GetMinDataPoints() int32 {
- if x != nil && x.MinDataPoints != nil {
- return *x.MinDataPoints
+func (x *GetInstanceCPUsResponse) GetInstanceCpus() []*InstanceCPU {
+ if x != nil {
+ return x.InstanceCpus
}
- return 0
+ return nil
}
-func (x *StorageRecommendationPolicy) GetCriticalDaysToFull() int32 {
- if x != nil && x.CriticalDaysToFull != nil {
- return *x.CriticalDaysToFull
- }
- return 0
-}
-
-func (x *StorageRecommendationPolicy) GetHeadroomDays() int32 {
- if x != nil && x.HeadroomDays != nil {
- return *x.HeadroomDays
- }
- return 0
-}
-
-func (x *StorageRecommendationPolicy) GetMinResizeIncrementGib() int32 {
- if x != nil && x.MinResizeIncrementGib != nil {
- return *x.MinResizeIncrementGib
- }
- return 0
-}
-
-func (x *StorageRecommendationPolicy) GetMaxMonthlyCostUsd() float32 {
- if x != nil && x.MaxMonthlyCostUsd != nil {
- return *x.MaxMonthlyCostUsd
- }
- return 0
-}
-
-func (x *StorageRecommendationPolicy) GetCooldownWindowSeconds() int32 {
- if x != nil && x.CooldownWindowSeconds != nil {
- return *x.CooldownWindowSeconds
- }
- return 0
-}
-
-func (x *StorageRecommendationPolicy) GetIsDefaultPolicy() bool {
- if x != nil {
- return x.IsDefaultPolicy
- }
- return false
-}
-
-func (x *StorageRecommendationPolicy) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *StorageRecommendationPolicy) GetUpdatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedAt
- }
- return nil
-}
-
-type CreateStorageRecommendationPolicyRequest struct {
+type GetInstanceTypeNamesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- ActionTriggers []ActionTrigger `protobuf:"varint,4,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- CronSchedule *string `protobuf:"bytes,5,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- LookbackPeriodSeconds *int32 `protobuf:"varint,6,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
- TargetUtilizationPercent *float32 `protobuf:"fixed32,7,opt,name=target_utilization_percent,json=targetUtilizationPercent,proto3,oneof" json:"target_utilization_percent,omitempty"`
- WarnDaysToFull *int32 `protobuf:"varint,8,opt,name=warn_days_to_full,json=warnDaysToFull,proto3,oneof" json:"warn_days_to_full,omitempty"`
- MaxExpansionPerAction *float32 `protobuf:"fixed32,9,opt,name=max_expansion_per_action,json=maxExpansionPerAction,proto3,oneof" json:"max_expansion_per_action,omitempty"`
- MinDataPoints *int32 `protobuf:"varint,10,opt,name=min_data_points,json=minDataPoints,proto3,oneof" json:"min_data_points,omitempty"`
- CriticalDaysToFull *int32 `protobuf:"varint,11,opt,name=critical_days_to_full,json=criticalDaysToFull,proto3,oneof" json:"critical_days_to_full,omitempty"`
- HeadroomDays *int32 `protobuf:"varint,12,opt,name=headroom_days,json=headroomDays,proto3,oneof" json:"headroom_days,omitempty"`
- MinResizeIncrementGib *int32 `protobuf:"varint,13,opt,name=min_resize_increment_gib,json=minResizeIncrementGib,proto3,oneof" json:"min_resize_increment_gib,omitempty"`
- MaxMonthlyCostUsd *float32 `protobuf:"fixed32,14,opt,name=max_monthly_cost_usd,json=maxMonthlyCostUsd,proto3,oneof" json:"max_monthly_cost_usd,omitempty"`
- CooldownWindowSeconds *int32 `protobuf:"varint,15,opt,name=cooldown_window_seconds,json=cooldownWindowSeconds,proto3,oneof" json:"cooldown_window_seconds,omitempty"`
+ CloudProviders []string `protobuf:"bytes,1,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"`
}
-func (x *CreateStorageRecommendationPolicyRequest) Reset() {
- *x = CreateStorageRecommendationPolicyRequest{}
+func (x *GetInstanceTypeNamesRequest) Reset() {
+ *x = GetInstanceTypeNamesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[287]
+ mi := &file_api_v1_recommendation_proto_msgTypes[307]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateStorageRecommendationPolicyRequest) String() string {
+func (x *GetInstanceTypeNamesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateStorageRecommendationPolicyRequest) ProtoMessage() {}
+func (*GetInstanceTypeNamesRequest) ProtoMessage() {}
-func (x *CreateStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[287]
+func (x *GetInstanceTypeNamesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[307]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22819,141 +26252,43 @@ func (x *CreateStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use CreateStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*CreateStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{287}
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
+// Deprecated: Use GetInstanceTypeNamesRequest.ProtoReflect.Descriptor instead.
+func (*GetInstanceTypeNamesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{307}
}
-func (x *CreateStorageRecommendationPolicyRequest) GetActionTriggers() []ActionTrigger {
+func (x *GetInstanceTypeNamesRequest) GetCloudProviders() []string {
if x != nil {
- return x.ActionTriggers
+ return x.CloudProviders
}
return nil
}
-func (x *CreateStorageRecommendationPolicyRequest) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
- }
- return ""
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetLookbackPeriodSeconds() int32 {
- if x != nil && x.LookbackPeriodSeconds != nil {
- return *x.LookbackPeriodSeconds
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetTargetUtilizationPercent() float32 {
- if x != nil && x.TargetUtilizationPercent != nil {
- return *x.TargetUtilizationPercent
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetWarnDaysToFull() int32 {
- if x != nil && x.WarnDaysToFull != nil {
- return *x.WarnDaysToFull
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetMaxExpansionPerAction() float32 {
- if x != nil && x.MaxExpansionPerAction != nil {
- return *x.MaxExpansionPerAction
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetMinDataPoints() int32 {
- if x != nil && x.MinDataPoints != nil {
- return *x.MinDataPoints
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetCriticalDaysToFull() int32 {
- if x != nil && x.CriticalDaysToFull != nil {
- return *x.CriticalDaysToFull
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetHeadroomDays() int32 {
- if x != nil && x.HeadroomDays != nil {
- return *x.HeadroomDays
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetMinResizeIncrementGib() int32 {
- if x != nil && x.MinResizeIncrementGib != nil {
- return *x.MinResizeIncrementGib
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetMaxMonthlyCostUsd() float32 {
- if x != nil && x.MaxMonthlyCostUsd != nil {
- return *x.MaxMonthlyCostUsd
- }
- return 0
-}
-
-func (x *CreateStorageRecommendationPolicyRequest) GetCooldownWindowSeconds() int32 {
- if x != nil && x.CooldownWindowSeconds != nil {
- return *x.CooldownWindowSeconds
- }
- return 0
-}
-
-type CreateStorageRecommendationPolicyResponse struct {
+type GetInstanceTypeNamesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *StorageRecommendationPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ InstanceTypes []*InstanceTypeName `protobuf:"bytes,1,rep,name=instance_types,json=instanceTypes,proto3" json:"instance_types,omitempty"`
}
-func (x *CreateStorageRecommendationPolicyResponse) Reset() {
- *x = CreateStorageRecommendationPolicyResponse{}
+func (x *GetInstanceTypeNamesResponse) Reset() {
+ *x = GetInstanceTypeNamesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[288]
+ mi := &file_api_v1_recommendation_proto_msgTypes[308]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateStorageRecommendationPolicyResponse) String() string {
+func (x *GetInstanceTypeNamesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateStorageRecommendationPolicyResponse) ProtoMessage() {}
+func (*GetInstanceTypeNamesResponse) ProtoMessage() {}
-func (x *CreateStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[288]
+func (x *GetInstanceTypeNamesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[308]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -22964,43 +26299,44 @@ func (x *CreateStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use CreateStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*CreateStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{288}
+// Deprecated: Use GetInstanceTypeNamesResponse.ProtoReflect.Descriptor instead.
+func (*GetInstanceTypeNamesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{308}
}
-func (x *CreateStorageRecommendationPolicyResponse) GetPolicy() *StorageRecommendationPolicy {
+func (x *GetInstanceTypeNamesResponse) GetInstanceTypes() []*InstanceTypeName {
if x != nil {
- return x.Policy
+ return x.InstanceTypes
}
return nil
}
-type GetStorageRecommendationPolicyRequest struct {
+type SubnetSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
}
-func (x *GetStorageRecommendationPolicyRequest) Reset() {
- *x = GetStorageRecommendationPolicyRequest{}
+func (x *SubnetSelectorTerm) Reset() {
+ *x = SubnetSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[289]
+ mi := &file_api_v1_recommendation_proto_msgTypes[309]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetStorageRecommendationPolicyRequest) String() string {
+func (x *SubnetSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetStorageRecommendationPolicyRequest) ProtoMessage() {}
+func (*SubnetSelectorTerm) ProtoMessage() {}
-func (x *GetStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[289]
+func (x *SubnetSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[309]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23011,43 +26347,52 @@ func (x *GetStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use GetStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*GetStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{289}
+// Deprecated: Use SubnetSelectorTerm.ProtoReflect.Descriptor instead.
+func (*SubnetSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{309}
}
-func (x *GetStorageRecommendationPolicyRequest) GetPolicyId() string {
+func (x *SubnetSelectorTerm) GetTags() map[string]string {
if x != nil {
- return x.PolicyId
+ return x.Tags
+ }
+ return nil
+}
+
+func (x *SubnetSelectorTerm) GetId() string {
+ if x != nil {
+ return x.Id
}
return ""
}
-type GetStorageRecommendationPolicyResponse struct {
+type SecurityGroupSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *StorageRecommendationPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
}
-func (x *GetStorageRecommendationPolicyResponse) Reset() {
- *x = GetStorageRecommendationPolicyResponse{}
+func (x *SecurityGroupSelectorTerm) Reset() {
+ *x = SecurityGroupSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[290]
+ mi := &file_api_v1_recommendation_proto_msgTypes[310]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetStorageRecommendationPolicyResponse) String() string {
+func (x *SecurityGroupSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetStorageRecommendationPolicyResponse) ProtoMessage() {}
+func (*SecurityGroupSelectorTerm) ProtoMessage() {}
-func (x *GetStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[290]
+func (x *SecurityGroupSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[310]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23058,43 +26403,59 @@ func (x *GetStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Mes
return mi.MessageOf(x)
}
-// Deprecated: Use GetStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*GetStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{290}
+// Deprecated: Use SecurityGroupSelectorTerm.ProtoReflect.Descriptor instead.
+func (*SecurityGroupSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{310}
}
-func (x *GetStorageRecommendationPolicyResponse) GetPolicy() *StorageRecommendationPolicy {
+func (x *SecurityGroupSelectorTerm) GetTags() map[string]string {
if x != nil {
- return x.Policy
+ return x.Tags
}
return nil
}
-type ListStorageRecommendationPoliciesRequest struct {
+func (x *SecurityGroupSelectorTerm) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *SecurityGroupSelectorTerm) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type CapacityReservationSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ OwnerId string `protobuf:"bytes,3,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
}
-func (x *ListStorageRecommendationPoliciesRequest) Reset() {
- *x = ListStorageRecommendationPoliciesRequest{}
+func (x *CapacityReservationSelectorTerm) Reset() {
+ *x = CapacityReservationSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[291]
+ mi := &file_api_v1_recommendation_proto_msgTypes[311]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListStorageRecommendationPoliciesRequest) String() string {
+func (x *CapacityReservationSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListStorageRecommendationPoliciesRequest) ProtoMessage() {}
+func (*CapacityReservationSelectorTerm) ProtoMessage() {}
-func (x *ListStorageRecommendationPoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[291]
+func (x *CapacityReservationSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[311]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23105,43 +26466,62 @@ func (x *ListStorageRecommendationPoliciesRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use ListStorageRecommendationPoliciesRequest.ProtoReflect.Descriptor instead.
-func (*ListStorageRecommendationPoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{291}
+// Deprecated: Use CapacityReservationSelectorTerm.ProtoReflect.Descriptor instead.
+func (*CapacityReservationSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{311}
}
-func (x *ListStorageRecommendationPoliciesRequest) GetTeamId() string {
+func (x *CapacityReservationSelectorTerm) GetTags() map[string]string {
if x != nil {
- return x.TeamId
+ return x.Tags
+ }
+ return nil
+}
+
+func (x *CapacityReservationSelectorTerm) GetId() string {
+ if x != nil {
+ return x.Id
}
return ""
}
-type ListStorageRecommendationPoliciesResponse struct {
+func (x *CapacityReservationSelectorTerm) GetOwnerId() string {
+ if x != nil {
+ return x.OwnerId
+ }
+ return ""
+}
+
+type AMISelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*StorageRecommendationPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Alias string `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"`
+ Tags map[string]string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Owner string `protobuf:"bytes,5,opt,name=owner,proto3" json:"owner,omitempty"`
+ SsmParameter string `protobuf:"bytes,6,opt,name=ssm_parameter,json=ssmParameter,proto3" json:"ssm_parameter,omitempty"`
}
-func (x *ListStorageRecommendationPoliciesResponse) Reset() {
- *x = ListStorageRecommendationPoliciesResponse{}
+func (x *AMISelectorTerm) Reset() {
+ *x = AMISelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[292]
+ mi := &file_api_v1_recommendation_proto_msgTypes[312]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListStorageRecommendationPoliciesResponse) String() string {
+func (x *AMISelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListStorageRecommendationPoliciesResponse) ProtoMessage() {}
+func (*AMISelectorTerm) ProtoMessage() {}
-func (x *ListStorageRecommendationPoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[292]
+func (x *AMISelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[312]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23152,58 +26532,89 @@ func (x *ListStorageRecommendationPoliciesResponse) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use ListStorageRecommendationPoliciesResponse.ProtoReflect.Descriptor instead.
-func (*ListStorageRecommendationPoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{292}
+// Deprecated: Use AMISelectorTerm.ProtoReflect.Descriptor instead.
+func (*AMISelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{312}
}
-func (x *ListStorageRecommendationPoliciesResponse) GetPolicies() []*StorageRecommendationPolicy {
+func (x *AMISelectorTerm) GetAlias() string {
if x != nil {
- return x.Policies
+ return x.Alias
+ }
+ return ""
+}
+
+func (x *AMISelectorTerm) GetTags() map[string]string {
+ if x != nil {
+ return x.Tags
}
return nil
}
-type UpdateStorageRecommendationPolicyRequest struct {
+func (x *AMISelectorTerm) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *AMISelectorTerm) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AMISelectorTerm) GetOwner() string {
+ if x != nil {
+ return x.Owner
+ }
+ return ""
+}
+
+func (x *AMISelectorTerm) GetSsmParameter() string {
+ if x != nil {
+ return x.SsmParameter
+ }
+ return ""
+}
+
+type KubeletConfiguration struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
- ActionTriggers []ActionTrigger `protobuf:"varint,5,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- CronSchedule *string `protobuf:"bytes,6,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- LookbackPeriodSeconds *int32 `protobuf:"varint,7,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
- TargetUtilizationPercent *float32 `protobuf:"fixed32,8,opt,name=target_utilization_percent,json=targetUtilizationPercent,proto3,oneof" json:"target_utilization_percent,omitempty"`
- WarnDaysToFull *int32 `protobuf:"varint,9,opt,name=warn_days_to_full,json=warnDaysToFull,proto3,oneof" json:"warn_days_to_full,omitempty"`
- MaxExpansionPerAction *float32 `protobuf:"fixed32,10,opt,name=max_expansion_per_action,json=maxExpansionPerAction,proto3,oneof" json:"max_expansion_per_action,omitempty"`
- MinDataPoints *int32 `protobuf:"varint,11,opt,name=min_data_points,json=minDataPoints,proto3,oneof" json:"min_data_points,omitempty"`
- CriticalDaysToFull *int32 `protobuf:"varint,12,opt,name=critical_days_to_full,json=criticalDaysToFull,proto3,oneof" json:"critical_days_to_full,omitempty"`
- HeadroomDays *int32 `protobuf:"varint,13,opt,name=headroom_days,json=headroomDays,proto3,oneof" json:"headroom_days,omitempty"`
- MinResizeIncrementGib *int32 `protobuf:"varint,14,opt,name=min_resize_increment_gib,json=minResizeIncrementGib,proto3,oneof" json:"min_resize_increment_gib,omitempty"`
- MaxMonthlyCostUsd *float32 `protobuf:"fixed32,15,opt,name=max_monthly_cost_usd,json=maxMonthlyCostUsd,proto3,oneof" json:"max_monthly_cost_usd,omitempty"`
- CooldownWindowSeconds *int32 `protobuf:"varint,16,opt,name=cooldown_window_seconds,json=cooldownWindowSeconds,proto3,oneof" json:"cooldown_window_seconds,omitempty"`
+ ClusterDns []string `protobuf:"bytes,1,rep,name=cluster_dns,json=clusterDns,proto3" json:"cluster_dns,omitempty"`
+ MaxPods *int32 `protobuf:"varint,2,opt,name=max_pods,json=maxPods,proto3,oneof" json:"max_pods,omitempty"`
+ PodsPerCore *int32 `protobuf:"varint,3,opt,name=pods_per_core,json=podsPerCore,proto3,oneof" json:"pods_per_core,omitempty"`
+ SystemReserved map[string]string `protobuf:"bytes,4,rep,name=system_reserved,json=systemReserved,proto3" json:"system_reserved,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ KubeReserved map[string]string `protobuf:"bytes,5,rep,name=kube_reserved,json=kubeReserved,proto3" json:"kube_reserved,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ EvictionHard map[string]string `protobuf:"bytes,6,rep,name=eviction_hard,json=evictionHard,proto3" json:"eviction_hard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ EvictionSoft map[string]string `protobuf:"bytes,7,rep,name=eviction_soft,json=evictionSoft,proto3" json:"eviction_soft,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ EvictionSoftGracePeriod map[string]string `protobuf:"bytes,8,rep,name=eviction_soft_grace_period,json=evictionSoftGracePeriod,proto3" json:"eviction_soft_grace_period,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ EvictionMaxPodGracePeriod *int32 `protobuf:"varint,9,opt,name=eviction_max_pod_grace_period,json=evictionMaxPodGracePeriod,proto3,oneof" json:"eviction_max_pod_grace_period,omitempty"`
+ ImageGcHighThresholdPercent *int32 `protobuf:"varint,10,opt,name=image_gc_high_threshold_percent,json=imageGcHighThresholdPercent,proto3,oneof" json:"image_gc_high_threshold_percent,omitempty"`
+ ImageGcLowThresholdPercent *int32 `protobuf:"varint,11,opt,name=image_gc_low_threshold_percent,json=imageGcLowThresholdPercent,proto3,oneof" json:"image_gc_low_threshold_percent,omitempty"`
+ CpuCfsQuota *bool `protobuf:"varint,12,opt,name=cpu_cfs_quota,json=cpuCfsQuota,proto3,oneof" json:"cpu_cfs_quota,omitempty"`
}
-func (x *UpdateStorageRecommendationPolicyRequest) Reset() {
- *x = UpdateStorageRecommendationPolicyRequest{}
+func (x *KubeletConfiguration) Reset() {
+ *x = KubeletConfiguration{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[293]
+ mi := &file_api_v1_recommendation_proto_msgTypes[313]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateStorageRecommendationPolicyRequest) String() string {
+func (x *KubeletConfiguration) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateStorageRecommendationPolicyRequest) ProtoMessage() {}
+func (*KubeletConfiguration) ProtoMessage() {}
-func (x *UpdateStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[293]
+func (x *KubeletConfiguration) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[313]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23214,148 +26625,122 @@ func (x *UpdateStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*UpdateStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{293}
+// Deprecated: Use KubeletConfiguration.ProtoReflect.Descriptor instead.
+func (*KubeletConfiguration) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{313}
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetPolicyId() string {
+func (x *KubeletConfiguration) GetClusterDns() []string {
if x != nil {
- return x.PolicyId
+ return x.ClusterDns
}
- return ""
+ return nil
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
+func (x *KubeletConfiguration) GetMaxPods() int32 {
+ if x != nil && x.MaxPods != nil {
+ return *x.MaxPods
}
- return ""
+ return 0
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetName() string {
- if x != nil {
- return x.Name
+func (x *KubeletConfiguration) GetPodsPerCore() int32 {
+ if x != nil && x.PodsPerCore != nil {
+ return *x.PodsPerCore
}
- return ""
+ return 0
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetDescription() string {
+func (x *KubeletConfiguration) GetSystemReserved() map[string]string {
if x != nil {
- return x.Description
+ return x.SystemReserved
}
- return ""
+ return nil
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetActionTriggers() []ActionTrigger {
+func (x *KubeletConfiguration) GetKubeReserved() map[string]string {
if x != nil {
- return x.ActionTriggers
+ return x.KubeReserved
}
return nil
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
+func (x *KubeletConfiguration) GetEvictionHard() map[string]string {
+ if x != nil {
+ return x.EvictionHard
}
- return ""
+ return nil
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetLookbackPeriodSeconds() int32 {
- if x != nil && x.LookbackPeriodSeconds != nil {
- return *x.LookbackPeriodSeconds
+func (x *KubeletConfiguration) GetEvictionSoft() map[string]string {
+ if x != nil {
+ return x.EvictionSoft
}
- return 0
-}
-
-func (x *UpdateStorageRecommendationPolicyRequest) GetTargetUtilizationPercent() float32 {
- if x != nil && x.TargetUtilizationPercent != nil {
- return *x.TargetUtilizationPercent
- }
- return 0
-}
-
-func (x *UpdateStorageRecommendationPolicyRequest) GetWarnDaysToFull() int32 {
- if x != nil && x.WarnDaysToFull != nil {
- return *x.WarnDaysToFull
- }
- return 0
-}
-
-func (x *UpdateStorageRecommendationPolicyRequest) GetMaxExpansionPerAction() float32 {
- if x != nil && x.MaxExpansionPerAction != nil {
- return *x.MaxExpansionPerAction
- }
- return 0
-}
-
-func (x *UpdateStorageRecommendationPolicyRequest) GetMinDataPoints() int32 {
- if x != nil && x.MinDataPoints != nil {
- return *x.MinDataPoints
- }
- return 0
+ return nil
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetCriticalDaysToFull() int32 {
- if x != nil && x.CriticalDaysToFull != nil {
- return *x.CriticalDaysToFull
+func (x *KubeletConfiguration) GetEvictionSoftGracePeriod() map[string]string {
+ if x != nil {
+ return x.EvictionSoftGracePeriod
}
- return 0
+ return nil
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetHeadroomDays() int32 {
- if x != nil && x.HeadroomDays != nil {
- return *x.HeadroomDays
+func (x *KubeletConfiguration) GetEvictionMaxPodGracePeriod() int32 {
+ if x != nil && x.EvictionMaxPodGracePeriod != nil {
+ return *x.EvictionMaxPodGracePeriod
}
return 0
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetMinResizeIncrementGib() int32 {
- if x != nil && x.MinResizeIncrementGib != nil {
- return *x.MinResizeIncrementGib
+func (x *KubeletConfiguration) GetImageGcHighThresholdPercent() int32 {
+ if x != nil && x.ImageGcHighThresholdPercent != nil {
+ return *x.ImageGcHighThresholdPercent
}
return 0
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetMaxMonthlyCostUsd() float32 {
- if x != nil && x.MaxMonthlyCostUsd != nil {
- return *x.MaxMonthlyCostUsd
+func (x *KubeletConfiguration) GetImageGcLowThresholdPercent() int32 {
+ if x != nil && x.ImageGcLowThresholdPercent != nil {
+ return *x.ImageGcLowThresholdPercent
}
return 0
}
-func (x *UpdateStorageRecommendationPolicyRequest) GetCooldownWindowSeconds() int32 {
- if x != nil && x.CooldownWindowSeconds != nil {
- return *x.CooldownWindowSeconds
+func (x *KubeletConfiguration) GetCpuCfsQuota() bool {
+ if x != nil && x.CpuCfsQuota != nil {
+ return *x.CpuCfsQuota
}
- return 0
+ return false
}
-type UpdateStorageRecommendationPolicyResponse struct {
+type BlockDeviceMapping struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *StorageRecommendationPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ DeviceName *string `protobuf:"bytes,1,opt,name=device_name,json=deviceName,proto3,oneof" json:"device_name,omitempty"`
+ Ebs *BlockDevice `protobuf:"bytes,2,opt,name=ebs,proto3,oneof" json:"ebs,omitempty"`
+ RootVolume *bool `protobuf:"varint,3,opt,name=root_volume,json=rootVolume,proto3,oneof" json:"root_volume,omitempty"`
}
-func (x *UpdateStorageRecommendationPolicyResponse) Reset() {
- *x = UpdateStorageRecommendationPolicyResponse{}
+func (x *BlockDeviceMapping) Reset() {
+ *x = BlockDeviceMapping{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[294]
+ mi := &file_api_v1_recommendation_proto_msgTypes[314]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateStorageRecommendationPolicyResponse) String() string {
+func (x *BlockDeviceMapping) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateStorageRecommendationPolicyResponse) ProtoMessage() {}
+func (*BlockDeviceMapping) ProtoMessage() {}
-func (x *UpdateStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[294]
+func (x *BlockDeviceMapping) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[314]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23366,44 +26751,65 @@ func (x *UpdateStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*UpdateStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{294}
+// Deprecated: Use BlockDeviceMapping.ProtoReflect.Descriptor instead.
+func (*BlockDeviceMapping) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{314}
}
-func (x *UpdateStorageRecommendationPolicyResponse) GetPolicy() *StorageRecommendationPolicy {
+func (x *BlockDeviceMapping) GetDeviceName() string {
+ if x != nil && x.DeviceName != nil {
+ return *x.DeviceName
+ }
+ return ""
+}
+
+func (x *BlockDeviceMapping) GetEbs() *BlockDevice {
if x != nil {
- return x.Policy
+ return x.Ebs
}
return nil
}
-type DeleteStorageRecommendationPolicyRequest struct {
+func (x *BlockDeviceMapping) GetRootVolume() bool {
+ if x != nil && x.RootVolume != nil {
+ return *x.RootVolume
+ }
+ return false
+}
+
+type BlockDevice struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ DeleteOnTermination *bool `protobuf:"varint,1,opt,name=delete_on_termination,json=deleteOnTermination,proto3,oneof" json:"delete_on_termination,omitempty"`
+ Encrypted *bool `protobuf:"varint,2,opt,name=encrypted,proto3,oneof" json:"encrypted,omitempty"`
+ Iops *int64 `protobuf:"varint,3,opt,name=iops,proto3,oneof" json:"iops,omitempty"`
+ KmsKeyId *string `protobuf:"bytes,4,opt,name=kms_key_id,json=kmsKeyId,proto3,oneof" json:"kms_key_id,omitempty"`
+ SnapshotId *string `protobuf:"bytes,5,opt,name=snapshot_id,json=snapshotId,proto3,oneof" json:"snapshot_id,omitempty"`
+ Throughput *int64 `protobuf:"varint,6,opt,name=throughput,proto3,oneof" json:"throughput,omitempty"`
+ VolumeInitializationRate *int32 `protobuf:"varint,7,opt,name=volume_initialization_rate,json=volumeInitializationRate,proto3,oneof" json:"volume_initialization_rate,omitempty"`
+ VolumeSize *string `protobuf:"bytes,8,opt,name=volume_size,json=volumeSize,proto3,oneof" json:"volume_size,omitempty"`
+ VolumeType *string `protobuf:"bytes,9,opt,name=volume_type,json=volumeType,proto3,oneof" json:"volume_type,omitempty"`
}
-func (x *DeleteStorageRecommendationPolicyRequest) Reset() {
- *x = DeleteStorageRecommendationPolicyRequest{}
+func (x *BlockDevice) Reset() {
+ *x = BlockDevice{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[295]
+ mi := &file_api_v1_recommendation_proto_msgTypes[315]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteStorageRecommendationPolicyRequest) String() string {
+func (x *BlockDevice) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteStorageRecommendationPolicyRequest) ProtoMessage() {}
+func (*BlockDevice) ProtoMessage() {}
-func (x *DeleteStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[295]
+func (x *BlockDevice) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[315]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23414,109 +26820,102 @@ func (x *DeleteStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*DeleteStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{295}
+// Deprecated: Use BlockDevice.ProtoReflect.Descriptor instead.
+func (*BlockDevice) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{315}
}
-func (x *DeleteStorageRecommendationPolicyRequest) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
+func (x *BlockDevice) GetDeleteOnTermination() bool {
+ if x != nil && x.DeleteOnTermination != nil {
+ return *x.DeleteOnTermination
}
- return ""
+ return false
}
-func (x *DeleteStorageRecommendationPolicyRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
+func (x *BlockDevice) GetEncrypted() bool {
+ if x != nil && x.Encrypted != nil {
+ return *x.Encrypted
}
- return ""
+ return false
}
-type DeleteStorageRecommendationPolicyResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+func (x *BlockDevice) GetIops() int64 {
+ if x != nil && x.Iops != nil {
+ return *x.Iops
+ }
+ return 0
}
-func (x *DeleteStorageRecommendationPolicyResponse) Reset() {
- *x = DeleteStorageRecommendationPolicyResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[296]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *BlockDevice) GetKmsKeyId() string {
+ if x != nil && x.KmsKeyId != nil {
+ return *x.KmsKeyId
}
+ return ""
}
-func (x *DeleteStorageRecommendationPolicyResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *BlockDevice) GetSnapshotId() string {
+ if x != nil && x.SnapshotId != nil {
+ return *x.SnapshotId
+ }
+ return ""
}
-func (*DeleteStorageRecommendationPolicyResponse) ProtoMessage() {}
+func (x *BlockDevice) GetThroughput() int64 {
+ if x != nil && x.Throughput != nil {
+ return *x.Throughput
+ }
+ return 0
+}
-func (x *DeleteStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[296]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *BlockDevice) GetVolumeInitializationRate() int32 {
+ if x != nil && x.VolumeInitializationRate != nil {
+ return *x.VolumeInitializationRate
}
- return mi.MessageOf(x)
+ return 0
}
-// Deprecated: Use DeleteStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*DeleteStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{296}
+func (x *BlockDevice) GetVolumeSize() string {
+ if x != nil && x.VolumeSize != nil {
+ return *x.VolumeSize
+ }
+ return ""
}
-func (x *DeleteStorageRecommendationPolicyResponse) GetSuccess() bool {
- if x != nil {
- return x.Success
+func (x *BlockDevice) GetVolumeType() string {
+ if x != nil && x.VolumeType != nil {
+ return *x.VolumeType
}
- return false
+ return ""
}
-// StoragePolicyTarget maps a storage policy to clusters with targeting filters
-type StoragePolicyTarget struct {
+type MetadataOptions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- TeamId string `protobuf:"bytes,4,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterIds []string `protobuf:"bytes,5,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- PolicyId string `protobuf:"bytes,6,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- Enabled bool `protobuf:"varint,10,opt,name=enabled,proto3" json:"enabled,omitempty"`
- // Targeting filters
- NamespaceSelector *LabelSelector `protobuf:"bytes,20,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"` // Target namespaces by labels
- StorageClasses []string `protobuf:"bytes,21,rep,name=storage_classes,json=storageClasses,proto3" json:"storage_classes,omitempty"` // Target specific storage classes
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,50,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ HttpEndpoint *string `protobuf:"bytes,1,opt,name=http_endpoint,json=httpEndpoint,proto3,oneof" json:"http_endpoint,omitempty"`
+ HttpProtocolIpv6 *string `protobuf:"bytes,2,opt,name=http_protocol_ipv6,json=httpProtocolIpv6,proto3,oneof" json:"http_protocol_ipv6,omitempty"`
+ HttpPutResponseHopLimit *int64 `protobuf:"varint,3,opt,name=http_put_response_hop_limit,json=httpPutResponseHopLimit,proto3,oneof" json:"http_put_response_hop_limit,omitempty"`
+ HttpTokens *string `protobuf:"bytes,4,opt,name=http_tokens,json=httpTokens,proto3,oneof" json:"http_tokens,omitempty"`
}
-func (x *StoragePolicyTarget) Reset() {
- *x = StoragePolicyTarget{}
+func (x *MetadataOptions) Reset() {
+ *x = MetadataOptions{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[297]
+ mi := &file_api_v1_recommendation_proto_msgTypes[316]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *StoragePolicyTarget) String() string {
+func (x *MetadataOptions) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*StoragePolicyTarget) ProtoMessage() {}
+func (*MetadataOptions) ProtoMessage() {}
-func (x *StoragePolicyTarget) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[297]
+func (x *MetadataOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[316]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23527,120 +26926,71 @@ func (x *StoragePolicyTarget) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use StoragePolicyTarget.ProtoReflect.Descriptor instead.
-func (*StoragePolicyTarget) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{297}
-}
-
-func (x *StoragePolicyTarget) GetTargetId() string {
- if x != nil {
- return x.TargetId
- }
- return ""
-}
-
-func (x *StoragePolicyTarget) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
+// Deprecated: Use MetadataOptions.ProtoReflect.Descriptor instead.
+func (*MetadataOptions) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{316}
}
-func (x *StoragePolicyTarget) GetDescription() string {
- if x != nil {
- return x.Description
+func (x *MetadataOptions) GetHttpEndpoint() string {
+ if x != nil && x.HttpEndpoint != nil {
+ return *x.HttpEndpoint
}
return ""
}
-func (x *StoragePolicyTarget) GetTeamId() string {
- if x != nil {
- return x.TeamId
+func (x *MetadataOptions) GetHttpProtocolIpv6() string {
+ if x != nil && x.HttpProtocolIpv6 != nil {
+ return *x.HttpProtocolIpv6
}
return ""
}
-func (x *StoragePolicyTarget) GetClusterIds() []string {
- if x != nil {
- return x.ClusterIds
+func (x *MetadataOptions) GetHttpPutResponseHopLimit() int64 {
+ if x != nil && x.HttpPutResponseHopLimit != nil {
+ return *x.HttpPutResponseHopLimit
}
- return nil
+ return 0
}
-func (x *StoragePolicyTarget) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
+func (x *MetadataOptions) GetHttpTokens() string {
+ if x != nil && x.HttpTokens != nil {
+ return *x.HttpTokens
}
return ""
}
-func (x *StoragePolicyTarget) GetEnabled() bool {
- if x != nil {
- return x.Enabled
- }
- return false
-}
-
-func (x *StoragePolicyTarget) GetNamespaceSelector() *LabelSelector {
- if x != nil {
- return x.NamespaceSelector
- }
- return nil
-}
-
-func (x *StoragePolicyTarget) GetStorageClasses() []string {
- if x != nil {
- return x.StorageClasses
- }
- return nil
-}
-
-func (x *StoragePolicyTarget) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *StoragePolicyTarget) GetUpdatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedAt
- }
- return nil
-}
-
-type CreateStoragePolicyTargetRequest struct {
+type GCPNodeClassSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
- TeamId string `protobuf:"bytes,3,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterIds []string `protobuf:"bytes,4,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- PolicyId string `protobuf:"bytes,5,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- Enabled bool `protobuf:"varint,6,opt,name=enabled,proto3" json:"enabled,omitempty"`
- NamespaceSelector *LabelSelector `protobuf:"bytes,20,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
- StorageClasses []string `protobuf:"bytes,21,rep,name=storage_classes,json=storageClasses,proto3" json:"storage_classes,omitempty"`
+ ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
+ ImageSelectorTerms []*GCPImageSelectorTerm `protobuf:"bytes,2,rep,name=image_selector_terms,json=imageSelectorTerms,proto3" json:"image_selector_terms,omitempty"`
+ ImageFamily *string `protobuf:"bytes,3,opt,name=image_family,json=imageFamily,proto3,oneof" json:"image_family,omitempty"`
+ KubeletConfiguration *KubeletConfiguration `protobuf:"bytes,4,opt,name=kubelet_configuration,json=kubeletConfiguration,proto3,oneof" json:"kubelet_configuration,omitempty"`
+ Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ NetworkTags []string `protobuf:"bytes,7,rep,name=network_tags,json=networkTags,proto3" json:"network_tags,omitempty"`
+ Disks []*GCPDisk `protobuf:"bytes,8,rep,name=disks,proto3" json:"disks,omitempty"`
}
-func (x *CreateStoragePolicyTargetRequest) Reset() {
- *x = CreateStoragePolicyTargetRequest{}
+func (x *GCPNodeClassSpec) Reset() {
+ *x = GCPNodeClassSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[298]
+ mi := &file_api_v1_recommendation_proto_msgTypes[317]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateStoragePolicyTargetRequest) String() string {
+func (x *GCPNodeClassSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateStoragePolicyTargetRequest) ProtoMessage() {}
+func (*GCPNodeClassSpec) ProtoMessage() {}
-func (x *CreateStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[298]
+func (x *GCPNodeClassSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[317]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23651,92 +27001,93 @@ func (x *CreateStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use CreateStoragePolicyTargetRequest.ProtoReflect.Descriptor instead.
-func (*CreateStoragePolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{298}
+// Deprecated: Use GCPNodeClassSpec.ProtoReflect.Descriptor instead.
+func (*GCPNodeClassSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{317}
}
-func (x *CreateStoragePolicyTargetRequest) GetName() string {
+func (x *GCPNodeClassSpec) GetServiceAccount() string {
if x != nil {
- return x.Name
+ return x.ServiceAccount
}
return ""
}
-func (x *CreateStoragePolicyTargetRequest) GetDescription() string {
+func (x *GCPNodeClassSpec) GetImageSelectorTerms() []*GCPImageSelectorTerm {
if x != nil {
- return x.Description
+ return x.ImageSelectorTerms
}
- return ""
+ return nil
}
-func (x *CreateStoragePolicyTargetRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
+func (x *GCPNodeClassSpec) GetImageFamily() string {
+ if x != nil && x.ImageFamily != nil {
+ return *x.ImageFamily
}
return ""
}
-func (x *CreateStoragePolicyTargetRequest) GetClusterIds() []string {
+func (x *GCPNodeClassSpec) GetKubeletConfiguration() *KubeletConfiguration {
if x != nil {
- return x.ClusterIds
+ return x.KubeletConfiguration
}
return nil
}
-func (x *CreateStoragePolicyTargetRequest) GetPolicyId() string {
+func (x *GCPNodeClassSpec) GetLabels() map[string]string {
if x != nil {
- return x.PolicyId
+ return x.Labels
}
- return ""
+ return nil
}
-func (x *CreateStoragePolicyTargetRequest) GetEnabled() bool {
+func (x *GCPNodeClassSpec) GetMetadata() map[string]string {
if x != nil {
- return x.Enabled
+ return x.Metadata
}
- return false
+ return nil
}
-func (x *CreateStoragePolicyTargetRequest) GetNamespaceSelector() *LabelSelector {
+func (x *GCPNodeClassSpec) GetNetworkTags() []string {
if x != nil {
- return x.NamespaceSelector
+ return x.NetworkTags
}
return nil
}
-func (x *CreateStoragePolicyTargetRequest) GetStorageClasses() []string {
+func (x *GCPNodeClassSpec) GetDisks() []*GCPDisk {
if x != nil {
- return x.StorageClasses
+ return x.Disks
}
return nil
}
-type CreateStoragePolicyTargetResponse struct {
+type GCPImageSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Target *StoragePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+ Alias string `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"`
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
}
-func (x *CreateStoragePolicyTargetResponse) Reset() {
- *x = CreateStoragePolicyTargetResponse{}
+func (x *GCPImageSelectorTerm) Reset() {
+ *x = GCPImageSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[299]
+ mi := &file_api_v1_recommendation_proto_msgTypes[318]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateStoragePolicyTargetResponse) String() string {
+func (x *GCPImageSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateStoragePolicyTargetResponse) ProtoMessage() {}
+func (*GCPImageSelectorTerm) ProtoMessage() {}
-func (x *CreateStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[299]
+func (x *GCPImageSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[318]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23747,44 +27098,54 @@ func (x *CreateStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use CreateStoragePolicyTargetResponse.ProtoReflect.Descriptor instead.
-func (*CreateStoragePolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{299}
+// Deprecated: Use GCPImageSelectorTerm.ProtoReflect.Descriptor instead.
+func (*GCPImageSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{318}
}
-func (x *CreateStoragePolicyTargetResponse) GetTarget() *StoragePolicyTarget {
+func (x *GCPImageSelectorTerm) GetAlias() string {
if x != nil {
- return x.Target
+ return x.Alias
}
- return nil
+ return ""
}
-type ListStoragePolicyTargetsRequest struct {
+func (x *GCPImageSelectorTerm) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type GCPDisk struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
+ SizeGib int32 `protobuf:"varint,1,opt,name=size_gib,json=sizeGib,proto3" json:"size_gib,omitempty"`
+ Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"`
+ Boot bool `protobuf:"varint,3,opt,name=boot,proto3" json:"boot,omitempty"`
+ SecondaryBootImage string `protobuf:"bytes,4,opt,name=secondary_boot_image,json=secondaryBootImage,proto3" json:"secondary_boot_image,omitempty"`
+ SecondaryBootMode string `protobuf:"bytes,5,opt,name=secondary_boot_mode,json=secondaryBootMode,proto3" json:"secondary_boot_mode,omitempty"`
}
-func (x *ListStoragePolicyTargetsRequest) Reset() {
- *x = ListStoragePolicyTargetsRequest{}
+func (x *GCPDisk) Reset() {
+ *x = GCPDisk{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[300]
+ mi := &file_api_v1_recommendation_proto_msgTypes[319]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListStoragePolicyTargetsRequest) String() string {
+func (x *GCPDisk) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListStoragePolicyTargetsRequest) ProtoMessage() {}
+func (*GCPDisk) ProtoMessage() {}
-func (x *ListStoragePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[300]
+func (x *GCPDisk) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[319]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23795,97 +27156,78 @@ func (x *ListStoragePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListStoragePolicyTargetsRequest.ProtoReflect.Descriptor instead.
-func (*ListStoragePolicyTargetsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{300}
+// Deprecated: Use GCPDisk.ProtoReflect.Descriptor instead.
+func (*GCPDisk) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{319}
}
-func (x *ListStoragePolicyTargetsRequest) GetTeamId() string {
+func (x *GCPDisk) GetSizeGib() int32 {
if x != nil {
- return x.TeamId
+ return x.SizeGib
}
- return ""
+ return 0
}
-func (x *ListStoragePolicyTargetsRequest) GetClusterId() string {
- if x != nil && x.ClusterId != nil {
- return *x.ClusterId
+func (x *GCPDisk) GetCategory() string {
+ if x != nil {
+ return x.Category
}
return ""
}
-type ListStoragePolicyTargetsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Targets []*StoragePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
-}
-
-func (x *ListStoragePolicyTargetsResponse) Reset() {
- *x = ListStoragePolicyTargetsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[301]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *GCPDisk) GetBoot() bool {
+ if x != nil {
+ return x.Boot
}
+ return false
}
-func (x *ListStoragePolicyTargetsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListStoragePolicyTargetsResponse) ProtoMessage() {}
-
-func (x *ListStoragePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[301]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *GCPDisk) GetSecondaryBootImage() string {
+ if x != nil {
+ return x.SecondaryBootImage
}
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListStoragePolicyTargetsResponse.ProtoReflect.Descriptor instead.
-func (*ListStoragePolicyTargetsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{301}
+ return ""
}
-func (x *ListStoragePolicyTargetsResponse) GetTargets() []*StoragePolicyTarget {
+func (x *GCPDisk) GetSecondaryBootMode() string {
if x != nil {
- return x.Targets
+ return x.SecondaryBootMode
}
- return nil
+ return ""
}
-type UpdateStoragePolicyTargetRequest struct {
+type AzureNodeClassSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Target *StoragePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+ VnetSubnetId *string `protobuf:"bytes,1,opt,name=vnet_subnet_id,json=vnetSubnetId,proto3,oneof" json:"vnet_subnet_id,omitempty"`
+ OsDiskSizeGb *int32 `protobuf:"varint,2,opt,name=os_disk_size_gb,json=osDiskSizeGb,proto3,oneof" json:"os_disk_size_gb,omitempty"`
+ ImageFamily *string `protobuf:"bytes,3,opt,name=image_family,json=imageFamily,proto3,oneof" json:"image_family,omitempty"` // Ubuntu, Ubuntu2204, Ubuntu2404, AzureLinux
+ FipsMode *string `protobuf:"bytes,4,opt,name=fips_mode,json=fipsMode,proto3,oneof" json:"fips_mode,omitempty"` // FIPS or Disabled
+ Tags map[string]string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Kubelet *AzureKubeletConfiguration `protobuf:"bytes,6,opt,name=kubelet,proto3,oneof" json:"kubelet,omitempty"`
+ MaxPods *int32 `protobuf:"varint,7,opt,name=max_pods,json=maxPods,proto3,oneof" json:"max_pods,omitempty"`
+ ImageVersion *string `protobuf:"bytes,8,opt,name=image_version,json=imageVersion,proto3,oneof" json:"image_version,omitempty"`
}
-func (x *UpdateStoragePolicyTargetRequest) Reset() {
- *x = UpdateStoragePolicyTargetRequest{}
+func (x *AzureNodeClassSpec) Reset() {
+ *x = AzureNodeClassSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[302]
+ mi := &file_api_v1_recommendation_proto_msgTypes[320]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateStoragePolicyTargetRequest) String() string {
+func (x *AzureNodeClassSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateStoragePolicyTargetRequest) ProtoMessage() {}
+func (*AzureNodeClassSpec) ProtoMessage() {}
-func (x *UpdateStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[302]
+func (x *AzureNodeClassSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[320]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23896,43 +27238,101 @@ func (x *UpdateStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateStoragePolicyTargetRequest.ProtoReflect.Descriptor instead.
-func (*UpdateStoragePolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{302}
+// Deprecated: Use AzureNodeClassSpec.ProtoReflect.Descriptor instead.
+func (*AzureNodeClassSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{320}
}
-func (x *UpdateStoragePolicyTargetRequest) GetTarget() *StoragePolicyTarget {
+func (x *AzureNodeClassSpec) GetVnetSubnetId() string {
+ if x != nil && x.VnetSubnetId != nil {
+ return *x.VnetSubnetId
+ }
+ return ""
+}
+
+func (x *AzureNodeClassSpec) GetOsDiskSizeGb() int32 {
+ if x != nil && x.OsDiskSizeGb != nil {
+ return *x.OsDiskSizeGb
+ }
+ return 0
+}
+
+func (x *AzureNodeClassSpec) GetImageFamily() string {
+ if x != nil && x.ImageFamily != nil {
+ return *x.ImageFamily
+ }
+ return ""
+}
+
+func (x *AzureNodeClassSpec) GetFipsMode() string {
+ if x != nil && x.FipsMode != nil {
+ return *x.FipsMode
+ }
+ return ""
+}
+
+func (x *AzureNodeClassSpec) GetTags() map[string]string {
if x != nil {
- return x.Target
+ return x.Tags
}
return nil
}
-type UpdateStoragePolicyTargetResponse struct {
+func (x *AzureNodeClassSpec) GetKubelet() *AzureKubeletConfiguration {
+ if x != nil {
+ return x.Kubelet
+ }
+ return nil
+}
+
+func (x *AzureNodeClassSpec) GetMaxPods() int32 {
+ if x != nil && x.MaxPods != nil {
+ return *x.MaxPods
+ }
+ return 0
+}
+
+func (x *AzureNodeClassSpec) GetImageVersion() string {
+ if x != nil && x.ImageVersion != nil {
+ return *x.ImageVersion
+ }
+ return ""
+}
+
+type AzureKubeletConfiguration struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Target *StoragePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+ CpuManagerPolicy *string `protobuf:"bytes,1,opt,name=cpu_manager_policy,json=cpuManagerPolicy,proto3,oneof" json:"cpu_manager_policy,omitempty"` // none, static
+ CpuCfsQuota *bool `protobuf:"varint,2,opt,name=cpu_cfs_quota,json=cpuCfsQuota,proto3,oneof" json:"cpu_cfs_quota,omitempty"`
+ CpuCfsQuotaPeriod *string `protobuf:"bytes,3,opt,name=cpu_cfs_quota_period,json=cpuCfsQuotaPeriod,proto3,oneof" json:"cpu_cfs_quota_period,omitempty"` // e.g., "100ms"
+ ImageGcHighThresholdPercent *int32 `protobuf:"varint,4,opt,name=image_gc_high_threshold_percent,json=imageGcHighThresholdPercent,proto3,oneof" json:"image_gc_high_threshold_percent,omitempty"`
+ ImageGcLowThresholdPercent *int32 `protobuf:"varint,5,opt,name=image_gc_low_threshold_percent,json=imageGcLowThresholdPercent,proto3,oneof" json:"image_gc_low_threshold_percent,omitempty"`
+ TopologyManagerPolicy *string `protobuf:"bytes,6,opt,name=topology_manager_policy,json=topologyManagerPolicy,proto3,oneof" json:"topology_manager_policy,omitempty"` // restricted, best-effort, none, single-numa-node
+ AllowedUnsafeSysctls []string `protobuf:"bytes,7,rep,name=allowed_unsafe_sysctls,json=allowedUnsafeSysctls,proto3" json:"allowed_unsafe_sysctls,omitempty"`
+ ContainerLogMaxSize *string `protobuf:"bytes,8,opt,name=container_log_max_size,json=containerLogMaxSize,proto3,oneof" json:"container_log_max_size,omitempty"` // e.g., "50Mi"
+ ContainerLogMaxFiles *int32 `protobuf:"varint,9,opt,name=container_log_max_files,json=containerLogMaxFiles,proto3,oneof" json:"container_log_max_files,omitempty"`
+ PodPidsLimit *int64 `protobuf:"varint,10,opt,name=pod_pids_limit,json=podPidsLimit,proto3,oneof" json:"pod_pids_limit,omitempty"`
}
-func (x *UpdateStoragePolicyTargetResponse) Reset() {
- *x = UpdateStoragePolicyTargetResponse{}
+func (x *AzureKubeletConfiguration) Reset() {
+ *x = AzureKubeletConfiguration{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[303]
+ mi := &file_api_v1_recommendation_proto_msgTypes[321]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateStoragePolicyTargetResponse) String() string {
+func (x *AzureKubeletConfiguration) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateStoragePolicyTargetResponse) ProtoMessage() {}
+func (*AzureKubeletConfiguration) ProtoMessage() {}
-func (x *UpdateStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[303]
+func (x *AzureKubeletConfiguration) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[321]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23943,44 +27343,108 @@ func (x *UpdateStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateStoragePolicyTargetResponse.ProtoReflect.Descriptor instead.
-func (*UpdateStoragePolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{303}
+// Deprecated: Use AzureKubeletConfiguration.ProtoReflect.Descriptor instead.
+func (*AzureKubeletConfiguration) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{321}
}
-func (x *UpdateStoragePolicyTargetResponse) GetTarget() *StoragePolicyTarget {
+func (x *AzureKubeletConfiguration) GetCpuManagerPolicy() string {
+ if x != nil && x.CpuManagerPolicy != nil {
+ return *x.CpuManagerPolicy
+ }
+ return ""
+}
+
+func (x *AzureKubeletConfiguration) GetCpuCfsQuota() bool {
+ if x != nil && x.CpuCfsQuota != nil {
+ return *x.CpuCfsQuota
+ }
+ return false
+}
+
+func (x *AzureKubeletConfiguration) GetCpuCfsQuotaPeriod() string {
+ if x != nil && x.CpuCfsQuotaPeriod != nil {
+ return *x.CpuCfsQuotaPeriod
+ }
+ return ""
+}
+
+func (x *AzureKubeletConfiguration) GetImageGcHighThresholdPercent() int32 {
+ if x != nil && x.ImageGcHighThresholdPercent != nil {
+ return *x.ImageGcHighThresholdPercent
+ }
+ return 0
+}
+
+func (x *AzureKubeletConfiguration) GetImageGcLowThresholdPercent() int32 {
+ if x != nil && x.ImageGcLowThresholdPercent != nil {
+ return *x.ImageGcLowThresholdPercent
+ }
+ return 0
+}
+
+func (x *AzureKubeletConfiguration) GetTopologyManagerPolicy() string {
+ if x != nil && x.TopologyManagerPolicy != nil {
+ return *x.TopologyManagerPolicy
+ }
+ return ""
+}
+
+func (x *AzureKubeletConfiguration) GetAllowedUnsafeSysctls() []string {
if x != nil {
- return x.Target
+ return x.AllowedUnsafeSysctls
}
return nil
}
-type DeleteStoragePolicyTargetRequest struct {
+func (x *AzureKubeletConfiguration) GetContainerLogMaxSize() string {
+ if x != nil && x.ContainerLogMaxSize != nil {
+ return *x.ContainerLogMaxSize
+ }
+ return ""
+}
+
+func (x *AzureKubeletConfiguration) GetContainerLogMaxFiles() int32 {
+ if x != nil && x.ContainerLogMaxFiles != nil {
+ return *x.ContainerLogMaxFiles
+ }
+ return 0
+}
+
+func (x *AzureKubeletConfiguration) GetPodPidsLimit() int64 {
+ if x != nil && x.PodPidsLimit != nil {
+ return *x.PodPidsLimit
+ }
+ return 0
+}
+
+type OCIImageSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ CompartmentId string `protobuf:"bytes,3,opt,name=compartment_id,json=compartmentId,proto3" json:"compartment_id,omitempty"`
}
-func (x *DeleteStoragePolicyTargetRequest) Reset() {
- *x = DeleteStoragePolicyTargetRequest{}
+func (x *OCIImageSelectorTerm) Reset() {
+ *x = OCIImageSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[304]
+ mi := &file_api_v1_recommendation_proto_msgTypes[322]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteStoragePolicyTargetRequest) String() string {
+func (x *OCIImageSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteStoragePolicyTargetRequest) ProtoMessage() {}
+func (*OCIImageSelectorTerm) ProtoMessage() {}
-func (x *DeleteStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[304]
+func (x *OCIImageSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[322]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -23991,50 +27455,58 @@ func (x *DeleteStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteStoragePolicyTargetRequest.ProtoReflect.Descriptor instead.
-func (*DeleteStoragePolicyTargetRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{304}
+// Deprecated: Use OCIImageSelectorTerm.ProtoReflect.Descriptor instead.
+func (*OCIImageSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{322}
}
-func (x *DeleteStoragePolicyTargetRequest) GetTargetId() string {
+func (x *OCIImageSelectorTerm) GetId() string {
if x != nil {
- return x.TargetId
+ return x.Id
}
return ""
}
-func (x *DeleteStoragePolicyTargetRequest) GetTeamId() string {
+func (x *OCIImageSelectorTerm) GetName() string {
if x != nil {
- return x.TeamId
+ return x.Name
}
return ""
}
-type DeleteStoragePolicyTargetResponse struct {
+func (x *OCIImageSelectorTerm) GetCompartmentId() string {
+ if x != nil {
+ return x.CompartmentId
+ }
+ return ""
+}
+
+type OCISubnetSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
}
-func (x *DeleteStoragePolicyTargetResponse) Reset() {
- *x = DeleteStoragePolicyTargetResponse{}
+func (x *OCISubnetSelectorTerm) Reset() {
+ *x = OCISubnetSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[305]
+ mi := &file_api_v1_recommendation_proto_msgTypes[323]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteStoragePolicyTargetResponse) String() string {
+func (x *OCISubnetSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteStoragePolicyTargetResponse) ProtoMessage() {}
+func (*OCISubnetSelectorTerm) ProtoMessage() {}
-func (x *DeleteStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[305]
+func (x *OCISubnetSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[323]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24045,72 +27517,51 @@ func (x *DeleteStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteStoragePolicyTargetResponse.ProtoReflect.Descriptor instead.
-func (*DeleteStoragePolicyTargetResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{305}
+// Deprecated: Use OCISubnetSelectorTerm.ProtoReflect.Descriptor instead.
+func (*OCISubnetSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{323}
}
-func (x *DeleteStoragePolicyTargetResponse) GetSuccess() bool {
+func (x *OCISubnetSelectorTerm) GetId() string {
if x != nil {
- return x.Success
+ return x.Id
}
- return false
+ return ""
}
-// PvcStorageRecommendation represents a specific recommendation for a PVC
-type PvcStorageRecommendation struct {
+func (x *OCISubnetSelectorTerm) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type OCISecurityGroupSelectorTerm struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RecommendationId string `protobuf:"bytes,1,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
- PvcUid string `protobuf:"bytes,2,opt,name=pvc_uid,json=pvcUid,proto3" json:"pvc_uid,omitempty"`
- PvcName string `protobuf:"bytes,3,opt,name=pvc_name,json=pvcName,proto3" json:"pvc_name,omitempty"`
- Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
- ClusterId string `protobuf:"bytes,5,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- TeamId string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- CurrentCapacityBytes int64 `protobuf:"varint,10,opt,name=current_capacity_bytes,json=currentCapacityBytes,proto3" json:"current_capacity_bytes,omitempty"`
- RecommendedCapacityBytes int64 `protobuf:"varint,11,opt,name=recommended_capacity_bytes,json=recommendedCapacityBytes,proto3" json:"recommended_capacity_bytes,omitempty"`
- UsedBytesAtTime int64 `protobuf:"varint,12,opt,name=used_bytes_at_time,json=usedBytesAtTime,proto3" json:"used_bytes_at_time,omitempty"`
- UtilizationPct float64 `protobuf:"fixed64,13,opt,name=utilization_pct,json=utilizationPct,proto3" json:"utilization_pct,omitempty"`
- GrowthRateBytesPerDay float64 `protobuf:"fixed64,14,opt,name=growth_rate_bytes_per_day,json=growthRateBytesPerDay,proto3" json:"growth_rate_bytes_per_day,omitempty"`
- DaysToFull float64 `protobuf:"fixed64,15,opt,name=days_to_full,json=daysToFull,proto3" json:"days_to_full,omitempty"`
- ConfidenceScore float64 `protobuf:"fixed64,16,opt,name=confidence_score,json=confidenceScore,proto3" json:"confidence_score,omitempty"`
- PolicyId string `protobuf:"bytes,20,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- PolicyTargetId *string `protobuf:"bytes,21,opt,name=policy_target_id,json=policyTargetId,proto3,oneof" json:"policy_target_id,omitempty"`
- CostCurrentMonthlyUsd float64 `protobuf:"fixed64,25,opt,name=cost_current_monthly_usd,json=costCurrentMonthlyUsd,proto3" json:"cost_current_monthly_usd,omitempty"`
- CostRecommendedMonthlyUsd float64 `protobuf:"fixed64,26,opt,name=cost_recommended_monthly_usd,json=costRecommendedMonthlyUsd,proto3" json:"cost_recommended_monthly_usd,omitempty"`
- CostDeltaMonthlyUsd float64 `protobuf:"fixed64,27,opt,name=cost_delta_monthly_usd,json=costDeltaMonthlyUsd,proto3" json:"cost_delta_monthly_usd,omitempty"`
- Status RecommendationStatus `protobuf:"varint,30,opt,name=status,proto3,enum=api.v1.RecommendationStatus" json:"status,omitempty"`
- Reasoning *string `protobuf:"bytes,31,opt,name=reasoning,proto3,oneof" json:"reasoning,omitempty"`
- Error *string `protobuf:"bytes,32,opt,name=error,proto3,oneof" json:"error,omitempty"`
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,40,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- AppliedAt *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=applied_at,json=appliedAt,proto3,oneof" json:"applied_at,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,50,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- OperationType PvcOperationType `protobuf:"varint,60,opt,name=operation_type,json=operationType,proto3,enum=api.v1.PvcOperationType" json:"operation_type,omitempty"`
- WorkloadKind *string `protobuf:"bytes,61,opt,name=workload_kind,json=workloadKind,proto3,oneof" json:"workload_kind,omitempty"`
- WorkloadName *string `protobuf:"bytes,62,opt,name=workload_name,json=workloadName,proto3,oneof" json:"workload_name,omitempty"`
- WorkloadUid *string `protobuf:"bytes,63,opt,name=workload_uid,json=workloadUid,proto3,oneof" json:"workload_uid,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
}
-func (x *PvcStorageRecommendation) Reset() {
- *x = PvcStorageRecommendation{}
+func (x *OCISecurityGroupSelectorTerm) Reset() {
+ *x = OCISecurityGroupSelectorTerm{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[306]
+ mi := &file_api_v1_recommendation_proto_msgTypes[324]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PvcStorageRecommendation) String() string {
+func (x *OCISecurityGroupSelectorTerm) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PvcStorageRecommendation) ProtoMessage() {}
+func (*OCISecurityGroupSelectorTerm) ProtoMessage() {}
-func (x *PvcStorageRecommendation) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[306]
+func (x *OCISecurityGroupSelectorTerm) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[324]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24121,239 +27572,252 @@ func (x *PvcStorageRecommendation) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PvcStorageRecommendation.ProtoReflect.Descriptor instead.
-func (*PvcStorageRecommendation) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{306}
+// Deprecated: Use OCISecurityGroupSelectorTerm.ProtoReflect.Descriptor instead.
+func (*OCISecurityGroupSelectorTerm) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{324}
}
-func (x *PvcStorageRecommendation) GetRecommendationId() string {
+func (x *OCISecurityGroupSelectorTerm) GetId() string {
if x != nil {
- return x.RecommendationId
+ return x.Id
}
return ""
}
-func (x *PvcStorageRecommendation) GetPvcUid() string {
+func (x *OCISecurityGroupSelectorTerm) GetName() string {
if x != nil {
- return x.PvcUid
+ return x.Name
}
return ""
}
-func (x *PvcStorageRecommendation) GetPvcName() string {
- if x != nil {
- return x.PvcName
- }
- return ""
-}
+type OCIBootConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *PvcStorageRecommendation) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
+ BootVolumeSizeInGbs int64 `protobuf:"varint,1,opt,name=boot_volume_size_in_gbs,json=bootVolumeSizeInGbs,proto3" json:"boot_volume_size_in_gbs,omitempty"`
+ BootVolumeVpusPerGb int64 `protobuf:"varint,2,opt,name=boot_volume_vpus_per_gb,json=bootVolumeVpusPerGb,proto3" json:"boot_volume_vpus_per_gb,omitempty"`
}
-func (x *PvcStorageRecommendation) GetClusterId() string {
- if x != nil {
- return x.ClusterId
+func (x *OCIBootConfig) Reset() {
+ *x = OCIBootConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[325]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *PvcStorageRecommendation) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+func (x *OCIBootConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *PvcStorageRecommendation) GetCurrentCapacityBytes() int64 {
- if x != nil {
- return x.CurrentCapacityBytes
- }
- return 0
-}
+func (*OCIBootConfig) ProtoMessage() {}
-func (x *PvcStorageRecommendation) GetRecommendedCapacityBytes() int64 {
- if x != nil {
- return x.RecommendedCapacityBytes
+func (x *OCIBootConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[325]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *PvcStorageRecommendation) GetUsedBytesAtTime() int64 {
- if x != nil {
- return x.UsedBytesAtTime
- }
- return 0
+// Deprecated: Use OCIBootConfig.ProtoReflect.Descriptor instead.
+func (*OCIBootConfig) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{325}
}
-func (x *PvcStorageRecommendation) GetUtilizationPct() float64 {
+func (x *OCIBootConfig) GetBootVolumeSizeInGbs() int64 {
if x != nil {
- return x.UtilizationPct
+ return x.BootVolumeSizeInGbs
}
return 0
}
-func (x *PvcStorageRecommendation) GetGrowthRateBytesPerDay() float64 {
+func (x *OCIBootConfig) GetBootVolumeVpusPerGb() int64 {
if x != nil {
- return x.GrowthRateBytesPerDay
+ return x.BootVolumeVpusPerGb
}
return 0
}
-func (x *PvcStorageRecommendation) GetDaysToFull() float64 {
- if x != nil {
- return x.DaysToFull
- }
- return 0
-}
+type OCILaunchOptions struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *PvcStorageRecommendation) GetConfidenceScore() float64 {
- if x != nil {
- return x.ConfidenceScore
- }
- return 0
+ BootVolumeType *string `protobuf:"bytes,1,opt,name=boot_volume_type,json=bootVolumeType,proto3,oneof" json:"boot_volume_type,omitempty"`
+ Firmware *string `protobuf:"bytes,2,opt,name=firmware,proto3,oneof" json:"firmware,omitempty"`
+ NetworkType *string `protobuf:"bytes,3,opt,name=network_type,json=networkType,proto3,oneof" json:"network_type,omitempty"`
+ RemoteDataVolumeType *string `protobuf:"bytes,4,opt,name=remote_data_volume_type,json=remoteDataVolumeType,proto3,oneof" json:"remote_data_volume_type,omitempty"`
+ IsConsistentVolumeNamingEnabled *bool `protobuf:"varint,5,opt,name=is_consistent_volume_naming_enabled,json=isConsistentVolumeNamingEnabled,proto3,oneof" json:"is_consistent_volume_naming_enabled,omitempty"`
}
-func (x *PvcStorageRecommendation) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
+func (x *OCILaunchOptions) Reset() {
+ *x = OCILaunchOptions{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[326]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *PvcStorageRecommendation) GetPolicyTargetId() string {
- if x != nil && x.PolicyTargetId != nil {
- return *x.PolicyTargetId
- }
- return ""
+func (x *OCILaunchOptions) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *PvcStorageRecommendation) GetCostCurrentMonthlyUsd() float64 {
- if x != nil {
- return x.CostCurrentMonthlyUsd
+func (*OCILaunchOptions) ProtoMessage() {}
+
+func (x *OCILaunchOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[326]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-func (x *PvcStorageRecommendation) GetCostRecommendedMonthlyUsd() float64 {
- if x != nil {
- return x.CostRecommendedMonthlyUsd
- }
- return 0
+// Deprecated: Use OCILaunchOptions.ProtoReflect.Descriptor instead.
+func (*OCILaunchOptions) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{326}
}
-func (x *PvcStorageRecommendation) GetCostDeltaMonthlyUsd() float64 {
- if x != nil {
- return x.CostDeltaMonthlyUsd
+func (x *OCILaunchOptions) GetBootVolumeType() string {
+ if x != nil && x.BootVolumeType != nil {
+ return *x.BootVolumeType
}
- return 0
+ return ""
}
-func (x *PvcStorageRecommendation) GetStatus() RecommendationStatus {
- if x != nil {
- return x.Status
+func (x *OCILaunchOptions) GetFirmware() string {
+ if x != nil && x.Firmware != nil {
+ return *x.Firmware
}
- return RecommendationStatus_RECOMMENDATION_STATUS_UNSPECIFIED
+ return ""
}
-func (x *PvcStorageRecommendation) GetReasoning() string {
- if x != nil && x.Reasoning != nil {
- return *x.Reasoning
+func (x *OCILaunchOptions) GetNetworkType() string {
+ if x != nil && x.NetworkType != nil {
+ return *x.NetworkType
}
return ""
}
-func (x *PvcStorageRecommendation) GetError() string {
- if x != nil && x.Error != nil {
- return *x.Error
+func (x *OCILaunchOptions) GetRemoteDataVolumeType() string {
+ if x != nil && x.RemoteDataVolumeType != nil {
+ return *x.RemoteDataVolumeType
}
return ""
}
-func (x *PvcStorageRecommendation) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
+func (x *OCILaunchOptions) GetIsConsistentVolumeNamingEnabled() bool {
+ if x != nil && x.IsConsistentVolumeNamingEnabled != nil {
+ return *x.IsConsistentVolumeNamingEnabled
+ }
+ return false
}
-func (x *PvcStorageRecommendation) GetAppliedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.AppliedAt
- }
- return nil
+type OCIVolumeAttributes struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SizeInGbs int64 `protobuf:"varint,1,opt,name=size_in_gbs,json=sizeInGbs,proto3" json:"size_in_gbs,omitempty"`
+ VpusPerGb int64 `protobuf:"varint,2,opt,name=vpus_per_gb,json=vpusPerGb,proto3" json:"vpus_per_gb,omitempty"`
}
-func (x *PvcStorageRecommendation) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
+func (x *OCIVolumeAttributes) Reset() {
+ *x = OCIVolumeAttributes{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[327]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return nil
}
-func (x *PvcStorageRecommendation) GetUpdatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedAt
- }
- return nil
+func (x *OCIVolumeAttributes) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *PvcStorageRecommendation) GetOperationType() PvcOperationType {
- if x != nil {
- return x.OperationType
+func (*OCIVolumeAttributes) ProtoMessage() {}
+
+func (x *OCIVolumeAttributes) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[327]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return PvcOperationType_PVC_OPERATION_TYPE_UNSPECIFIED
+ return mi.MessageOf(x)
}
-func (x *PvcStorageRecommendation) GetWorkloadKind() string {
- if x != nil && x.WorkloadKind != nil {
- return *x.WorkloadKind
- }
- return ""
+// Deprecated: Use OCIVolumeAttributes.ProtoReflect.Descriptor instead.
+func (*OCIVolumeAttributes) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{327}
}
-func (x *PvcStorageRecommendation) GetWorkloadName() string {
- if x != nil && x.WorkloadName != nil {
- return *x.WorkloadName
+func (x *OCIVolumeAttributes) GetSizeInGbs() int64 {
+ if x != nil {
+ return x.SizeInGbs
}
- return ""
+ return 0
}
-func (x *PvcStorageRecommendation) GetWorkloadUid() string {
- if x != nil && x.WorkloadUid != nil {
- return *x.WorkloadUid
+func (x *OCIVolumeAttributes) GetVpusPerGb() int64 {
+ if x != nil {
+ return x.VpusPerGb
}
- return ""
+ return 0
}
-type GetPvcStorageRecommendationRequest struct {
+type OCINodeClassSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RecommendationId string `protobuf:"bytes,1,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
+ VcnId string `protobuf:"bytes,1,opt,name=vcn_id,json=vcnId,proto3" json:"vcn_id,omitempty"`
+ ImageSelector []*OCIImageSelectorTerm `protobuf:"bytes,2,rep,name=image_selector,json=imageSelector,proto3" json:"image_selector,omitempty"`
+ SubnetSelector []*OCISubnetSelectorTerm `protobuf:"bytes,3,rep,name=subnet_selector,json=subnetSelector,proto3" json:"subnet_selector,omitempty"`
+ SecurityGroupSelector []*OCISecurityGroupSelectorTerm `protobuf:"bytes,4,rep,name=security_group_selector,json=securityGroupSelector,proto3" json:"security_group_selector,omitempty"`
+ UserData *string `protobuf:"bytes,5,opt,name=user_data,json=userData,proto3,oneof" json:"user_data,omitempty"`
+ PreInstallScript *string `protobuf:"bytes,6,opt,name=pre_install_script,json=preInstallScript,proto3,oneof" json:"pre_install_script,omitempty"`
+ MetaData map[string]string `protobuf:"bytes,7,rep,name=meta_data,json=metaData,proto3" json:"meta_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ ImageFamily string `protobuf:"bytes,8,opt,name=image_family,json=imageFamily,proto3" json:"image_family,omitempty"`
+ Tags map[string]string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ FreeFormTags map[string]string `protobuf:"bytes,10,rep,name=free_form_tags,json=freeFormTags,proto3" json:"free_form_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ BootConfig *OCIBootConfig `protobuf:"bytes,11,opt,name=boot_config,json=bootConfig,proto3" json:"boot_config,omitempty"`
+ LaunchOptions *OCILaunchOptions `protobuf:"bytes,12,opt,name=launch_options,json=launchOptions,proto3" json:"launch_options,omitempty"`
+ BlockDevices []*OCIVolumeAttributes `protobuf:"bytes,13,rep,name=block_devices,json=blockDevices,proto3" json:"block_devices,omitempty"`
+ AgentList []string `protobuf:"bytes,14,rep,name=agent_list,json=agentList,proto3" json:"agent_list,omitempty"`
}
-func (x *GetPvcStorageRecommendationRequest) Reset() {
- *x = GetPvcStorageRecommendationRequest{}
+func (x *OCINodeClassSpec) Reset() {
+ *x = OCINodeClassSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[307]
+ mi := &file_api_v1_recommendation_proto_msgTypes[328]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetPvcStorageRecommendationRequest) String() string {
+func (x *OCINodeClassSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetPvcStorageRecommendationRequest) ProtoMessage() {}
+func (*OCINodeClassSpec) ProtoMessage() {}
-func (x *GetPvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[307]
+func (x *OCINodeClassSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[328]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24364,92 +27828,136 @@ func (x *GetPvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetPvcStorageRecommendationRequest.ProtoReflect.Descriptor instead.
-func (*GetPvcStorageRecommendationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{307}
+// Deprecated: Use OCINodeClassSpec.ProtoReflect.Descriptor instead.
+func (*OCINodeClassSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{328}
}
-func (x *GetPvcStorageRecommendationRequest) GetRecommendationId() string {
+func (x *OCINodeClassSpec) GetVcnId() string {
if x != nil {
- return x.RecommendationId
+ return x.VcnId
}
return ""
}
-type GetPvcStorageRecommendationResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *OCINodeClassSpec) GetImageSelector() []*OCIImageSelectorTerm {
+ if x != nil {
+ return x.ImageSelector
+ }
+ return nil
+}
- Recommendation *PvcStorageRecommendation `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
+func (x *OCINodeClassSpec) GetSubnetSelector() []*OCISubnetSelectorTerm {
+ if x != nil {
+ return x.SubnetSelector
+ }
+ return nil
}
-func (x *GetPvcStorageRecommendationResponse) Reset() {
- *x = GetPvcStorageRecommendationResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[308]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *OCINodeClassSpec) GetSecurityGroupSelector() []*OCISecurityGroupSelectorTerm {
+ if x != nil {
+ return x.SecurityGroupSelector
}
+ return nil
}
-func (x *GetPvcStorageRecommendationResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *OCINodeClassSpec) GetUserData() string {
+ if x != nil && x.UserData != nil {
+ return *x.UserData
+ }
+ return ""
}
-func (*GetPvcStorageRecommendationResponse) ProtoMessage() {}
+func (x *OCINodeClassSpec) GetPreInstallScript() string {
+ if x != nil && x.PreInstallScript != nil {
+ return *x.PreInstallScript
+ }
+ return ""
+}
-func (x *GetPvcStorageRecommendationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[308]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *OCINodeClassSpec) GetMetaData() map[string]string {
+ if x != nil {
+ return x.MetaData
}
- return mi.MessageOf(x)
+ return nil
}
-// Deprecated: Use GetPvcStorageRecommendationResponse.ProtoReflect.Descriptor instead.
-func (*GetPvcStorageRecommendationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{308}
+func (x *OCINodeClassSpec) GetImageFamily() string {
+ if x != nil {
+ return x.ImageFamily
+ }
+ return ""
}
-func (x *GetPvcStorageRecommendationResponse) GetRecommendation() *PvcStorageRecommendation {
+func (x *OCINodeClassSpec) GetTags() map[string]string {
if x != nil {
- return x.Recommendation
+ return x.Tags
}
return nil
}
-type ListPvcStorageRecommendationsRequest struct {
+func (x *OCINodeClassSpec) GetFreeFormTags() map[string]string {
+ if x != nil {
+ return x.FreeFormTags
+ }
+ return nil
+}
+
+func (x *OCINodeClassSpec) GetBootConfig() *OCIBootConfig {
+ if x != nil {
+ return x.BootConfig
+ }
+ return nil
+}
+
+func (x *OCINodeClassSpec) GetLaunchOptions() *OCILaunchOptions {
+ if x != nil {
+ return x.LaunchOptions
+ }
+ return nil
+}
+
+func (x *OCINodeClassSpec) GetBlockDevices() []*OCIVolumeAttributes {
+ if x != nil {
+ return x.BlockDevices
+ }
+ return nil
+}
+
+func (x *OCINodeClassSpec) GetAgentList() []string {
+ if x != nil {
+ return x.AgentList
+ }
+ return nil
+}
+
+type KarpenterSettingsRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
- Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"`
+ // contents is the full KarpenterSettings YAML (devzero.karpenter.sh/v1alpha1, name "default").
+ Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"`
+ RecommendationId string `protobuf:"bytes,2,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
}
-func (x *ListPvcStorageRecommendationsRequest) Reset() {
- *x = ListPvcStorageRecommendationsRequest{}
+func (x *KarpenterSettingsRecommendation) Reset() {
+ *x = KarpenterSettingsRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[309]
+ mi := &file_api_v1_recommendation_proto_msgTypes[329]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListPvcStorageRecommendationsRequest) String() string {
+func (x *KarpenterSettingsRecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListPvcStorageRecommendationsRequest) ProtoMessage() {}
+func (*KarpenterSettingsRecommendation) ProtoMessage() {}
-func (x *ListPvcStorageRecommendationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[309]
+func (x *KarpenterSettingsRecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[329]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24460,58 +27968,51 @@ func (x *ListPvcStorageRecommendationsRequest) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use ListPvcStorageRecommendationsRequest.ProtoReflect.Descriptor instead.
-func (*ListPvcStorageRecommendationsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{309}
+// Deprecated: Use KarpenterSettingsRecommendation.ProtoReflect.Descriptor instead.
+func (*KarpenterSettingsRecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{329}
}
-func (x *ListPvcStorageRecommendationsRequest) GetTeamId() string {
+func (x *KarpenterSettingsRecommendation) GetContents() []byte {
if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *ListPvcStorageRecommendationsRequest) GetClusterId() string {
- if x != nil && x.ClusterId != nil {
- return *x.ClusterId
+ return x.Contents
}
- return ""
+ return nil
}
-func (x *ListPvcStorageRecommendationsRequest) GetPagination() *Pagination {
+func (x *KarpenterSettingsRecommendation) GetRecommendationId() string {
if x != nil {
- return x.Pagination
+ return x.RecommendationId
}
- return nil
+ return ""
}
-type ListPvcStorageRecommendationsResponse struct {
+type RawKarpenterSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Recommendations []*PvcStorageRecommendation `protobuf:"bytes,1,rep,name=recommendations,proto3" json:"recommendations,omitempty"`
- Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"`
+ NodepoolYaml string `protobuf:"bytes,1,opt,name=nodepool_yaml,json=nodepoolYaml,proto3" json:"nodepool_yaml,omitempty"`
+ NodeclassYaml string `protobuf:"bytes,2,opt,name=nodeclass_yaml,json=nodeclassYaml,proto3" json:"nodeclass_yaml,omitempty"`
}
-func (x *ListPvcStorageRecommendationsResponse) Reset() {
- *x = ListPvcStorageRecommendationsResponse{}
+func (x *RawKarpenterSpec) Reset() {
+ *x = RawKarpenterSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[310]
+ mi := &file_api_v1_recommendation_proto_msgTypes[330]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListPvcStorageRecommendationsResponse) String() string {
+func (x *RawKarpenterSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListPvcStorageRecommendationsResponse) ProtoMessage() {}
+func (*RawKarpenterSpec) ProtoMessage() {}
-func (x *ListPvcStorageRecommendationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[310]
+func (x *RawKarpenterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[330]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24522,53 +28023,58 @@ func (x *ListPvcStorageRecommendationsResponse) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use ListPvcStorageRecommendationsResponse.ProtoReflect.Descriptor instead.
-func (*ListPvcStorageRecommendationsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{310}
+// Deprecated: Use RawKarpenterSpec.ProtoReflect.Descriptor instead.
+func (*RawKarpenterSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{330}
}
-func (x *ListPvcStorageRecommendationsResponse) GetRecommendations() []*PvcStorageRecommendation {
+func (x *RawKarpenterSpec) GetNodepoolYaml() string {
if x != nil {
- return x.Recommendations
+ return x.NodepoolYaml
}
- return nil
+ return ""
}
-func (x *ListPvcStorageRecommendationsResponse) GetPagination() *Pagination {
+func (x *RawKarpenterSpec) GetNodeclassYaml() string {
if x != nil {
- return x.Pagination
+ return x.NodeclassYaml
}
- return nil
+ return ""
}
-type GeneratePvcStorageRecommendationRequest struct {
+// SnapshotRecommendation delivers one rendered resilience-family config
+// (spec §7): the multi-doc criu.org/v1 apply bundle compiled by the render
+// worker — anchor ConfigMap first, then CheckpointSchedule /
+// CheckpointRestoreOperator CRs sorted by name. tunr applies it verbatim
+// under the dz-snapshot-crds prune stream; the config ID is echoed back in
+// the apply ACK.
+type SnapshotRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- PvcUid string `protobuf:"bytes,3,opt,name=pvc_uid,json=pvcUid,proto3" json:"pvc_uid,omitempty"`
- PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ CompiledResourcesYaml []byte `protobuf:"bytes,1,opt,name=compiled_resources_yaml,json=compiledResourcesYaml,proto3" json:"compiled_resources_yaml,omitempty"`
+ SnapshotCfgId string `protobuf:"bytes,2,opt,name=snapshot_cfg_id,json=snapshotCfgId,proto3" json:"snapshot_cfg_id,omitempty"`
+ ContentHash string `protobuf:"bytes,3,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
}
-func (x *GeneratePvcStorageRecommendationRequest) Reset() {
- *x = GeneratePvcStorageRecommendationRequest{}
+func (x *SnapshotRecommendation) Reset() {
+ *x = SnapshotRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[311]
+ mi := &file_api_v1_recommendation_proto_msgTypes[331]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GeneratePvcStorageRecommendationRequest) String() string {
+func (x *SnapshotRecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GeneratePvcStorageRecommendationRequest) ProtoMessage() {}
+func (*SnapshotRecommendation) ProtoMessage() {}
-func (x *GeneratePvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[311]
+func (x *SnapshotRecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[331]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24579,67 +28085,63 @@ func (x *GeneratePvcStorageRecommendationRequest) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use GeneratePvcStorageRecommendationRequest.ProtoReflect.Descriptor instead.
-func (*GeneratePvcStorageRecommendationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{311}
-}
-
-func (x *GeneratePvcStorageRecommendationRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use SnapshotRecommendation.ProtoReflect.Descriptor instead.
+func (*SnapshotRecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{331}
}
-func (x *GeneratePvcStorageRecommendationRequest) GetClusterId() string {
+func (x *SnapshotRecommendation) GetCompiledResourcesYaml() []byte {
if x != nil {
- return x.ClusterId
+ return x.CompiledResourcesYaml
}
- return ""
+ return nil
}
-func (x *GeneratePvcStorageRecommendationRequest) GetPvcUid() string {
+func (x *SnapshotRecommendation) GetSnapshotCfgId() string {
if x != nil {
- return x.PvcUid
+ return x.SnapshotCfgId
}
return ""
}
-func (x *GeneratePvcStorageRecommendationRequest) GetPolicyId() string {
+func (x *SnapshotRecommendation) GetContentHash() string {
if x != nil {
- return x.PolicyId
+ return x.ContentHash
}
return ""
}
-type GeneratePvcStorageRecommendationResponse struct {
+// ForensicSnapshotRecommendation is the forensic-family twin
+// (ForensicSnapshotChain CRs, dz-forensic-crds prune stream). Kept separate
+// from SnapshotRecommendation so neither family's apply can ever prune the
+// other's resources (spec §7).
+type ForensicSnapshotRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Recommendation *PvcStorageRecommendation `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
- // When no recommendation is generated (e.g., low confidence, no resize needed),
- // this field explains why
- SkipReason *string `protobuf:"bytes,2,opt,name=skip_reason,json=skipReason,proto3,oneof" json:"skip_reason,omitempty"`
+ CompiledResourcesYaml []byte `protobuf:"bytes,1,opt,name=compiled_resources_yaml,json=compiledResourcesYaml,proto3" json:"compiled_resources_yaml,omitempty"`
+ ForensicCfgId string `protobuf:"bytes,2,opt,name=forensic_cfg_id,json=forensicCfgId,proto3" json:"forensic_cfg_id,omitempty"`
+ ContentHash string `protobuf:"bytes,3,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
}
-func (x *GeneratePvcStorageRecommendationResponse) Reset() {
- *x = GeneratePvcStorageRecommendationResponse{}
+func (x *ForensicSnapshotRecommendation) Reset() {
+ *x = ForensicSnapshotRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[312]
+ mi := &file_api_v1_recommendation_proto_msgTypes[332]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GeneratePvcStorageRecommendationResponse) String() string {
+func (x *ForensicSnapshotRecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GeneratePvcStorageRecommendationResponse) ProtoMessage() {}
+func (*ForensicSnapshotRecommendation) ProtoMessage() {}
-func (x *GeneratePvcStorageRecommendationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[312]
+func (x *ForensicSnapshotRecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[332]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24650,53 +28152,59 @@ func (x *GeneratePvcStorageRecommendationResponse) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use GeneratePvcStorageRecommendationResponse.ProtoReflect.Descriptor instead.
-func (*GeneratePvcStorageRecommendationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{312}
+// Deprecated: Use ForensicSnapshotRecommendation.ProtoReflect.Descriptor instead.
+func (*ForensicSnapshotRecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{332}
}
-func (x *GeneratePvcStorageRecommendationResponse) GetRecommendation() *PvcStorageRecommendation {
+func (x *ForensicSnapshotRecommendation) GetCompiledResourcesYaml() []byte {
if x != nil {
- return x.Recommendation
+ return x.CompiledResourcesYaml
}
return nil
}
-func (x *GeneratePvcStorageRecommendationResponse) GetSkipReason() string {
- if x != nil && x.SkipReason != nil {
- return *x.SkipReason
+func (x *ForensicSnapshotRecommendation) GetForensicCfgId() string {
+ if x != nil {
+ return x.ForensicCfgId
}
return ""
}
-type PreviewPvcStorageRecommendationRequest struct {
+func (x *ForensicSnapshotRecommendation) GetContentHash() string {
+ if x != nil {
+ return x.ContentHash
+ }
+ return ""
+}
+
+// SnapshotCRStatusReport carries the current statuses of every dakr-managed
+// criu.org CR on the cluster (tunr-side reporter, spec §8).
+type SnapshotCRStatusReport struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- PvcUid string `protobuf:"bytes,3,opt,name=pvc_uid,json=pvcUid,proto3" json:"pvc_uid,omitempty"`
- PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Resources []*SnapshotCRStatus `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"`
}
-func (x *PreviewPvcStorageRecommendationRequest) Reset() {
- *x = PreviewPvcStorageRecommendationRequest{}
+func (x *SnapshotCRStatusReport) Reset() {
+ *x = SnapshotCRStatusReport{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[313]
+ mi := &file_api_v1_recommendation_proto_msgTypes[333]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PreviewPvcStorageRecommendationRequest) String() string {
+func (x *SnapshotCRStatusReport) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PreviewPvcStorageRecommendationRequest) ProtoMessage() {}
+func (*SnapshotCRStatusReport) ProtoMessage() {}
-func (x *PreviewPvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[313]
+func (x *SnapshotCRStatusReport) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[333]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24707,65 +28215,51 @@ func (x *PreviewPvcStorageRecommendationRequest) ProtoReflect() protoreflect.Mes
return mi.MessageOf(x)
}
-// Deprecated: Use PreviewPvcStorageRecommendationRequest.ProtoReflect.Descriptor instead.
-func (*PreviewPvcStorageRecommendationRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{313}
-}
-
-func (x *PreviewPvcStorageRecommendationRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *PreviewPvcStorageRecommendationRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *PreviewPvcStorageRecommendationRequest) GetPvcUid() string {
- if x != nil {
- return x.PvcUid
- }
- return ""
+// Deprecated: Use SnapshotCRStatusReport.ProtoReflect.Descriptor instead.
+func (*SnapshotCRStatusReport) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{333}
}
-func (x *PreviewPvcStorageRecommendationRequest) GetPolicyId() string {
+func (x *SnapshotCRStatusReport) GetResources() []*SnapshotCRStatus {
if x != nil {
- return x.PolicyId
+ return x.Resources
}
- return ""
+ return nil
}
-type PreviewPvcStorageRecommendationResponse struct {
+// SnapshotCRStatus is one CR's identity + raw status subtree. Annotations
+// carry the dakr.devzero.io policy/target ID keys the compiler stamped;
+// status_json is the CR's .status marshaled verbatim (dakr parses).
+type SnapshotCRStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Recommendation *PvcStorageRecommendation `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
- SkipReason *string `protobuf:"bytes,2,opt,name=skip_reason,json=skipReason,proto3,oneof" json:"skip_reason,omitempty"`
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
+ Annotations map[string]string `protobuf:"bytes,5,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ StatusJson []byte `protobuf:"bytes,6,opt,name=status_json,json=statusJson,proto3" json:"status_json,omitempty"`
}
-func (x *PreviewPvcStorageRecommendationResponse) Reset() {
- *x = PreviewPvcStorageRecommendationResponse{}
+func (x *SnapshotCRStatus) Reset() {
+ *x = SnapshotCRStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[314]
+ mi := &file_api_v1_recommendation_proto_msgTypes[334]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PreviewPvcStorageRecommendationResponse) String() string {
+func (x *SnapshotCRStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PreviewPvcStorageRecommendationResponse) ProtoMessage() {}
+func (*SnapshotCRStatus) ProtoMessage() {}
-func (x *PreviewPvcStorageRecommendationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[314]
+func (x *SnapshotCRStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[334]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24776,64 +28270,99 @@ func (x *PreviewPvcStorageRecommendationResponse) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use PreviewPvcStorageRecommendationResponse.ProtoReflect.Descriptor instead.
-func (*PreviewPvcStorageRecommendationResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{314}
+// Deprecated: Use SnapshotCRStatus.ProtoReflect.Descriptor instead.
+func (*SnapshotCRStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{334}
}
-func (x *PreviewPvcStorageRecommendationResponse) GetRecommendation() *PvcStorageRecommendation {
+func (x *SnapshotCRStatus) GetKind() string {
if x != nil {
- return x.Recommendation
+ return x.Kind
}
- return nil
+ return ""
}
-func (x *PreviewPvcStorageRecommendationResponse) GetSkipReason() string {
- if x != nil && x.SkipReason != nil {
- return *x.SkipReason
+func (x *SnapshotCRStatus) GetName() string {
+ if x != nil {
+ return x.Name
}
return ""
}
-type WorkloadRuleOOMEvent struct {
+func (x *SnapshotCRStatus) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SnapshotCRStatus) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *SnapshotCRStatus) GetAnnotations() map[string]string {
+ if x != nil {
+ return x.Annotations
+ }
+ return nil
+}
+
+func (x *SnapshotCRStatus) GetStatusJson() []byte {
+ if x != nil {
+ return x.StatusJson
+ }
+ return nil
+}
+
+// SnapshotCRRuntimeStatus is one CR's ingested runtime state, projected for
+// reads. One shape serves both families; family-irrelevant fields are unset.
+type SnapshotCRRuntimeStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
- ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
- WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
- ContainerName string `protobuf:"bytes,6,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- RuleGeneration int64 `protobuf:"varint,8,opt,name=rule_generation,json=ruleGeneration,proto3" json:"rule_generation,omitempty"`
- MemoryRequestAt int64 `protobuf:"varint,9,opt,name=memory_request_at,json=memoryRequestAt,proto3" json:"memory_request_at,omitempty"`
- MemoryLimitAt int64 `protobuf:"varint,10,opt,name=memory_limit_at,json=memoryLimitAt,proto3" json:"memory_limit_at,omitempty"`
- MemoryUsageAt int64 `protobuf:"varint,11,opt,name=memory_usage_at,json=memoryUsageAt,proto3" json:"memory_usage_at,omitempty"`
- EmergencyReaction bool `protobuf:"varint,12,opt,name=emergency_reaction,json=emergencyReaction,proto3" json:"emergency_reaction,omitempty"`
- NewMemoryAfter *int64 `protobuf:"varint,13,opt,name=new_memory_after,json=newMemoryAfter,proto3,oneof" json:"new_memory_after,omitempty"`
- RestartCount *int32 `protobuf:"varint,14,opt,name=restart_count,json=restartCount,proto3,oneof" json:"restart_count,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
-}
-
-func (x *WorkloadRuleOOMEvent) Reset() {
- *x = WorkloadRuleOOMEvent{}
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ // ForensicSnapshotChain only: Pending/Running/Completed/Failed.
+ Phase string `protobuf:"bytes,11,opt,name=phase,proto3" json:"phase,omitempty"`
+ SnapshotCount int32 `protobuf:"varint,12,opt,name=snapshot_count,json=snapshotCount,proto3" json:"snapshot_count,omitempty"`
+ AttemptCount int32 `protobuf:"varint,13,opt,name=attempt_count,json=attemptCount,proto3" json:"attempt_count,omitempty"`
+ FailureCount int32 `protobuf:"varint,14,opt,name=failure_count,json=failureCount,proto3" json:"failure_count,omitempty"`
+ // CheckpointSchedule only. INTERVAL-TRIGGER-ONLY counter: checkpoints
+ // fired by annotation/threshold/event triggers never bump it — label
+ // this "interval activity", or trigger-only schedules read as dead.
+ CheckpointsCreated int32 `protobuf:"varint,21,opt,name=checkpoints_created,json=checkpointsCreated,proto3" json:"checkpoints_created,omitempty"`
+ ErrorMessage string `protobuf:"bytes,31,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
+ // lastCheckpointTime (schedules) / lastSnapshotTime (chains).
+ LastActivityTime *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=last_activity_time,json=lastActivityTime,proto3" json:"last_activity_time,omitempty"`
+ StartTime *timestamppb.Timestamp `protobuf:"bytes,42,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+ CompletionTime *timestamppb.Timestamp `protobuf:"bytes,43,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"`
+ // When dakr last ingested this CR's status.
+ ObservedAt *timestamppb.Timestamp `protobuf:"bytes,44,opt,name=observed_at,json=observedAt,proto3" json:"observed_at,omitempty"`
+}
+
+func (x *SnapshotCRRuntimeStatus) Reset() {
+ *x = SnapshotCRRuntimeStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[315]
+ mi := &file_api_v1_recommendation_proto_msgTypes[335]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadRuleOOMEvent) String() string {
+func (x *SnapshotCRRuntimeStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadRuleOOMEvent) ProtoMessage() {}
+func (*SnapshotCRRuntimeStatus) ProtoMessage() {}
-func (x *WorkloadRuleOOMEvent) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[315]
+func (x *SnapshotCRRuntimeStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[335]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24844,144 +28373,136 @@ func (x *WorkloadRuleOOMEvent) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadRuleOOMEvent.ProtoReflect.Descriptor instead.
-func (*WorkloadRuleOOMEvent) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{315}
+// Deprecated: Use SnapshotCRRuntimeStatus.ProtoReflect.Descriptor instead.
+func (*SnapshotCRRuntimeStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{335}
}
-func (x *WorkloadRuleOOMEvent) GetId() string {
+func (x *SnapshotCRRuntimeStatus) GetClusterId() string {
if x != nil {
- return x.Id
+ return x.ClusterId
}
return ""
}
-func (x *WorkloadRuleOOMEvent) GetRuleId() string {
+func (x *SnapshotCRRuntimeStatus) GetKind() string {
if x != nil {
- return x.RuleId
+ return x.Kind
}
return ""
}
-func (x *WorkloadRuleOOMEvent) GetClusterId() string {
+func (x *SnapshotCRRuntimeStatus) GetName() string {
if x != nil {
- return x.ClusterId
+ return x.Name
}
return ""
}
-func (x *WorkloadRuleOOMEvent) GetNamespace() string {
+func (x *SnapshotCRRuntimeStatus) GetNamespace() string {
if x != nil {
return x.Namespace
}
return ""
}
-func (x *WorkloadRuleOOMEvent) GetWorkloadName() string {
+func (x *SnapshotCRRuntimeStatus) GetPhase() string {
if x != nil {
- return x.WorkloadName
+ return x.Phase
}
return ""
}
-func (x *WorkloadRuleOOMEvent) GetContainerName() string {
+func (x *SnapshotCRRuntimeStatus) GetSnapshotCount() int32 {
if x != nil {
- return x.ContainerName
+ return x.SnapshotCount
}
- return ""
+ return 0
}
-func (x *WorkloadRuleOOMEvent) GetTimestamp() *timestamppb.Timestamp {
+func (x *SnapshotCRRuntimeStatus) GetAttemptCount() int32 {
if x != nil {
- return x.Timestamp
+ return x.AttemptCount
}
- return nil
+ return 0
}
-func (x *WorkloadRuleOOMEvent) GetRuleGeneration() int64 {
+func (x *SnapshotCRRuntimeStatus) GetFailureCount() int32 {
if x != nil {
- return x.RuleGeneration
+ return x.FailureCount
}
return 0
}
-func (x *WorkloadRuleOOMEvent) GetMemoryRequestAt() int64 {
+func (x *SnapshotCRRuntimeStatus) GetCheckpointsCreated() int32 {
if x != nil {
- return x.MemoryRequestAt
+ return x.CheckpointsCreated
}
return 0
}
-func (x *WorkloadRuleOOMEvent) GetMemoryLimitAt() int64 {
+func (x *SnapshotCRRuntimeStatus) GetErrorMessage() string {
if x != nil {
- return x.MemoryLimitAt
+ return x.ErrorMessage
}
- return 0
+ return ""
}
-func (x *WorkloadRuleOOMEvent) GetMemoryUsageAt() int64 {
+func (x *SnapshotCRRuntimeStatus) GetLastActivityTime() *timestamppb.Timestamp {
if x != nil {
- return x.MemoryUsageAt
+ return x.LastActivityTime
}
- return 0
+ return nil
}
-func (x *WorkloadRuleOOMEvent) GetEmergencyReaction() bool {
+func (x *SnapshotCRRuntimeStatus) GetStartTime() *timestamppb.Timestamp {
if x != nil {
- return x.EmergencyReaction
- }
- return false
-}
-
-func (x *WorkloadRuleOOMEvent) GetNewMemoryAfter() int64 {
- if x != nil && x.NewMemoryAfter != nil {
- return *x.NewMemoryAfter
+ return x.StartTime
}
- return 0
+ return nil
}
-func (x *WorkloadRuleOOMEvent) GetRestartCount() int32 {
- if x != nil && x.RestartCount != nil {
- return *x.RestartCount
+func (x *SnapshotCRRuntimeStatus) GetCompletionTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CompletionTime
}
- return 0
+ return nil
}
-func (x *WorkloadRuleOOMEvent) GetCreatedAt() *timestamppb.Timestamp {
+func (x *SnapshotCRRuntimeStatus) GetObservedAt() *timestamppb.Timestamp {
if x != nil {
- return x.CreatedAt
+ return x.ObservedAt
}
return nil
}
-type ListWorkloadRuleOOMEventsRequest struct {
+// SnapshotPolicyTargetStatus aggregates a target's ingested CR statuses
+// (capped; ordered namespace, name).
+type SnapshotPolicyTargetStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
- Generation *int64 `protobuf:"varint,2,opt,name=generation,proto3,oneof" json:"generation,omitempty"`
- Limit *int32 `protobuf:"varint,3,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
- Offset *int32 `protobuf:"varint,4,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+ Resources []*SnapshotCRRuntimeStatus `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"`
}
-func (x *ListWorkloadRuleOOMEventsRequest) Reset() {
- *x = ListWorkloadRuleOOMEventsRequest{}
+func (x *SnapshotPolicyTargetStatus) Reset() {
+ *x = SnapshotPolicyTargetStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[316]
+ mi := &file_api_v1_recommendation_proto_msgTypes[336]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadRuleOOMEventsRequest) String() string {
+func (x *SnapshotPolicyTargetStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadRuleOOMEventsRequest) ProtoMessage() {}
+func (*SnapshotPolicyTargetStatus) ProtoMessage() {}
-func (x *ListWorkloadRuleOOMEventsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[316]
+func (x *SnapshotPolicyTargetStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[336]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -24992,65 +28513,51 @@ func (x *ListWorkloadRuleOOMEventsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadRuleOOMEventsRequest.ProtoReflect.Descriptor instead.
-func (*ListWorkloadRuleOOMEventsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{316}
+// Deprecated: Use SnapshotPolicyTargetStatus.ProtoReflect.Descriptor instead.
+func (*SnapshotPolicyTargetStatus) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{336}
}
-func (x *ListWorkloadRuleOOMEventsRequest) GetRuleId() string {
+func (x *SnapshotPolicyTargetStatus) GetResources() []*SnapshotCRRuntimeStatus {
if x != nil {
- return x.RuleId
- }
- return ""
-}
-
-func (x *ListWorkloadRuleOOMEventsRequest) GetGeneration() int64 {
- if x != nil && x.Generation != nil {
- return *x.Generation
- }
- return 0
-}
-
-func (x *ListWorkloadRuleOOMEventsRequest) GetLimit() int32 {
- if x != nil && x.Limit != nil {
- return *x.Limit
- }
- return 0
-}
-
-func (x *ListWorkloadRuleOOMEventsRequest) GetOffset() int32 {
- if x != nil && x.Offset != nil {
- return *x.Offset
+ return x.Resources
}
- return 0
+ return nil
}
-type ListWorkloadRuleOOMEventsResponse struct {
+// SnapshotPrereqs surfaces cluster prerequisites derivable from already-
+// ingested state (spec §7). CRIU-on-nodes and container-runtime checkpoint
+// support need node-level probing no collector performs yet — deferred; a
+// cluster can pass these checks and still fail applies for those reasons
+// (surfaced through apply events).
+type SnapshotPrereqs struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Events []*WorkloadRuleOOMEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
- Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+ KubernetesVersion string `protobuf:"bytes,1,opt,name=kubernetes_version,json=kubernetesVersion,proto3" json:"kubernetes_version,omitempty"`
+ // Kubernetes >= 1.30 (ContainerCheckpoint enabled by default).
+ KubernetesVersionSupported bool `protobuf:"varint,2,opt,name=kubernetes_version_supported,json=kubernetesVersionSupported,proto3" json:"kubernetes_version_supported,omitempty"`
+ MetricsServerPresent bool `protobuf:"varint,3,opt,name=metrics_server_present,json=metricsServerPresent,proto3" json:"metrics_server_present,omitempty"`
}
-func (x *ListWorkloadRuleOOMEventsResponse) Reset() {
- *x = ListWorkloadRuleOOMEventsResponse{}
+func (x *SnapshotPrereqs) Reset() {
+ *x = SnapshotPrereqs{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[317]
+ mi := &file_api_v1_recommendation_proto_msgTypes[337]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadRuleOOMEventsResponse) String() string {
+func (x *SnapshotPrereqs) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadRuleOOMEventsResponse) ProtoMessage() {}
+func (*SnapshotPrereqs) ProtoMessage() {}
-func (x *ListWorkloadRuleOOMEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[317]
+func (x *SnapshotPrereqs) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[337]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25061,54 +28568,61 @@ func (x *ListWorkloadRuleOOMEventsResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadRuleOOMEventsResponse.ProtoReflect.Descriptor instead.
-func (*ListWorkloadRuleOOMEventsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{317}
+// Deprecated: Use SnapshotPrereqs.ProtoReflect.Descriptor instead.
+func (*SnapshotPrereqs) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{337}
}
-func (x *ListWorkloadRuleOOMEventsResponse) GetEvents() []*WorkloadRuleOOMEvent {
+func (x *SnapshotPrereqs) GetKubernetesVersion() string {
if x != nil {
- return x.Events
+ return x.KubernetesVersion
}
- return nil
+ return ""
}
-func (x *ListWorkloadRuleOOMEventsResponse) GetTotal() int64 {
+func (x *SnapshotPrereqs) GetKubernetesVersionSupported() bool {
if x != nil {
- return x.Total
+ return x.KubernetesVersionSupported
}
- return 0
+ return false
}
-type ListWorkloadOOMEventsRequest struct {
+func (x *SnapshotPrereqs) GetMetricsServerPresent() bool {
+ if x != nil {
+ return x.MetricsServerPresent
+ }
+ return false
+}
+
+type NodeRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
- WorkloadName string `protobuf:"bytes,3,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
- Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
- Offset *int32 `protobuf:"varint,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+ Aws *AWSKarpenterSpec `protobuf:"bytes,1,opt,name=aws,proto3" json:"aws,omitempty"`
+ Aks *AKSKarpenterSpec `protobuf:"bytes,2,opt,name=aks,proto3" json:"aks,omitempty"`
+ Gcp *GCPKarpenterSpec `protobuf:"bytes,3,opt,name=gcp,proto3" json:"gcp,omitempty"`
+ Oci *OCIKarpenterSpec `protobuf:"bytes,4,opt,name=oci,proto3" json:"oci,omitempty"`
+ NodeRecCfgId string `protobuf:"bytes,41,opt,name=node_rec_cfg_id,json=nodeRecCfgId,proto3" json:"node_rec_cfg_id,omitempty"`
}
-func (x *ListWorkloadOOMEventsRequest) Reset() {
- *x = ListWorkloadOOMEventsRequest{}
+func (x *NodeRecommendation) Reset() {
+ *x = NodeRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[318]
+ mi := &file_api_v1_recommendation_proto_msgTypes[338]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadOOMEventsRequest) String() string {
+func (x *NodeRecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadOOMEventsRequest) ProtoMessage() {}
+func (*NodeRecommendation) ProtoMessage() {}
-func (x *ListWorkloadOOMEventsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[318]
+func (x *NodeRecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[338]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25119,72 +28633,72 @@ func (x *ListWorkloadOOMEventsRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadOOMEventsRequest.ProtoReflect.Descriptor instead.
-func (*ListWorkloadOOMEventsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{318}
+// Deprecated: Use NodeRecommendation.ProtoReflect.Descriptor instead.
+func (*NodeRecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{338}
}
-func (x *ListWorkloadOOMEventsRequest) GetClusterId() string {
+func (x *NodeRecommendation) GetAws() *AWSKarpenterSpec {
if x != nil {
- return x.ClusterId
+ return x.Aws
}
- return ""
+ return nil
}
-func (x *ListWorkloadOOMEventsRequest) GetNamespace() string {
+func (x *NodeRecommendation) GetAks() *AKSKarpenterSpec {
if x != nil {
- return x.Namespace
+ return x.Aks
}
- return ""
+ return nil
}
-func (x *ListWorkloadOOMEventsRequest) GetWorkloadName() string {
+func (x *NodeRecommendation) GetGcp() *GCPKarpenterSpec {
if x != nil {
- return x.WorkloadName
+ return x.Gcp
}
- return ""
+ return nil
}
-func (x *ListWorkloadOOMEventsRequest) GetLimit() int32 {
- if x != nil && x.Limit != nil {
- return *x.Limit
+func (x *NodeRecommendation) GetOci() *OCIKarpenterSpec {
+ if x != nil {
+ return x.Oci
}
- return 0
+ return nil
}
-func (x *ListWorkloadOOMEventsRequest) GetOffset() int32 {
- if x != nil && x.Offset != nil {
- return *x.Offset
+func (x *NodeRecommendation) GetNodeRecCfgId() string {
+ if x != nil {
+ return x.NodeRecCfgId
}
- return 0
+ return ""
}
-type ListWorkloadOOMEventsResponse struct {
+type AWSKarpenterSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Events []*WorkloadRuleOOMEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
- Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+ Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
+ Ec2Nc []*EC2NodeClass `protobuf:"bytes,6,rep,name=ec2nc,proto3" json:"ec2nc,omitempty"`
}
-func (x *ListWorkloadOOMEventsResponse) Reset() {
- *x = ListWorkloadOOMEventsResponse{}
+func (x *AWSKarpenterSpec) Reset() {
+ *x = AWSKarpenterSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[319]
+ mi := &file_api_v1_recommendation_proto_msgTypes[339]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadOOMEventsResponse) String() string {
+func (x *AWSKarpenterSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadOOMEventsResponse) ProtoMessage() {}
+func (*AWSKarpenterSpec) ProtoMessage() {}
-func (x *ListWorkloadOOMEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[319]
+func (x *AWSKarpenterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[339]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25195,64 +28709,51 @@ func (x *ListWorkloadOOMEventsResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadOOMEventsResponse.ProtoReflect.Descriptor instead.
-func (*ListWorkloadOOMEventsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{319}
+// Deprecated: Use AWSKarpenterSpec.ProtoReflect.Descriptor instead.
+func (*AWSKarpenterSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{339}
}
-func (x *ListWorkloadOOMEventsResponse) GetEvents() []*WorkloadRuleOOMEvent {
+func (x *AWSKarpenterSpec) GetNp() []*NodePool {
if x != nil {
- return x.Events
+ return x.Np
}
return nil
}
-func (x *ListWorkloadOOMEventsResponse) GetTotal() int64 {
+func (x *AWSKarpenterSpec) GetEc2Nc() []*EC2NodeClass {
if x != nil {
- return x.Total
+ return x.Ec2Nc
}
- return 0
+ return nil
}
-type WorkloadRuleCPUThrottleEvent struct {
+type AKSKarpenterSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
- ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
- WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
- ContainerName string `protobuf:"bytes,6,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- RuleGeneration int64 `protobuf:"varint,8,opt,name=rule_generation,json=ruleGeneration,proto3" json:"rule_generation,omitempty"`
- CpuRequestAt int64 `protobuf:"varint,9,opt,name=cpu_request_at,json=cpuRequestAt,proto3" json:"cpu_request_at,omitempty"`
- CpuLimitAt int64 `protobuf:"varint,10,opt,name=cpu_limit_at,json=cpuLimitAt,proto3" json:"cpu_limit_at,omitempty"`
- CpuUsageAt int64 `protobuf:"varint,11,opt,name=cpu_usage_at,json=cpuUsageAt,proto3" json:"cpu_usage_at,omitempty"`
- ThrottledFraction float64 `protobuf:"fixed64,12,opt,name=throttled_fraction,json=throttledFraction,proto3" json:"throttled_fraction,omitempty"`
- EmergencyReaction bool `protobuf:"varint,13,opt,name=emergency_reaction,json=emergencyReaction,proto3" json:"emergency_reaction,omitempty"`
- NewCpuAfter *int64 `protobuf:"varint,14,opt,name=new_cpu_after,json=newCpuAfter,proto3,oneof" json:"new_cpu_after,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
+ Aksnc []*AKSNodeClass `protobuf:"bytes,6,rep,name=aksnc,proto3" json:"aksnc,omitempty"`
}
-func (x *WorkloadRuleCPUThrottleEvent) Reset() {
- *x = WorkloadRuleCPUThrottleEvent{}
+func (x *AKSKarpenterSpec) Reset() {
+ *x = AKSKarpenterSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[320]
+ mi := &file_api_v1_recommendation_proto_msgTypes[340]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadRuleCPUThrottleEvent) String() string {
+func (x *AKSKarpenterSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadRuleCPUThrottleEvent) ProtoMessage() {}
+func (*AKSKarpenterSpec) ProtoMessage() {}
-func (x *WorkloadRuleCPUThrottleEvent) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[320]
+func (x *AKSKarpenterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[340]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25263,144 +28764,144 @@ func (x *WorkloadRuleCPUThrottleEvent) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadRuleCPUThrottleEvent.ProtoReflect.Descriptor instead.
-func (*WorkloadRuleCPUThrottleEvent) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{320}
+// Deprecated: Use AKSKarpenterSpec.ProtoReflect.Descriptor instead.
+func (*AKSKarpenterSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{340}
}
-func (x *WorkloadRuleCPUThrottleEvent) GetId() string {
+func (x *AKSKarpenterSpec) GetNp() []*NodePool {
if x != nil {
- return x.Id
+ return x.Np
}
- return ""
+ return nil
}
-func (x *WorkloadRuleCPUThrottleEvent) GetRuleId() string {
+func (x *AKSKarpenterSpec) GetAksnc() []*AKSNodeClass {
if x != nil {
- return x.RuleId
+ return x.Aksnc
}
- return ""
+ return nil
}
-func (x *WorkloadRuleCPUThrottleEvent) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
+type NodePool struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *WorkloadRuleCPUThrottleEvent) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
+ Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into sigs.k8s.io/karpenter/pkg/apis/v1.NodePool
}
-func (x *WorkloadRuleCPUThrottleEvent) GetWorkloadName() string {
- if x != nil {
- return x.WorkloadName
+func (x *NodePool) Reset() {
+ *x = NodePool{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[341]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *WorkloadRuleCPUThrottleEvent) GetContainerName() string {
- if x != nil {
- return x.ContainerName
- }
- return ""
+func (x *NodePool) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *WorkloadRuleCPUThrottleEvent) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
+func (*NodePool) ProtoMessage() {}
+
+func (x *NodePool) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[341]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
}
-func (x *WorkloadRuleCPUThrottleEvent) GetRuleGeneration() int64 {
- if x != nil {
- return x.RuleGeneration
- }
- return 0
+// Deprecated: Use NodePool.ProtoReflect.Descriptor instead.
+func (*NodePool) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{341}
}
-func (x *WorkloadRuleCPUThrottleEvent) GetCpuRequestAt() int64 {
+func (x *NodePool) GetContents() []byte {
if x != nil {
- return x.CpuRequestAt
+ return x.Contents
}
- return 0
+ return nil
}
-func (x *WorkloadRuleCPUThrottleEvent) GetCpuLimitAt() int64 {
- if x != nil {
- return x.CpuLimitAt
- }
- return 0
+type EC2NodeClass struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/aws/karpenter-provider-aws/pkg/apis/v1.EC2NodeClass
}
-func (x *WorkloadRuleCPUThrottleEvent) GetCpuUsageAt() int64 {
- if x != nil {
- return x.CpuUsageAt
+func (x *EC2NodeClass) Reset() {
+ *x = EC2NodeClass{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[342]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *WorkloadRuleCPUThrottleEvent) GetThrottledFraction() float64 {
- if x != nil {
- return x.ThrottledFraction
- }
- return 0
+func (x *EC2NodeClass) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (x *WorkloadRuleCPUThrottleEvent) GetEmergencyReaction() bool {
- if x != nil {
- return x.EmergencyReaction
+func (*EC2NodeClass) ProtoMessage() {}
+
+func (x *EC2NodeClass) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[342]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return false
+ return mi.MessageOf(x)
}
-func (x *WorkloadRuleCPUThrottleEvent) GetNewCpuAfter() int64 {
- if x != nil && x.NewCpuAfter != nil {
- return *x.NewCpuAfter
- }
- return 0
+// Deprecated: Use EC2NodeClass.ProtoReflect.Descriptor instead.
+func (*EC2NodeClass) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{342}
}
-func (x *WorkloadRuleCPUThrottleEvent) GetCreatedAt() *timestamppb.Timestamp {
+func (x *EC2NodeClass) GetContents() []byte {
if x != nil {
- return x.CreatedAt
+ return x.Contents
}
return nil
}
-type ListWorkloadRuleCPUThrottleEventsRequest struct {
+type AKSNodeClass struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
- Generation *int64 `protobuf:"varint,2,opt,name=generation,proto3,oneof" json:"generation,omitempty"`
- Limit *int32 `protobuf:"varint,3,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
- Offset *int32 `protobuf:"varint,4,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+ Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/Azure/karpenter-provider-azure/pkg/apis/v1beta1.AKSNodeClass
}
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) Reset() {
- *x = ListWorkloadRuleCPUThrottleEventsRequest{}
+func (x *AKSNodeClass) Reset() {
+ *x = AKSNodeClass{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[321]
+ mi := &file_api_v1_recommendation_proto_msgTypes[343]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) String() string {
+func (x *AKSNodeClass) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadRuleCPUThrottleEventsRequest) ProtoMessage() {}
+func (*AKSNodeClass) ProtoMessage() {}
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[321]
+func (x *AKSNodeClass) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[343]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25411,65 +28912,44 @@ func (x *ListWorkloadRuleCPUThrottleEventsRequest) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadRuleCPUThrottleEventsRequest.ProtoReflect.Descriptor instead.
-func (*ListWorkloadRuleCPUThrottleEventsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{321}
+// Deprecated: Use AKSNodeClass.ProtoReflect.Descriptor instead.
+func (*AKSNodeClass) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{343}
}
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetRuleId() string {
+func (x *AKSNodeClass) GetContents() []byte {
if x != nil {
- return x.RuleId
- }
- return ""
-}
-
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetGeneration() int64 {
- if x != nil && x.Generation != nil {
- return *x.Generation
- }
- return 0
-}
-
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetLimit() int32 {
- if x != nil && x.Limit != nil {
- return *x.Limit
- }
- return 0
-}
-
-func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetOffset() int32 {
- if x != nil && x.Offset != nil {
- return *x.Offset
+ return x.Contents
}
- return 0
+ return nil
}
-type ListWorkloadRuleCPUThrottleEventsResponse struct {
+type GCPKarpenterSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Events []*WorkloadRuleCPUThrottleEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
- Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+ Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
+ NodeClasses []*GCENodeClass `protobuf:"bytes,2,rep,name=node_classes,json=nodeClasses,proto3" json:"node_classes,omitempty"`
}
-func (x *ListWorkloadRuleCPUThrottleEventsResponse) Reset() {
- *x = ListWorkloadRuleCPUThrottleEventsResponse{}
+func (x *GCPKarpenterSpec) Reset() {
+ *x = GCPKarpenterSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[322]
+ mi := &file_api_v1_recommendation_proto_msgTypes[344]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadRuleCPUThrottleEventsResponse) String() string {
+func (x *GCPKarpenterSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadRuleCPUThrottleEventsResponse) ProtoMessage() {}
+func (*GCPKarpenterSpec) ProtoMessage() {}
-func (x *ListWorkloadRuleCPUThrottleEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[322]
+func (x *GCPKarpenterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[344]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25480,54 +28960,50 @@ func (x *ListWorkloadRuleCPUThrottleEventsResponse) ProtoReflect() protoreflect.
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadRuleCPUThrottleEventsResponse.ProtoReflect.Descriptor instead.
-func (*ListWorkloadRuleCPUThrottleEventsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{322}
+// Deprecated: Use GCPKarpenterSpec.ProtoReflect.Descriptor instead.
+func (*GCPKarpenterSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{344}
}
-func (x *ListWorkloadRuleCPUThrottleEventsResponse) GetEvents() []*WorkloadRuleCPUThrottleEvent {
+func (x *GCPKarpenterSpec) GetNp() []*NodePool {
if x != nil {
- return x.Events
+ return x.Np
}
return nil
}
-func (x *ListWorkloadRuleCPUThrottleEventsResponse) GetTotal() int64 {
+func (x *GCPKarpenterSpec) GetNodeClasses() []*GCENodeClass {
if x != nil {
- return x.Total
+ return x.NodeClasses
}
- return 0
+ return nil
}
-type ListWorkloadCPUThrottleEventsRequest struct {
+type GCENodeClass struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
- WorkloadName string `protobuf:"bytes,3,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
- Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
- Offset *int32 `protobuf:"varint,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+ Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/cloudpilot-ai/karpenter-provider-gcp/pkg/apis/v1alpha1.GCENodeClass
}
-func (x *ListWorkloadCPUThrottleEventsRequest) Reset() {
- *x = ListWorkloadCPUThrottleEventsRequest{}
+func (x *GCENodeClass) Reset() {
+ *x = GCENodeClass{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[323]
+ mi := &file_api_v1_recommendation_proto_msgTypes[345]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadCPUThrottleEventsRequest) String() string {
+func (x *GCENodeClass) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadCPUThrottleEventsRequest) ProtoMessage() {}
+func (*GCENodeClass) ProtoMessage() {}
-func (x *ListWorkloadCPUThrottleEventsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[323]
+func (x *GCENodeClass) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[345]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25538,72 +29014,98 @@ func (x *ListWorkloadCPUThrottleEventsRequest) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadCPUThrottleEventsRequest.ProtoReflect.Descriptor instead.
-func (*ListWorkloadCPUThrottleEventsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{323}
+// Deprecated: Use GCENodeClass.ProtoReflect.Descriptor instead.
+func (*GCENodeClass) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{345}
}
-func (x *ListWorkloadCPUThrottleEventsRequest) GetClusterId() string {
+func (x *GCENodeClass) GetContents() []byte {
if x != nil {
- return x.ClusterId
+ return x.Contents
}
- return ""
+ return nil
}
-func (x *ListWorkloadCPUThrottleEventsRequest) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
-}
+type OCIKarpenterSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (x *ListWorkloadCPUThrottleEventsRequest) GetWorkloadName() string {
- if x != nil {
- return x.WorkloadName
- }
- return ""
+ Np []*NodePool `protobuf:"bytes,1,rep,name=np,proto3" json:"np,omitempty"`
+ NodeClasses []*OCINodeClass `protobuf:"bytes,2,rep,name=node_classes,json=nodeClasses,proto3" json:"node_classes,omitempty"`
}
-func (x *ListWorkloadCPUThrottleEventsRequest) GetLimit() int32 {
- if x != nil && x.Limit != nil {
- return *x.Limit
+func (x *OCIKarpenterSpec) Reset() {
+ *x = OCIKarpenterSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[346]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return 0
}
-func (x *ListWorkloadCPUThrottleEventsRequest) GetOffset() int32 {
- if x != nil && x.Offset != nil {
- return *x.Offset
+func (x *OCIKarpenterSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OCIKarpenterSpec) ProtoMessage() {}
+
+func (x *OCIKarpenterSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[346]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return 0
+ return mi.MessageOf(x)
}
-type ListWorkloadCPUThrottleEventsResponse struct {
+// Deprecated: Use OCIKarpenterSpec.ProtoReflect.Descriptor instead.
+func (*OCIKarpenterSpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{346}
+}
+
+func (x *OCIKarpenterSpec) GetNp() []*NodePool {
+ if x != nil {
+ return x.Np
+ }
+ return nil
+}
+
+func (x *OCIKarpenterSpec) GetNodeClasses() []*OCINodeClass {
+ if x != nil {
+ return x.NodeClasses
+ }
+ return nil
+}
+
+type OCINodeClass struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Events []*WorkloadRuleCPUThrottleEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
- Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+ Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` // can be marshaled into github.com/zoom/karpenter-oci/pkg/apis/v1alpha1.OciNodeClass
}
-func (x *ListWorkloadCPUThrottleEventsResponse) Reset() {
- *x = ListWorkloadCPUThrottleEventsResponse{}
+func (x *OCINodeClass) Reset() {
+ *x = OCINodeClass{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[324]
+ mi := &file_api_v1_recommendation_proto_msgTypes[347]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadCPUThrottleEventsResponse) String() string {
+func (x *OCINodeClass) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadCPUThrottleEventsResponse) ProtoMessage() {}
+func (*OCINodeClass) ProtoMessage() {}
-func (x *ListWorkloadCPUThrottleEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[324]
+func (x *OCINodeClass) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[347]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25614,72 +29116,65 @@ func (x *ListWorkloadCPUThrottleEventsResponse) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadCPUThrottleEventsResponse.ProtoReflect.Descriptor instead.
-func (*ListWorkloadCPUThrottleEventsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{324}
+// Deprecated: Use OCINodeClass.ProtoReflect.Descriptor instead.
+func (*OCINodeClass) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{347}
}
-func (x *ListWorkloadCPUThrottleEventsResponse) GetEvents() []*WorkloadRuleCPUThrottleEvent {
+func (x *OCINodeClass) GetContents() []byte {
if x != nil {
- return x.Events
+ return x.Contents
}
return nil
}
-func (x *ListWorkloadCPUThrottleEventsResponse) GetTotal() int64 {
- if x != nil {
- return x.Total
- }
- return 0
-}
-
-type WorkloadOptimizationPolicyProto struct {
+// StorageRecommendationPolicy represents a policy for PVC/storage optimization
+type StorageRecommendationPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
- Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"`
- ClusterIds []string `protobuf:"bytes,6,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- NamespaceSelector []string `protobuf:"bytes,7,rep,name=namespace_selector,json=namespaceSelector,proto3" json:"namespace_selector,omitempty"`
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- ClusterNames map[string]string `protobuf:"bytes,10,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // cluster_id → display name
- // Scheduling & Triggers
- ActionTriggers []ActionTrigger `protobuf:"varint,11,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- CronSchedule *string `protobuf:"bytes,12,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- CooldownMinutes *int32 `protobuf:"varint,13,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
- DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,14,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
- // Scheduler Optimization
- SchedulerPlugins []string `protobuf:"bytes,15,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
- DefragmentationSchedule *string `protobuf:"bytes,16,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
- LiveMigrationEnabled bool `protobuf:"varint,17,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3" json:"live_migration_enabled,omitempty"`
- UseInPlaceVerticalScaling bool `protobuf:"varint,18,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
- // HPA: when true, WorkloadRules generated from this policy have HPA
- // enabled. Two-way bound to HPARuleConfig.Enabled on the WorkloadRule CRD.
- HpaEnabled bool `protobuf:"varint,19,opt,name=hpa_enabled,json=hpaEnabled,proto3" json:"hpa_enabled,omitempty"`
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ ActionTrigger ActionTrigger `protobuf:"varint,5,opt,name=action_trigger,json=actionTrigger,proto3,enum=api.v1.ActionTrigger" json:"action_trigger,omitempty"`
+ ActionTriggers []ActionTrigger `protobuf:"varint,6,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ CronSchedule *string `protobuf:"bytes,7,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ LookbackPeriodSeconds *int32 `protobuf:"varint,8,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ // Storage-specific parameters
+ TargetUtilizationPercent *float32 `protobuf:"fixed32,10,opt,name=target_utilization_percent,json=targetUtilizationPercent,proto3,oneof" json:"target_utilization_percent,omitempty"`
+ WarnDaysToFull *int32 `protobuf:"varint,11,opt,name=warn_days_to_full,json=warnDaysToFull,proto3,oneof" json:"warn_days_to_full,omitempty"`
+ MaxExpansionPerAction *float32 `protobuf:"fixed32,12,opt,name=max_expansion_per_action,json=maxExpansionPerAction,proto3,oneof" json:"max_expansion_per_action,omitempty"`
+ MinDataPoints *int32 `protobuf:"varint,13,opt,name=min_data_points,json=minDataPoints,proto3,oneof" json:"min_data_points,omitempty"`
+ // New storage policy fields
+ CriticalDaysToFull *int32 `protobuf:"varint,14,opt,name=critical_days_to_full,json=criticalDaysToFull,proto3,oneof" json:"critical_days_to_full,omitempty"`
+ HeadroomDays *int32 `protobuf:"varint,15,opt,name=headroom_days,json=headroomDays,proto3,oneof" json:"headroom_days,omitempty"`
+ MinResizeIncrementGib *int32 `protobuf:"varint,16,opt,name=min_resize_increment_gib,json=minResizeIncrementGib,proto3,oneof" json:"min_resize_increment_gib,omitempty"`
+ MaxMonthlyCostUsd *float32 `protobuf:"fixed32,17,opt,name=max_monthly_cost_usd,json=maxMonthlyCostUsd,proto3,oneof" json:"max_monthly_cost_usd,omitempty"`
+ CooldownWindowSeconds *int32 `protobuf:"varint,18,opt,name=cooldown_window_seconds,json=cooldownWindowSeconds,proto3,oneof" json:"cooldown_window_seconds,omitempty"`
+ IsDefaultPolicy bool `protobuf:"varint,50,opt,name=is_default_policy,json=isDefaultPolicy,proto3" json:"is_default_policy,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
}
-func (x *WorkloadOptimizationPolicyProto) Reset() {
- *x = WorkloadOptimizationPolicyProto{}
+func (x *StorageRecommendationPolicy) Reset() {
+ *x = StorageRecommendationPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[325]
+ mi := &file_api_v1_recommendation_proto_msgTypes[348]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadOptimizationPolicyProto) String() string {
+func (x *StorageRecommendationPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadOptimizationPolicyProto) ProtoMessage() {}
+func (*StorageRecommendationPolicy) ProtoMessage() {}
-func (x *WorkloadOptimizationPolicyProto) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[325]
+func (x *StorageRecommendationPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[348]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25690,185 +29185,190 @@ func (x *WorkloadOptimizationPolicyProto) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadOptimizationPolicyProto.ProtoReflect.Descriptor instead.
-func (*WorkloadOptimizationPolicyProto) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{325}
+// Deprecated: Use StorageRecommendationPolicy.ProtoReflect.Descriptor instead.
+func (*StorageRecommendationPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{348}
}
-func (x *WorkloadOptimizationPolicyProto) GetId() string {
+func (x *StorageRecommendationPolicy) GetPolicyId() string {
if x != nil {
- return x.Id
+ return x.PolicyId
}
return ""
}
-func (x *WorkloadOptimizationPolicyProto) GetTeamId() string {
+func (x *StorageRecommendationPolicy) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *WorkloadOptimizationPolicyProto) GetName() string {
+func (x *StorageRecommendationPolicy) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *WorkloadOptimizationPolicyProto) GetDescription() string {
- if x != nil && x.Description != nil {
- return *x.Description
+func (x *StorageRecommendationPolicy) GetDescription() string {
+ if x != nil {
+ return x.Description
}
return ""
}
-func (x *WorkloadOptimizationPolicyProto) GetEnabled() bool {
+func (x *StorageRecommendationPolicy) GetActionTrigger() ActionTrigger {
if x != nil {
- return x.Enabled
+ return x.ActionTrigger
}
- return false
+ return ActionTrigger_ACTION_TRIGGER_UNSPECIFIED
}
-func (x *WorkloadOptimizationPolicyProto) GetClusterIds() []string {
+func (x *StorageRecommendationPolicy) GetActionTriggers() []ActionTrigger {
if x != nil {
- return x.ClusterIds
+ return x.ActionTriggers
}
return nil
}
-func (x *WorkloadOptimizationPolicyProto) GetNamespaceSelector() []string {
- if x != nil {
- return x.NamespaceSelector
+func (x *StorageRecommendationPolicy) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
}
- return nil
+ return ""
}
-func (x *WorkloadOptimizationPolicyProto) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
+func (x *StorageRecommendationPolicy) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
}
- return nil
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetUpdatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedAt
+func (x *StorageRecommendationPolicy) GetTargetUtilizationPercent() float32 {
+ if x != nil && x.TargetUtilizationPercent != nil {
+ return *x.TargetUtilizationPercent
}
- return nil
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetClusterNames() map[string]string {
- if x != nil {
- return x.ClusterNames
+func (x *StorageRecommendationPolicy) GetWarnDaysToFull() int32 {
+ if x != nil && x.WarnDaysToFull != nil {
+ return *x.WarnDaysToFull
}
- return nil
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetActionTriggers() []ActionTrigger {
- if x != nil {
- return x.ActionTriggers
+func (x *StorageRecommendationPolicy) GetMaxExpansionPerAction() float32 {
+ if x != nil && x.MaxExpansionPerAction != nil {
+ return *x.MaxExpansionPerAction
}
- return nil
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
+func (x *StorageRecommendationPolicy) GetMinDataPoints() int32 {
+ if x != nil && x.MinDataPoints != nil {
+ return *x.MinDataPoints
}
- return ""
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetCooldownMinutes() int32 {
- if x != nil && x.CooldownMinutes != nil {
- return *x.CooldownMinutes
+func (x *StorageRecommendationPolicy) GetCriticalDaysToFull() int32 {
+ if x != nil && x.CriticalDaysToFull != nil {
+ return *x.CriticalDaysToFull
}
return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetDetectionTriggers() []WorkloadDetectionTrigger {
- if x != nil {
- return x.DetectionTriggers
+func (x *StorageRecommendationPolicy) GetHeadroomDays() int32 {
+ if x != nil && x.HeadroomDays != nil {
+ return *x.HeadroomDays
}
- return nil
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetSchedulerPlugins() []string {
- if x != nil {
- return x.SchedulerPlugins
+func (x *StorageRecommendationPolicy) GetMinResizeIncrementGib() int32 {
+ if x != nil && x.MinResizeIncrementGib != nil {
+ return *x.MinResizeIncrementGib
}
- return nil
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetDefragmentationSchedule() string {
- if x != nil && x.DefragmentationSchedule != nil {
- return *x.DefragmentationSchedule
+func (x *StorageRecommendationPolicy) GetMaxMonthlyCostUsd() float32 {
+ if x != nil && x.MaxMonthlyCostUsd != nil {
+ return *x.MaxMonthlyCostUsd
}
- return ""
+ return 0
}
-func (x *WorkloadOptimizationPolicyProto) GetLiveMigrationEnabled() bool {
+func (x *StorageRecommendationPolicy) GetCooldownWindowSeconds() int32 {
+ if x != nil && x.CooldownWindowSeconds != nil {
+ return *x.CooldownWindowSeconds
+ }
+ return 0
+}
+
+func (x *StorageRecommendationPolicy) GetIsDefaultPolicy() bool {
if x != nil {
- return x.LiveMigrationEnabled
+ return x.IsDefaultPolicy
}
return false
}
-func (x *WorkloadOptimizationPolicyProto) GetUseInPlaceVerticalScaling() bool {
+func (x *StorageRecommendationPolicy) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.UseInPlaceVerticalScaling
+ return x.CreatedAt
}
- return false
+ return nil
}
-func (x *WorkloadOptimizationPolicyProto) GetHpaEnabled() bool {
+func (x *StorageRecommendationPolicy) GetUpdatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.HpaEnabled
+ return x.UpdatedAt
}
- return false
+ return nil
}
-type CreateWorkloadOptimizationPolicyRequest struct {
+type CreateStorageRecommendationPolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"`
- Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"`
- ClusterIds []string `protobuf:"bytes,5,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- NamespaceSelector []string `protobuf:"bytes,6,rep,name=namespace_selector,json=namespaceSelector,proto3" json:"namespace_selector,omitempty"`
- // Scheduling & Triggers
- ActionTriggers []ActionTrigger `protobuf:"varint,7,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- CronSchedule *string `protobuf:"bytes,8,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- CooldownMinutes *int32 `protobuf:"varint,9,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
- DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,10,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
- // Scheduler Optimization
- SchedulerPlugins []string `protobuf:"bytes,11,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
- DefragmentationSchedule *string `protobuf:"bytes,12,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
- LiveMigrationEnabled bool `protobuf:"varint,13,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3" json:"live_migration_enabled,omitempty"`
- UseInPlaceVerticalScaling bool `protobuf:"varint,14,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
- HpaEnabled bool `protobuf:"varint,15,opt,name=hpa_enabled,json=hpaEnabled,proto3" json:"hpa_enabled,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ ActionTriggers []ActionTrigger `protobuf:"varint,4,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ CronSchedule *string `protobuf:"bytes,5,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ LookbackPeriodSeconds *int32 `protobuf:"varint,6,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ TargetUtilizationPercent *float32 `protobuf:"fixed32,7,opt,name=target_utilization_percent,json=targetUtilizationPercent,proto3,oneof" json:"target_utilization_percent,omitempty"`
+ WarnDaysToFull *int32 `protobuf:"varint,8,opt,name=warn_days_to_full,json=warnDaysToFull,proto3,oneof" json:"warn_days_to_full,omitempty"`
+ MaxExpansionPerAction *float32 `protobuf:"fixed32,9,opt,name=max_expansion_per_action,json=maxExpansionPerAction,proto3,oneof" json:"max_expansion_per_action,omitempty"`
+ MinDataPoints *int32 `protobuf:"varint,10,opt,name=min_data_points,json=minDataPoints,proto3,oneof" json:"min_data_points,omitempty"`
+ CriticalDaysToFull *int32 `protobuf:"varint,11,opt,name=critical_days_to_full,json=criticalDaysToFull,proto3,oneof" json:"critical_days_to_full,omitempty"`
+ HeadroomDays *int32 `protobuf:"varint,12,opt,name=headroom_days,json=headroomDays,proto3,oneof" json:"headroom_days,omitempty"`
+ MinResizeIncrementGib *int32 `protobuf:"varint,13,opt,name=min_resize_increment_gib,json=minResizeIncrementGib,proto3,oneof" json:"min_resize_increment_gib,omitempty"`
+ MaxMonthlyCostUsd *float32 `protobuf:"fixed32,14,opt,name=max_monthly_cost_usd,json=maxMonthlyCostUsd,proto3,oneof" json:"max_monthly_cost_usd,omitempty"`
+ CooldownWindowSeconds *int32 `protobuf:"varint,15,opt,name=cooldown_window_seconds,json=cooldownWindowSeconds,proto3,oneof" json:"cooldown_window_seconds,omitempty"`
}
-func (x *CreateWorkloadOptimizationPolicyRequest) Reset() {
- *x = CreateWorkloadOptimizationPolicyRequest{}
+func (x *CreateStorageRecommendationPolicyRequest) Reset() {
+ *x = CreateStorageRecommendationPolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[326]
+ mi := &file_api_v1_recommendation_proto_msgTypes[349]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateWorkloadOptimizationPolicyRequest) String() string {
+func (x *CreateStorageRecommendationPolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+func (*CreateStorageRecommendationPolicyRequest) ProtoMessage() {}
-func (x *CreateWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[326]
+func (x *CreateStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[349]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -25879,141 +29379,141 @@ func (x *CreateWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use CreateWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*CreateWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{326}
+// Deprecated: Use CreateStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*CreateStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{349}
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetTeamId() string {
+func (x *CreateStorageRecommendationPolicyRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetName() string {
+func (x *CreateStorageRecommendationPolicyRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetDescription() string {
- if x != nil && x.Description != nil {
- return *x.Description
+func (x *CreateStorageRecommendationPolicyRequest) GetDescription() string {
+ if x != nil {
+ return x.Description
}
return ""
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetEnabled() bool {
+func (x *CreateStorageRecommendationPolicyRequest) GetActionTriggers() []ActionTrigger {
if x != nil {
- return x.Enabled
+ return x.ActionTriggers
}
- return false
+ return nil
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetClusterIds() []string {
- if x != nil {
- return x.ClusterIds
+func (x *CreateStorageRecommendationPolicyRequest) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
}
- return nil
+ return ""
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetNamespaceSelector() []string {
- if x != nil {
- return x.NamespaceSelector
+func (x *CreateStorageRecommendationPolicyRequest) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
}
- return nil
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetActionTriggers() []ActionTrigger {
- if x != nil {
- return x.ActionTriggers
+func (x *CreateStorageRecommendationPolicyRequest) GetTargetUtilizationPercent() float32 {
+ if x != nil && x.TargetUtilizationPercent != nil {
+ return *x.TargetUtilizationPercent
}
- return nil
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
+func (x *CreateStorageRecommendationPolicyRequest) GetWarnDaysToFull() int32 {
+ if x != nil && x.WarnDaysToFull != nil {
+ return *x.WarnDaysToFull
}
- return ""
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetCooldownMinutes() int32 {
- if x != nil && x.CooldownMinutes != nil {
- return *x.CooldownMinutes
+func (x *CreateStorageRecommendationPolicyRequest) GetMaxExpansionPerAction() float32 {
+ if x != nil && x.MaxExpansionPerAction != nil {
+ return *x.MaxExpansionPerAction
}
return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetDetectionTriggers() []WorkloadDetectionTrigger {
- if x != nil {
- return x.DetectionTriggers
+func (x *CreateStorageRecommendationPolicyRequest) GetMinDataPoints() int32 {
+ if x != nil && x.MinDataPoints != nil {
+ return *x.MinDataPoints
}
- return nil
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetSchedulerPlugins() []string {
- if x != nil {
- return x.SchedulerPlugins
+func (x *CreateStorageRecommendationPolicyRequest) GetCriticalDaysToFull() int32 {
+ if x != nil && x.CriticalDaysToFull != nil {
+ return *x.CriticalDaysToFull
}
- return nil
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetDefragmentationSchedule() string {
- if x != nil && x.DefragmentationSchedule != nil {
- return *x.DefragmentationSchedule
+func (x *CreateStorageRecommendationPolicyRequest) GetHeadroomDays() int32 {
+ if x != nil && x.HeadroomDays != nil {
+ return *x.HeadroomDays
}
- return ""
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetLiveMigrationEnabled() bool {
- if x != nil {
- return x.LiveMigrationEnabled
+func (x *CreateStorageRecommendationPolicyRequest) GetMinResizeIncrementGib() int32 {
+ if x != nil && x.MinResizeIncrementGib != nil {
+ return *x.MinResizeIncrementGib
}
- return false
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetUseInPlaceVerticalScaling() bool {
- if x != nil {
- return x.UseInPlaceVerticalScaling
+func (x *CreateStorageRecommendationPolicyRequest) GetMaxMonthlyCostUsd() float32 {
+ if x != nil && x.MaxMonthlyCostUsd != nil {
+ return *x.MaxMonthlyCostUsd
}
- return false
+ return 0
}
-func (x *CreateWorkloadOptimizationPolicyRequest) GetHpaEnabled() bool {
- if x != nil {
- return x.HpaEnabled
+func (x *CreateStorageRecommendationPolicyRequest) GetCooldownWindowSeconds() int32 {
+ if x != nil && x.CooldownWindowSeconds != nil {
+ return *x.CooldownWindowSeconds
}
- return false
+ return 0
}
-type CreateWorkloadOptimizationPolicyResponse struct {
+type CreateStorageRecommendationPolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ Policy *StorageRecommendationPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *CreateWorkloadOptimizationPolicyResponse) Reset() {
- *x = CreateWorkloadOptimizationPolicyResponse{}
+func (x *CreateStorageRecommendationPolicyResponse) Reset() {
+ *x = CreateStorageRecommendationPolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[327]
+ mi := &file_api_v1_recommendation_proto_msgTypes[350]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateWorkloadOptimizationPolicyResponse) String() string {
+func (x *CreateStorageRecommendationPolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+func (*CreateStorageRecommendationPolicyResponse) ProtoMessage() {}
-func (x *CreateWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[327]
+func (x *CreateStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[350]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26024,48 +29524,43 @@ func (x *CreateWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use CreateWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*CreateWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{327}
+// Deprecated: Use CreateStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*CreateStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{350}
}
-func (x *CreateWorkloadOptimizationPolicyResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+func (x *CreateStorageRecommendationPolicyResponse) GetPolicy() *StorageRecommendationPolicy {
if x != nil {
return x.Policy
}
return nil
}
-type ListWorkloadOptimizationPoliciesRequest struct {
+type GetStorageRecommendationPolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- // Optional. When set, restricts the listing to policies that target this
- // cluster — either explicitly via cluster_ids, or implicitly via an empty
- // cluster_ids array (which means "all clusters" and therefore applies
- // to this cluster too).
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
}
-func (x *ListWorkloadOptimizationPoliciesRequest) Reset() {
- *x = ListWorkloadOptimizationPoliciesRequest{}
+func (x *GetStorageRecommendationPolicyRequest) Reset() {
+ *x = GetStorageRecommendationPolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[328]
+ mi := &file_api_v1_recommendation_proto_msgTypes[351]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadOptimizationPoliciesRequest) String() string {
+func (x *GetStorageRecommendationPolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadOptimizationPoliciesRequest) ProtoMessage() {}
+func (*GetStorageRecommendationPolicyRequest) ProtoMessage() {}
-func (x *ListWorkloadOptimizationPoliciesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[328]
+func (x *GetStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[351]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26076,50 +29571,43 @@ func (x *ListWorkloadOptimizationPoliciesRequest) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadOptimizationPoliciesRequest.ProtoReflect.Descriptor instead.
-func (*ListWorkloadOptimizationPoliciesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{328}
-}
-
-func (x *ListWorkloadOptimizationPoliciesRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use GetStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*GetStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{351}
}
-func (x *ListWorkloadOptimizationPoliciesRequest) GetClusterId() string {
+func (x *GetStorageRecommendationPolicyRequest) GetPolicyId() string {
if x != nil {
- return x.ClusterId
+ return x.PolicyId
}
return ""
}
-type ListWorkloadOptimizationPoliciesResponse struct {
+type GetStorageRecommendationPolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policies []*WorkloadOptimizationPolicyProto `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Policy *StorageRecommendationPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *ListWorkloadOptimizationPoliciesResponse) Reset() {
- *x = ListWorkloadOptimizationPoliciesResponse{}
+func (x *GetStorageRecommendationPolicyResponse) Reset() {
+ *x = GetStorageRecommendationPolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[329]
+ mi := &file_api_v1_recommendation_proto_msgTypes[352]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadOptimizationPoliciesResponse) String() string {
+func (x *GetStorageRecommendationPolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadOptimizationPoliciesResponse) ProtoMessage() {}
+func (*GetStorageRecommendationPolicyResponse) ProtoMessage() {}
-func (x *ListWorkloadOptimizationPoliciesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[329]
+func (x *GetStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[352]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26130,44 +29618,43 @@ func (x *ListWorkloadOptimizationPoliciesResponse) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadOptimizationPoliciesResponse.ProtoReflect.Descriptor instead.
-func (*ListWorkloadOptimizationPoliciesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{329}
+// Deprecated: Use GetStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*GetStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{352}
}
-func (x *ListWorkloadOptimizationPoliciesResponse) GetPolicies() []*WorkloadOptimizationPolicyProto {
+func (x *GetStorageRecommendationPolicyResponse) GetPolicy() *StorageRecommendationPolicy {
if x != nil {
- return x.Policies
+ return x.Policy
}
return nil
}
-type GetWorkloadOptimizationPolicyRequest struct {
+type ListStorageRecommendationPoliciesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *GetWorkloadOptimizationPolicyRequest) Reset() {
- *x = GetWorkloadOptimizationPolicyRequest{}
+func (x *ListStorageRecommendationPoliciesRequest) Reset() {
+ *x = ListStorageRecommendationPoliciesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[330]
+ mi := &file_api_v1_recommendation_proto_msgTypes[353]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadOptimizationPolicyRequest) String() string {
+func (x *ListStorageRecommendationPoliciesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+func (*ListStorageRecommendationPoliciesRequest) ProtoMessage() {}
-func (x *GetWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[330]
+func (x *ListStorageRecommendationPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[353]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26178,50 +29665,43 @@ func (x *GetWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{330}
+// Deprecated: Use ListStorageRecommendationPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListStorageRecommendationPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{353}
}
-func (x *GetWorkloadOptimizationPolicyRequest) GetTeamId() string {
+func (x *ListStorageRecommendationPoliciesRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetWorkloadOptimizationPolicyRequest) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
- }
- return ""
-}
-
-type GetWorkloadOptimizationPolicyResponse struct {
+type ListStorageRecommendationPoliciesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ Policies []*StorageRecommendationPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
}
-func (x *GetWorkloadOptimizationPolicyResponse) Reset() {
- *x = GetWorkloadOptimizationPolicyResponse{}
+func (x *ListStorageRecommendationPoliciesResponse) Reset() {
+ *x = ListStorageRecommendationPoliciesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[331]
+ mi := &file_api_v1_recommendation_proto_msgTypes[354]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadOptimizationPolicyResponse) String() string {
+func (x *ListStorageRecommendationPoliciesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+func (*ListStorageRecommendationPoliciesResponse) ProtoMessage() {}
-func (x *GetWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[331]
+func (x *ListStorageRecommendationPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[354]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26232,60 +29712,58 @@ func (x *GetWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Mess
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{331}
+// Deprecated: Use ListStorageRecommendationPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListStorageRecommendationPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{354}
}
-func (x *GetWorkloadOptimizationPolicyResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+func (x *ListStorageRecommendationPoliciesResponse) GetPolicies() []*StorageRecommendationPolicy {
if x != nil {
- return x.Policy
+ return x.Policies
}
return nil
}
-type UpdateWorkloadOptimizationPolicyRequest struct {
+type UpdateStorageRecommendationPolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
- Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
- Enabled *bool `protobuf:"varint,5,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"`
- ClusterIds []string `protobuf:"bytes,6,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- NamespaceSelector []string `protobuf:"bytes,7,rep,name=namespace_selector,json=namespaceSelector,proto3" json:"namespace_selector,omitempty"`
- // Scheduling & Triggers
- ActionTriggers []ActionTrigger `protobuf:"varint,8,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- CronSchedule *string `protobuf:"bytes,9,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- CooldownMinutes *int32 `protobuf:"varint,10,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
- DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,11,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
- // Scheduler Optimization
- SchedulerPlugins []string `protobuf:"bytes,12,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
- DefragmentationSchedule *string `protobuf:"bytes,13,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
- LiveMigrationEnabled *bool `protobuf:"varint,14,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3,oneof" json:"live_migration_enabled,omitempty"`
- UseInPlaceVerticalScaling *bool `protobuf:"varint,15,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3,oneof" json:"use_in_place_vertical_scaling,omitempty"`
- HpaEnabled *bool `protobuf:"varint,16,opt,name=hpa_enabled,json=hpaEnabled,proto3,oneof" json:"hpa_enabled,omitempty"`
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ ActionTriggers []ActionTrigger `protobuf:"varint,5,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ CronSchedule *string `protobuf:"bytes,6,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ LookbackPeriodSeconds *int32 `protobuf:"varint,7,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ TargetUtilizationPercent *float32 `protobuf:"fixed32,8,opt,name=target_utilization_percent,json=targetUtilizationPercent,proto3,oneof" json:"target_utilization_percent,omitempty"`
+ WarnDaysToFull *int32 `protobuf:"varint,9,opt,name=warn_days_to_full,json=warnDaysToFull,proto3,oneof" json:"warn_days_to_full,omitempty"`
+ MaxExpansionPerAction *float32 `protobuf:"fixed32,10,opt,name=max_expansion_per_action,json=maxExpansionPerAction,proto3,oneof" json:"max_expansion_per_action,omitempty"`
+ MinDataPoints *int32 `protobuf:"varint,11,opt,name=min_data_points,json=minDataPoints,proto3,oneof" json:"min_data_points,omitempty"`
+ CriticalDaysToFull *int32 `protobuf:"varint,12,opt,name=critical_days_to_full,json=criticalDaysToFull,proto3,oneof" json:"critical_days_to_full,omitempty"`
+ HeadroomDays *int32 `protobuf:"varint,13,opt,name=headroom_days,json=headroomDays,proto3,oneof" json:"headroom_days,omitempty"`
+ MinResizeIncrementGib *int32 `protobuf:"varint,14,opt,name=min_resize_increment_gib,json=minResizeIncrementGib,proto3,oneof" json:"min_resize_increment_gib,omitempty"`
+ MaxMonthlyCostUsd *float32 `protobuf:"fixed32,15,opt,name=max_monthly_cost_usd,json=maxMonthlyCostUsd,proto3,oneof" json:"max_monthly_cost_usd,omitempty"`
+ CooldownWindowSeconds *int32 `protobuf:"varint,16,opt,name=cooldown_window_seconds,json=cooldownWindowSeconds,proto3,oneof" json:"cooldown_window_seconds,omitempty"`
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) Reset() {
- *x = UpdateWorkloadOptimizationPolicyRequest{}
+func (x *UpdateStorageRecommendationPolicyRequest) Reset() {
+ *x = UpdateStorageRecommendationPolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[332]
+ mi := &file_api_v1_recommendation_proto_msgTypes[355]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) String() string {
+func (x *UpdateStorageRecommendationPolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+func (*UpdateStorageRecommendationPolicyRequest) ProtoMessage() {}
-func (x *UpdateWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[332]
+func (x *UpdateStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[355]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26296,148 +29774,148 @@ func (x *UpdateWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*UpdateWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{332}
+// Deprecated: Use UpdateStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*UpdateStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{355}
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetTeamId() string {
+func (x *UpdateStorageRecommendationPolicyRequest) GetPolicyId() string {
if x != nil {
- return x.TeamId
+ return x.PolicyId
}
return ""
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetPolicyId() string {
+func (x *UpdateStorageRecommendationPolicyRequest) GetTeamId() string {
if x != nil {
- return x.PolicyId
+ return x.TeamId
}
return ""
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetName() string {
- if x != nil && x.Name != nil {
- return *x.Name
+func (x *UpdateStorageRecommendationPolicyRequest) GetName() string {
+ if x != nil {
+ return x.Name
}
return ""
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetDescription() string {
- if x != nil && x.Description != nil {
- return *x.Description
+func (x *UpdateStorageRecommendationPolicyRequest) GetDescription() string {
+ if x != nil {
+ return x.Description
}
return ""
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetEnabled() bool {
- if x != nil && x.Enabled != nil {
- return *x.Enabled
+func (x *UpdateStorageRecommendationPolicyRequest) GetActionTriggers() []ActionTrigger {
+ if x != nil {
+ return x.ActionTriggers
}
- return false
+ return nil
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetClusterIds() []string {
- if x != nil {
- return x.ClusterIds
+func (x *UpdateStorageRecommendationPolicyRequest) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
}
- return nil
+ return ""
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetNamespaceSelector() []string {
- if x != nil {
- return x.NamespaceSelector
+func (x *UpdateStorageRecommendationPolicyRequest) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
}
- return nil
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetActionTriggers() []ActionTrigger {
- if x != nil {
- return x.ActionTriggers
+func (x *UpdateStorageRecommendationPolicyRequest) GetTargetUtilizationPercent() float32 {
+ if x != nil && x.TargetUtilizationPercent != nil {
+ return *x.TargetUtilizationPercent
}
- return nil
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
+func (x *UpdateStorageRecommendationPolicyRequest) GetWarnDaysToFull() int32 {
+ if x != nil && x.WarnDaysToFull != nil {
+ return *x.WarnDaysToFull
}
- return ""
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetCooldownMinutes() int32 {
- if x != nil && x.CooldownMinutes != nil {
- return *x.CooldownMinutes
+func (x *UpdateStorageRecommendationPolicyRequest) GetMaxExpansionPerAction() float32 {
+ if x != nil && x.MaxExpansionPerAction != nil {
+ return *x.MaxExpansionPerAction
}
return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetDetectionTriggers() []WorkloadDetectionTrigger {
- if x != nil {
- return x.DetectionTriggers
+func (x *UpdateStorageRecommendationPolicyRequest) GetMinDataPoints() int32 {
+ if x != nil && x.MinDataPoints != nil {
+ return *x.MinDataPoints
}
- return nil
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetSchedulerPlugins() []string {
- if x != nil {
- return x.SchedulerPlugins
+func (x *UpdateStorageRecommendationPolicyRequest) GetCriticalDaysToFull() int32 {
+ if x != nil && x.CriticalDaysToFull != nil {
+ return *x.CriticalDaysToFull
}
- return nil
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetDefragmentationSchedule() string {
- if x != nil && x.DefragmentationSchedule != nil {
- return *x.DefragmentationSchedule
+func (x *UpdateStorageRecommendationPolicyRequest) GetHeadroomDays() int32 {
+ if x != nil && x.HeadroomDays != nil {
+ return *x.HeadroomDays
}
- return ""
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetLiveMigrationEnabled() bool {
- if x != nil && x.LiveMigrationEnabled != nil {
- return *x.LiveMigrationEnabled
+func (x *UpdateStorageRecommendationPolicyRequest) GetMinResizeIncrementGib() int32 {
+ if x != nil && x.MinResizeIncrementGib != nil {
+ return *x.MinResizeIncrementGib
}
- return false
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetUseInPlaceVerticalScaling() bool {
- if x != nil && x.UseInPlaceVerticalScaling != nil {
- return *x.UseInPlaceVerticalScaling
+func (x *UpdateStorageRecommendationPolicyRequest) GetMaxMonthlyCostUsd() float32 {
+ if x != nil && x.MaxMonthlyCostUsd != nil {
+ return *x.MaxMonthlyCostUsd
}
- return false
+ return 0
}
-func (x *UpdateWorkloadOptimizationPolicyRequest) GetHpaEnabled() bool {
- if x != nil && x.HpaEnabled != nil {
- return *x.HpaEnabled
+func (x *UpdateStorageRecommendationPolicyRequest) GetCooldownWindowSeconds() int32 {
+ if x != nil && x.CooldownWindowSeconds != nil {
+ return *x.CooldownWindowSeconds
}
- return false
+ return 0
}
-type UpdateWorkloadOptimizationPolicyResponse struct {
+type UpdateStorageRecommendationPolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ Policy *StorageRecommendationPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
}
-func (x *UpdateWorkloadOptimizationPolicyResponse) Reset() {
- *x = UpdateWorkloadOptimizationPolicyResponse{}
+func (x *UpdateStorageRecommendationPolicyResponse) Reset() {
+ *x = UpdateStorageRecommendationPolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[333]
+ mi := &file_api_v1_recommendation_proto_msgTypes[356]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpdateWorkloadOptimizationPolicyResponse) String() string {
+func (x *UpdateStorageRecommendationPolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpdateWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+func (*UpdateStorageRecommendationPolicyResponse) ProtoMessage() {}
-func (x *UpdateWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[333]
+func (x *UpdateStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[356]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26448,45 +29926,44 @@ func (x *UpdateWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use UpdateWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*UpdateWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{333}
+// Deprecated: Use UpdateStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*UpdateStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{356}
}
-func (x *UpdateWorkloadOptimizationPolicyResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+func (x *UpdateStorageRecommendationPolicyResponse) GetPolicy() *StorageRecommendationPolicy {
if x != nil {
return x.Policy
}
return nil
}
-type DeleteWorkloadOptimizationPolicyRequest struct {
+type DeleteStorageRecommendationPolicyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- DeleteRules bool `protobuf:"varint,3,opt,name=delete_rules,json=deleteRules,proto3" json:"delete_rules,omitempty"` // if true, delete associated rules; if false, detach (set policy_id=null)
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *DeleteWorkloadOptimizationPolicyRequest) Reset() {
- *x = DeleteWorkloadOptimizationPolicyRequest{}
+func (x *DeleteStorageRecommendationPolicyRequest) Reset() {
+ *x = DeleteStorageRecommendationPolicyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[334]
+ mi := &file_api_v1_recommendation_proto_msgTypes[357]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteWorkloadOptimizationPolicyRequest) String() string {
+func (x *DeleteStorageRecommendationPolicyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+func (*DeleteStorageRecommendationPolicyRequest) ProtoMessage() {}
-func (x *DeleteWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[334]
+func (x *DeleteStorageRecommendationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[357]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26497,55 +29974,50 @@ func (x *DeleteWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Me
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
-func (*DeleteWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{334}
-}
-
-func (x *DeleteWorkloadOptimizationPolicyRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use DeleteStorageRecommendationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeleteStorageRecommendationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{357}
}
-func (x *DeleteWorkloadOptimizationPolicyRequest) GetPolicyId() string {
+func (x *DeleteStorageRecommendationPolicyRequest) GetPolicyId() string {
if x != nil {
return x.PolicyId
}
return ""
}
-func (x *DeleteWorkloadOptimizationPolicyRequest) GetDeleteRules() bool {
+func (x *DeleteStorageRecommendationPolicyRequest) GetTeamId() string {
if x != nil {
- return x.DeleteRules
+ return x.TeamId
}
- return false
+ return ""
}
-type DeleteWorkloadOptimizationPolicyResponse struct {
+type DeleteStorageRecommendationPolicyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}
-func (x *DeleteWorkloadOptimizationPolicyResponse) Reset() {
- *x = DeleteWorkloadOptimizationPolicyResponse{}
+func (x *DeleteStorageRecommendationPolicyResponse) Reset() {
+ *x = DeleteStorageRecommendationPolicyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[335]
+ mi := &file_api_v1_recommendation_proto_msgTypes[358]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteWorkloadOptimizationPolicyResponse) String() string {
+func (x *DeleteStorageRecommendationPolicyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+func (*DeleteStorageRecommendationPolicyResponse) ProtoMessage() {}
-func (x *DeleteWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[335]
+func (x *DeleteStorageRecommendationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[358]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26556,37 +30028,55 @@ func (x *DeleteWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.M
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
-func (*DeleteWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{335}
+// Deprecated: Use DeleteStorageRecommendationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*DeleteStorageRecommendationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{358}
}
-type GetWorkloadRulesByPolicyRequest struct {
+func (x *DeleteStorageRecommendationPolicyResponse) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+// StoragePolicyTarget maps a storage policy to clusters with targeting filters
+type StoragePolicyTarget struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ TeamId string `protobuf:"bytes,4,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterIds []string `protobuf:"bytes,5,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ PolicyId string `protobuf:"bytes,6,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Enabled bool `protobuf:"varint,10,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ // Targeting filters
+ NamespaceSelector *LabelSelector `protobuf:"bytes,20,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"` // Target namespaces by labels
+ StorageClasses []string `protobuf:"bytes,21,rep,name=storage_classes,json=storageClasses,proto3" json:"storage_classes,omitempty"` // Target specific storage classes
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,50,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
}
-func (x *GetWorkloadRulesByPolicyRequest) Reset() {
- *x = GetWorkloadRulesByPolicyRequest{}
+func (x *StoragePolicyTarget) Reset() {
+ *x = StoragePolicyTarget{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[336]
+ mi := &file_api_v1_recommendation_proto_msgTypes[359]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadRulesByPolicyRequest) String() string {
+func (x *StoragePolicyTarget) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadRulesByPolicyRequest) ProtoMessage() {}
+func (*StoragePolicyTarget) ProtoMessage() {}
-func (x *GetWorkloadRulesByPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[336]
+func (x *StoragePolicyTarget) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[359]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26597,114 +30087,120 @@ func (x *GetWorkloadRulesByPolicyRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadRulesByPolicyRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRulesByPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{336}
+// Deprecated: Use StoragePolicyTarget.ProtoReflect.Descriptor instead.
+func (*StoragePolicyTarget) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{359}
}
-func (x *GetWorkloadRulesByPolicyRequest) GetTeamId() string {
+func (x *StoragePolicyTarget) GetTargetId() string {
if x != nil {
- return x.TeamId
+ return x.TargetId
}
return ""
}
-func (x *GetWorkloadRulesByPolicyRequest) GetPolicyId() string {
+func (x *StoragePolicyTarget) GetName() string {
if x != nil {
- return x.PolicyId
+ return x.Name
}
return ""
}
-type GetWorkloadRulesByPolicyResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ManagedRules []*WorkloadRule `protobuf:"bytes,1,rep,name=managed_rules,json=managedRules,proto3" json:"managed_rules,omitempty"`
- ExcludedRules []*WorkloadRule `protobuf:"bytes,2,rep,name=excluded_rules,json=excludedRules,proto3" json:"excluded_rules,omitempty"`
- ClusterNames map[string]string `protobuf:"bytes,3,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+func (x *StoragePolicyTarget) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
}
-func (x *GetWorkloadRulesByPolicyResponse) Reset() {
- *x = GetWorkloadRulesByPolicyResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[337]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *StoragePolicyTarget) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
}
+ return ""
}
-func (x *GetWorkloadRulesByPolicyResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *StoragePolicyTarget) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
}
-func (*GetWorkloadRulesByPolicyResponse) ProtoMessage() {}
+func (x *StoragePolicyTarget) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
-func (x *GetWorkloadRulesByPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[337]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *StoragePolicyTarget) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
}
- return mi.MessageOf(x)
+ return false
}
-// Deprecated: Use GetWorkloadRulesByPolicyResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRulesByPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{337}
+func (x *StoragePolicyTarget) GetNamespaceSelector() *LabelSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
}
-func (x *GetWorkloadRulesByPolicyResponse) GetManagedRules() []*WorkloadRule {
+func (x *StoragePolicyTarget) GetStorageClasses() []string {
if x != nil {
- return x.ManagedRules
+ return x.StorageClasses
}
return nil
}
-func (x *GetWorkloadRulesByPolicyResponse) GetExcludedRules() []*WorkloadRule {
+func (x *StoragePolicyTarget) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.ExcludedRules
+ return x.CreatedAt
}
return nil
}
-func (x *GetWorkloadRulesByPolicyResponse) GetClusterNames() map[string]string {
+func (x *StoragePolicyTarget) GetUpdatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.ClusterNames
+ return x.UpdatedAt
}
return nil
}
-type ListWorkloadRulesRequest struct {
+type CreateStoragePolicyTargetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+ TeamId string `protobuf:"bytes,3,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterIds []string `protobuf:"bytes,4,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ PolicyId string `protobuf:"bytes,5,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Enabled bool `protobuf:"varint,6,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ NamespaceSelector *LabelSelector `protobuf:"bytes,20,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
+ StorageClasses []string `protobuf:"bytes,21,rep,name=storage_classes,json=storageClasses,proto3" json:"storage_classes,omitempty"`
}
-func (x *ListWorkloadRulesRequest) Reset() {
- *x = ListWorkloadRulesRequest{}
+func (x *CreateStoragePolicyTargetRequest) Reset() {
+ *x = CreateStoragePolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[338]
+ mi := &file_api_v1_recommendation_proto_msgTypes[360]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ListWorkloadRulesRequest) String() string {
+func (x *CreateStoragePolicyTargetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ListWorkloadRulesRequest) ProtoMessage() {}
+func (*CreateStoragePolicyTargetRequest) ProtoMessage() {}
-func (x *ListWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[338]
+func (x *CreateStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[360]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26715,170 +30211,92 @@ func (x *ListWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ListWorkloadRulesRequest.ProtoReflect.Descriptor instead.
-func (*ListWorkloadRulesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{338}
+// Deprecated: Use CreateStoragePolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*CreateStoragePolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{360}
}
-func (x *ListWorkloadRulesRequest) GetTeamId() string {
+func (x *CreateStoragePolicyTargetRequest) GetName() string {
if x != nil {
- return x.TeamId
+ return x.Name
}
return ""
}
-func (x *ListWorkloadRulesRequest) GetClusterId() string {
- if x != nil && x.ClusterId != nil {
- return *x.ClusterId
+func (x *CreateStoragePolicyTargetRequest) GetDescription() string {
+ if x != nil {
+ return x.Description
}
return ""
}
-type ListWorkloadRulesResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Rules []*WorkloadRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
- ClusterNames map[string]string `protobuf:"bytes,2,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // cluster_id → display name
- PolicyNames map[string]string `protobuf:"bytes,3,rep,name=policy_names,json=policyNames,proto3" json:"policy_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // policy_id → policy name
+func (x *CreateStoragePolicyTargetRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
}
-func (x *ListWorkloadRulesResponse) Reset() {
- *x = ListWorkloadRulesResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[339]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *CreateStoragePolicyTargetRequest) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
}
+ return nil
}
-func (x *ListWorkloadRulesResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *CreateStoragePolicyTargetRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
}
-func (*ListWorkloadRulesResponse) ProtoMessage() {}
+func (x *CreateStoragePolicyTargetRequest) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
-func (x *ListWorkloadRulesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[339]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListWorkloadRulesResponse.ProtoReflect.Descriptor instead.
-func (*ListWorkloadRulesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{339}
-}
-
-func (x *ListWorkloadRulesResponse) GetRules() []*WorkloadRule {
- if x != nil {
- return x.Rules
- }
- return nil
-}
-
-func (x *ListWorkloadRulesResponse) GetClusterNames() map[string]string {
+func (x *CreateStoragePolicyTargetRequest) GetNamespaceSelector() *LabelSelector {
if x != nil {
- return x.ClusterNames
+ return x.NamespaceSelector
}
return nil
}
-func (x *ListWorkloadRulesResponse) GetPolicyNames() map[string]string {
+func (x *CreateStoragePolicyTargetRequest) GetStorageClasses() []string {
if x != nil {
- return x.PolicyNames
+ return x.StorageClasses
}
return nil
}
-type GetWorkloadRuleByIDRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
-}
-
-func (x *GetWorkloadRuleByIDRequest) Reset() {
- *x = GetWorkloadRuleByIDRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[340]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetWorkloadRuleByIDRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetWorkloadRuleByIDRequest) ProtoMessage() {}
-
-func (x *GetWorkloadRuleByIDRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[340]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetWorkloadRuleByIDRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRuleByIDRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{340}
-}
-
-func (x *GetWorkloadRuleByIDRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByIDRequest) GetRuleId() string {
- if x != nil {
- return x.RuleId
- }
- return ""
-}
-
-type GetWorkloadRuleByIDResponse struct {
+type CreateStoragePolicyTargetResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
- ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // display name of rule.cluster_id
- PolicyName string `protobuf:"bytes,3,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"` // display name of rule.policy_id (empty if no policy attached)
+ Target *StoragePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
}
-func (x *GetWorkloadRuleByIDResponse) Reset() {
- *x = GetWorkloadRuleByIDResponse{}
+func (x *CreateStoragePolicyTargetResponse) Reset() {
+ *x = CreateStoragePolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[341]
+ mi := &file_api_v1_recommendation_proto_msgTypes[361]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadRuleByIDResponse) String() string {
+func (x *CreateStoragePolicyTargetResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadRuleByIDResponse) ProtoMessage() {}
+func (*CreateStoragePolicyTargetResponse) ProtoMessage() {}
-func (x *GetWorkloadRuleByIDResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[341]
+func (x *CreateStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[361]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26889,62 +30307,44 @@ func (x *GetWorkloadRuleByIDResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadRuleByIDResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRuleByIDResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{341}
+// Deprecated: Use CreateStoragePolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*CreateStoragePolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{361}
}
-func (x *GetWorkloadRuleByIDResponse) GetRule() *WorkloadRule {
+func (x *CreateStoragePolicyTargetResponse) GetTarget() *StoragePolicyTarget {
if x != nil {
- return x.Rule
+ return x.Target
}
return nil
}
-func (x *GetWorkloadRuleByIDResponse) GetClusterName() string {
- if x != nil {
- return x.ClusterName
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByIDResponse) GetPolicyName() string {
- if x != nil {
- return x.PolicyName
- }
- return ""
-}
-
-// GetWorkloadRuleByWorkloadRequest looks up a single rule by workload coordinates.
-type GetWorkloadRuleByWorkloadRequest struct {
+type ListStoragePolicyTargetsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
- WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
}
-func (x *GetWorkloadRuleByWorkloadRequest) Reset() {
- *x = GetWorkloadRuleByWorkloadRequest{}
+func (x *ListStoragePolicyTargetsRequest) Reset() {
+ *x = ListStoragePolicyTargetsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[342]
+ mi := &file_api_v1_recommendation_proto_msgTypes[362]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadRuleByWorkloadRequest) String() string {
+func (x *ListStoragePolicyTargetsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadRuleByWorkloadRequest) ProtoMessage() {}
+func (*ListStoragePolicyTargetsRequest) ProtoMessage() {}
-func (x *GetWorkloadRuleByWorkloadRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[342]
+func (x *ListStoragePolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[362]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -26955,77 +30355,50 @@ func (x *GetWorkloadRuleByWorkloadRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadRuleByWorkloadRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRuleByWorkloadRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{342}
+// Deprecated: Use ListStoragePolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*ListStoragePolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{362}
}
-func (x *GetWorkloadRuleByWorkloadRequest) GetTeamId() string {
+func (x *ListStoragePolicyTargetsRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetWorkloadRuleByWorkloadRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByWorkloadRequest) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByWorkloadRequest) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByWorkloadRequest) GetWorkloadName() string {
- if x != nil {
- return x.WorkloadName
+func (x *ListStoragePolicyTargetsRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
}
return ""
}
-// GetWorkloadRuleByWorkloadResponse returns the rule for a workload (if any) plus display metadata.
-// Returns found = false (with rule unset) when no rule exists for the given coordinates;
-// internal errors continue to surface as gRPC error statuses.
-type GetWorkloadRuleByWorkloadResponse struct {
+type ListStoragePolicyTargetsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
- ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // display name of rule.cluster_id (when found)
- PolicyName string `protobuf:"bytes,3,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"` // display name of rule.policy_id (empty if no policy attached)
- Found bool `protobuf:"varint,4,opt,name=found,proto3" json:"found,omitempty"` // true when a matching rule exists
+ Targets []*StoragePolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
}
-func (x *GetWorkloadRuleByWorkloadResponse) Reset() {
- *x = GetWorkloadRuleByWorkloadResponse{}
+func (x *ListStoragePolicyTargetsResponse) Reset() {
+ *x = ListStoragePolicyTargetsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[343]
+ mi := &file_api_v1_recommendation_proto_msgTypes[363]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadRuleByWorkloadResponse) String() string {
+func (x *ListStoragePolicyTargetsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadRuleByWorkloadResponse) ProtoMessage() {}
+func (*ListStoragePolicyTargetsResponse) ProtoMessage() {}
-func (x *GetWorkloadRuleByWorkloadResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[343]
+func (x *ListStoragePolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[363]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27036,68 +30409,43 @@ func (x *GetWorkloadRuleByWorkloadResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadRuleByWorkloadResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadRuleByWorkloadResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{343}
+// Deprecated: Use ListStoragePolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*ListStoragePolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{363}
}
-func (x *GetWorkloadRuleByWorkloadResponse) GetRule() *WorkloadRule {
+func (x *ListStoragePolicyTargetsResponse) GetTargets() []*StoragePolicyTarget {
if x != nil {
- return x.Rule
+ return x.Targets
}
return nil
}
-func (x *GetWorkloadRuleByWorkloadResponse) GetClusterName() string {
- if x != nil {
- return x.ClusterName
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByWorkloadResponse) GetPolicyName() string {
- if x != nil {
- return x.PolicyName
- }
- return ""
-}
-
-func (x *GetWorkloadRuleByWorkloadResponse) GetFound() bool {
- if x != nil {
- return x.Found
- }
- return false
-}
-
-// GetWorkloadByWorkloadRuleRequest resolves the live workload UID for a rule.
-// Lightweight lookup — does not return full workload data, just the uid that
-// downstream RPCs (e.g. GetWorkloadProfiles, GetWorkload) require.
-type GetWorkloadByWorkloadRuleRequest struct {
+type UpdateStoragePolicyTargetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ Target *StoragePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
}
-func (x *GetWorkloadByWorkloadRuleRequest) Reset() {
- *x = GetWorkloadByWorkloadRuleRequest{}
+func (x *UpdateStoragePolicyTargetRequest) Reset() {
+ *x = UpdateStoragePolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[344]
+ mi := &file_api_v1_recommendation_proto_msgTypes[364]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadByWorkloadRuleRequest) String() string {
+func (x *UpdateStoragePolicyTargetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadByWorkloadRuleRequest) ProtoMessage() {}
+func (*UpdateStoragePolicyTargetRequest) ProtoMessage() {}
-func (x *GetWorkloadByWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[344]
+func (x *UpdateStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[364]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27108,50 +30456,43 @@ func (x *GetWorkloadByWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadByWorkloadRuleRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadByWorkloadRuleRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{344}
-}
-
-func (x *GetWorkloadByWorkloadRuleRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use UpdateStoragePolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*UpdateStoragePolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{364}
}
-func (x *GetWorkloadByWorkloadRuleRequest) GetRuleId() string {
+func (x *UpdateStoragePolicyTargetRequest) GetTarget() *StoragePolicyTarget {
if x != nil {
- return x.RuleId
+ return x.Target
}
- return ""
+ return nil
}
-type GetWorkloadByWorkloadRuleResponse struct {
+type UpdateStoragePolicyTargetResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- WorkloadUid string `protobuf:"bytes,1,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"` // empty when no live workload matches the rule's coordinates
+ Target *StoragePolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
}
-func (x *GetWorkloadByWorkloadRuleResponse) Reset() {
- *x = GetWorkloadByWorkloadRuleResponse{}
+func (x *UpdateStoragePolicyTargetResponse) Reset() {
+ *x = UpdateStoragePolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[345]
+ mi := &file_api_v1_recommendation_proto_msgTypes[365]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadByWorkloadRuleResponse) String() string {
+func (x *UpdateStoragePolicyTargetResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadByWorkloadRuleResponse) ProtoMessage() {}
+func (*UpdateStoragePolicyTargetResponse) ProtoMessage() {}
-func (x *GetWorkloadByWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[345]
+func (x *UpdateStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[365]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27162,44 +30503,44 @@ func (x *GetWorkloadByWorkloadRuleResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadByWorkloadRuleResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadByWorkloadRuleResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{345}
+// Deprecated: Use UpdateStoragePolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*UpdateStoragePolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{365}
}
-func (x *GetWorkloadByWorkloadRuleResponse) GetWorkloadUid() string {
+func (x *UpdateStoragePolicyTargetResponse) GetTarget() *StoragePolicyTarget {
if x != nil {
- return x.WorkloadUid
+ return x.Target
}
- return ""
+ return nil
}
-type DeleteWorkloadRuleRequest struct {
+type DeleteStoragePolicyTargetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
}
-func (x *DeleteWorkloadRuleRequest) Reset() {
- *x = DeleteWorkloadRuleRequest{}
+func (x *DeleteStoragePolicyTargetRequest) Reset() {
+ *x = DeleteStoragePolicyTargetRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[346]
+ mi := &file_api_v1_recommendation_proto_msgTypes[366]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteWorkloadRuleRequest) String() string {
+func (x *DeleteStoragePolicyTargetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteWorkloadRuleRequest) ProtoMessage() {}
+func (*DeleteStoragePolicyTargetRequest) ProtoMessage() {}
-func (x *DeleteWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[346]
+func (x *DeleteStoragePolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[366]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27210,48 +30551,50 @@ func (x *DeleteWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteWorkloadRuleRequest.ProtoReflect.Descriptor instead.
-func (*DeleteWorkloadRuleRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{346}
+// Deprecated: Use DeleteStoragePolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*DeleteStoragePolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{366}
}
-func (x *DeleteWorkloadRuleRequest) GetTeamId() string {
+func (x *DeleteStoragePolicyTargetRequest) GetTargetId() string {
if x != nil {
- return x.TeamId
+ return x.TargetId
}
return ""
}
-func (x *DeleteWorkloadRuleRequest) GetRuleId() string {
+func (x *DeleteStoragePolicyTargetRequest) GetTeamId() string {
if x != nil {
- return x.RuleId
+ return x.TeamId
}
return ""
}
-type DeleteWorkloadRuleResponse struct {
+type DeleteStoragePolicyTargetResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}
-func (x *DeleteWorkloadRuleResponse) Reset() {
- *x = DeleteWorkloadRuleResponse{}
+func (x *DeleteStoragePolicyTargetResponse) Reset() {
+ *x = DeleteStoragePolicyTargetResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[347]
+ mi := &file_api_v1_recommendation_proto_msgTypes[367]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *DeleteWorkloadRuleResponse) String() string {
+func (x *DeleteStoragePolicyTargetResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DeleteWorkloadRuleResponse) ProtoMessage() {}
+func (*DeleteStoragePolicyTargetResponse) ProtoMessage() {}
-func (x *DeleteWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[347]
+func (x *DeleteStoragePolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[367]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27262,55 +30605,72 @@ func (x *DeleteWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DeleteWorkloadRuleResponse.ProtoReflect.Descriptor instead.
-func (*DeleteWorkloadRuleResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{347}
+// Deprecated: Use DeleteStoragePolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*DeleteStoragePolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{367}
}
-// ManualRuleFields carries the user-configurable rule fields shared by the
-// Upsert and Preview RPCs. Extracted as its own message so the two request
-// messages stay shape-aligned and the Go conversion logic has a single entry
-// point.
-type ManualRuleFields struct {
+func (x *DeleteStoragePolicyTargetResponse) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+// PvcStorageRecommendation represents a specific recommendation for a PVC
+type PvcStorageRecommendation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CpuRule *ResourceRuleConfig `protobuf:"bytes,1,opt,name=cpu_rule,json=cpuRule,proto3" json:"cpu_rule,omitempty"`
- MemoryRule *ResourceRuleConfig `protobuf:"bytes,2,opt,name=memory_rule,json=memoryRule,proto3" json:"memory_rule,omitempty"`
- GpuRule *ResourceRuleConfig `protobuf:"bytes,3,opt,name=gpu_rule,json=gpuRule,proto3" json:"gpu_rule,omitempty"`
- HpaRule *HPARuleConfig `protobuf:"bytes,4,opt,name=hpa_rule,json=hpaRule,proto3" json:"hpa_rule,omitempty"`
- EmergencyResponse *EmergencyResponseConfig `protobuf:"bytes,5,opt,name=emergency_response,json=emergencyResponse,proto3" json:"emergency_response,omitempty"`
- ActionTriggers []ActionTrigger `protobuf:"varint,6,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
- StartupPeriodSeconds *int64 `protobuf:"varint,7,opt,name=startup_period_seconds,json=startupPeriodSeconds,proto3,oneof" json:"startup_period_seconds,omitempty"`
- CronSchedule *string `protobuf:"bytes,8,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
- CooldownMinutes *int32 `protobuf:"varint,9,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
- DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,10,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
- SchedulerPlugins []string `protobuf:"bytes,11,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
- DefragmentationSchedule *string `protobuf:"bytes,12,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
- LiveMigrationEnabled bool `protobuf:"varint,13,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3" json:"live_migration_enabled,omitempty"`
- UseInPlaceVerticalScaling bool `protobuf:"varint,14,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
- // Per-container resource configs (VPA). When empty, workload-level rules apply to all containers.
- Containers []*ContainerResourceRuleConfig `protobuf:"bytes,15,rep,name=containers,proto3" json:"containers,omitempty"`
+ RecommendationId string `protobuf:"bytes,1,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
+ PvcUid string `protobuf:"bytes,2,opt,name=pvc_uid,json=pvcUid,proto3" json:"pvc_uid,omitempty"`
+ PvcName string `protobuf:"bytes,3,opt,name=pvc_name,json=pvcName,proto3" json:"pvc_name,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ ClusterId string `protobuf:"bytes,5,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ TeamId string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ CurrentCapacityBytes int64 `protobuf:"varint,10,opt,name=current_capacity_bytes,json=currentCapacityBytes,proto3" json:"current_capacity_bytes,omitempty"`
+ RecommendedCapacityBytes int64 `protobuf:"varint,11,opt,name=recommended_capacity_bytes,json=recommendedCapacityBytes,proto3" json:"recommended_capacity_bytes,omitempty"`
+ UsedBytesAtTime int64 `protobuf:"varint,12,opt,name=used_bytes_at_time,json=usedBytesAtTime,proto3" json:"used_bytes_at_time,omitempty"`
+ UtilizationPct float64 `protobuf:"fixed64,13,opt,name=utilization_pct,json=utilizationPct,proto3" json:"utilization_pct,omitempty"`
+ GrowthRateBytesPerDay float64 `protobuf:"fixed64,14,opt,name=growth_rate_bytes_per_day,json=growthRateBytesPerDay,proto3" json:"growth_rate_bytes_per_day,omitempty"`
+ DaysToFull float64 `protobuf:"fixed64,15,opt,name=days_to_full,json=daysToFull,proto3" json:"days_to_full,omitempty"`
+ ConfidenceScore float64 `protobuf:"fixed64,16,opt,name=confidence_score,json=confidenceScore,proto3" json:"confidence_score,omitempty"`
+ PolicyId string `protobuf:"bytes,20,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ PolicyTargetId *string `protobuf:"bytes,21,opt,name=policy_target_id,json=policyTargetId,proto3,oneof" json:"policy_target_id,omitempty"`
+ CostCurrentMonthlyUsd float64 `protobuf:"fixed64,25,opt,name=cost_current_monthly_usd,json=costCurrentMonthlyUsd,proto3" json:"cost_current_monthly_usd,omitempty"`
+ CostRecommendedMonthlyUsd float64 `protobuf:"fixed64,26,opt,name=cost_recommended_monthly_usd,json=costRecommendedMonthlyUsd,proto3" json:"cost_recommended_monthly_usd,omitempty"`
+ CostDeltaMonthlyUsd float64 `protobuf:"fixed64,27,opt,name=cost_delta_monthly_usd,json=costDeltaMonthlyUsd,proto3" json:"cost_delta_monthly_usd,omitempty"`
+ Status RecommendationStatus `protobuf:"varint,30,opt,name=status,proto3,enum=api.v1.RecommendationStatus" json:"status,omitempty"`
+ Reasoning *string `protobuf:"bytes,31,opt,name=reasoning,proto3,oneof" json:"reasoning,omitempty"`
+ Error *string `protobuf:"bytes,32,opt,name=error,proto3,oneof" json:"error,omitempty"`
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,40,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ AppliedAt *timestamppb.Timestamp `protobuf:"bytes,41,opt,name=applied_at,json=appliedAt,proto3,oneof" json:"applied_at,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,50,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ OperationType PvcOperationType `protobuf:"varint,60,opt,name=operation_type,json=operationType,proto3,enum=api.v1.PvcOperationType" json:"operation_type,omitempty"`
+ WorkloadKind *string `protobuf:"bytes,61,opt,name=workload_kind,json=workloadKind,proto3,oneof" json:"workload_kind,omitempty"`
+ WorkloadName *string `protobuf:"bytes,62,opt,name=workload_name,json=workloadName,proto3,oneof" json:"workload_name,omitempty"`
+ WorkloadUid *string `protobuf:"bytes,63,opt,name=workload_uid,json=workloadUid,proto3,oneof" json:"workload_uid,omitempty"`
}
-func (x *ManualRuleFields) Reset() {
- *x = ManualRuleFields{}
+func (x *PvcStorageRecommendation) Reset() {
+ *x = PvcStorageRecommendation{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[348]
+ mi := &file_api_v1_recommendation_proto_msgTypes[368]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *ManualRuleFields) String() string {
+func (x *PvcStorageRecommendation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ManualRuleFields) ProtoMessage() {}
+func (*PvcStorageRecommendation) ProtoMessage() {}
-func (x *ManualRuleFields) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[348]
+func (x *PvcStorageRecommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[368]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27321,249 +30681,239 @@ func (x *ManualRuleFields) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ManualRuleFields.ProtoReflect.Descriptor instead.
-func (*ManualRuleFields) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{348}
+// Deprecated: Use PvcStorageRecommendation.ProtoReflect.Descriptor instead.
+func (*PvcStorageRecommendation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{368}
}
-func (x *ManualRuleFields) GetCpuRule() *ResourceRuleConfig {
+func (x *PvcStorageRecommendation) GetRecommendationId() string {
if x != nil {
- return x.CpuRule
+ return x.RecommendationId
}
- return nil
+ return ""
}
-func (x *ManualRuleFields) GetMemoryRule() *ResourceRuleConfig {
+func (x *PvcStorageRecommendation) GetPvcUid() string {
if x != nil {
- return x.MemoryRule
+ return x.PvcUid
}
- return nil
+ return ""
}
-func (x *ManualRuleFields) GetGpuRule() *ResourceRuleConfig {
+func (x *PvcStorageRecommendation) GetPvcName() string {
if x != nil {
- return x.GpuRule
+ return x.PvcName
}
- return nil
+ return ""
}
-func (x *ManualRuleFields) GetHpaRule() *HPARuleConfig {
+func (x *PvcStorageRecommendation) GetNamespace() string {
if x != nil {
- return x.HpaRule
+ return x.Namespace
}
- return nil
+ return ""
}
-func (x *ManualRuleFields) GetEmergencyResponse() *EmergencyResponseConfig {
+func (x *PvcStorageRecommendation) GetClusterId() string {
if x != nil {
- return x.EmergencyResponse
+ return x.ClusterId
}
- return nil
+ return ""
}
-func (x *ManualRuleFields) GetActionTriggers() []ActionTrigger {
+func (x *PvcStorageRecommendation) GetTeamId() string {
if x != nil {
- return x.ActionTriggers
+ return x.TeamId
}
- return nil
+ return ""
}
-func (x *ManualRuleFields) GetStartupPeriodSeconds() int64 {
- if x != nil && x.StartupPeriodSeconds != nil {
- return *x.StartupPeriodSeconds
+func (x *PvcStorageRecommendation) GetCurrentCapacityBytes() int64 {
+ if x != nil {
+ return x.CurrentCapacityBytes
}
return 0
}
-func (x *ManualRuleFields) GetCronSchedule() string {
- if x != nil && x.CronSchedule != nil {
- return *x.CronSchedule
+func (x *PvcStorageRecommendation) GetRecommendedCapacityBytes() int64 {
+ if x != nil {
+ return x.RecommendedCapacityBytes
}
- return ""
+ return 0
}
-func (x *ManualRuleFields) GetCooldownMinutes() int32 {
- if x != nil && x.CooldownMinutes != nil {
- return *x.CooldownMinutes
+func (x *PvcStorageRecommendation) GetUsedBytesAtTime() int64 {
+ if x != nil {
+ return x.UsedBytesAtTime
}
return 0
}
-func (x *ManualRuleFields) GetDetectionTriggers() []WorkloadDetectionTrigger {
+func (x *PvcStorageRecommendation) GetUtilizationPct() float64 {
if x != nil {
- return x.DetectionTriggers
+ return x.UtilizationPct
}
- return nil
+ return 0
}
-func (x *ManualRuleFields) GetSchedulerPlugins() []string {
+func (x *PvcStorageRecommendation) GetGrowthRateBytesPerDay() float64 {
if x != nil {
- return x.SchedulerPlugins
+ return x.GrowthRateBytesPerDay
}
- return nil
+ return 0
}
-func (x *ManualRuleFields) GetDefragmentationSchedule() string {
- if x != nil && x.DefragmentationSchedule != nil {
- return *x.DefragmentationSchedule
+func (x *PvcStorageRecommendation) GetDaysToFull() float64 {
+ if x != nil {
+ return x.DaysToFull
}
- return ""
+ return 0
}
-func (x *ManualRuleFields) GetLiveMigrationEnabled() bool {
+func (x *PvcStorageRecommendation) GetConfidenceScore() float64 {
if x != nil {
- return x.LiveMigrationEnabled
+ return x.ConfidenceScore
}
- return false
+ return 0
}
-func (x *ManualRuleFields) GetUseInPlaceVerticalScaling() bool {
+func (x *PvcStorageRecommendation) GetPolicyId() string {
if x != nil {
- return x.UseInPlaceVerticalScaling
+ return x.PolicyId
}
- return false
+ return ""
}
-func (x *ManualRuleFields) GetContainers() []*ContainerResourceRuleConfig {
- if x != nil {
- return x.Containers
+func (x *PvcStorageRecommendation) GetPolicyTargetId() string {
+ if x != nil && x.PolicyTargetId != nil {
+ return *x.PolicyTargetId
}
- return nil
+ return ""
}
-type UpsertManualWorkloadRuleRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
- AutoGenerate bool `protobuf:"varint,6,opt,name=auto_generate,json=autoGenerate,proto3" json:"auto_generate,omitempty"`
- // Manual fields (only used when auto_generate = false).
- Fields *ManualRuleFields `protobuf:"bytes,10,opt,name=fields,proto3" json:"fields,omitempty"`
- // Optional: identifies which caller is upserting this rule. When unset,
- // the server defaults to WORKLOAD_RULE_SOURCE_MANUAL (legacy UI behavior).
- // External IaC providers (pulumi, terraform) MUST set this so the rule
- // can be attributed in audit and UI surfaces.
- Source WorkloadRuleSource `protobuf:"varint,11,opt,name=source,proto3,enum=api.v1.WorkloadRuleSource" json:"source,omitempty"`
+func (x *PvcStorageRecommendation) GetCostCurrentMonthlyUsd() float64 {
+ if x != nil {
+ return x.CostCurrentMonthlyUsd
+ }
+ return 0
}
-func (x *UpsertManualWorkloadRuleRequest) Reset() {
- *x = UpsertManualWorkloadRuleRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[349]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *PvcStorageRecommendation) GetCostRecommendedMonthlyUsd() float64 {
+ if x != nil {
+ return x.CostRecommendedMonthlyUsd
}
+ return 0
}
-func (x *UpsertManualWorkloadRuleRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *PvcStorageRecommendation) GetCostDeltaMonthlyUsd() float64 {
+ if x != nil {
+ return x.CostDeltaMonthlyUsd
+ }
+ return 0
}
-func (*UpsertManualWorkloadRuleRequest) ProtoMessage() {}
-
-func (x *UpsertManualWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[349]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *PvcStorageRecommendation) GetStatus() RecommendationStatus {
+ if x != nil {
+ return x.Status
}
- return mi.MessageOf(x)
+ return RecommendationStatus_RECOMMENDATION_STATUS_UNSPECIFIED
}
-// Deprecated: Use UpsertManualWorkloadRuleRequest.ProtoReflect.Descriptor instead.
-func (*UpsertManualWorkloadRuleRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{349}
+func (x *PvcStorageRecommendation) GetReasoning() string {
+ if x != nil && x.Reasoning != nil {
+ return *x.Reasoning
+ }
+ return ""
}
-func (x *UpsertManualWorkloadRuleRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
+func (x *PvcStorageRecommendation) GetError() string {
+ if x != nil && x.Error != nil {
+ return *x.Error
}
return ""
}
-func (x *UpsertManualWorkloadRuleRequest) GetClusterId() string {
+func (x *PvcStorageRecommendation) GetTimestamp() *timestamppb.Timestamp {
if x != nil {
- return x.ClusterId
+ return x.Timestamp
}
- return ""
+ return nil
}
-func (x *UpsertManualWorkloadRuleRequest) GetNamespace() string {
+func (x *PvcStorageRecommendation) GetAppliedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Namespace
+ return x.AppliedAt
}
- return ""
+ return nil
}
-func (x *UpsertManualWorkloadRuleRequest) GetKind() string {
+func (x *PvcStorageRecommendation) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Kind
+ return x.CreatedAt
}
- return ""
+ return nil
}
-func (x *UpsertManualWorkloadRuleRequest) GetName() string {
+func (x *PvcStorageRecommendation) GetUpdatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Name
+ return x.UpdatedAt
}
- return ""
+ return nil
}
-func (x *UpsertManualWorkloadRuleRequest) GetAutoGenerate() bool {
+func (x *PvcStorageRecommendation) GetOperationType() PvcOperationType {
if x != nil {
- return x.AutoGenerate
+ return x.OperationType
}
- return false
+ return PvcOperationType_PVC_OPERATION_TYPE_UNSPECIFIED
}
-func (x *UpsertManualWorkloadRuleRequest) GetFields() *ManualRuleFields {
- if x != nil {
- return x.Fields
+func (x *PvcStorageRecommendation) GetWorkloadKind() string {
+ if x != nil && x.WorkloadKind != nil {
+ return *x.WorkloadKind
}
- return nil
+ return ""
}
-func (x *UpsertManualWorkloadRuleRequest) GetSource() WorkloadRuleSource {
- if x != nil {
- return x.Source
+func (x *PvcStorageRecommendation) GetWorkloadName() string {
+ if x != nil && x.WorkloadName != nil {
+ return *x.WorkloadName
}
- return WorkloadRuleSource_WORKLOAD_RULE_SOURCE_UNSPECIFIED
+ return ""
}
-type UpsertManualWorkloadRuleResponse struct {
+func (x *PvcStorageRecommendation) GetWorkloadUid() string {
+ if x != nil && x.WorkloadUid != nil {
+ return *x.WorkloadUid
+ }
+ return ""
+}
+
+type GetPvcStorageRecommendationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
+ RecommendationId string `protobuf:"bytes,1,opt,name=recommendation_id,json=recommendationId,proto3" json:"recommendation_id,omitempty"`
}
-func (x *UpsertManualWorkloadRuleResponse) Reset() {
- *x = UpsertManualWorkloadRuleResponse{}
+func (x *GetPvcStorageRecommendationRequest) Reset() {
+ *x = GetPvcStorageRecommendationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[350]
+ mi := &file_api_v1_recommendation_proto_msgTypes[369]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *UpsertManualWorkloadRuleResponse) String() string {
+func (x *GetPvcStorageRecommendationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*UpsertManualWorkloadRuleResponse) ProtoMessage() {}
+func (*GetPvcStorageRecommendationRequest) ProtoMessage() {}
-func (x *UpsertManualWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[350]
+func (x *GetPvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[369]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27574,53 +30924,43 @@ func (x *UpsertManualWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use UpsertManualWorkloadRuleResponse.ProtoReflect.Descriptor instead.
-func (*UpsertManualWorkloadRuleResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{350}
+// Deprecated: Use GetPvcStorageRecommendationRequest.ProtoReflect.Descriptor instead.
+func (*GetPvcStorageRecommendationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{369}
}
-func (x *UpsertManualWorkloadRuleResponse) GetRule() *WorkloadRule {
+func (x *GetPvcStorageRecommendationRequest) GetRecommendationId() string {
if x != nil {
- return x.Rule
+ return x.RecommendationId
}
- return nil
+ return ""
}
-// PreviewWorkloadRuleRequest mirrors the upsert request but does not
-// persist anything; returns a side-by-side preview instead.
-type PreviewWorkloadRuleRequest struct {
+type GetPvcStorageRecommendationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
- // Required so the server can fetch the workload's profile (percentiles,
- // behavior). The form already has uid for any existing workload.
- WorkloadUid string `protobuf:"bytes,6,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
- Fields *ManualRuleFields `protobuf:"bytes,10,opt,name=fields,proto3" json:"fields,omitempty"`
+ Recommendation *PvcStorageRecommendation `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
}
-func (x *PreviewWorkloadRuleRequest) Reset() {
- *x = PreviewWorkloadRuleRequest{}
+func (x *GetPvcStorageRecommendationResponse) Reset() {
+ *x = GetPvcStorageRecommendationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[351]
+ mi := &file_api_v1_recommendation_proto_msgTypes[370]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PreviewWorkloadRuleRequest) String() string {
+func (x *GetPvcStorageRecommendationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PreviewWorkloadRuleRequest) ProtoMessage() {}
+func (*GetPvcStorageRecommendationResponse) ProtoMessage() {}
-func (x *PreviewWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[351]
+func (x *GetPvcStorageRecommendationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[370]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27631,101 +30971,107 @@ func (x *PreviewWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PreviewWorkloadRuleRequest.ProtoReflect.Descriptor instead.
-func (*PreviewWorkloadRuleRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{351}
+// Deprecated: Use GetPvcStorageRecommendationResponse.ProtoReflect.Descriptor instead.
+func (*GetPvcStorageRecommendationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{370}
}
-func (x *PreviewWorkloadRuleRequest) GetTeamId() string {
+func (x *GetPvcStorageRecommendationResponse) GetRecommendation() *PvcStorageRecommendation {
if x != nil {
- return x.TeamId
+ return x.Recommendation
}
- return ""
+ return nil
}
-func (x *PreviewWorkloadRuleRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
+type ListPvcStorageRecommendationsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
+ Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"`
}
-func (x *PreviewWorkloadRuleRequest) GetNamespace() string {
- if x != nil {
- return x.Namespace
+func (x *ListPvcStorageRecommendationsRequest) Reset() {
+ *x = ListPvcStorageRecommendationsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[371]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return ""
}
-func (x *PreviewWorkloadRuleRequest) GetKind() string {
- if x != nil {
- return x.Kind
+func (x *ListPvcStorageRecommendationsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListPvcStorageRecommendationsRequest) ProtoMessage() {}
+
+func (x *ListPvcStorageRecommendationsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[371]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return ""
+ return mi.MessageOf(x)
}
-func (x *PreviewWorkloadRuleRequest) GetName() string {
+// Deprecated: Use ListPvcStorageRecommendationsRequest.ProtoReflect.Descriptor instead.
+func (*ListPvcStorageRecommendationsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{371}
+}
+
+func (x *ListPvcStorageRecommendationsRequest) GetTeamId() string {
if x != nil {
- return x.Name
+ return x.TeamId
}
return ""
}
-func (x *PreviewWorkloadRuleRequest) GetWorkloadUid() string {
- if x != nil {
- return x.WorkloadUid
+func (x *ListPvcStorageRecommendationsRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
}
return ""
}
-func (x *PreviewWorkloadRuleRequest) GetFields() *ManualRuleFields {
+func (x *ListPvcStorageRecommendationsRequest) GetPagination() *Pagination {
if x != nil {
- return x.Fields
+ return x.Pagination
}
return nil
}
-type PreviewWorkloadRuleResponse struct {
+type ListPvcStorageRecommendationsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Materialized rule — engine output overlaid with the user's draft as
- // constraints (engine's BaseRequest clamped to user's min/max, multipliers
- // overridden, etc.). When `fields` is empty/missing, equals engine_projection.
- // Same shape as a saved rule.
- MaterializedRule *WorkloadRule `protobuf:"bytes,1,opt,name=materialized_rule,json=materializedRule,proto3" json:"materialized_rule,omitempty"`
- // Engine projection — pure-engine recommendation (classification-driven,
- // no user constraints). Stable benchmark; same maths Apply uses for auto.
- // Empty when profile data is insufficient; see engine_projection_unavailable_reason.
- EngineProjection *WorkloadRule `protobuf:"bytes,2,opt,name=engine_projection,json=engineProjection,proto3" json:"engine_projection,omitempty"`
- // Observed profile (per-container percentiles, behavior, classification,
- // currently configured resources). Same shape as GetWorkloadProfiles
- // single-workload result.
- Profile *WorkloadProfileResult `protobuf:"bytes,3,opt,name=profile,proto3" json:"profile,omitempty"`
- // Set when the engine couldn't produce a projection (insufficient data,
- // workload not yet emitting metrics, etc.). FE renders the materialized
- // draft + observed view without an engine column.
- EngineProjectionUnavailableReason string `protobuf:"bytes,4,opt,name=engine_projection_unavailable_reason,json=engineProjectionUnavailableReason,proto3" json:"engine_projection_unavailable_reason,omitempty"`
+ Recommendations []*PvcStorageRecommendation `protobuf:"bytes,1,rep,name=recommendations,proto3" json:"recommendations,omitempty"`
+ Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"`
}
-func (x *PreviewWorkloadRuleResponse) Reset() {
- *x = PreviewWorkloadRuleResponse{}
+func (x *ListPvcStorageRecommendationsResponse) Reset() {
+ *x = ListPvcStorageRecommendationsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[352]
+ mi := &file_api_v1_recommendation_proto_msgTypes[372]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *PreviewWorkloadRuleResponse) String() string {
+func (x *ListPvcStorageRecommendationsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PreviewWorkloadRuleResponse) ProtoMessage() {}
+func (*ListPvcStorageRecommendationsResponse) ProtoMessage() {}
-func (x *PreviewWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[352]
+func (x *ListPvcStorageRecommendationsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[372]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27736,68 +31082,53 @@ func (x *PreviewWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PreviewWorkloadRuleResponse.ProtoReflect.Descriptor instead.
-func (*PreviewWorkloadRuleResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{352}
-}
-
-func (x *PreviewWorkloadRuleResponse) GetMaterializedRule() *WorkloadRule {
- if x != nil {
- return x.MaterializedRule
- }
- return nil
+// Deprecated: Use ListPvcStorageRecommendationsResponse.ProtoReflect.Descriptor instead.
+func (*ListPvcStorageRecommendationsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{372}
}
-func (x *PreviewWorkloadRuleResponse) GetEngineProjection() *WorkloadRule {
+func (x *ListPvcStorageRecommendationsResponse) GetRecommendations() []*PvcStorageRecommendation {
if x != nil {
- return x.EngineProjection
+ return x.Recommendations
}
return nil
}
-func (x *PreviewWorkloadRuleResponse) GetProfile() *WorkloadProfileResult {
+func (x *ListPvcStorageRecommendationsResponse) GetPagination() *Pagination {
if x != nil {
- return x.Profile
+ return x.Pagination
}
return nil
}
-func (x *PreviewWorkloadRuleResponse) GetEngineProjectionUnavailableReason() string {
- if x != nil {
- return x.EngineProjectionUnavailableReason
- }
- return ""
-}
-
-type GetWorkloadContainerNamesRequest struct {
+type GeneratePvcStorageRecommendationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ PvcUid string `protobuf:"bytes,3,opt,name=pvc_uid,json=pvcUid,proto3" json:"pvc_uid,omitempty"`
+ PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
}
-func (x *GetWorkloadContainerNamesRequest) Reset() {
- *x = GetWorkloadContainerNamesRequest{}
+func (x *GeneratePvcStorageRecommendationRequest) Reset() {
+ *x = GeneratePvcStorageRecommendationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[353]
+ mi := &file_api_v1_recommendation_proto_msgTypes[373]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadContainerNamesRequest) String() string {
+func (x *GeneratePvcStorageRecommendationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadContainerNamesRequest) ProtoMessage() {}
+func (*GeneratePvcStorageRecommendationRequest) ProtoMessage() {}
-func (x *GetWorkloadContainerNamesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[353]
+func (x *GeneratePvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[373]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27808,71 +31139,67 @@ func (x *GetWorkloadContainerNamesRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadContainerNamesRequest.ProtoReflect.Descriptor instead.
-func (*GetWorkloadContainerNamesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{353}
+// Deprecated: Use GeneratePvcStorageRecommendationRequest.ProtoReflect.Descriptor instead.
+func (*GeneratePvcStorageRecommendationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{373}
}
-func (x *GetWorkloadContainerNamesRequest) GetTeamId() string {
+func (x *GeneratePvcStorageRecommendationRequest) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
-func (x *GetWorkloadContainerNamesRequest) GetClusterId() string {
+func (x *GeneratePvcStorageRecommendationRequest) GetClusterId() string {
if x != nil {
return x.ClusterId
}
return ""
}
-func (x *GetWorkloadContainerNamesRequest) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
-}
-
-func (x *GetWorkloadContainerNamesRequest) GetKind() string {
+func (x *GeneratePvcStorageRecommendationRequest) GetPvcUid() string {
if x != nil {
- return x.Kind
+ return x.PvcUid
}
return ""
}
-func (x *GetWorkloadContainerNamesRequest) GetName() string {
+func (x *GeneratePvcStorageRecommendationRequest) GetPolicyId() string {
if x != nil {
- return x.Name
+ return x.PolicyId
}
return ""
}
-type GetWorkloadContainerNamesResponse struct {
+type GeneratePvcStorageRecommendationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ContainerNames []string `protobuf:"bytes,1,rep,name=container_names,json=containerNames,proto3" json:"container_names,omitempty"`
+ Recommendation *PvcStorageRecommendation `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
+ // When no recommendation is generated (e.g., low confidence, no resize needed),
+ // this field explains why
+ SkipReason *string `protobuf:"bytes,2,opt,name=skip_reason,json=skipReason,proto3,oneof" json:"skip_reason,omitempty"`
}
-func (x *GetWorkloadContainerNamesResponse) Reset() {
- *x = GetWorkloadContainerNamesResponse{}
+func (x *GeneratePvcStorageRecommendationResponse) Reset() {
+ *x = GeneratePvcStorageRecommendationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[354]
+ mi := &file_api_v1_recommendation_proto_msgTypes[374]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetWorkloadContainerNamesResponse) String() string {
+func (x *GeneratePvcStorageRecommendationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetWorkloadContainerNamesResponse) ProtoMessage() {}
+func (*GeneratePvcStorageRecommendationResponse) ProtoMessage() {}
-func (x *GetWorkloadContainerNamesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[354]
+func (x *GeneratePvcStorageRecommendationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[374]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27883,45 +31210,53 @@ func (x *GetWorkloadContainerNamesResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetWorkloadContainerNamesResponse.ProtoReflect.Descriptor instead.
-func (*GetWorkloadContainerNamesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{354}
+// Deprecated: Use GeneratePvcStorageRecommendationResponse.ProtoReflect.Descriptor instead.
+func (*GeneratePvcStorageRecommendationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{374}
}
-func (x *GetWorkloadContainerNamesResponse) GetContainerNames() []string {
+func (x *GeneratePvcStorageRecommendationResponse) GetRecommendation() *PvcStorageRecommendation {
if x != nil {
- return x.ContainerNames
+ return x.Recommendation
}
return nil
}
-type BatchAutoOptimizeWorkload struct {
+func (x *GeneratePvcStorageRecommendationResponse) GetSkipReason() string {
+ if x != nil && x.SkipReason != nil {
+ return *x.SkipReason
+ }
+ return ""
+}
+
+type PreviewPvcStorageRecommendationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ PvcUid string `protobuf:"bytes,3,opt,name=pvc_uid,json=pvcUid,proto3" json:"pvc_uid,omitempty"`
+ PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
}
-func (x *BatchAutoOptimizeWorkload) Reset() {
- *x = BatchAutoOptimizeWorkload{}
+func (x *PreviewPvcStorageRecommendationRequest) Reset() {
+ *x = PreviewPvcStorageRecommendationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[355]
+ mi := &file_api_v1_recommendation_proto_msgTypes[375]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BatchAutoOptimizeWorkload) String() string {
+func (x *PreviewPvcStorageRecommendationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BatchAutoOptimizeWorkload) ProtoMessage() {}
+func (*PreviewPvcStorageRecommendationRequest) ProtoMessage() {}
-func (x *BatchAutoOptimizeWorkload) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[355]
+func (x *PreviewPvcStorageRecommendationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[375]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27932,59 +31267,65 @@ func (x *BatchAutoOptimizeWorkload) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BatchAutoOptimizeWorkload.ProtoReflect.Descriptor instead.
-func (*BatchAutoOptimizeWorkload) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{355}
+// Deprecated: Use PreviewPvcStorageRecommendationRequest.ProtoReflect.Descriptor instead.
+func (*PreviewPvcStorageRecommendationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{375}
}
-func (x *BatchAutoOptimizeWorkload) GetNamespace() string {
+func (x *PreviewPvcStorageRecommendationRequest) GetTeamId() string {
if x != nil {
- return x.Namespace
+ return x.TeamId
}
return ""
}
-func (x *BatchAutoOptimizeWorkload) GetKind() string {
+func (x *PreviewPvcStorageRecommendationRequest) GetClusterId() string {
if x != nil {
- return x.Kind
+ return x.ClusterId
}
return ""
}
-func (x *BatchAutoOptimizeWorkload) GetName() string {
+func (x *PreviewPvcStorageRecommendationRequest) GetPvcUid() string {
if x != nil {
- return x.Name
+ return x.PvcUid
}
return ""
}
-type BatchAutoOptimizeWorkloadsRequest struct {
+func (x *PreviewPvcStorageRecommendationRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type PreviewPvcStorageRecommendationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Workloads []*BatchAutoOptimizeWorkload `protobuf:"bytes,3,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ Recommendation *PvcStorageRecommendation `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
+ SkipReason *string `protobuf:"bytes,2,opt,name=skip_reason,json=skipReason,proto3,oneof" json:"skip_reason,omitempty"`
}
-func (x *BatchAutoOptimizeWorkloadsRequest) Reset() {
- *x = BatchAutoOptimizeWorkloadsRequest{}
+func (x *PreviewPvcStorageRecommendationResponse) Reset() {
+ *x = PreviewPvcStorageRecommendationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[356]
+ mi := &file_api_v1_recommendation_proto_msgTypes[376]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BatchAutoOptimizeWorkloadsRequest) String() string {
+func (x *PreviewPvcStorageRecommendationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BatchAutoOptimizeWorkloadsRequest) ProtoMessage() {}
+func (*PreviewPvcStorageRecommendationResponse) ProtoMessage() {}
-func (x *BatchAutoOptimizeWorkloadsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[356]
+func (x *PreviewPvcStorageRecommendationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[376]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -27995,62 +31336,64 @@ func (x *BatchAutoOptimizeWorkloadsRequest) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use BatchAutoOptimizeWorkloadsRequest.ProtoReflect.Descriptor instead.
-func (*BatchAutoOptimizeWorkloadsRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{356}
+// Deprecated: Use PreviewPvcStorageRecommendationResponse.ProtoReflect.Descriptor instead.
+func (*PreviewPvcStorageRecommendationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{376}
}
-func (x *BatchAutoOptimizeWorkloadsRequest) GetTeamId() string {
+func (x *PreviewPvcStorageRecommendationResponse) GetRecommendation() *PvcStorageRecommendation {
if x != nil {
- return x.TeamId
+ return x.Recommendation
}
- return ""
+ return nil
}
-func (x *BatchAutoOptimizeWorkloadsRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
+func (x *PreviewPvcStorageRecommendationResponse) GetSkipReason() string {
+ if x != nil && x.SkipReason != nil {
+ return *x.SkipReason
}
return ""
}
-func (x *BatchAutoOptimizeWorkloadsRequest) GetWorkloads() []*BatchAutoOptimizeWorkload {
- if x != nil {
- return x.Workloads
- }
- return nil
-}
-
-type BatchAutoOptimizeWorkloadResult struct {
+type WorkloadRuleOOMEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"`
- Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
- Rule *WorkloadRule `protobuf:"bytes,6,opt,name=rule,proto3" json:"rule,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ ContainerName string `protobuf:"bytes,6,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ RuleGeneration int64 `protobuf:"varint,8,opt,name=rule_generation,json=ruleGeneration,proto3" json:"rule_generation,omitempty"`
+ MemoryRequestAt int64 `protobuf:"varint,9,opt,name=memory_request_at,json=memoryRequestAt,proto3" json:"memory_request_at,omitempty"`
+ MemoryLimitAt int64 `protobuf:"varint,10,opt,name=memory_limit_at,json=memoryLimitAt,proto3" json:"memory_limit_at,omitempty"`
+ MemoryUsageAt int64 `protobuf:"varint,11,opt,name=memory_usage_at,json=memoryUsageAt,proto3" json:"memory_usage_at,omitempty"`
+ EmergencyReaction bool `protobuf:"varint,12,opt,name=emergency_reaction,json=emergencyReaction,proto3" json:"emergency_reaction,omitempty"`
+ NewMemoryAfter *int64 `protobuf:"varint,13,opt,name=new_memory_after,json=newMemoryAfter,proto3,oneof" json:"new_memory_after,omitempty"`
+ RestartCount *int32 `protobuf:"varint,14,opt,name=restart_count,json=restartCount,proto3,oneof" json:"restart_count,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
}
-func (x *BatchAutoOptimizeWorkloadResult) Reset() {
- *x = BatchAutoOptimizeWorkloadResult{}
+func (x *WorkloadRuleOOMEvent) Reset() {
+ *x = WorkloadRuleOOMEvent{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[357]
+ mi := &file_api_v1_recommendation_proto_msgTypes[377]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BatchAutoOptimizeWorkloadResult) String() string {
+func (x *WorkloadRuleOOMEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BatchAutoOptimizeWorkloadResult) ProtoMessage() {}
+func (*WorkloadRuleOOMEvent) ProtoMessage() {}
-func (x *BatchAutoOptimizeWorkloadResult) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[357]
+func (x *WorkloadRuleOOMEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[377]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28061,137 +31404,144 @@ func (x *BatchAutoOptimizeWorkloadResult) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BatchAutoOptimizeWorkloadResult.ProtoReflect.Descriptor instead.
-func (*BatchAutoOptimizeWorkloadResult) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{357}
+// Deprecated: Use WorkloadRuleOOMEvent.ProtoReflect.Descriptor instead.
+func (*WorkloadRuleOOMEvent) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{377}
}
-func (x *BatchAutoOptimizeWorkloadResult) GetNamespace() string {
+func (x *WorkloadRuleOOMEvent) GetId() string {
if x != nil {
- return x.Namespace
+ return x.Id
}
return ""
}
-func (x *BatchAutoOptimizeWorkloadResult) GetKind() string {
+func (x *WorkloadRuleOOMEvent) GetRuleId() string {
if x != nil {
- return x.Kind
+ return x.RuleId
}
return ""
}
-func (x *BatchAutoOptimizeWorkloadResult) GetName() string {
+func (x *WorkloadRuleOOMEvent) GetClusterId() string {
if x != nil {
- return x.Name
+ return x.ClusterId
}
return ""
}
-func (x *BatchAutoOptimizeWorkloadResult) GetSuccess() bool {
+func (x *WorkloadRuleOOMEvent) GetNamespace() string {
if x != nil {
- return x.Success
+ return x.Namespace
}
- return false
+ return ""
}
-func (x *BatchAutoOptimizeWorkloadResult) GetError() string {
+func (x *WorkloadRuleOOMEvent) GetWorkloadName() string {
if x != nil {
- return x.Error
+ return x.WorkloadName
}
return ""
}
-func (x *BatchAutoOptimizeWorkloadResult) GetRule() *WorkloadRule {
+func (x *WorkloadRuleOOMEvent) GetContainerName() string {
if x != nil {
- return x.Rule
+ return x.ContainerName
+ }
+ return ""
+}
+
+func (x *WorkloadRuleOOMEvent) GetTimestamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Timestamp
}
return nil
}
-type BatchAutoOptimizeWorkloadsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
+func (x *WorkloadRuleOOMEvent) GetRuleGeneration() int64 {
+ if x != nil {
+ return x.RuleGeneration
+ }
+ return 0
+}
- Results []*BatchAutoOptimizeWorkloadResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
+func (x *WorkloadRuleOOMEvent) GetMemoryRequestAt() int64 {
+ if x != nil {
+ return x.MemoryRequestAt
+ }
+ return 0
}
-func (x *BatchAutoOptimizeWorkloadsResponse) Reset() {
- *x = BatchAutoOptimizeWorkloadsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[358]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
+func (x *WorkloadRuleOOMEvent) GetMemoryLimitAt() int64 {
+ if x != nil {
+ return x.MemoryLimitAt
}
+ return 0
}
-func (x *BatchAutoOptimizeWorkloadsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
+func (x *WorkloadRuleOOMEvent) GetMemoryUsageAt() int64 {
+ if x != nil {
+ return x.MemoryUsageAt
+ }
+ return 0
}
-func (*BatchAutoOptimizeWorkloadsResponse) ProtoMessage() {}
+func (x *WorkloadRuleOOMEvent) GetEmergencyReaction() bool {
+ if x != nil {
+ return x.EmergencyReaction
+ }
+ return false
+}
-func (x *BatchAutoOptimizeWorkloadsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[358]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
+func (x *WorkloadRuleOOMEvent) GetNewMemoryAfter() int64 {
+ if x != nil && x.NewMemoryAfter != nil {
+ return *x.NewMemoryAfter
}
- return mi.MessageOf(x)
+ return 0
}
-// Deprecated: Use BatchAutoOptimizeWorkloadsResponse.ProtoReflect.Descriptor instead.
-func (*BatchAutoOptimizeWorkloadsResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{358}
+func (x *WorkloadRuleOOMEvent) GetRestartCount() int32 {
+ if x != nil && x.RestartCount != nil {
+ return *x.RestartCount
+ }
+ return 0
}
-func (x *BatchAutoOptimizeWorkloadsResponse) GetResults() []*BatchAutoOptimizeWorkloadResult {
+func (x *WorkloadRuleOOMEvent) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
- return x.Results
+ return x.CreatedAt
}
return nil
}
-// WorkloadProfileManifest is the authoritative key set for a single emit cycle
-// of profile snapshots for a (cluster, window) pair. The server sends exactly
-// one manifest followed by zero or more BatchWorkloadProfiles, all tagged with
-// the same emit_id. The operator uses the manifest's keys to GC local
-// WorkloadProfile CRs whose workload_uid is absent from `keys` once the emit
-// cycle finalizes.
-type WorkloadProfileManifest struct {
+type ListWorkloadRuleOOMEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Window ProfileWindow `protobuf:"varint,1,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
- Keys []*ProfileKey `protobuf:"bytes,2,rep,name=keys,proto3" json:"keys,omitempty"`
- IssuedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=issued_at,json=issuedAt,proto3" json:"issued_at,omitempty"`
- // emit_id is a UUID that identifies this emit cycle. Required. The operator
- // buffers batches with a matching emit_id and finalizes the prior cycle
- // when a manifest with a new emit_id arrives.
- EmitId string `protobuf:"bytes,4,opt,name=emit_id,json=emitId,proto3" json:"emit_id,omitempty"`
+ RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ Generation *int64 `protobuf:"varint,2,opt,name=generation,proto3,oneof" json:"generation,omitempty"`
+ Limit *int32 `protobuf:"varint,3,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+ Offset *int32 `protobuf:"varint,4,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
}
-func (x *WorkloadProfileManifest) Reset() {
- *x = WorkloadProfileManifest{}
+func (x *ListWorkloadRuleOOMEventsRequest) Reset() {
+ *x = ListWorkloadRuleOOMEventsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[359]
+ mi := &file_api_v1_recommendation_proto_msgTypes[378]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkloadProfileManifest) String() string {
+func (x *ListWorkloadRuleOOMEventsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkloadProfileManifest) ProtoMessage() {}
+func (*ListWorkloadRuleOOMEventsRequest) ProtoMessage() {}
-func (x *WorkloadProfileManifest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[359]
+func (x *ListWorkloadRuleOOMEventsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[378]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28202,71 +31552,65 @@ func (x *WorkloadProfileManifest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkloadProfileManifest.ProtoReflect.Descriptor instead.
-func (*WorkloadProfileManifest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{359}
+// Deprecated: Use ListWorkloadRuleOOMEventsRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadRuleOOMEventsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{378}
}
-func (x *WorkloadProfileManifest) GetWindow() ProfileWindow {
+func (x *ListWorkloadRuleOOMEventsRequest) GetRuleId() string {
if x != nil {
- return x.Window
+ return x.RuleId
}
- return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+ return ""
}
-func (x *WorkloadProfileManifest) GetKeys() []*ProfileKey {
- if x != nil {
- return x.Keys
+func (x *ListWorkloadRuleOOMEventsRequest) GetGeneration() int64 {
+ if x != nil && x.Generation != nil {
+ return *x.Generation
}
- return nil
+ return 0
}
-func (x *WorkloadProfileManifest) GetIssuedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.IssuedAt
+func (x *ListWorkloadRuleOOMEventsRequest) GetLimit() int32 {
+ if x != nil && x.Limit != nil {
+ return *x.Limit
}
- return nil
+ return 0
}
-func (x *WorkloadProfileManifest) GetEmitId() string {
- if x != nil {
- return x.EmitId
+func (x *ListWorkloadRuleOOMEventsRequest) GetOffset() int32 {
+ if x != nil && x.Offset != nil {
+ return *x.Offset
}
- return ""
+ return 0
}
-// BatchWorkloadProfiles is a chunk of WorkloadProfileSnapshot values for a
-// single emit cycle. Up to 128 profiles per batch. The emit_id MUST match the
-// manifest's emit_id for the same cycle; operators discard batches whose
-// emit_id does not match the currently-buffered cycle.
-type BatchWorkloadProfiles struct {
+type ListWorkloadRuleOOMEventsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Window ProfileWindow `protobuf:"varint,1,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
- Profiles []*WorkloadProfileSnapshot `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"`
- // emit_id matches the manifest emit_id for this cycle. Required.
- EmitId string `protobuf:"bytes,3,opt,name=emit_id,json=emitId,proto3" json:"emit_id,omitempty"`
+ Events []*WorkloadRuleOOMEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
}
-func (x *BatchWorkloadProfiles) Reset() {
- *x = BatchWorkloadProfiles{}
+func (x *ListWorkloadRuleOOMEventsResponse) Reset() {
+ *x = ListWorkloadRuleOOMEventsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[360]
+ mi := &file_api_v1_recommendation_proto_msgTypes[379]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *BatchWorkloadProfiles) String() string {
+func (x *ListWorkloadRuleOOMEventsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*BatchWorkloadProfiles) ProtoMessage() {}
+func (*ListWorkloadRuleOOMEventsResponse) ProtoMessage() {}
-func (x *BatchWorkloadProfiles) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[360]
+func (x *ListWorkloadRuleOOMEventsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[379]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28277,61 +31621,54 @@ func (x *BatchWorkloadProfiles) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use BatchWorkloadProfiles.ProtoReflect.Descriptor instead.
-func (*BatchWorkloadProfiles) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{360}
-}
-
-func (x *BatchWorkloadProfiles) GetWindow() ProfileWindow {
- if x != nil {
- return x.Window
- }
- return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+// Deprecated: Use ListWorkloadRuleOOMEventsResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadRuleOOMEventsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{379}
}
-func (x *BatchWorkloadProfiles) GetProfiles() []*WorkloadProfileSnapshot {
+func (x *ListWorkloadRuleOOMEventsResponse) GetEvents() []*WorkloadRuleOOMEvent {
if x != nil {
- return x.Profiles
+ return x.Events
}
return nil
}
-func (x *BatchWorkloadProfiles) GetEmitId() string {
+func (x *ListWorkloadRuleOOMEventsResponse) GetTotal() int64 {
if x != nil {
- return x.EmitId
+ return x.Total
}
- return ""
+ return 0
}
-type NodeConfigApplyEvent struct {
+type ListWorkloadOOMEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- ConfigId string `protobuf:"bytes,1,opt,name=config_id,json=configId,proto3" json:"config_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
- Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`
- AppliedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=applied_at,json=appliedAt,proto3" json:"applied_at,omitempty"`
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ WorkloadName string `protobuf:"bytes,3,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+ Offset *int32 `protobuf:"varint,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
}
-func (x *NodeConfigApplyEvent) Reset() {
- *x = NodeConfigApplyEvent{}
+func (x *ListWorkloadOOMEventsRequest) Reset() {
+ *x = ListWorkloadOOMEventsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[361]
+ mi := &file_api_v1_recommendation_proto_msgTypes[380]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeConfigApplyEvent) String() string {
+func (x *ListWorkloadOOMEventsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeConfigApplyEvent) ProtoMessage() {}
+func (*ListWorkloadOOMEventsRequest) ProtoMessage() {}
-func (x *NodeConfigApplyEvent) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[361]
+func (x *ListWorkloadOOMEventsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[380]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28342,73 +31679,72 @@ func (x *NodeConfigApplyEvent) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeConfigApplyEvent.ProtoReflect.Descriptor instead.
-func (*NodeConfigApplyEvent) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{361}
+// Deprecated: Use ListWorkloadOOMEventsRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadOOMEventsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{380}
}
-func (x *NodeConfigApplyEvent) GetConfigId() string {
+func (x *ListWorkloadOOMEventsRequest) GetClusterId() string {
if x != nil {
- return x.ConfigId
+ return x.ClusterId
}
return ""
}
-func (x *NodeConfigApplyEvent) GetClusterId() string {
+func (x *ListWorkloadOOMEventsRequest) GetNamespace() string {
if x != nil {
- return x.ClusterId
+ return x.Namespace
}
return ""
}
-func (x *NodeConfigApplyEvent) GetStatus() string {
+func (x *ListWorkloadOOMEventsRequest) GetWorkloadName() string {
if x != nil {
- return x.Status
+ return x.WorkloadName
}
return ""
}
-func (x *NodeConfigApplyEvent) GetError() string {
- if x != nil {
- return x.Error
+func (x *ListWorkloadOOMEventsRequest) GetLimit() int32 {
+ if x != nil && x.Limit != nil {
+ return *x.Limit
}
- return ""
+ return 0
}
-func (x *NodeConfigApplyEvent) GetAppliedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.AppliedAt
+func (x *ListWorkloadOOMEventsRequest) GetOffset() int32 {
+ if x != nil && x.Offset != nil {
+ return *x.Offset
}
- return nil
+ return 0
}
-type GetNodeRecommendationStatusRequest struct {
+type ListWorkloadOOMEventsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
- HistoryLimit int32 `protobuf:"varint,3,opt,name=history_limit,json=historyLimit,proto3" json:"history_limit,omitempty"`
+ Events []*WorkloadRuleOOMEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
}
-func (x *GetNodeRecommendationStatusRequest) Reset() {
- *x = GetNodeRecommendationStatusRequest{}
+func (x *ListWorkloadOOMEventsResponse) Reset() {
+ *x = ListWorkloadOOMEventsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[362]
+ mi := &file_api_v1_recommendation_proto_msgTypes[381]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeRecommendationStatusRequest) String() string {
+func (x *ListWorkloadOOMEventsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeRecommendationStatusRequest) ProtoMessage() {}
+func (*ListWorkloadOOMEventsResponse) ProtoMessage() {}
-func (x *GetNodeRecommendationStatusRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[362]
+func (x *ListWorkloadOOMEventsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[381]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28419,58 +31755,64 @@ func (x *GetNodeRecommendationStatusRequest) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeRecommendationStatusRequest.ProtoReflect.Descriptor instead.
-func (*GetNodeRecommendationStatusRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{362}
-}
-
-func (x *GetNodeRecommendationStatusRequest) GetTeamId() string {
- if x != nil {
- return x.TeamId
- }
- return ""
+// Deprecated: Use ListWorkloadOOMEventsResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadOOMEventsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{381}
}
-func (x *GetNodeRecommendationStatusRequest) GetClusterId() string {
+func (x *ListWorkloadOOMEventsResponse) GetEvents() []*WorkloadRuleOOMEvent {
if x != nil {
- return x.ClusterId
+ return x.Events
}
- return ""
+ return nil
}
-func (x *GetNodeRecommendationStatusRequest) GetHistoryLimit() int32 {
+func (x *ListWorkloadOOMEventsResponse) GetTotal() int64 {
if x != nil {
- return x.HistoryLimit
+ return x.Total
}
return 0
}
-type GetNodeRecommendationStatusResponse struct {
+type WorkloadRuleCPUThrottleEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CurrentConfig *NodeRecommendationConfig `protobuf:"bytes,1,opt,name=current_config,json=currentConfig,proto3" json:"current_config,omitempty"`
- History []*NodeConfigApplyEvent `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ ContainerName string `protobuf:"bytes,6,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ RuleGeneration int64 `protobuf:"varint,8,opt,name=rule_generation,json=ruleGeneration,proto3" json:"rule_generation,omitempty"`
+ CpuRequestAt int64 `protobuf:"varint,9,opt,name=cpu_request_at,json=cpuRequestAt,proto3" json:"cpu_request_at,omitempty"`
+ CpuLimitAt int64 `protobuf:"varint,10,opt,name=cpu_limit_at,json=cpuLimitAt,proto3" json:"cpu_limit_at,omitempty"`
+ CpuUsageAt int64 `protobuf:"varint,11,opt,name=cpu_usage_at,json=cpuUsageAt,proto3" json:"cpu_usage_at,omitempty"`
+ ThrottledFraction float64 `protobuf:"fixed64,12,opt,name=throttled_fraction,json=throttledFraction,proto3" json:"throttled_fraction,omitempty"`
+ EmergencyReaction bool `protobuf:"varint,13,opt,name=emergency_reaction,json=emergencyReaction,proto3" json:"emergency_reaction,omitempty"`
+ NewCpuAfter *int64 `protobuf:"varint,14,opt,name=new_cpu_after,json=newCpuAfter,proto3,oneof" json:"new_cpu_after,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
}
-func (x *GetNodeRecommendationStatusResponse) Reset() {
- *x = GetNodeRecommendationStatusResponse{}
+func (x *WorkloadRuleCPUThrottleEvent) Reset() {
+ *x = WorkloadRuleCPUThrottleEvent{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[363]
+ mi := &file_api_v1_recommendation_proto_msgTypes[382]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetNodeRecommendationStatusResponse) String() string {
+func (x *WorkloadRuleCPUThrottleEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetNodeRecommendationStatusResponse) ProtoMessage() {}
+func (*WorkloadRuleCPUThrottleEvent) ProtoMessage() {}
-func (x *GetNodeRecommendationStatusResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[363]
+func (x *WorkloadRuleCPUThrottleEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[382]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28481,57 +31823,144 @@ func (x *GetNodeRecommendationStatusResponse) ProtoReflect() protoreflect.Messag
return mi.MessageOf(x)
}
-// Deprecated: Use GetNodeRecommendationStatusResponse.ProtoReflect.Descriptor instead.
-func (*GetNodeRecommendationStatusResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{363}
+// Deprecated: Use WorkloadRuleCPUThrottleEvent.ProtoReflect.Descriptor instead.
+func (*WorkloadRuleCPUThrottleEvent) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{382}
}
-func (x *GetNodeRecommendationStatusResponse) GetCurrentConfig() *NodeRecommendationConfig {
+func (x *WorkloadRuleCPUThrottleEvent) GetId() string {
if x != nil {
- return x.CurrentConfig
+ return x.Id
+ }
+ return ""
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetRuleId() string {
+ if x != nil {
+ return x.RuleId
+ }
+ return ""
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetContainerName() string {
+ if x != nil {
+ return x.ContainerName
+ }
+ return ""
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetTimestamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Timestamp
}
return nil
}
-func (x *GetNodeRecommendationStatusResponse) GetHistory() []*NodeConfigApplyEvent {
+func (x *WorkloadRuleCPUThrottleEvent) GetRuleGeneration() int64 {
if x != nil {
- return x.History
+ return x.RuleGeneration
+ }
+ return 0
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetCpuRequestAt() int64 {
+ if x != nil {
+ return x.CpuRequestAt
+ }
+ return 0
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetCpuLimitAt() int64 {
+ if x != nil {
+ return x.CpuLimitAt
+ }
+ return 0
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetCpuUsageAt() int64 {
+ if x != nil {
+ return x.CpuUsageAt
+ }
+ return 0
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetThrottledFraction() float64 {
+ if x != nil {
+ return x.ThrottledFraction
+ }
+ return 0
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetEmergencyReaction() bool {
+ if x != nil {
+ return x.EmergencyReaction
+ }
+ return false
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetNewCpuAfter() int64 {
+ if x != nil && x.NewCpuAfter != nil {
+ return *x.NewCpuAfter
+ }
+ return 0
+}
+
+func (x *WorkloadRuleCPUThrottleEvent) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
}
return nil
}
-// EnableCheckpointForPolicyRequest is the orchestration request for the C/R
-// toggle on a node policy. enabled=true sets dakr.devzero.io/checkpoint-node
-// on the policy template AND enqueues per-node label patches for all live nodes
-// in the policy's matched groups. enabled=false unsets the label and enqueues
-// the corresponding unset patches.
-type EnableCheckpointForPolicyRequest struct {
+type ListWorkloadRuleCPUThrottleEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ Generation *int64 `protobuf:"varint,2,opt,name=generation,proto3,oneof" json:"generation,omitempty"`
+ Limit *int32 `protobuf:"varint,3,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+ Offset *int32 `protobuf:"varint,4,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
}
-func (x *EnableCheckpointForPolicyRequest) Reset() {
- *x = EnableCheckpointForPolicyRequest{}
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) Reset() {
+ *x = ListWorkloadRuleCPUThrottleEventsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[364]
+ mi := &file_api_v1_recommendation_proto_msgTypes[383]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *EnableCheckpointForPolicyRequest) String() string {
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*EnableCheckpointForPolicyRequest) ProtoMessage() {}
+func (*ListWorkloadRuleCPUThrottleEventsRequest) ProtoMessage() {}
-func (x *EnableCheckpointForPolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[364]
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[383]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28542,68 +31971,123 @@ func (x *EnableCheckpointForPolicyRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use EnableCheckpointForPolicyRequest.ProtoReflect.Descriptor instead.
-func (*EnableCheckpointForPolicyRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{364}
+// Deprecated: Use ListWorkloadRuleCPUThrottleEventsRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadRuleCPUThrottleEventsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{383}
}
-func (x *EnableCheckpointForPolicyRequest) GetTeamId() string {
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetRuleId() string {
if x != nil {
- return x.TeamId
+ return x.RuleId
}
return ""
}
-func (x *EnableCheckpointForPolicyRequest) GetPolicyId() string {
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetGeneration() int64 {
+ if x != nil && x.Generation != nil {
+ return *x.Generation
+ }
+ return 0
+}
+
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetLimit() int32 {
+ if x != nil && x.Limit != nil {
+ return *x.Limit
+ }
+ return 0
+}
+
+func (x *ListWorkloadRuleCPUThrottleEventsRequest) GetOffset() int32 {
+ if x != nil && x.Offset != nil {
+ return *x.Offset
+ }
+ return 0
+}
+
+type ListWorkloadRuleCPUThrottleEventsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Events []*WorkloadRuleCPUThrottleEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListWorkloadRuleCPUThrottleEventsResponse) Reset() {
+ *x = ListWorkloadRuleCPUThrottleEventsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[384]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadRuleCPUThrottleEventsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadRuleCPUThrottleEventsResponse) ProtoMessage() {}
+
+func (x *ListWorkloadRuleCPUThrottleEventsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[384]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadRuleCPUThrottleEventsResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadRuleCPUThrottleEventsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{384}
+}
+
+func (x *ListWorkloadRuleCPUThrottleEventsResponse) GetEvents() []*WorkloadRuleCPUThrottleEvent {
if x != nil {
- return x.PolicyId
+ return x.Events
}
- return ""
+ return nil
}
-func (x *EnableCheckpointForPolicyRequest) GetEnabled() bool {
+func (x *ListWorkloadRuleCPUThrottleEventsResponse) GetTotal() int64 {
if x != nil {
- return x.Enabled
+ return x.Total
}
- return false
+ return 0
}
-type EnableCheckpointForPolicyResponse struct {
+type ListWorkloadCPUThrottleEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // UUID grouping the enqueued per-node patches; empty when no live nodes
- // needed enqueueing (policy template still got patched).
- BatchId string `protobuf:"bytes,1,opt,name=batch_id,json=batchId,proto3" json:"batch_id,omitempty"`
- EnqueuedNodes uint32 `protobuf:"varint,2,opt,name=enqueued_nodes,json=enqueuedNodes,proto3" json:"enqueued_nodes,omitempty"`
- // cluster_ids whose live nodes were NOT enqueued because their dakr
- // operator reports a version lower than MinVersionNodeLabelApply (the
- // operator release carrying the Node `patch` RBAC verb + the
- // dakr.devzero.io/* allowlist for SSA). The policy template was still
- // patched for these clusters, so newly-provisioned nodes inherit the
- // label via the NodePool template; existing nodes will be picked up the
- // next time the user re-runs this action after the operator upgrade.
- SkippedClusters []string `protobuf:"bytes,3,rep,name=skipped_clusters,json=skippedClusters,proto3" json:"skipped_clusters,omitempty"`
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ WorkloadName string `protobuf:"bytes,3,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+ Offset *int32 `protobuf:"varint,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
}
-func (x *EnableCheckpointForPolicyResponse) Reset() {
- *x = EnableCheckpointForPolicyResponse{}
+func (x *ListWorkloadCPUThrottleEventsRequest) Reset() {
+ *x = ListWorkloadCPUThrottleEventsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[365]
+ mi := &file_api_v1_recommendation_proto_msgTypes[385]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *EnableCheckpointForPolicyResponse) String() string {
+func (x *ListWorkloadCPUThrottleEventsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*EnableCheckpointForPolicyResponse) ProtoMessage() {}
+func (*ListWorkloadCPUThrottleEventsRequest) ProtoMessage() {}
-func (x *EnableCheckpointForPolicyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[365]
+func (x *ListWorkloadCPUThrottleEventsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[385]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28614,58 +32098,130 @@ func (x *EnableCheckpointForPolicyResponse) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use EnableCheckpointForPolicyResponse.ProtoReflect.Descriptor instead.
-func (*EnableCheckpointForPolicyResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{365}
+// Deprecated: Use ListWorkloadCPUThrottleEventsRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadCPUThrottleEventsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{385}
}
-func (x *EnableCheckpointForPolicyResponse) GetBatchId() string {
+func (x *ListWorkloadCPUThrottleEventsRequest) GetClusterId() string {
if x != nil {
- return x.BatchId
+ return x.ClusterId
}
return ""
}
-func (x *EnableCheckpointForPolicyResponse) GetEnqueuedNodes() uint32 {
+func (x *ListWorkloadCPUThrottleEventsRequest) GetNamespace() string {
if x != nil {
- return x.EnqueuedNodes
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *ListWorkloadCPUThrottleEventsRequest) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *ListWorkloadCPUThrottleEventsRequest) GetLimit() int32 {
+ if x != nil && x.Limit != nil {
+ return *x.Limit
}
return 0
}
-func (x *EnableCheckpointForPolicyResponse) GetSkippedClusters() []string {
+func (x *ListWorkloadCPUThrottleEventsRequest) GetOffset() int32 {
+ if x != nil && x.Offset != nil {
+ return *x.Offset
+ }
+ return 0
+}
+
+type ListWorkloadCPUThrottleEventsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Events []*WorkloadRuleCPUThrottleEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListWorkloadCPUThrottleEventsResponse) Reset() {
+ *x = ListWorkloadCPUThrottleEventsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[386]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadCPUThrottleEventsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadCPUThrottleEventsResponse) ProtoMessage() {}
+
+func (x *ListWorkloadCPUThrottleEventsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[386]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadCPUThrottleEventsResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadCPUThrottleEventsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{386}
+}
+
+func (x *ListWorkloadCPUThrottleEventsResponse) GetEvents() []*WorkloadRuleCPUThrottleEvent {
if x != nil {
- return x.SkippedClusters
+ return x.Events
}
return nil
}
-type GetCheckpointApplyStatusRequest struct {
+func (x *ListWorkloadCPUThrottleEventsResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+// StringSetSelector is an include/exclude selector for a set of string values.
+// If In is non-empty, the value must match one entry. NotIn entries are always
+// excluded. Both empty = match all.
+type StringSetSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
- PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ In []string `protobuf:"bytes,1,rep,name=in,proto3" json:"in,omitempty"`
+ NotIn []string `protobuf:"bytes,2,rep,name=not_in,json=notIn,proto3" json:"not_in,omitempty"`
}
-func (x *GetCheckpointApplyStatusRequest) Reset() {
- *x = GetCheckpointApplyStatusRequest{}
+func (x *StringSetSelector) Reset() {
+ *x = StringSetSelector{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[366]
+ mi := &file_api_v1_recommendation_proto_msgTypes[387]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetCheckpointApplyStatusRequest) String() string {
+func (x *StringSetSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetCheckpointApplyStatusRequest) ProtoMessage() {}
+func (*StringSetSelector) ProtoMessage() {}
-func (x *GetCheckpointApplyStatusRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[366]
+func (x *StringSetSelector) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[387]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28676,60 +32232,95 @@ func (x *GetCheckpointApplyStatusRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetCheckpointApplyStatusRequest.ProtoReflect.Descriptor instead.
-func (*GetCheckpointApplyStatusRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{366}
+// Deprecated: Use StringSetSelector.ProtoReflect.Descriptor instead.
+func (*StringSetSelector) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{387}
}
-func (x *GetCheckpointApplyStatusRequest) GetTeamId() string {
+func (x *StringSetSelector) GetIn() []string {
if x != nil {
- return x.TeamId
+ return x.In
}
- return ""
+ return nil
}
-func (x *GetCheckpointApplyStatusRequest) GetPolicyId() string {
+func (x *StringSetSelector) GetNotIn() []string {
if x != nil {
- return x.PolicyId
+ return x.NotIn
}
- return ""
+ return nil
}
-type GetCheckpointApplyStatusResponse struct {
+type WorkloadOptimizationPolicyProto struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // batch_id of the most-recent EnableCheckpointForPolicy batch for the
- // supplied policy, or empty when no batch exists yet.
- BatchId string `protobuf:"bytes,1,opt,name=batch_id,json=batchId,proto3" json:"batch_id,omitempty"`
- Pending uint32 `protobuf:"varint,2,opt,name=pending,proto3" json:"pending,omitempty"`
- Applied uint32 `protobuf:"varint,3,opt,name=applied,proto3" json:"applied,omitempty"`
- Failed uint32 `protobuf:"varint,4,opt,name=failed,proto3" json:"failed,omitempty"`
- // rejected lumps every other terminal status (superseded, blocked, ignored,
- // and the operator's Rejected) — the UI surfaces them collectively as "did
- // not apply".
- Rejected uint32 `protobuf:"varint,5,opt,name=rejected,proto3" json:"rejected,omitempty"`
- Failures []*NodeApplyFailure `protobuf:"bytes,6,rep,name=failures,proto3" json:"failures,omitempty"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
+ Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"`
+ ClusterIds []string `protobuf:"bytes,6,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ NamespaceSelector *StringSetSelector `protobuf:"bytes,7,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ ClusterNames map[string]string `protobuf:"bytes,10,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // cluster_id → display name
+ // Scheduling & Triggers
+ ActionTriggers []ActionTrigger `protobuf:"varint,11,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ CronSchedule *string `protobuf:"bytes,12,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ CooldownMinutes *int32 `protobuf:"varint,13,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
+ DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,14,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
+ // Scheduler Optimization
+ SchedulerPlugins []string `protobuf:"bytes,15,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
+ DefragmentationSchedule *string `protobuf:"bytes,16,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
+ LiveMigrationEnabled bool `protobuf:"varint,17,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3" json:"live_migration_enabled,omitempty"`
+ UseInPlaceVerticalScaling bool `protobuf:"varint,18,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ AllowInPlaceMemoryLimitDecrease bool `protobuf:"varint,32,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3" json:"allow_in_place_memory_limit_decrease,omitempty"`
+ // HPA: when true, WorkloadRules generated from this policy have HPA
+ // enabled. Two-way bound to HPARuleConfig.Enabled on the WorkloadRule CRD.
+ HpaEnabled bool `protobuf:"varint,19,opt,name=hpa_enabled,json=hpaEnabled,proto3" json:"hpa_enabled,omitempty"`
+ // Targeting selectors (MPA v2 extended targeting)
+ KindSelector *StringSetSelector `protobuf:"bytes,20,opt,name=kind_selector,json=kindSelector,proto3,oneof" json:"kind_selector,omitempty"`
+ LabelSelector *LabelSelector `protobuf:"bytes,21,opt,name=label_selector,json=labelSelector,proto3,oneof" json:"label_selector,omitempty"`
+ NamePattern *RegexPattern `protobuf:"bytes,22,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"`
+ NamespacePattern *RegexPattern `protobuf:"bytes,23,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"`
+ // How far back to analyze CPU/memory/GPU usage when generating rules from
+ // this policy. Unset = 7 days. Clamped to the team's tier cap on write.
+ LookbackPeriodSeconds *int32 `protobuf:"varint,24,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ // Generic (workload-level, no-per-container) optimization settings this
+ // policy applies to every rule it generates — the same shape a manual
+ // rule's ManualRuleFields carries. Unset sub-fields mean "not configured
+ // for this axis"; the engine computes it as if this policy had no
+ // constraint at all.
+ CpuRule *ResourceRuleConfig `protobuf:"bytes,25,opt,name=cpu_rule,json=cpuRule,proto3" json:"cpu_rule,omitempty"`
+ MemoryRule *ResourceRuleConfig `protobuf:"bytes,26,opt,name=memory_rule,json=memoryRule,proto3" json:"memory_rule,omitempty"`
+ GpuRule *ResourceRuleConfig `protobuf:"bytes,27,opt,name=gpu_rule,json=gpuRule,proto3" json:"gpu_rule,omitempty"`
+ HpaRule *HPARuleConfig `protobuf:"bytes,28,opt,name=hpa_rule,json=hpaRule,proto3" json:"hpa_rule,omitempty"`
+ JvmHeapRule *JVMHeapRuleConfig `protobuf:"bytes,29,opt,name=jvm_heap_rule,json=jvmHeapRule,proto3" json:"jvm_heap_rule,omitempty"`
+ JvmCpuStartupFloorMillicores *int64 `protobuf:"varint,30,opt,name=jvm_cpu_startup_floor_millicores,json=jvmCpuStartupFloorMillicores,proto3,oneof" json:"jvm_cpu_startup_floor_millicores,omitempty"`
+ EmergencyResponse *EmergencyResponseConfig `protobuf:"bytes,31,opt,name=emergency_response,json=emergencyResponse,proto3" json:"emergency_response,omitempty"`
}
-func (x *GetCheckpointApplyStatusResponse) Reset() {
- *x = GetCheckpointApplyStatusResponse{}
+func (x *WorkloadOptimizationPolicyProto) Reset() {
+ *x = WorkloadOptimizationPolicyProto{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[367]
+ mi := &file_api_v1_recommendation_proto_msgTypes[388]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *GetCheckpointApplyStatusResponse) String() string {
+func (x *WorkloadOptimizationPolicyProto) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*GetCheckpointApplyStatusResponse) ProtoMessage() {}
+func (*WorkloadOptimizationPolicyProto) ProtoMessage() {}
-func (x *GetCheckpointApplyStatusResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[367]
+func (x *WorkloadOptimizationPolicyProto) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[388]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28740,79 +32331,275 @@ func (x *GetCheckpointApplyStatusResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use GetCheckpointApplyStatusResponse.ProtoReflect.Descriptor instead.
-func (*GetCheckpointApplyStatusResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{367}
+// Deprecated: Use WorkloadOptimizationPolicyProto.ProtoReflect.Descriptor instead.
+func (*WorkloadOptimizationPolicyProto) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{388}
}
-func (x *GetCheckpointApplyStatusResponse) GetBatchId() string {
+func (x *WorkloadOptimizationPolicyProto) GetId() string {
if x != nil {
- return x.BatchId
+ return x.Id
}
return ""
}
-func (x *GetCheckpointApplyStatusResponse) GetPending() uint32 {
+func (x *WorkloadOptimizationPolicyProto) GetTeamId() string {
if x != nil {
- return x.Pending
+ return x.TeamId
}
- return 0
+ return ""
}
-func (x *GetCheckpointApplyStatusResponse) GetApplied() uint32 {
+func (x *WorkloadOptimizationPolicyProto) GetName() string {
if x != nil {
- return x.Applied
+ return x.Name
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetDescription() string {
+ if x != nil && x.Description != nil {
+ return *x.Description
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetNamespaceSelector() *StringSetSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetClusterNames() map[string]string {
+ if x != nil {
+ return x.ClusterNames
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetActionTriggers() []ActionTrigger {
+ if x != nil {
+ return x.ActionTriggers
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetCooldownMinutes() int32 {
+ if x != nil && x.CooldownMinutes != nil {
+ return *x.CooldownMinutes
}
return 0
}
-func (x *GetCheckpointApplyStatusResponse) GetFailed() uint32 {
+func (x *WorkloadOptimizationPolicyProto) GetDetectionTriggers() []WorkloadDetectionTrigger {
if x != nil {
- return x.Failed
+ return x.DetectionTriggers
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetSchedulerPlugins() []string {
+ if x != nil {
+ return x.SchedulerPlugins
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetDefragmentationSchedule() string {
+ if x != nil && x.DefragmentationSchedule != nil {
+ return *x.DefragmentationSchedule
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetLiveMigrationEnabled() bool {
+ if x != nil {
+ return x.LiveMigrationEnabled
+ }
+ return false
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetUseInPlaceVerticalScaling() bool {
+ if x != nil {
+ return x.UseInPlaceVerticalScaling
+ }
+ return false
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetAllowInPlaceMemoryLimitDecrease() bool {
+ if x != nil {
+ return x.AllowInPlaceMemoryLimitDecrease
+ }
+ return false
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetHpaEnabled() bool {
+ if x != nil {
+ return x.HpaEnabled
+ }
+ return false
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetKindSelector() *StringSetSelector {
+ if x != nil {
+ return x.KindSelector
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetLabelSelector() *LabelSelector {
+ if x != nil {
+ return x.LabelSelector
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetNamePattern() *RegexPattern {
+ if x != nil {
+ return x.NamePattern
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
}
return 0
}
-func (x *GetCheckpointApplyStatusResponse) GetRejected() uint32 {
+func (x *WorkloadOptimizationPolicyProto) GetCpuRule() *ResourceRuleConfig {
if x != nil {
- return x.Rejected
+ return x.CpuRule
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetMemoryRule() *ResourceRuleConfig {
+ if x != nil {
+ return x.MemoryRule
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetGpuRule() *ResourceRuleConfig {
+ if x != nil {
+ return x.GpuRule
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetHpaRule() *HPARuleConfig {
+ if x != nil {
+ return x.HpaRule
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetJvmHeapRule() *JVMHeapRuleConfig {
+ if x != nil {
+ return x.JvmHeapRule
+ }
+ return nil
+}
+
+func (x *WorkloadOptimizationPolicyProto) GetJvmCpuStartupFloorMillicores() int64 {
+ if x != nil && x.JvmCpuStartupFloorMillicores != nil {
+ return *x.JvmCpuStartupFloorMillicores
}
return 0
}
-func (x *GetCheckpointApplyStatusResponse) GetFailures() []*NodeApplyFailure {
+func (x *WorkloadOptimizationPolicyProto) GetEmergencyResponse() *EmergencyResponseConfig {
if x != nil {
- return x.Failures
+ return x.EmergencyResponse
}
return nil
}
-type NodeApplyFailure struct {
+// GenericOptimizationSettings bundles the optional, workload-level (no
+// per-container) resource/HPA/JVM/emergency settings a
+// WorkloadOptimizationPolicy can apply to every rule it generates. Mirrors
+// ManualRuleFields but omits fields that only make sense for a single
+// concrete rule (containers, disabled, startup_period_seconds). Sent as a
+// single optional block on create/update: omitted entirely means "leave
+// every one of these columns unset/unchanged"; present means apply whichever
+// sub-fields are themselves set, exactly like ManualRuleFields already does
+// for a manual rule.
+type GenericOptimizationSettings struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
- Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
+ CpuRule *ResourceRuleConfig `protobuf:"bytes,1,opt,name=cpu_rule,json=cpuRule,proto3" json:"cpu_rule,omitempty"`
+ MemoryRule *ResourceRuleConfig `protobuf:"bytes,2,opt,name=memory_rule,json=memoryRule,proto3" json:"memory_rule,omitempty"`
+ GpuRule *ResourceRuleConfig `protobuf:"bytes,3,opt,name=gpu_rule,json=gpuRule,proto3" json:"gpu_rule,omitempty"`
+ HpaRule *HPARuleConfig `protobuf:"bytes,4,opt,name=hpa_rule,json=hpaRule,proto3" json:"hpa_rule,omitempty"`
+ JvmHeapRule *JVMHeapRuleConfig `protobuf:"bytes,5,opt,name=jvm_heap_rule,json=jvmHeapRule,proto3" json:"jvm_heap_rule,omitempty"`
+ JvmCpuStartupFloorMillicores *int64 `protobuf:"varint,6,opt,name=jvm_cpu_startup_floor_millicores,json=jvmCpuStartupFloorMillicores,proto3,oneof" json:"jvm_cpu_startup_floor_millicores,omitempty"`
+ EmergencyResponse *EmergencyResponseConfig `protobuf:"bytes,7,opt,name=emergency_response,json=emergencyResponse,proto3" json:"emergency_response,omitempty"`
}
-func (x *NodeApplyFailure) Reset() {
- *x = NodeApplyFailure{}
+func (x *GenericOptimizationSettings) Reset() {
+ *x = GenericOptimizationSettings{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_recommendation_proto_msgTypes[368]
+ mi := &file_api_v1_recommendation_proto_msgTypes[389]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *NodeApplyFailure) String() string {
+func (x *GenericOptimizationSettings) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*NodeApplyFailure) ProtoMessage() {}
+func (*GenericOptimizationSettings) ProtoMessage() {}
-func (x *NodeApplyFailure) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_recommendation_proto_msgTypes[368]
+func (x *GenericOptimizationSettings) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[389]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -28823,353 +32610,12739 @@ func (x *NodeApplyFailure) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use NodeApplyFailure.ProtoReflect.Descriptor instead.
-func (*NodeApplyFailure) Descriptor() ([]byte, []int) {
- return file_api_v1_recommendation_proto_rawDescGZIP(), []int{368}
+// Deprecated: Use GenericOptimizationSettings.ProtoReflect.Descriptor instead.
+func (*GenericOptimizationSettings) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{389}
}
-func (x *NodeApplyFailure) GetNodeName() string {
+func (x *GenericOptimizationSettings) GetCpuRule() *ResourceRuleConfig {
if x != nil {
- return x.NodeName
+ return x.CpuRule
}
- return ""
+ return nil
}
-func (x *NodeApplyFailure) GetError() string {
+func (x *GenericOptimizationSettings) GetMemoryRule() *ResourceRuleConfig {
if x != nil {
- return x.Error
+ return x.MemoryRule
}
- return ""
+ return nil
}
-var File_api_v1_recommendation_proto protoreflect.FileDescriptor
+func (x *GenericOptimizationSettings) GetGpuRule() *ResourceRuleConfig {
+ if x != nil {
+ return x.GpuRule
+ }
+ return nil
+}
-var file_api_v1_recommendation_proto_rawDesc = []byte{
- 0x0a, 0x1b, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74,
- 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x13, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61,
- 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfc, 0x03, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x65,
- 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
- 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01,
- 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x07,
- 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x48, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x73, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a,
- 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a,
- 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09,
- 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a,
- 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x02, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a,
- 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69,
- 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x22, 0x71, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
- 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48,
- 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a,
- 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09,
- 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x47, 0x65,
- 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09,
- 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x89, 0x03, 0x0a, 0x29, 0x47, 0x65,
- 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x54, 0x79, 0x70, 0x65, 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+func (x *GenericOptimizationSettings) GetHpaRule() *HPARuleConfig {
+ if x != nil {
+ return x.HpaRule
+ }
+ return nil
+}
+
+func (x *GenericOptimizationSettings) GetJvmHeapRule() *JVMHeapRuleConfig {
+ if x != nil {
+ return x.JvmHeapRule
+ }
+ return nil
+}
+
+func (x *GenericOptimizationSettings) GetJvmCpuStartupFloorMillicores() int64 {
+ if x != nil && x.JvmCpuStartupFloorMillicores != nil {
+ return *x.JvmCpuStartupFloorMillicores
+ }
+ return 0
+}
+
+func (x *GenericOptimizationSettings) GetEmergencyResponse() *EmergencyResponseConfig {
+ if x != nil {
+ return x.EmergencyResponse
+ }
+ return nil
+}
+
+type CreateWorkloadOptimizationPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"`
+ Disabled bool `protobuf:"varint,4,opt,name=disabled,proto3" json:"disabled,omitempty"`
+ ClusterIds []string `protobuf:"bytes,5,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ NamespaceSelector *StringSetSelector `protobuf:"bytes,6,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
+ // Scheduling & Triggers
+ ActionTriggers []ActionTrigger `protobuf:"varint,7,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ CronSchedule *string `protobuf:"bytes,8,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ CooldownMinutes *int32 `protobuf:"varint,9,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
+ DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,10,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
+ // Scheduler Optimization
+ SchedulerPlugins []string `protobuf:"bytes,11,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
+ DefragmentationSchedule *string `protobuf:"bytes,12,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
+ LiveMigrationEnabled bool `protobuf:"varint,13,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3" json:"live_migration_enabled,omitempty"`
+ UseInPlaceVerticalScaling bool `protobuf:"varint,14,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ AllowInPlaceMemoryLimitDecrease bool `protobuf:"varint,31,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3" json:"allow_in_place_memory_limit_decrease,omitempty"`
+ HpaEnabled bool `protobuf:"varint,15,opt,name=hpa_enabled,json=hpaEnabled,proto3" json:"hpa_enabled,omitempty"`
+ // Targeting selectors (MPA v2 extended targeting)
+ KindSelector *StringSetSelector `protobuf:"bytes,16,opt,name=kind_selector,json=kindSelector,proto3,oneof" json:"kind_selector,omitempty"`
+ LabelSelector *LabelSelector `protobuf:"bytes,17,opt,name=label_selector,json=labelSelector,proto3,oneof" json:"label_selector,omitempty"`
+ NamePattern *RegexPattern `protobuf:"bytes,18,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"`
+ NamespacePattern *RegexPattern `protobuf:"bytes,19,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"`
+ // Metrics lookback window in seconds. Unset = 7 days.
+ LookbackPeriodSeconds *int32 `protobuf:"varint,20,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ // Optional. Omitted entirely (the field's zero-value nil pointer) means
+ // every new resource/HPA/JVM/emergency column is left at NULL — the
+ // policy relies purely on engine auto-computation. When present, only
+ // the sub-fields actually populated within it are written.
+ Settings *GenericOptimizationSettings `protobuf:"bytes,30,opt,name=settings,proto3" json:"settings,omitempty"`
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) Reset() {
+ *x = CreateWorkloadOptimizationPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[390]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[390]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*CreateWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{390}
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetDescription() string {
+ if x != nil && x.Description != nil {
+ return *x.Description
+ }
+ return ""
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetNamespaceSelector() *StringSetSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetActionTriggers() []ActionTrigger {
+ if x != nil {
+ return x.ActionTriggers
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
+ }
+ return ""
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetCooldownMinutes() int32 {
+ if x != nil && x.CooldownMinutes != nil {
+ return *x.CooldownMinutes
+ }
+ return 0
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetDetectionTriggers() []WorkloadDetectionTrigger {
+ if x != nil {
+ return x.DetectionTriggers
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetSchedulerPlugins() []string {
+ if x != nil {
+ return x.SchedulerPlugins
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetDefragmentationSchedule() string {
+ if x != nil && x.DefragmentationSchedule != nil {
+ return *x.DefragmentationSchedule
+ }
+ return ""
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetLiveMigrationEnabled() bool {
+ if x != nil {
+ return x.LiveMigrationEnabled
+ }
+ return false
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetUseInPlaceVerticalScaling() bool {
+ if x != nil {
+ return x.UseInPlaceVerticalScaling
+ }
+ return false
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetAllowInPlaceMemoryLimitDecrease() bool {
+ if x != nil {
+ return x.AllowInPlaceMemoryLimitDecrease
+ }
+ return false
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetHpaEnabled() bool {
+ if x != nil {
+ return x.HpaEnabled
+ }
+ return false
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetKindSelector() *StringSetSelector {
+ if x != nil {
+ return x.KindSelector
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetLabelSelector() *LabelSelector {
+ if x != nil {
+ return x.LabelSelector
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetNamePattern() *RegexPattern {
+ if x != nil {
+ return x.NamePattern
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
+ }
+ return 0
+}
+
+func (x *CreateWorkloadOptimizationPolicyRequest) GetSettings() *GenericOptimizationSettings {
+ if x != nil {
+ return x.Settings
+ }
+ return nil
+}
+
+type CreateWorkloadOptimizationPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *CreateWorkloadOptimizationPolicyResponse) Reset() {
+ *x = CreateWorkloadOptimizationPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[391]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateWorkloadOptimizationPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+
+func (x *CreateWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[391]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*CreateWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{391}
+}
+
+func (x *CreateWorkloadOptimizationPolicyResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type ListWorkloadOptimizationPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // Optional. When set, restricts the listing to policies that target this
+ // cluster — either explicitly via cluster_ids, or implicitly via an empty
+ // cluster_ids array (which means "all clusters" and therefore applies
+ // to this cluster too).
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *ListWorkloadOptimizationPoliciesRequest) Reset() {
+ *x = ListWorkloadOptimizationPoliciesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[392]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadOptimizationPoliciesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadOptimizationPoliciesRequest) ProtoMessage() {}
+
+func (x *ListWorkloadOptimizationPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[392]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadOptimizationPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadOptimizationPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{392}
+}
+
+func (x *ListWorkloadOptimizationPoliciesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListWorkloadOptimizationPoliciesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type ListWorkloadOptimizationPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*WorkloadOptimizationPolicyProto `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+}
+
+func (x *ListWorkloadOptimizationPoliciesResponse) Reset() {
+ *x = ListWorkloadOptimizationPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[393]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadOptimizationPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadOptimizationPoliciesResponse) ProtoMessage() {}
+
+func (x *ListWorkloadOptimizationPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[393]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadOptimizationPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadOptimizationPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{393}
+}
+
+func (x *ListWorkloadOptimizationPoliciesResponse) GetPolicies() []*WorkloadOptimizationPolicyProto {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+type GetWorkloadOptimizationPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *GetWorkloadOptimizationPolicyRequest) Reset() {
+ *x = GetWorkloadOptimizationPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[394]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadOptimizationPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+
+func (x *GetWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[394]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{394}
+}
+
+func (x *GetWorkloadOptimizationPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadOptimizationPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type GetWorkloadOptimizationPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *GetWorkloadOptimizationPolicyResponse) Reset() {
+ *x = GetWorkloadOptimizationPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[395]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadOptimizationPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+
+func (x *GetWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[395]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{395}
+}
+
+func (x *GetWorkloadOptimizationPolicyResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+// GetWorkloadOptimizationPolicyByWorkload looks up the optimization policy
+// attached to a workload's rule in a single hop. Returns found = false when
+// no rule exists for those coordinates or the rule has no policy attached.
+type GetWorkloadOptimizationPolicyByWorkloadRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) Reset() {
+ *x = GetWorkloadOptimizationPolicyByWorkloadRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[396]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadOptimizationPolicyByWorkloadRequest) ProtoMessage() {}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[396]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadOptimizationPolicyByWorkloadRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadOptimizationPolicyByWorkloadRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{396}
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadRequest) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+type GetWorkloadOptimizationPolicyByWorkloadResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadResponse) Reset() {
+ *x = GetWorkloadOptimizationPolicyByWorkloadResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[397]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadOptimizationPolicyByWorkloadResponse) ProtoMessage() {}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[397]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadOptimizationPolicyByWorkloadResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadOptimizationPolicyByWorkloadResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{397}
+}
+
+func (x *GetWorkloadOptimizationPolicyByWorkloadResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type UpdateWorkloadOptimizationPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
+ Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
+ ClusterIds []string `protobuf:"bytes,6,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ NamespaceSelector *StringSetSelector `protobuf:"bytes,7,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
+ // Scheduling & Triggers
+ ActionTriggers []ActionTrigger `protobuf:"varint,8,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ CronSchedule *string `protobuf:"bytes,9,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ CooldownMinutes *int32 `protobuf:"varint,10,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
+ DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,11,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
+ // Scheduler Optimization
+ SchedulerPlugins []string `protobuf:"bytes,12,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
+ DefragmentationSchedule *string `protobuf:"bytes,13,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
+ LiveMigrationEnabled *bool `protobuf:"varint,14,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3,oneof" json:"live_migration_enabled,omitempty"`
+ UseInPlaceVerticalScaling *bool `protobuf:"varint,15,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3,oneof" json:"use_in_place_vertical_scaling,omitempty"`
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ AllowInPlaceMemoryLimitDecrease *bool `protobuf:"varint,31,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3,oneof" json:"allow_in_place_memory_limit_decrease,omitempty"`
+ HpaEnabled *bool `protobuf:"varint,16,opt,name=hpa_enabled,json=hpaEnabled,proto3,oneof" json:"hpa_enabled,omitempty"`
+ // Targeting selectors (MPA v2 extended targeting)
+ KindSelector *StringSetSelector `protobuf:"bytes,17,opt,name=kind_selector,json=kindSelector,proto3,oneof" json:"kind_selector,omitempty"`
+ LabelSelector *LabelSelector `protobuf:"bytes,18,opt,name=label_selector,json=labelSelector,proto3,oneof" json:"label_selector,omitempty"`
+ NamePattern *RegexPattern `protobuf:"bytes,19,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"`
+ NamespacePattern *RegexPattern `protobuf:"bytes,20,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"`
+ // Metrics lookback window in seconds. Omitting it leaves the stored window
+ // alone rather than resetting it. A change reaches the policy's rules on
+ // their next generation pass.
+ LookbackPeriodSeconds *int32 `protobuf:"varint,22,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ // Optional. Omitted entirely means leave every existing
+ // resource/HPA/JVM/emergency setting on this policy untouched — the same
+ // "only update when the client explicitly sends a value" convention
+ // already used above for cron_schedule/cooldown_minutes/etc. When
+ // present, each sub-field within it (cpu_rule, hpa_rule, ...) is applied
+ // independently: a sub-field left unset inside a present `settings`
+ // block leaves that axis's current value untouched too, exactly
+ // mirroring how ManualRuleFields already behaves for a manual rule edit.
+ Settings *GenericOptimizationSettings `protobuf:"bytes,30,opt,name=settings,proto3" json:"settings,omitempty"`
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) Reset() {
+ *x = UpdateWorkloadOptimizationPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[398]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[398]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*UpdateWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{398}
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetName() string {
+ if x != nil && x.Name != nil {
+ return *x.Name
+ }
+ return ""
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetDescription() string {
+ if x != nil && x.Description != nil {
+ return *x.Description
+ }
+ return ""
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetNamespaceSelector() *StringSetSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetActionTriggers() []ActionTrigger {
+ if x != nil {
+ return x.ActionTriggers
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
+ }
+ return ""
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetCooldownMinutes() int32 {
+ if x != nil && x.CooldownMinutes != nil {
+ return *x.CooldownMinutes
+ }
+ return 0
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetDetectionTriggers() []WorkloadDetectionTrigger {
+ if x != nil {
+ return x.DetectionTriggers
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetSchedulerPlugins() []string {
+ if x != nil {
+ return x.SchedulerPlugins
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetDefragmentationSchedule() string {
+ if x != nil && x.DefragmentationSchedule != nil {
+ return *x.DefragmentationSchedule
+ }
+ return ""
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetLiveMigrationEnabled() bool {
+ if x != nil && x.LiveMigrationEnabled != nil {
+ return *x.LiveMigrationEnabled
+ }
+ return false
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetUseInPlaceVerticalScaling() bool {
+ if x != nil && x.UseInPlaceVerticalScaling != nil {
+ return *x.UseInPlaceVerticalScaling
+ }
+ return false
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetAllowInPlaceMemoryLimitDecrease() bool {
+ if x != nil && x.AllowInPlaceMemoryLimitDecrease != nil {
+ return *x.AllowInPlaceMemoryLimitDecrease
+ }
+ return false
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetHpaEnabled() bool {
+ if x != nil && x.HpaEnabled != nil {
+ return *x.HpaEnabled
+ }
+ return false
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetKindSelector() *StringSetSelector {
+ if x != nil {
+ return x.KindSelector
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetLabelSelector() *LabelSelector {
+ if x != nil {
+ return x.LabelSelector
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetNamePattern() *RegexPattern {
+ if x != nil {
+ return x.NamePattern
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
+ }
+ return 0
+}
+
+func (x *UpdateWorkloadOptimizationPolicyRequest) GetSettings() *GenericOptimizationSettings {
+ if x != nil {
+ return x.Settings
+ }
+ return nil
+}
+
+// ToggleWorkloadOptimizationPolicyDisabled is the sole way to change an
+// existing policy's disabled state (creation sets the initial value directly
+// via CreateWorkloadOptimizationPolicyRequest.disabled). Splitting this out
+// from the general update keeps the branchy "what happens to a policy's
+// existing rules when it goes disabled" logic in one place, not entangled
+// with unrelated field updates.
+type ToggleWorkloadOptimizationPolicyDisabledRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Disabled bool `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled,omitempty"`
+ // Only consulted when transitioning enabled -> disabled. Unspecified
+ // defaults to KEEP (detach) — never a silent hard delete. Ignored when
+ // enabling, or when the policy is already in the requested state.
+ RuleAction *WorkloadRuleAction `protobuf:"varint,4,opt,name=rule_action,json=ruleAction,proto3,enum=api.v1.WorkloadRuleAction,oneof" json:"rule_action,omitempty"`
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) Reset() {
+ *x = ToggleWorkloadOptimizationPolicyDisabledRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[399]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleWorkloadOptimizationPolicyDisabledRequest) ProtoMessage() {}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[399]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToggleWorkloadOptimizationPolicyDisabledRequest.ProtoReflect.Descriptor instead.
+func (*ToggleWorkloadOptimizationPolicyDisabledRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{399}
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledRequest) GetRuleAction() WorkloadRuleAction {
+ if x != nil && x.RuleAction != nil {
+ return *x.RuleAction
+ }
+ return WorkloadRuleAction_WORKLOAD_RULE_ACTION_UNSPECIFIED
+}
+
+type ToggleWorkloadOptimizationPolicyDisabledResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledResponse) Reset() {
+ *x = ToggleWorkloadOptimizationPolicyDisabledResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[400]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleWorkloadOptimizationPolicyDisabledResponse) ProtoMessage() {}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[400]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToggleWorkloadOptimizationPolicyDisabledResponse.ProtoReflect.Descriptor instead.
+func (*ToggleWorkloadOptimizationPolicyDisabledResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{400}
+}
+
+func (x *ToggleWorkloadOptimizationPolicyDisabledResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type UpdateWorkloadOptimizationPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *WorkloadOptimizationPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *UpdateWorkloadOptimizationPolicyResponse) Reset() {
+ *x = UpdateWorkloadOptimizationPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[401]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateWorkloadOptimizationPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+
+func (x *UpdateWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[401]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*UpdateWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{401}
+}
+
+func (x *UpdateWorkloadOptimizationPolicyResponse) GetPolicy() *WorkloadOptimizationPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type DeleteWorkloadOptimizationPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // Controls what happens to the policy's already-generated rules.
+ // Unspecified/omitted defaults to KEEP (detach) — never a silent hard
+ // delete.
+ RuleAction *WorkloadRuleAction `protobuf:"varint,4,opt,name=rule_action,json=ruleAction,proto3,enum=api.v1.WorkloadRuleAction,oneof" json:"rule_action,omitempty"`
+}
+
+func (x *DeleteWorkloadOptimizationPolicyRequest) Reset() {
+ *x = DeleteWorkloadOptimizationPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[402]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteWorkloadOptimizationPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteWorkloadOptimizationPolicyRequest) ProtoMessage() {}
+
+func (x *DeleteWorkloadOptimizationPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[402]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteWorkloadOptimizationPolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeleteWorkloadOptimizationPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{402}
+}
+
+func (x *DeleteWorkloadOptimizationPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteWorkloadOptimizationPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *DeleteWorkloadOptimizationPolicyRequest) GetRuleAction() WorkloadRuleAction {
+ if x != nil && x.RuleAction != nil {
+ return *x.RuleAction
+ }
+ return WorkloadRuleAction_WORKLOAD_RULE_ACTION_UNSPECIFIED
+}
+
+type DeleteWorkloadOptimizationPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteWorkloadOptimizationPolicyResponse) Reset() {
+ *x = DeleteWorkloadOptimizationPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[403]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteWorkloadOptimizationPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteWorkloadOptimizationPolicyResponse) ProtoMessage() {}
+
+func (x *DeleteWorkloadOptimizationPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[403]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteWorkloadOptimizationPolicyResponse.ProtoReflect.Descriptor instead.
+func (*DeleteWorkloadOptimizationPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{403}
+}
+
+// PreviewWorkloadOptimizationPolicyMatches: dry-run targeting preview. Mirrors
+// CreateWorkloadOptimizationPolicyRequest's targeting fields exactly (plus
+// optional policy_id) — deliberately excludes operational fields (triggers,
+// scheduling, HPA/scaling flags) since those don't affect which workloads
+// match, only what happens once a rule is generated for them.
+type PreviewWorkloadOptimizationPolicyMatchesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // Optional. Set in edit mode so matches already owned by this policy can
+ // be distinguished from matches owned by a different policy. Omit in
+ // create mode, where there is no "this policy" yet.
+ PolicyId *string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"`
+ ClusterIds []string `protobuf:"bytes,3,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ NamespaceSelector *StringSetSelector `protobuf:"bytes,4,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
+ KindSelector *StringSetSelector `protobuf:"bytes,5,opt,name=kind_selector,json=kindSelector,proto3,oneof" json:"kind_selector,omitempty"`
+ LabelSelector *LabelSelector `protobuf:"bytes,6,opt,name=label_selector,json=labelSelector,proto3,oneof" json:"label_selector,omitempty"`
+ NamePattern *RegexPattern `protobuf:"bytes,7,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"`
+ NamespacePattern *RegexPattern `protobuf:"bytes,8,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"`
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) Reset() {
+ *x = PreviewWorkloadOptimizationPolicyMatchesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[404]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewWorkloadOptimizationPolicyMatchesRequest) ProtoMessage() {}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[404]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewWorkloadOptimizationPolicyMatchesRequest.ProtoReflect.Descriptor instead.
+func (*PreviewWorkloadOptimizationPolicyMatchesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{404}
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetPolicyId() string {
+ if x != nil && x.PolicyId != nil {
+ return *x.PolicyId
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetNamespaceSelector() *StringSetSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetKindSelector() *StringSetSelector {
+ if x != nil {
+ return x.KindSelector
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetLabelSelector() *LabelSelector {
+ if x != nil {
+ return x.LabelSelector
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetNamePattern() *RegexPattern {
+ if x != nil {
+ return x.NamePattern
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesRequest) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+type WorkloadOptimizationPolicyMatch struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Uid string `protobuf:"bytes,5,opt,name=uid,proto3" json:"uid,omitempty"`
+ Status WorkloadOptimizationPolicyMatchStatus `protobuf:"varint,6,opt,name=status,proto3,enum=api.v1.WorkloadOptimizationPolicyMatchStatus" json:"status,omitempty"`
+ // Populated only when status = SKIPPED_OWNED_BY_OTHER_POLICY.
+ OwningPolicyId *string `protobuf:"bytes,7,opt,name=owning_policy_id,json=owningPolicyId,proto3,oneof" json:"owning_policy_id,omitempty"`
+ OwningPolicyName *string `protobuf:"bytes,8,opt,name=owning_policy_name,json=owningPolicyName,proto3,oneof" json:"owning_policy_name,omitempty"`
+}
+
+func (x *WorkloadOptimizationPolicyMatch) Reset() {
+ *x = WorkloadOptimizationPolicyMatch{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[405]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadOptimizationPolicyMatch) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadOptimizationPolicyMatch) ProtoMessage() {}
+
+func (x *WorkloadOptimizationPolicyMatch) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[405]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadOptimizationPolicyMatch.ProtoReflect.Descriptor instead.
+func (*WorkloadOptimizationPolicyMatch) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{405}
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetStatus() WorkloadOptimizationPolicyMatchStatus {
+ if x != nil {
+ return x.Status
+ }
+ return WorkloadOptimizationPolicyMatchStatus_WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_UNSPECIFIED
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetOwningPolicyId() string {
+ if x != nil && x.OwningPolicyId != nil {
+ return *x.OwningPolicyId
+ }
+ return ""
+}
+
+func (x *WorkloadOptimizationPolicyMatch) GetOwningPolicyName() string {
+ if x != nil && x.OwningPolicyName != nil {
+ return *x.OwningPolicyName
+ }
+ return ""
+}
+
+type PreviewWorkloadOptimizationPolicyMatchesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Capped (see total_matched vs. total_returned below) — ordered by
+ // cluster, namespace, kind, name.
+ MatchedWorkloads []*WorkloadOptimizationPolicyMatch `protobuf:"bytes,1,rep,name=matched_workloads,json=matchedWorkloads,proto3" json:"matched_workloads,omitempty"`
+ // Total workloads that matched the selector across all requested
+ // clusters, before the cap was applied.
+ TotalMatched int32 `protobuf:"varint,2,opt,name=total_matched,json=totalMatched,proto3" json:"total_matched,omitempty"`
+ // How many of total_matched are actually included in matched_workloads.
+ // total_returned < total_matched means the result was capped — narrow the
+ // targeting to see the rest.
+ TotalReturned int32 `protobuf:"varint,3,opt,name=total_returned,json=totalReturned,proto3" json:"total_returned,omitempty"`
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesResponse) Reset() {
+ *x = PreviewWorkloadOptimizationPolicyMatchesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[406]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewWorkloadOptimizationPolicyMatchesResponse) ProtoMessage() {}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[406]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewWorkloadOptimizationPolicyMatchesResponse.ProtoReflect.Descriptor instead.
+func (*PreviewWorkloadOptimizationPolicyMatchesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{406}
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesResponse) GetMatchedWorkloads() []*WorkloadOptimizationPolicyMatch {
+ if x != nil {
+ return x.MatchedWorkloads
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesResponse) GetTotalMatched() int32 {
+ if x != nil {
+ return x.TotalMatched
+ }
+ return 0
+}
+
+func (x *PreviewWorkloadOptimizationPolicyMatchesResponse) GetTotalReturned() int32 {
+ if x != nil {
+ return x.TotalReturned
+ }
+ return 0
+}
+
+type SchedulerPolicyTargetProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // empty on create; set on update to preserve identity
+ ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // empty = all team clusters
+ NamespaceSelector *StringSetSelector `protobuf:"bytes,3,opt,name=namespace_selector,json=namespaceSelector,proto3" json:"namespace_selector,omitempty"`
+ KindSelector *StringSetSelector `protobuf:"bytes,4,opt,name=kind_selector,json=kindSelector,proto3" json:"kind_selector,omitempty"`
+ LabelSelector *LabelSelector `protobuf:"bytes,5,opt,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty"`
+ NamePattern *RegexPattern `protobuf:"bytes,6,opt,name=name_pattern,json=namePattern,proto3" json:"name_pattern,omitempty"`
+ NamespacePattern *RegexPattern `protobuf:"bytes,7,opt,name=namespace_pattern,json=namespacePattern,proto3" json:"namespace_pattern,omitempty"`
+}
+
+func (x *SchedulerPolicyTargetProto) Reset() {
+ *x = SchedulerPolicyTargetProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[407]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerPolicyTargetProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerPolicyTargetProto) ProtoMessage() {}
+
+func (x *SchedulerPolicyTargetProto) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[407]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerPolicyTargetProto.ProtoReflect.Descriptor instead.
+func (*SchedulerPolicyTargetProto) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{407}
+}
+
+func (x *SchedulerPolicyTargetProto) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetProto) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyTargetProto) GetNamespaceSelector() *StringSetSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyTargetProto) GetKindSelector() *StringSetSelector {
+ if x != nil {
+ return x.KindSelector
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyTargetProto) GetLabelSelector() *LabelSelector {
+ if x != nil {
+ return x.LabelSelector
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyTargetProto) GetNamePattern() *RegexPattern {
+ if x != nil {
+ return x.NamePattern
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyTargetProto) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+type SchedulerPolicyProto struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
+ Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"`
+ SchedulerName string `protobuf:"bytes,6,opt,name=scheduler_name,json=schedulerName,proto3" json:"scheduler_name,omitempty"`
+ OverrideCustomScheduler bool `protobuf:"varint,7,opt,name=override_custom_scheduler,json=overrideCustomScheduler,proto3" json:"override_custom_scheduler,omitempty"`
+ Targets []*SchedulerPolicyTargetProto `protobuf:"bytes,8,rep,name=targets,proto3" json:"targets,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ // set while a delete waits for revert acks (spec 4.5)
+ DeleteRequestedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=delete_requested_at,json=deleteRequestedAt,proto3,oneof" json:"delete_requested_at,omitempty"`
+ // live enrollment count, filled by List (not persisted)
+ EnrolledWorkloads int32 `protobuf:"varint,12,opt,name=enrolled_workloads,json=enrolledWorkloads,proto3" json:"enrolled_workloads,omitempty"`
+ ClusterNames map[string]string `protobuf:"bytes,13,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // cluster_id -> display name, union of target clusters
+}
+
+func (x *SchedulerPolicyProto) Reset() {
+ *x = SchedulerPolicyProto{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[408]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerPolicyProto) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerPolicyProto) ProtoMessage() {}
+
+func (x *SchedulerPolicyProto) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[408]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerPolicyProto.ProtoReflect.Descriptor instead.
+func (*SchedulerPolicyProto) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{408}
+}
+
+func (x *SchedulerPolicyProto) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyProto) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyProto) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyProto) GetDescription() string {
+ if x != nil && x.Description != nil {
+ return *x.Description
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyProto) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+func (x *SchedulerPolicyProto) GetSchedulerName() string {
+ if x != nil {
+ return x.SchedulerName
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyProto) GetOverrideCustomScheduler() bool {
+ if x != nil {
+ return x.OverrideCustomScheduler
+ }
+ return false
+}
+
+func (x *SchedulerPolicyProto) GetTargets() []*SchedulerPolicyTargetProto {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyProto) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyProto) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyProto) GetDeleteRequestedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.DeleteRequestedAt
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyProto) GetEnrolledWorkloads() int32 {
+ if x != nil {
+ return x.EnrolledWorkloads
+ }
+ return 0
+}
+
+func (x *SchedulerPolicyProto) GetClusterNames() map[string]string {
+ if x != nil {
+ return x.ClusterNames
+ }
+ return nil
+}
+
+type CreateSchedulerPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"`
+ OverrideCustomScheduler bool `protobuf:"varint,4,opt,name=override_custom_scheduler,json=overrideCustomScheduler,proto3" json:"override_custom_scheduler,omitempty"`
+ Targets []*SchedulerPolicyTargetProto `protobuf:"bytes,5,rep,name=targets,proto3" json:"targets,omitempty"`
+}
+
+func (x *CreateSchedulerPolicyRequest) Reset() {
+ *x = CreateSchedulerPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[409]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSchedulerPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSchedulerPolicyRequest) ProtoMessage() {}
+
+func (x *CreateSchedulerPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[409]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSchedulerPolicyRequest.ProtoReflect.Descriptor instead.
+func (*CreateSchedulerPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{409}
+}
+
+func (x *CreateSchedulerPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *CreateSchedulerPolicyRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *CreateSchedulerPolicyRequest) GetDescription() string {
+ if x != nil && x.Description != nil {
+ return *x.Description
+ }
+ return ""
+}
+
+func (x *CreateSchedulerPolicyRequest) GetOverrideCustomScheduler() bool {
+ if x != nil {
+ return x.OverrideCustomScheduler
+ }
+ return false
+}
+
+func (x *CreateSchedulerPolicyRequest) GetTargets() []*SchedulerPolicyTargetProto {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type CreateSchedulerPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *SchedulerPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *CreateSchedulerPolicyResponse) Reset() {
+ *x = CreateSchedulerPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[410]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSchedulerPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSchedulerPolicyResponse) ProtoMessage() {}
+
+func (x *CreateSchedulerPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[410]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSchedulerPolicyResponse.ProtoReflect.Descriptor instead.
+func (*CreateSchedulerPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{410}
+}
+
+func (x *CreateSchedulerPolicyResponse) GetPolicy() *SchedulerPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type ListSchedulerPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // When set, only policies with at least one live target covering this
+ // cluster are returned. Omitted (unset) returns every policy for the
+ // team, unfiltered.
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
+}
+
+func (x *ListSchedulerPoliciesRequest) Reset() {
+ *x = ListSchedulerPoliciesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[411]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSchedulerPoliciesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSchedulerPoliciesRequest) ProtoMessage() {}
+
+func (x *ListSchedulerPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[411]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSchedulerPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListSchedulerPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{411}
+}
+
+func (x *ListSchedulerPoliciesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListSchedulerPoliciesRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
+ }
+ return ""
+}
+
+type ListSchedulerPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*SchedulerPolicyProto `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+}
+
+func (x *ListSchedulerPoliciesResponse) Reset() {
+ *x = ListSchedulerPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[412]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSchedulerPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSchedulerPoliciesResponse) ProtoMessage() {}
+
+func (x *ListSchedulerPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[412]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSchedulerPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListSchedulerPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{412}
+}
+
+func (x *ListSchedulerPoliciesResponse) GetPolicies() []*SchedulerPolicyProto {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+type UpdateSchedulerPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
+ Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
+ OverrideCustomScheduler *bool `protobuf:"varint,5,opt,name=override_custom_scheduler,json=overrideCustomScheduler,proto3,oneof" json:"override_custom_scheduler,omitempty"`
+ // full replacement of the target set (targets with ids are updated,
+ // without ids created, missing ones removed) — omitted (empty) list
+ // means "leave targets unchanged", carried by this flag:
+ ReplaceTargets bool `protobuf:"varint,6,opt,name=replace_targets,json=replaceTargets,proto3" json:"replace_targets,omitempty"`
+ Targets []*SchedulerPolicyTargetProto `protobuf:"bytes,7,rep,name=targets,proto3" json:"targets,omitempty"`
+}
+
+func (x *UpdateSchedulerPolicyRequest) Reset() {
+ *x = UpdateSchedulerPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[413]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateSchedulerPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSchedulerPolicyRequest) ProtoMessage() {}
+
+func (x *UpdateSchedulerPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[413]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSchedulerPolicyRequest.ProtoReflect.Descriptor instead.
+func (*UpdateSchedulerPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{413}
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetName() string {
+ if x != nil && x.Name != nil {
+ return *x.Name
+ }
+ return ""
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetDescription() string {
+ if x != nil && x.Description != nil {
+ return *x.Description
+ }
+ return ""
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetOverrideCustomScheduler() bool {
+ if x != nil && x.OverrideCustomScheduler != nil {
+ return *x.OverrideCustomScheduler
+ }
+ return false
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetReplaceTargets() bool {
+ if x != nil {
+ return x.ReplaceTargets
+ }
+ return false
+}
+
+func (x *UpdateSchedulerPolicyRequest) GetTargets() []*SchedulerPolicyTargetProto {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type UpdateSchedulerPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *SchedulerPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *UpdateSchedulerPolicyResponse) Reset() {
+ *x = UpdateSchedulerPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[414]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateSchedulerPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSchedulerPolicyResponse) ProtoMessage() {}
+
+func (x *UpdateSchedulerPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[414]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSchedulerPolicyResponse.ProtoReflect.Descriptor instead.
+func (*UpdateSchedulerPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{414}
+}
+
+func (x *UpdateSchedulerPolicyResponse) GetPolicy() *SchedulerPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type ToggleSchedulerPolicyDisabledRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Disabled bool `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled,omitempty"`
+}
+
+func (x *ToggleSchedulerPolicyDisabledRequest) Reset() {
+ *x = ToggleSchedulerPolicyDisabledRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[415]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ToggleSchedulerPolicyDisabledRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleSchedulerPolicyDisabledRequest) ProtoMessage() {}
+
+func (x *ToggleSchedulerPolicyDisabledRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[415]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToggleSchedulerPolicyDisabledRequest.ProtoReflect.Descriptor instead.
+func (*ToggleSchedulerPolicyDisabledRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{415}
+}
+
+func (x *ToggleSchedulerPolicyDisabledRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ToggleSchedulerPolicyDisabledRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *ToggleSchedulerPolicyDisabledRequest) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+type ToggleSchedulerPolicyDisabledResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *SchedulerPolicyProto `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+ // active enrollments flipped to pending_revert by disabling
+ RevertsInitiated int32 `protobuf:"varint,2,opt,name=reverts_initiated,json=revertsInitiated,proto3" json:"reverts_initiated,omitempty"`
+}
+
+func (x *ToggleSchedulerPolicyDisabledResponse) Reset() {
+ *x = ToggleSchedulerPolicyDisabledResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[416]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ToggleSchedulerPolicyDisabledResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleSchedulerPolicyDisabledResponse) ProtoMessage() {}
+
+func (x *ToggleSchedulerPolicyDisabledResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[416]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToggleSchedulerPolicyDisabledResponse.ProtoReflect.Descriptor instead.
+func (*ToggleSchedulerPolicyDisabledResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{416}
+}
+
+func (x *ToggleSchedulerPolicyDisabledResponse) GetPolicy() *SchedulerPolicyProto {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+func (x *ToggleSchedulerPolicyDisabledResponse) GetRevertsInitiated() int32 {
+ if x != nil {
+ return x.RevertsInitiated
+ }
+ return 0
+}
+
+type DeleteSchedulerPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // force skips reverts: enrollments are abandoned in place (spec 4.5)
+ Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"`
+}
+
+func (x *DeleteSchedulerPolicyRequest) Reset() {
+ *x = DeleteSchedulerPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[417]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSchedulerPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSchedulerPolicyRequest) ProtoMessage() {}
+
+func (x *DeleteSchedulerPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[417]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSchedulerPolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSchedulerPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{417}
+}
+
+func (x *DeleteSchedulerPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteSchedulerPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *DeleteSchedulerPolicyRequest) GetForce() bool {
+ if x != nil {
+ return x.Force
+ }
+ return false
+}
+
+type DeleteSchedulerPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Outcome DeleteSchedulerPolicyResponse_Outcome `protobuf:"varint,1,opt,name=outcome,proto3,enum=api.v1.DeleteSchedulerPolicyResponse_Outcome" json:"outcome,omitempty"`
+ RevertsInitiated int32 `protobuf:"varint,2,opt,name=reverts_initiated,json=revertsInitiated,proto3" json:"reverts_initiated,omitempty"`
+}
+
+func (x *DeleteSchedulerPolicyResponse) Reset() {
+ *x = DeleteSchedulerPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[418]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSchedulerPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSchedulerPolicyResponse) ProtoMessage() {}
+
+func (x *DeleteSchedulerPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[418]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSchedulerPolicyResponse.ProtoReflect.Descriptor instead.
+func (*DeleteSchedulerPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{418}
+}
+
+func (x *DeleteSchedulerPolicyResponse) GetOutcome() DeleteSchedulerPolicyResponse_Outcome {
+ if x != nil {
+ return x.Outcome
+ }
+ return DeleteSchedulerPolicyResponse_OUTCOME_UNSPECIFIED
+}
+
+func (x *DeleteSchedulerPolicyResponse) GetRevertsInitiated() int32 {
+ if x != nil {
+ return x.RevertsInitiated
+ }
+ return 0
+}
+
+type PreviewSchedulerPolicyTargetsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId *string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"` // set when editing, for diff classification
+ Targets []*SchedulerPolicyTargetProto `protobuf:"bytes,3,rep,name=targets,proto3" json:"targets,omitempty"`
+}
+
+func (x *PreviewSchedulerPolicyTargetsRequest) Reset() {
+ *x = PreviewSchedulerPolicyTargetsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[419]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewSchedulerPolicyTargetsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewSchedulerPolicyTargetsRequest) ProtoMessage() {}
+
+func (x *PreviewSchedulerPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[419]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewSchedulerPolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*PreviewSchedulerPolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{419}
+}
+
+func (x *PreviewSchedulerPolicyTargetsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewSchedulerPolicyTargetsRequest) GetPolicyId() string {
+ if x != nil && x.PolicyId != nil {
+ return *x.PolicyId
+ }
+ return ""
+}
+
+func (x *PreviewSchedulerPolicyTargetsRequest) GetTargets() []*SchedulerPolicyTargetProto {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type SchedulerPolicyTargetMatch struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Status SchedulerPolicyTargetMatch_Status `protobuf:"varint,5,opt,name=status,proto3,enum=api.v1.SchedulerPolicyTargetMatch_Status" json:"status,omitempty"`
+ OwningPolicyId *string `protobuf:"bytes,6,opt,name=owning_policy_id,json=owningPolicyId,proto3,oneof" json:"owning_policy_id,omitempty"`
+ OwningPolicyName *string `protobuf:"bytes,7,opt,name=owning_policy_name,json=owningPolicyName,proto3,oneof" json:"owning_policy_name,omitempty"`
+ // workload spec's current schedulerName ("" = unset/default)
+ CurrentScheduler string `protobuf:"bytes,8,opt,name=current_scheduler,json=currentScheduler,proto3" json:"current_scheduler,omitempty"`
+}
+
+func (x *SchedulerPolicyTargetMatch) Reset() {
+ *x = SchedulerPolicyTargetMatch{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[420]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerPolicyTargetMatch) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerPolicyTargetMatch) ProtoMessage() {}
+
+func (x *SchedulerPolicyTargetMatch) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[420]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerPolicyTargetMatch.ProtoReflect.Descriptor instead.
+func (*SchedulerPolicyTargetMatch) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{420}
+}
+
+func (x *SchedulerPolicyTargetMatch) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetMatch) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetMatch) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetMatch) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetMatch) GetStatus() SchedulerPolicyTargetMatch_Status {
+ if x != nil {
+ return x.Status
+ }
+ return SchedulerPolicyTargetMatch_STATUS_UNSPECIFIED
+}
+
+func (x *SchedulerPolicyTargetMatch) GetOwningPolicyId() string {
+ if x != nil && x.OwningPolicyId != nil {
+ return *x.OwningPolicyId
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetMatch) GetOwningPolicyName() string {
+ if x != nil && x.OwningPolicyName != nil {
+ return *x.OwningPolicyName
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyTargetMatch) GetCurrentScheduler() string {
+ if x != nil {
+ return x.CurrentScheduler
+ }
+ return ""
+}
+
+type PreviewSchedulerPolicyTargetsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MatchedWorkloads []*SchedulerPolicyTargetMatch `protobuf:"bytes,1,rep,name=matched_workloads,json=matchedWorkloads,proto3" json:"matched_workloads,omitempty"`
+ TotalMatched int32 `protobuf:"varint,2,opt,name=total_matched,json=totalMatched,proto3" json:"total_matched,omitempty"`
+ TotalReturned int32 `protobuf:"varint,3,opt,name=total_returned,json=totalReturned,proto3" json:"total_returned,omitempty"` // capped at 500, deterministic prefix
+ // Count over the FULL match set (like total_matched), not just the
+ // capped/returned prefix: matches whose current_scheduler is neither
+ // empty nor default-scheduler.
+ CustomSchedulerCount int32 `protobuf:"varint,4,opt,name=custom_scheduler_count,json=customSchedulerCount,proto3" json:"custom_scheduler_count,omitempty"`
+}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) Reset() {
+ *x = PreviewSchedulerPolicyTargetsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[421]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewSchedulerPolicyTargetsResponse) ProtoMessage() {}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[421]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewSchedulerPolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*PreviewSchedulerPolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{421}
+}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) GetMatchedWorkloads() []*SchedulerPolicyTargetMatch {
+ if x != nil {
+ return x.MatchedWorkloads
+ }
+ return nil
+}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) GetTotalMatched() int32 {
+ if x != nil {
+ return x.TotalMatched
+ }
+ return 0
+}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) GetTotalReturned() int32 {
+ if x != nil {
+ return x.TotalReturned
+ }
+ return 0
+}
+
+func (x *PreviewSchedulerPolicyTargetsResponse) GetCustomSchedulerCount() int32 {
+ if x != nil {
+ return x.CustomSchedulerCount
+ }
+ return 0
+}
+
+type ListSchedulerPolicyEnrollmentsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *ListSchedulerPolicyEnrollmentsRequest) Reset() {
+ *x = ListSchedulerPolicyEnrollmentsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[422]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSchedulerPolicyEnrollmentsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSchedulerPolicyEnrollmentsRequest) ProtoMessage() {}
+
+func (x *ListSchedulerPolicyEnrollmentsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[422]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSchedulerPolicyEnrollmentsRequest.ProtoReflect.Descriptor instead.
+func (*ListSchedulerPolicyEnrollmentsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{422}
+}
+
+func (x *ListSchedulerPolicyEnrollmentsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListSchedulerPolicyEnrollmentsRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type SchedulerPolicyEnrollment struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,4,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ State SchedulerPolicyEnrollment_State `protobuf:"varint,5,opt,name=state,proto3,enum=api.v1.SchedulerPolicyEnrollment_State" json:"state,omitempty"`
+ // Original scheduler captured in the workload's baseline. Unset when no
+ // baseline row exists yet (spec 3.3); an empty string is a real value —
+ // the baseline captured the field as unset on the workload, not "unknown".
+ OriginalSchedulerName *string `protobuf:"bytes,6,opt,name=original_scheduler_name,json=originalSchedulerName,proto3,oneof" json:"original_scheduler_name,omitempty"`
+ EnrolledAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=enrolled_at,json=enrolledAt,proto3" json:"enrolled_at,omitempty"`
+ UnenrolledAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=unenrolled_at,json=unenrolledAt,proto3,oneof" json:"unenrolled_at,omitempty"`
+}
+
+func (x *SchedulerPolicyEnrollment) Reset() {
+ *x = SchedulerPolicyEnrollment{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[423]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerPolicyEnrollment) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerPolicyEnrollment) ProtoMessage() {}
+
+func (x *SchedulerPolicyEnrollment) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[423]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerPolicyEnrollment.ProtoReflect.Descriptor instead.
+func (*SchedulerPolicyEnrollment) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{423}
+}
+
+func (x *SchedulerPolicyEnrollment) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyEnrollment) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyEnrollment) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyEnrollment) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyEnrollment) GetState() SchedulerPolicyEnrollment_State {
+ if x != nil {
+ return x.State
+ }
+ return SchedulerPolicyEnrollment_STATE_UNSPECIFIED
+}
+
+func (x *SchedulerPolicyEnrollment) GetOriginalSchedulerName() string {
+ if x != nil && x.OriginalSchedulerName != nil {
+ return *x.OriginalSchedulerName
+ }
+ return ""
+}
+
+func (x *SchedulerPolicyEnrollment) GetEnrolledAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EnrolledAt
+ }
+ return nil
+}
+
+func (x *SchedulerPolicyEnrollment) GetUnenrolledAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UnenrolledAt
+ }
+ return nil
+}
+
+type ListSchedulerPolicyEnrollmentsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Enrollments []*SchedulerPolicyEnrollment `protobuf:"bytes,1,rep,name=enrollments,proto3" json:"enrollments,omitempty"`
+ ClusterNames map[string]string `protobuf:"bytes,2,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // cluster_id -> display name
+}
+
+func (x *ListSchedulerPolicyEnrollmentsResponse) Reset() {
+ *x = ListSchedulerPolicyEnrollmentsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[424]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSchedulerPolicyEnrollmentsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSchedulerPolicyEnrollmentsResponse) ProtoMessage() {}
+
+func (x *ListSchedulerPolicyEnrollmentsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[424]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSchedulerPolicyEnrollmentsResponse.ProtoReflect.Descriptor instead.
+func (*ListSchedulerPolicyEnrollmentsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{424}
+}
+
+func (x *ListSchedulerPolicyEnrollmentsResponse) GetEnrollments() []*SchedulerPolicyEnrollment {
+ if x != nil {
+ return x.Enrollments
+ }
+ return nil
+}
+
+func (x *ListSchedulerPolicyEnrollmentsResponse) GetClusterNames() map[string]string {
+ if x != nil {
+ return x.ClusterNames
+ }
+ return nil
+}
+
+type SchedulerPolicySync struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*SchedulerPolicyProto `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Reverts []*SchedulerRevertInstruction `protobuf:"bytes,2,rep,name=reverts,proto3" json:"reverts,omitempty"`
+ // Opaque fingerprint of (policies, reverts, scheduler_settings); tunr
+ // echoes it in its next enrollment report so dakr can log convergence.
+ // Not used for correctness.
+ SyncFingerprint string `protobuf:"bytes,3,opt,name=sync_fingerprint,json=syncFingerprint,proto3" json:"sync_fingerprint,omitempty"`
+ // Rendered dz-scheduler-config.yaml content for this cluster, when a
+ // settings row exists. Unset when the cluster has no persisted
+ // SchedulerSettings row — tunr must leave the helm-managed ConfigMap
+ // untouched in that case, not apply a rendered-defaults config.
+ SchedulerSettings *SchedulerConfigPayload `protobuf:"bytes,4,opt,name=scheduler_settings,json=schedulerSettings,proto3" json:"scheduler_settings,omitempty"`
+}
+
+func (x *SchedulerPolicySync) Reset() {
+ *x = SchedulerPolicySync{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[425]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerPolicySync) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerPolicySync) ProtoMessage() {}
+
+func (x *SchedulerPolicySync) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[425]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerPolicySync.ProtoReflect.Descriptor instead.
+func (*SchedulerPolicySync) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{425}
+}
+
+func (x *SchedulerPolicySync) GetPolicies() []*SchedulerPolicyProto {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+func (x *SchedulerPolicySync) GetReverts() []*SchedulerRevertInstruction {
+ if x != nil {
+ return x.Reverts
+ }
+ return nil
+}
+
+func (x *SchedulerPolicySync) GetSyncFingerprint() string {
+ if x != nil {
+ return x.SyncFingerprint
+ }
+ return ""
+}
+
+func (x *SchedulerPolicySync) GetSchedulerSettings() *SchedulerConfigPayload {
+ if x != nil {
+ return x.SchedulerSettings
+ }
+ return nil
+}
+
+type SchedulerConfigPayload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Complete dz-scheduler-config.yaml content, rendered by dakr.
+ RenderedConfig string `protobuf:"bytes,1,opt,name=rendered_config,json=renderedConfig,proto3" json:"rendered_config,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+}
+
+func (x *SchedulerConfigPayload) Reset() {
+ *x = SchedulerConfigPayload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[426]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerConfigPayload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerConfigPayload) ProtoMessage() {}
+
+func (x *SchedulerConfigPayload) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[426]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerConfigPayload.ProtoReflect.Descriptor instead.
+func (*SchedulerConfigPayload) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{426}
+}
+
+func (x *SchedulerConfigPayload) GetRenderedConfig() string {
+ if x != nil {
+ return x.RenderedConfig
+ }
+ return ""
+}
+
+func (x *SchedulerConfigPayload) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+type SchedulerRevertInstruction struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ EnrollmentId string `protobuf:"bytes,1,opt,name=enrollment_id,json=enrollmentId,proto3" json:"enrollment_id,omitempty"` // ack correlation id for apply
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,4,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ // literal value to restore; empty string means remove the field
+ // (baseline recorded the scheduler as unset). tunr prefers the
+ // on-workload annotation and uses this as fallback (spec 4.5 step 2).
+ OriginalSchedulerName string `protobuf:"bytes,5,opt,name=original_scheduler_name,json=originalSchedulerName,proto3" json:"original_scheduler_name,omitempty"`
+}
+
+func (x *SchedulerRevertInstruction) Reset() {
+ *x = SchedulerRevertInstruction{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[427]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerRevertInstruction) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerRevertInstruction) ProtoMessage() {}
+
+func (x *SchedulerRevertInstruction) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[427]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerRevertInstruction.ProtoReflect.Descriptor instead.
+func (*SchedulerRevertInstruction) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{427}
+}
+
+func (x *SchedulerRevertInstruction) GetEnrollmentId() string {
+ if x != nil {
+ return x.EnrollmentId
+ }
+ return ""
+}
+
+func (x *SchedulerRevertInstruction) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SchedulerRevertInstruction) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *SchedulerRevertInstruction) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *SchedulerRevertInstruction) GetOriginalSchedulerName() string {
+ if x != nil {
+ return x.OriginalSchedulerName
+ }
+ return ""
+}
+
+type SchedulerEnrollmentReport struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Observations []*SchedulerEnrollmentReport_Observation `protobuf:"bytes,1,rep,name=observations,proto3" json:"observations,omitempty"`
+ // Echo of the SchedulerPolicySync.sync_fingerprint tunr last applied.
+ // dakr compares this against the sending stream's current delivery-state
+ // fingerprint and logs a divergence once per report (Debug/Info) --
+ // informational only, never rejected: a stale echo just means tunr's
+ // report raced an in-flight sync push and will self-correct on the next
+ // tick.
+ SyncFingerprint string `protobuf:"bytes,2,opt,name=sync_fingerprint,json=syncFingerprint,proto3" json:"sync_fingerprint,omitempty"`
+ // Full image ref of the running dz-scheduler container (registry/repo:tag),
+ // as read from the dz-scheduler Deployment's first container. Informational,
+ // and the version gate the config renderer (#9978) uses to decide which
+ // rendered-config shape a cluster can accept. "" = unknown or the
+ // Deployment was not found (scheduler disabled, or not yet observed).
+ SchedulerImage string `protobuf:"bytes,3,opt,name=scheduler_image,json=schedulerImage,proto3" json:"scheduler_image,omitempty"`
+}
+
+func (x *SchedulerEnrollmentReport) Reset() {
+ *x = SchedulerEnrollmentReport{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[428]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerEnrollmentReport) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerEnrollmentReport) ProtoMessage() {}
+
+func (x *SchedulerEnrollmentReport) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[428]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerEnrollmentReport.ProtoReflect.Descriptor instead.
+func (*SchedulerEnrollmentReport) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{428}
+}
+
+func (x *SchedulerEnrollmentReport) GetObservations() []*SchedulerEnrollmentReport_Observation {
+ if x != nil {
+ return x.Observations
+ }
+ return nil
+}
+
+func (x *SchedulerEnrollmentReport) GetSyncFingerprint() string {
+ if x != nil {
+ return x.SyncFingerprint
+ }
+ return ""
+}
+
+func (x *SchedulerEnrollmentReport) GetSchedulerImage() string {
+ if x != nil {
+ return x.SchedulerImage
+ }
+ return ""
+}
+
+// SchedulerRevertEventReport carries fail-open scheduler revert events
+// observed by tunr's admission failsafe: pods steered away from an
+// unhealthy tracked scheduler at CREATE time. Pod-level and transient --
+// the owning workload stays enrolled; dakr records these as the negative
+// signal for scheduler-impact observability. Batched per stream tick;
+// dropped_events counts buffer overflow drops since the last report.
+type SchedulerRevertEventReport struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Events []*SchedulerRevertEventReport_Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ DroppedEvents uint32 `protobuf:"varint,2,opt,name=dropped_events,json=droppedEvents,proto3" json:"dropped_events,omitempty"`
+}
+
+func (x *SchedulerRevertEventReport) Reset() {
+ *x = SchedulerRevertEventReport{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[429]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerRevertEventReport) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerRevertEventReport) ProtoMessage() {}
+
+func (x *SchedulerRevertEventReport) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[429]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerRevertEventReport.ProtoReflect.Descriptor instead.
+func (*SchedulerRevertEventReport) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{429}
+}
+
+func (x *SchedulerRevertEventReport) GetEvents() []*SchedulerRevertEventReport_Event {
+ if x != nil {
+ return x.Events
+ }
+ return nil
+}
+
+func (x *SchedulerRevertEventReport) GetDroppedEvents() uint32 {
+ if x != nil {
+ return x.DroppedEvents
+ }
+ return 0
+}
+
+type GetWorkloadRulesByPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *GetWorkloadRulesByPolicyRequest) Reset() {
+ *x = GetWorkloadRulesByPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[430]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadRulesByPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadRulesByPolicyRequest) ProtoMessage() {}
+
+func (x *GetWorkloadRulesByPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[430]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadRulesByPolicyRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRulesByPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{430}
+}
+
+func (x *GetWorkloadRulesByPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadRulesByPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type GetWorkloadRulesByPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ManagedRules []*WorkloadRule `protobuf:"bytes,1,rep,name=managed_rules,json=managedRules,proto3" json:"managed_rules,omitempty"`
+ ExcludedRules []*WorkloadRule `protobuf:"bytes,2,rep,name=excluded_rules,json=excludedRules,proto3" json:"excluded_rules,omitempty"`
+ ClusterNames map[string]string `protobuf:"bytes,3,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *GetWorkloadRulesByPolicyResponse) Reset() {
+ *x = GetWorkloadRulesByPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[431]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadRulesByPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadRulesByPolicyResponse) ProtoMessage() {}
+
+func (x *GetWorkloadRulesByPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[431]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadRulesByPolicyResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRulesByPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{431}
+}
+
+func (x *GetWorkloadRulesByPolicyResponse) GetManagedRules() []*WorkloadRule {
+ if x != nil {
+ return x.ManagedRules
+ }
+ return nil
+}
+
+func (x *GetWorkloadRulesByPolicyResponse) GetExcludedRules() []*WorkloadRule {
+ if x != nil {
+ return x.ExcludedRules
+ }
+ return nil
+}
+
+func (x *GetWorkloadRulesByPolicyResponse) GetClusterNames() map[string]string {
+ if x != nil {
+ return x.ClusterNames
+ }
+ return nil
+}
+
+type ListWorkloadRulesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId *string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3,oneof" json:"cluster_id,omitempty"`
+}
+
+func (x *ListWorkloadRulesRequest) Reset() {
+ *x = ListWorkloadRulesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[432]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadRulesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadRulesRequest) ProtoMessage() {}
+
+func (x *ListWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[432]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadRulesRequest.ProtoReflect.Descriptor instead.
+func (*ListWorkloadRulesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{432}
+}
+
+func (x *ListWorkloadRulesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListWorkloadRulesRequest) GetClusterId() string {
+ if x != nil && x.ClusterId != nil {
+ return *x.ClusterId
+ }
+ return ""
+}
+
+type ListWorkloadRulesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rules []*WorkloadRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
+ ClusterNames map[string]string `protobuf:"bytes,2,rep,name=cluster_names,json=clusterNames,proto3" json:"cluster_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // cluster_id → display name
+ PolicyNames map[string]string `protobuf:"bytes,3,rep,name=policy_names,json=policyNames,proto3" json:"policy_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // policy_id → policy name
+}
+
+func (x *ListWorkloadRulesResponse) Reset() {
+ *x = ListWorkloadRulesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[433]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListWorkloadRulesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListWorkloadRulesResponse) ProtoMessage() {}
+
+func (x *ListWorkloadRulesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[433]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListWorkloadRulesResponse.ProtoReflect.Descriptor instead.
+func (*ListWorkloadRulesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{433}
+}
+
+func (x *ListWorkloadRulesResponse) GetRules() []*WorkloadRule {
+ if x != nil {
+ return x.Rules
+ }
+ return nil
+}
+
+func (x *ListWorkloadRulesResponse) GetClusterNames() map[string]string {
+ if x != nil {
+ return x.ClusterNames
+ }
+ return nil
+}
+
+func (x *ListWorkloadRulesResponse) GetPolicyNames() map[string]string {
+ if x != nil {
+ return x.PolicyNames
+ }
+ return nil
+}
+
+type GetWorkloadRuleByIDRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+}
+
+func (x *GetWorkloadRuleByIDRequest) Reset() {
+ *x = GetWorkloadRuleByIDRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[434]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadRuleByIDRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadRuleByIDRequest) ProtoMessage() {}
+
+func (x *GetWorkloadRuleByIDRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[434]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadRuleByIDRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRuleByIDRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{434}
+}
+
+func (x *GetWorkloadRuleByIDRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByIDRequest) GetRuleId() string {
+ if x != nil {
+ return x.RuleId
+ }
+ return ""
+}
+
+type GetWorkloadRuleByIDResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
+ ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // display name of rule.cluster_id
+ PolicyName string `protobuf:"bytes,3,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"` // display name of rule.policy_id (empty if no policy attached)
+}
+
+func (x *GetWorkloadRuleByIDResponse) Reset() {
+ *x = GetWorkloadRuleByIDResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[435]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadRuleByIDResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadRuleByIDResponse) ProtoMessage() {}
+
+func (x *GetWorkloadRuleByIDResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[435]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadRuleByIDResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRuleByIDResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{435}
+}
+
+func (x *GetWorkloadRuleByIDResponse) GetRule() *WorkloadRule {
+ if x != nil {
+ return x.Rule
+ }
+ return nil
+}
+
+func (x *GetWorkloadRuleByIDResponse) GetClusterName() string {
+ if x != nil {
+ return x.ClusterName
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByIDResponse) GetPolicyName() string {
+ if x != nil {
+ return x.PolicyName
+ }
+ return ""
+}
+
+// GetWorkloadRuleByWorkloadRequest looks up a single rule by workload coordinates.
+type GetWorkloadRuleByWorkloadRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,5,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) Reset() {
+ *x = GetWorkloadRuleByWorkloadRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[436]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadRuleByWorkloadRequest) ProtoMessage() {}
+
+func (x *GetWorkloadRuleByWorkloadRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[436]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadRuleByWorkloadRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRuleByWorkloadRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{436}
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByWorkloadRequest) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+// GetWorkloadRuleByWorkloadResponse returns the rule for a workload (if any) plus display metadata.
+// Returns found = false (with rule unset) when no rule exists for the given coordinates;
+// internal errors continue to surface as gRPC error statuses.
+type GetWorkloadRuleByWorkloadResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
+ ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // display name of rule.cluster_id (when found)
+ PolicyName string `protobuf:"bytes,3,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"` // display name of rule.policy_id (empty if no policy attached)
+ Found bool `protobuf:"varint,4,opt,name=found,proto3" json:"found,omitempty"` // true when a matching rule exists
+}
+
+func (x *GetWorkloadRuleByWorkloadResponse) Reset() {
+ *x = GetWorkloadRuleByWorkloadResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[437]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadRuleByWorkloadResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadRuleByWorkloadResponse) ProtoMessage() {}
+
+func (x *GetWorkloadRuleByWorkloadResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[437]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadRuleByWorkloadResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadRuleByWorkloadResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{437}
+}
+
+func (x *GetWorkloadRuleByWorkloadResponse) GetRule() *WorkloadRule {
+ if x != nil {
+ return x.Rule
+ }
+ return nil
+}
+
+func (x *GetWorkloadRuleByWorkloadResponse) GetClusterName() string {
+ if x != nil {
+ return x.ClusterName
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByWorkloadResponse) GetPolicyName() string {
+ if x != nil {
+ return x.PolicyName
+ }
+ return ""
+}
+
+func (x *GetWorkloadRuleByWorkloadResponse) GetFound() bool {
+ if x != nil {
+ return x.Found
+ }
+ return false
+}
+
+// GetWorkloadByWorkloadRuleRequest resolves the live workload UID for a rule.
+// Lightweight lookup — does not return full workload data, just the uid that
+// downstream RPCs (e.g. GetWorkloadProfiles, GetWorkload) require.
+type GetWorkloadByWorkloadRuleRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+}
+
+func (x *GetWorkloadByWorkloadRuleRequest) Reset() {
+ *x = GetWorkloadByWorkloadRuleRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[438]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadByWorkloadRuleRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadByWorkloadRuleRequest) ProtoMessage() {}
+
+func (x *GetWorkloadByWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[438]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadByWorkloadRuleRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadByWorkloadRuleRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{438}
+}
+
+func (x *GetWorkloadByWorkloadRuleRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadByWorkloadRuleRequest) GetRuleId() string {
+ if x != nil {
+ return x.RuleId
+ }
+ return ""
+}
+
+type GetWorkloadByWorkloadRuleResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ WorkloadUid string `protobuf:"bytes,1,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"` // empty when no live workload matches the rule's coordinates
+}
+
+func (x *GetWorkloadByWorkloadRuleResponse) Reset() {
+ *x = GetWorkloadByWorkloadRuleResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[439]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadByWorkloadRuleResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadByWorkloadRuleResponse) ProtoMessage() {}
+
+func (x *GetWorkloadByWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[439]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadByWorkloadRuleResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadByWorkloadRuleResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{439}
+}
+
+func (x *GetWorkloadByWorkloadRuleResponse) GetWorkloadUid() string {
+ if x != nil {
+ return x.WorkloadUid
+ }
+ return ""
+}
+
+type DeleteWorkloadRuleRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+}
+
+func (x *DeleteWorkloadRuleRequest) Reset() {
+ *x = DeleteWorkloadRuleRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[440]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteWorkloadRuleRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteWorkloadRuleRequest) ProtoMessage() {}
+
+func (x *DeleteWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[440]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteWorkloadRuleRequest.ProtoReflect.Descriptor instead.
+func (*DeleteWorkloadRuleRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{440}
+}
+
+func (x *DeleteWorkloadRuleRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteWorkloadRuleRequest) GetRuleId() string {
+ if x != nil {
+ return x.RuleId
+ }
+ return ""
+}
+
+type DeleteWorkloadRuleResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteWorkloadRuleResponse) Reset() {
+ *x = DeleteWorkloadRuleResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[441]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteWorkloadRuleResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteWorkloadRuleResponse) ProtoMessage() {}
+
+func (x *DeleteWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[441]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteWorkloadRuleResponse.ProtoReflect.Descriptor instead.
+func (*DeleteWorkloadRuleResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{441}
+}
+
+type DeleteAllWorkloadRulesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *DeleteAllWorkloadRulesRequest) Reset() {
+ *x = DeleteAllWorkloadRulesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[442]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteAllWorkloadRulesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteAllWorkloadRulesRequest) ProtoMessage() {}
+
+func (x *DeleteAllWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[442]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteAllWorkloadRulesRequest.ProtoReflect.Descriptor instead.
+func (*DeleteAllWorkloadRulesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{442}
+}
+
+func (x *DeleteAllWorkloadRulesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteAllWorkloadRulesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type DeleteAllWorkloadRulesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteAllWorkloadRulesResponse) Reset() {
+ *x = DeleteAllWorkloadRulesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[443]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteAllWorkloadRulesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteAllWorkloadRulesResponse) ProtoMessage() {}
+
+func (x *DeleteAllWorkloadRulesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[443]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteAllWorkloadRulesResponse.ProtoReflect.Descriptor instead.
+func (*DeleteAllWorkloadRulesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{443}
+}
+
+// BulkDeleteWorkloadRules deletes an explicit set of rules within a single
+// cluster (e.g. a UI multi-select), triggering CRD removal for each. Scoped
+// to cluster_id so the server can validate ownership once and reject any
+// rule_ids that don't belong to that cluster, rather than trusting the caller.
+type BulkDeleteWorkloadRulesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ RuleIds []string `protobuf:"bytes,3,rep,name=rule_ids,json=ruleIds,proto3" json:"rule_ids,omitempty"`
+}
+
+func (x *BulkDeleteWorkloadRulesRequest) Reset() {
+ *x = BulkDeleteWorkloadRulesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[444]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BulkDeleteWorkloadRulesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BulkDeleteWorkloadRulesRequest) ProtoMessage() {}
+
+func (x *BulkDeleteWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[444]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BulkDeleteWorkloadRulesRequest.ProtoReflect.Descriptor instead.
+func (*BulkDeleteWorkloadRulesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{444}
+}
+
+func (x *BulkDeleteWorkloadRulesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *BulkDeleteWorkloadRulesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *BulkDeleteWorkloadRulesRequest) GetRuleIds() []string {
+ if x != nil {
+ return x.RuleIds
+ }
+ return nil
+}
+
+type BulkDeleteWorkloadRulesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DeletedCount int32 `protobuf:"varint,1,opt,name=deleted_count,json=deletedCount,proto3" json:"deleted_count,omitempty"`
+}
+
+func (x *BulkDeleteWorkloadRulesResponse) Reset() {
+ *x = BulkDeleteWorkloadRulesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[445]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BulkDeleteWorkloadRulesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BulkDeleteWorkloadRulesResponse) ProtoMessage() {}
+
+func (x *BulkDeleteWorkloadRulesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[445]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BulkDeleteWorkloadRulesResponse.ProtoReflect.Descriptor instead.
+func (*BulkDeleteWorkloadRulesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{445}
+}
+
+func (x *BulkDeleteWorkloadRulesResponse) GetDeletedCount() int32 {
+ if x != nil {
+ return x.DeletedCount
+ }
+ return 0
+}
+
+// BulkToggleWorkloadRulesDisabled flips the disabled flag on an explicit set
+// of rules within a single cluster (e.g. a UI multi-select) — each rule
+// switches to whatever it currently is NOT, independently of the others, so
+// a single call can disable some and enable others in one request. Mirrors
+// BulkDeleteWorkloadRules's scoping: rule_ids that do not belong to
+// cluster_id are silently excluded rather than erroring.
+type BulkToggleWorkloadRulesDisabledRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ RuleIds []string `protobuf:"bytes,3,rep,name=rule_ids,json=ruleIds,proto3" json:"rule_ids,omitempty"`
+}
+
+func (x *BulkToggleWorkloadRulesDisabledRequest) Reset() {
+ *x = BulkToggleWorkloadRulesDisabledRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[446]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BulkToggleWorkloadRulesDisabledRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BulkToggleWorkloadRulesDisabledRequest) ProtoMessage() {}
+
+func (x *BulkToggleWorkloadRulesDisabledRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[446]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BulkToggleWorkloadRulesDisabledRequest.ProtoReflect.Descriptor instead.
+func (*BulkToggleWorkloadRulesDisabledRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{446}
+}
+
+func (x *BulkToggleWorkloadRulesDisabledRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *BulkToggleWorkloadRulesDisabledRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *BulkToggleWorkloadRulesDisabledRequest) GetRuleIds() []string {
+ if x != nil {
+ return x.RuleIds
+ }
+ return nil
+}
+
+type BulkToggleWorkloadRulesDisabledResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ UpdatedCount int32 `protobuf:"varint,1,opt,name=updated_count,json=updatedCount,proto3" json:"updated_count,omitempty"`
+}
+
+func (x *BulkToggleWorkloadRulesDisabledResponse) Reset() {
+ *x = BulkToggleWorkloadRulesDisabledResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[447]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BulkToggleWorkloadRulesDisabledResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BulkToggleWorkloadRulesDisabledResponse) ProtoMessage() {}
+
+func (x *BulkToggleWorkloadRulesDisabledResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[447]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BulkToggleWorkloadRulesDisabledResponse.ProtoReflect.Descriptor instead.
+func (*BulkToggleWorkloadRulesDisabledResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{447}
+}
+
+func (x *BulkToggleWorkloadRulesDisabledResponse) GetUpdatedCount() int32 {
+ if x != nil {
+ return x.UpdatedCount
+ }
+ return 0
+}
+
+type DeleteRuleAndApplyRecommendationRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ WorkloadUid string `protobuf:"bytes,3,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
+ WorkloadRecommendation *WorkloadRecommendation `protobuf:"bytes,4,opt,name=workload_recommendation,json=workloadRecommendation,proto3" json:"workload_recommendation,omitempty"`
+}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) Reset() {
+ *x = DeleteRuleAndApplyRecommendationRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[448]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteRuleAndApplyRecommendationRequest) ProtoMessage() {}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[448]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteRuleAndApplyRecommendationRequest.ProtoReflect.Descriptor instead.
+func (*DeleteRuleAndApplyRecommendationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{448}
+}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) GetRuleId() string {
+ if x != nil {
+ return x.RuleId
+ }
+ return ""
+}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) GetWorkloadUid() string {
+ if x != nil {
+ return x.WorkloadUid
+ }
+ return ""
+}
+
+func (x *DeleteRuleAndApplyRecommendationRequest) GetWorkloadRecommendation() *WorkloadRecommendation {
+ if x != nil {
+ return x.WorkloadRecommendation
+ }
+ return nil
+}
+
+type DeleteRuleAndApplyRecommendationResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteRuleAndApplyRecommendationResponse) Reset() {
+ *x = DeleteRuleAndApplyRecommendationResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[449]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteRuleAndApplyRecommendationResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteRuleAndApplyRecommendationResponse) ProtoMessage() {}
+
+func (x *DeleteRuleAndApplyRecommendationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[449]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteRuleAndApplyRecommendationResponse.ProtoReflect.Descriptor instead.
+func (*DeleteRuleAndApplyRecommendationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{449}
+}
+
+// ManualRuleFields carries the user-configurable rule fields shared by the
+// Upsert and Preview RPCs. Extracted as its own message so the two request
+// messages stay shape-aligned and the Go conversion logic has a single entry
+// point.
+type ManualRuleFields struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CpuRule *ResourceRuleConfig `protobuf:"bytes,1,opt,name=cpu_rule,json=cpuRule,proto3" json:"cpu_rule,omitempty"`
+ MemoryRule *ResourceRuleConfig `protobuf:"bytes,2,opt,name=memory_rule,json=memoryRule,proto3" json:"memory_rule,omitempty"`
+ GpuRule *ResourceRuleConfig `protobuf:"bytes,3,opt,name=gpu_rule,json=gpuRule,proto3" json:"gpu_rule,omitempty"`
+ HpaRule *HPARuleConfig `protobuf:"bytes,4,opt,name=hpa_rule,json=hpaRule,proto3" json:"hpa_rule,omitempty"`
+ EmergencyResponse *EmergencyResponseConfig `protobuf:"bytes,5,opt,name=emergency_response,json=emergencyResponse,proto3" json:"emergency_response,omitempty"`
+ ActionTriggers []ActionTrigger `protobuf:"varint,6,rep,packed,name=action_triggers,json=actionTriggers,proto3,enum=api.v1.ActionTrigger" json:"action_triggers,omitempty"`
+ StartupPeriodSeconds *int64 `protobuf:"varint,7,opt,name=startup_period_seconds,json=startupPeriodSeconds,proto3,oneof" json:"startup_period_seconds,omitempty"`
+ CronSchedule *string `protobuf:"bytes,8,opt,name=cron_schedule,json=cronSchedule,proto3,oneof" json:"cron_schedule,omitempty"`
+ CooldownMinutes *int32 `protobuf:"varint,9,opt,name=cooldown_minutes,json=cooldownMinutes,proto3,oneof" json:"cooldown_minutes,omitempty"`
+ DetectionTriggers []WorkloadDetectionTrigger `protobuf:"varint,10,rep,packed,name=detection_triggers,json=detectionTriggers,proto3,enum=api.v1.WorkloadDetectionTrigger" json:"detection_triggers,omitempty"`
+ SchedulerPlugins []string `protobuf:"bytes,11,rep,name=scheduler_plugins,json=schedulerPlugins,proto3" json:"scheduler_plugins,omitempty"`
+ DefragmentationSchedule *string `protobuf:"bytes,12,opt,name=defragmentation_schedule,json=defragmentationSchedule,proto3,oneof" json:"defragmentation_schedule,omitempty"`
+ LiveMigrationEnabled bool `protobuf:"varint,13,opt,name=live_migration_enabled,json=liveMigrationEnabled,proto3" json:"live_migration_enabled,omitempty"`
+ UseInPlaceVerticalScaling bool `protobuf:"varint,14,opt,name=use_in_place_vertical_scaling,json=useInPlaceVerticalScaling,proto3" json:"use_in_place_vertical_scaling,omitempty"`
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ AllowInPlaceMemoryLimitDecrease bool `protobuf:"varint,20,opt,name=allow_in_place_memory_limit_decrease,json=allowInPlaceMemoryLimitDecrease,proto3" json:"allow_in_place_memory_limit_decrease,omitempty"`
+ // Per-container resource configs (VPA). When empty, workload-level rules apply to all containers.
+ Containers []*ContainerResourceRuleConfig `protobuf:"bytes,15,rep,name=containers,proto3" json:"containers,omitempty"`
+ // JVM heap optimization overrides for this rule.
+ JvmHeapRule *JVMHeapRuleConfig `protobuf:"bytes,16,opt,name=jvm_heap_rule,json=jvmHeapRule,proto3" json:"jvm_heap_rule,omitempty"`
+ // Per-rule override of the JVM CPU startup floor (millicores). See
+ // WorkloadRule.jvm_cpu_startup_floor_millicores for semantics.
+ JvmCpuStartupFloorMillicores *int64 `protobuf:"varint,17,opt,name=jvm_cpu_startup_floor_millicores,json=jvmCpuStartupFloorMillicores,proto3,oneof" json:"jvm_cpu_startup_floor_millicores,omitempty"`
+ // Rule-wide on/off switch. Only valid when creating a brand-new rule via
+ // UpsertManualWorkloadRule — the request is REJECTED with an error if this
+ // is set while updating an existing rule. Use ToggleWorkloadRuleDisabled
+ // to change an existing rule's disabled state. See WorkloadRule.disabled
+ // for runtime semantics. optional (not plain bool) so the server can tell
+ // "omitted" apart from "explicitly false" and enforce the create-only rule.
+ Disabled *bool `protobuf:"varint,18,opt,name=disabled,proto3,oneof" json:"disabled,omitempty"`
+ // Per-rule metrics lookback override. Unset inherits the owning policy's
+ // window, else the 7-day default.
+ LookbackPeriodSeconds *int32 `protobuf:"varint,19,opt,name=lookback_period_seconds,json=lookbackPeriodSeconds,proto3,oneof" json:"lookback_period_seconds,omitempty"`
+ // KEDA ScaledObject template authored by the user via the manual-rule form.
+ // Mirrors WorkloadRule.keda_scaled_object; written through by UpsertManualWorkloadRule.
+ // Field 20 is taken by main's allow_in_place_memory_limit_decrease (added on the
+ // main merge), so keda_scaled_object is 21.
+ KedaScaledObject *KEDAScaledObjectTemplate `protobuf:"bytes,21,opt,name=keda_scaled_object,json=kedaScaledObject,proto3,oneof" json:"keda_scaled_object,omitempty"`
+}
+
+func (x *ManualRuleFields) Reset() {
+ *x = ManualRuleFields{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[450]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ManualRuleFields) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManualRuleFields) ProtoMessage() {}
+
+func (x *ManualRuleFields) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[450]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManualRuleFields.ProtoReflect.Descriptor instead.
+func (*ManualRuleFields) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{450}
+}
+
+func (x *ManualRuleFields) GetCpuRule() *ResourceRuleConfig {
+ if x != nil {
+ return x.CpuRule
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetMemoryRule() *ResourceRuleConfig {
+ if x != nil {
+ return x.MemoryRule
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetGpuRule() *ResourceRuleConfig {
+ if x != nil {
+ return x.GpuRule
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetHpaRule() *HPARuleConfig {
+ if x != nil {
+ return x.HpaRule
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetEmergencyResponse() *EmergencyResponseConfig {
+ if x != nil {
+ return x.EmergencyResponse
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetActionTriggers() []ActionTrigger {
+ if x != nil {
+ return x.ActionTriggers
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetStartupPeriodSeconds() int64 {
+ if x != nil && x.StartupPeriodSeconds != nil {
+ return *x.StartupPeriodSeconds
+ }
+ return 0
+}
+
+func (x *ManualRuleFields) GetCronSchedule() string {
+ if x != nil && x.CronSchedule != nil {
+ return *x.CronSchedule
+ }
+ return ""
+}
+
+func (x *ManualRuleFields) GetCooldownMinutes() int32 {
+ if x != nil && x.CooldownMinutes != nil {
+ return *x.CooldownMinutes
+ }
+ return 0
+}
+
+func (x *ManualRuleFields) GetDetectionTriggers() []WorkloadDetectionTrigger {
+ if x != nil {
+ return x.DetectionTriggers
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetSchedulerPlugins() []string {
+ if x != nil {
+ return x.SchedulerPlugins
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetDefragmentationSchedule() string {
+ if x != nil && x.DefragmentationSchedule != nil {
+ return *x.DefragmentationSchedule
+ }
+ return ""
+}
+
+func (x *ManualRuleFields) GetLiveMigrationEnabled() bool {
+ if x != nil {
+ return x.LiveMigrationEnabled
+ }
+ return false
+}
+
+func (x *ManualRuleFields) GetUseInPlaceVerticalScaling() bool {
+ if x != nil {
+ return x.UseInPlaceVerticalScaling
+ }
+ return false
+}
+
+func (x *ManualRuleFields) GetAllowInPlaceMemoryLimitDecrease() bool {
+ if x != nil {
+ return x.AllowInPlaceMemoryLimitDecrease
+ }
+ return false
+}
+
+func (x *ManualRuleFields) GetContainers() []*ContainerResourceRuleConfig {
+ if x != nil {
+ return x.Containers
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetJvmHeapRule() *JVMHeapRuleConfig {
+ if x != nil {
+ return x.JvmHeapRule
+ }
+ return nil
+}
+
+func (x *ManualRuleFields) GetJvmCpuStartupFloorMillicores() int64 {
+ if x != nil && x.JvmCpuStartupFloorMillicores != nil {
+ return *x.JvmCpuStartupFloorMillicores
+ }
+ return 0
+}
+
+func (x *ManualRuleFields) GetDisabled() bool {
+ if x != nil && x.Disabled != nil {
+ return *x.Disabled
+ }
+ return false
+}
+
+func (x *ManualRuleFields) GetLookbackPeriodSeconds() int32 {
+ if x != nil && x.LookbackPeriodSeconds != nil {
+ return *x.LookbackPeriodSeconds
+ }
+ return 0
+}
+
+func (x *ManualRuleFields) GetKedaScaledObject() *KEDAScaledObjectTemplate {
+ if x != nil {
+ return x.KedaScaledObject
+ }
+ return nil
+}
+
+type UpsertManualWorkloadRuleRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ AutoGenerate bool `protobuf:"varint,6,opt,name=auto_generate,json=autoGenerate,proto3" json:"auto_generate,omitempty"`
+ // Manual fields (only used when auto_generate = false).
+ Fields *ManualRuleFields `protobuf:"bytes,10,opt,name=fields,proto3" json:"fields,omitempty"`
+ // Optional: identifies which caller is upserting this rule. When unset,
+ // the server defaults to WORKLOAD_RULE_SOURCE_MANUAL (legacy UI behavior).
+ // External IaC providers (pulumi, terraform) MUST set this so the rule
+ // can be attributed in audit and UI surfaces.
+ Source WorkloadRuleSource `protobuf:"varint,11,opt,name=source,proto3,enum=api.v1.WorkloadRuleSource" json:"source,omitempty"`
+}
+
+func (x *UpsertManualWorkloadRuleRequest) Reset() {
+ *x = UpsertManualWorkloadRuleRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[451]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpsertManualWorkloadRuleRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpsertManualWorkloadRuleRequest) ProtoMessage() {}
+
+func (x *UpsertManualWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[451]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpsertManualWorkloadRuleRequest.ProtoReflect.Descriptor instead.
+func (*UpsertManualWorkloadRuleRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{451}
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetAutoGenerate() bool {
+ if x != nil {
+ return x.AutoGenerate
+ }
+ return false
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetFields() *ManualRuleFields {
+ if x != nil {
+ return x.Fields
+ }
+ return nil
+}
+
+func (x *UpsertManualWorkloadRuleRequest) GetSource() WorkloadRuleSource {
+ if x != nil {
+ return x.Source
+ }
+ return WorkloadRuleSource_WORKLOAD_RULE_SOURCE_UNSPECIFIED
+}
+
+type UpsertManualWorkloadRuleResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
+}
+
+func (x *UpsertManualWorkloadRuleResponse) Reset() {
+ *x = UpsertManualWorkloadRuleResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[452]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpsertManualWorkloadRuleResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpsertManualWorkloadRuleResponse) ProtoMessage() {}
+
+func (x *UpsertManualWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[452]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpsertManualWorkloadRuleResponse.ProtoReflect.Descriptor instead.
+func (*UpsertManualWorkloadRuleResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{452}
+}
+
+func (x *UpsertManualWorkloadRuleResponse) GetRule() *WorkloadRule {
+ if x != nil {
+ return x.Rule
+ }
+ return nil
+}
+
+// ToggleWorkloadRuleDisabled is the sole way to change an EXISTING rule's
+// disabled state. UpsertManualWorkloadRule only honors ManualRuleFields.disabled
+// when creating a brand-new rule; every other transition goes through here.
+type ToggleWorkloadRuleDisabledRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ RuleId string `protobuf:"bytes,2,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
+ Disabled bool `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled,omitempty"`
+}
+
+func (x *ToggleWorkloadRuleDisabledRequest) Reset() {
+ *x = ToggleWorkloadRuleDisabledRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[453]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ToggleWorkloadRuleDisabledRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleWorkloadRuleDisabledRequest) ProtoMessage() {}
+
+func (x *ToggleWorkloadRuleDisabledRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[453]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToggleWorkloadRuleDisabledRequest.ProtoReflect.Descriptor instead.
+func (*ToggleWorkloadRuleDisabledRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{453}
+}
+
+func (x *ToggleWorkloadRuleDisabledRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ToggleWorkloadRuleDisabledRequest) GetRuleId() string {
+ if x != nil {
+ return x.RuleId
+ }
+ return ""
+}
+
+func (x *ToggleWorkloadRuleDisabledRequest) GetDisabled() bool {
+ if x != nil {
+ return x.Disabled
+ }
+ return false
+}
+
+type ToggleWorkloadRuleDisabledResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rule *WorkloadRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"`
+}
+
+func (x *ToggleWorkloadRuleDisabledResponse) Reset() {
+ *x = ToggleWorkloadRuleDisabledResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[454]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ToggleWorkloadRuleDisabledResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleWorkloadRuleDisabledResponse) ProtoMessage() {}
+
+func (x *ToggleWorkloadRuleDisabledResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[454]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToggleWorkloadRuleDisabledResponse.ProtoReflect.Descriptor instead.
+func (*ToggleWorkloadRuleDisabledResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{454}
+}
+
+func (x *ToggleWorkloadRuleDisabledResponse) GetRule() *WorkloadRule {
+ if x != nil {
+ return x.Rule
+ }
+ return nil
+}
+
+// PreviewWorkloadRuleRequest mirrors the upsert request but does not
+// persist anything; returns a side-by-side preview instead.
+type PreviewWorkloadRuleRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ // Required so the server can fetch the workload's profile (percentiles,
+ // behavior). The form already has uid for any existing workload.
+ WorkloadUid string `protobuf:"bytes,6,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
+ Fields *ManualRuleFields `protobuf:"bytes,10,opt,name=fields,proto3" json:"fields,omitempty"`
+ // Optional. Set when this preview is being driven by a
+ // WorkloadOptimizationPolicy rather than a manual draft (e.g. the policy
+ // targeting preview's per-row rule detail) — applies the policy's
+ // operational overrides (currently just hpa_enabled=false, which can only
+ // disable HPA, never force it on — same clamp real rule generation
+ // applies) to the materialized pass. Has no effect on engine_projection.
+ PolicyId *string `protobuf:"bytes,11,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"`
+}
+
+func (x *PreviewWorkloadRuleRequest) Reset() {
+ *x = PreviewWorkloadRuleRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[455]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewWorkloadRuleRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewWorkloadRuleRequest) ProtoMessage() {}
+
+func (x *PreviewWorkloadRuleRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[455]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewWorkloadRuleRequest.ProtoReflect.Descriptor instead.
+func (*PreviewWorkloadRuleRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{455}
+}
+
+func (x *PreviewWorkloadRuleRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleRequest) GetWorkloadUid() string {
+ if x != nil {
+ return x.WorkloadUid
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleRequest) GetFields() *ManualRuleFields {
+ if x != nil {
+ return x.Fields
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadRuleRequest) GetPolicyId() string {
+ if x != nil && x.PolicyId != nil {
+ return *x.PolicyId
+ }
+ return ""
+}
+
+type PreviewWorkloadRuleResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Materialized rule — engine output overlaid with the user's draft as
+ // constraints (engine's BaseRequest clamped to user's min/max, multipliers
+ // overridden, etc.). When `fields` is empty/missing, equals engine_projection.
+ // Same shape as a saved rule.
+ MaterializedRule *WorkloadRule `protobuf:"bytes,1,opt,name=materialized_rule,json=materializedRule,proto3" json:"materialized_rule,omitempty"`
+ // Engine projection — pure-engine recommendation (classification-driven,
+ // no user constraints). Stable benchmark; same maths Apply uses for auto.
+ // Empty when profile data is insufficient; see engine_projection_unavailable_reason.
+ EngineProjection *WorkloadRule `protobuf:"bytes,2,opt,name=engine_projection,json=engineProjection,proto3" json:"engine_projection,omitempty"`
+ // Observed profile (per-container percentiles, behavior, classification,
+ // currently configured resources). Same shape as GetWorkloadProfiles
+ // single-workload result.
+ Profile *WorkloadProfileResult `protobuf:"bytes,3,opt,name=profile,proto3" json:"profile,omitempty"`
+ // Set when the engine couldn't produce a projection (insufficient data,
+ // workload not yet emitting metrics, etc.). FE renders the materialized
+ // draft + observed view without an engine column.
+ EngineProjectionUnavailableReason string `protobuf:"bytes,4,opt,name=engine_projection_unavailable_reason,json=engineProjectionUnavailableReason,proto3" json:"engine_projection_unavailable_reason,omitempty"`
+ // The persisted DB rule for this workload. Null when no rule has been saved
+ // yet (create mode). Frontend fills ALL form fields directly from this when
+ // present; falls back to engine_projection for create-mode prefill.
+ // Engine suggestion chips always compare against engine_projection.
+ DbRule *WorkloadRule `protobuf:"bytes,5,opt,name=db_rule,json=dbRule,proto3" json:"db_rule,omitempty"`
+}
+
+func (x *PreviewWorkloadRuleResponse) Reset() {
+ *x = PreviewWorkloadRuleResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[456]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewWorkloadRuleResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewWorkloadRuleResponse) ProtoMessage() {}
+
+func (x *PreviewWorkloadRuleResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[456]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewWorkloadRuleResponse.ProtoReflect.Descriptor instead.
+func (*PreviewWorkloadRuleResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{456}
+}
+
+func (x *PreviewWorkloadRuleResponse) GetMaterializedRule() *WorkloadRule {
+ if x != nil {
+ return x.MaterializedRule
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadRuleResponse) GetEngineProjection() *WorkloadRule {
+ if x != nil {
+ return x.EngineProjection
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadRuleResponse) GetProfile() *WorkloadProfileResult {
+ if x != nil {
+ return x.Profile
+ }
+ return nil
+}
+
+func (x *PreviewWorkloadRuleResponse) GetEngineProjectionUnavailableReason() string {
+ if x != nil {
+ return x.EngineProjectionUnavailableReason
+ }
+ return ""
+}
+
+func (x *PreviewWorkloadRuleResponse) GetDbRule() *WorkloadRule {
+ if x != nil {
+ return x.DbRule
+ }
+ return nil
+}
+
+type GetWorkloadContainerNamesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *GetWorkloadContainerNamesRequest) Reset() {
+ *x = GetWorkloadContainerNamesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[457]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadContainerNamesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadContainerNamesRequest) ProtoMessage() {}
+
+func (x *GetWorkloadContainerNamesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[457]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadContainerNamesRequest.ProtoReflect.Descriptor instead.
+func (*GetWorkloadContainerNamesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{457}
+}
+
+func (x *GetWorkloadContainerNamesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerNamesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerNamesRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerNamesRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *GetWorkloadContainerNamesRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type GetWorkloadContainerNamesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ContainerNames []string `protobuf:"bytes,1,rep,name=container_names,json=containerNames,proto3" json:"container_names,omitempty"`
+}
+
+func (x *GetWorkloadContainerNamesResponse) Reset() {
+ *x = GetWorkloadContainerNamesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[458]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetWorkloadContainerNamesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetWorkloadContainerNamesResponse) ProtoMessage() {}
+
+func (x *GetWorkloadContainerNamesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[458]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetWorkloadContainerNamesResponse.ProtoReflect.Descriptor instead.
+func (*GetWorkloadContainerNamesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{458}
+}
+
+func (x *GetWorkloadContainerNamesResponse) GetContainerNames() []string {
+ if x != nil {
+ return x.ContainerNames
+ }
+ return nil
+}
+
+type BatchAutoOptimizeWorkload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *BatchAutoOptimizeWorkload) Reset() {
+ *x = BatchAutoOptimizeWorkload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[459]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchAutoOptimizeWorkload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchAutoOptimizeWorkload) ProtoMessage() {}
+
+func (x *BatchAutoOptimizeWorkload) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[459]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchAutoOptimizeWorkload.ProtoReflect.Descriptor instead.
+func (*BatchAutoOptimizeWorkload) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{459}
+}
+
+func (x *BatchAutoOptimizeWorkload) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkload) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkload) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type BatchAutoOptimizeWorkloadsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Workloads []*BatchAutoOptimizeWorkload `protobuf:"bytes,3,rep,name=workloads,proto3" json:"workloads,omitempty"`
+}
+
+func (x *BatchAutoOptimizeWorkloadsRequest) Reset() {
+ *x = BatchAutoOptimizeWorkloadsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[460]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchAutoOptimizeWorkloadsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchAutoOptimizeWorkloadsRequest) ProtoMessage() {}
+
+func (x *BatchAutoOptimizeWorkloadsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[460]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchAutoOptimizeWorkloadsRequest.ProtoReflect.Descriptor instead.
+func (*BatchAutoOptimizeWorkloadsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{460}
+}
+
+func (x *BatchAutoOptimizeWorkloadsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkloadsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkloadsRequest) GetWorkloads() []*BatchAutoOptimizeWorkload {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+type BatchAutoOptimizeWorkloadResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"`
+ Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
+ Rule *WorkloadRule `protobuf:"bytes,6,opt,name=rule,proto3" json:"rule,omitempty"`
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) Reset() {
+ *x = BatchAutoOptimizeWorkloadResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[461]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchAutoOptimizeWorkloadResult) ProtoMessage() {}
+
+func (x *BatchAutoOptimizeWorkloadResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[461]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchAutoOptimizeWorkloadResult.ProtoReflect.Descriptor instead.
+func (*BatchAutoOptimizeWorkloadResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{461}
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *BatchAutoOptimizeWorkloadResult) GetRule() *WorkloadRule {
+ if x != nil {
+ return x.Rule
+ }
+ return nil
+}
+
+type BatchAutoOptimizeWorkloadsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Results []*BatchAutoOptimizeWorkloadResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
+}
+
+func (x *BatchAutoOptimizeWorkloadsResponse) Reset() {
+ *x = BatchAutoOptimizeWorkloadsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[462]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchAutoOptimizeWorkloadsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchAutoOptimizeWorkloadsResponse) ProtoMessage() {}
+
+func (x *BatchAutoOptimizeWorkloadsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[462]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchAutoOptimizeWorkloadsResponse.ProtoReflect.Descriptor instead.
+func (*BatchAutoOptimizeWorkloadsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{462}
+}
+
+func (x *BatchAutoOptimizeWorkloadsResponse) GetResults() []*BatchAutoOptimizeWorkloadResult {
+ if x != nil {
+ return x.Results
+ }
+ return nil
+}
+
+// Identifies a workload by namespace/kind/name. Shared by batch RPCs
+// (BatchUpsertManualWorkloadRules, BatchPreviewWorkloadRules).
+// workload_uid is only needed for preview (the profiling service uses it).
+type BatchWorkloadEntry struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ WorkloadUid *string `protobuf:"bytes,5,opt,name=workload_uid,json=workloadUid,proto3,oneof" json:"workload_uid,omitempty"`
+}
+
+func (x *BatchWorkloadEntry) Reset() {
+ *x = BatchWorkloadEntry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[463]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchWorkloadEntry) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchWorkloadEntry) ProtoMessage() {}
+
+func (x *BatchWorkloadEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[463]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchWorkloadEntry.ProtoReflect.Descriptor instead.
+func (*BatchWorkloadEntry) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{463}
+}
+
+func (x *BatchWorkloadEntry) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *BatchWorkloadEntry) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *BatchWorkloadEntry) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *BatchWorkloadEntry) GetWorkloadUid() string {
+ if x != nil && x.WorkloadUid != nil {
+ return *x.WorkloadUid
+ }
+ return ""
+}
+
+type BatchUpsertManualWorkloadRulesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Workloads []*BatchWorkloadEntry `protobuf:"bytes,3,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ AutoGenerate bool `protobuf:"varint,4,opt,name=auto_generate,json=autoGenerate,proto3" json:"auto_generate,omitempty"`
+ Fields *ManualRuleFields `protobuf:"bytes,5,opt,name=fields,proto3" json:"fields,omitempty"` // shared across all workloads (only used when auto_generate=false)
+ Source WorkloadRuleSource `protobuf:"varint,6,opt,name=source,proto3,enum=api.v1.WorkloadRuleSource" json:"source,omitempty"`
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) Reset() {
+ *x = BatchUpsertManualWorkloadRulesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[464]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchUpsertManualWorkloadRulesRequest) ProtoMessage() {}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[464]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchUpsertManualWorkloadRulesRequest.ProtoReflect.Descriptor instead.
+func (*BatchUpsertManualWorkloadRulesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{464}
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) GetWorkloads() []*BatchWorkloadEntry {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) GetAutoGenerate() bool {
+ if x != nil {
+ return x.AutoGenerate
+ }
+ return false
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) GetFields() *ManualRuleFields {
+ if x != nil {
+ return x.Fields
+ }
+ return nil
+}
+
+func (x *BatchUpsertManualWorkloadRulesRequest) GetSource() WorkloadRuleSource {
+ if x != nil {
+ return x.Source
+ }
+ return WorkloadRuleSource_WORKLOAD_RULE_SOURCE_UNSPECIFIED
+}
+
+type BatchUpsertManualWorkloadRuleResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"`
+ Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
+ Rule *WorkloadRule `protobuf:"bytes,6,opt,name=rule,proto3" json:"rule,omitempty"`
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) Reset() {
+ *x = BatchUpsertManualWorkloadRuleResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[465]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchUpsertManualWorkloadRuleResult) ProtoMessage() {}
+
+func (x *BatchUpsertManualWorkloadRuleResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[465]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchUpsertManualWorkloadRuleResult.ProtoReflect.Descriptor instead.
+func (*BatchUpsertManualWorkloadRuleResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{465}
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *BatchUpsertManualWorkloadRuleResult) GetRule() *WorkloadRule {
+ if x != nil {
+ return x.Rule
+ }
+ return nil
+}
+
+type BatchUpsertManualWorkloadRulesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Results []*BatchUpsertManualWorkloadRuleResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
+}
+
+func (x *BatchUpsertManualWorkloadRulesResponse) Reset() {
+ *x = BatchUpsertManualWorkloadRulesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[466]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchUpsertManualWorkloadRulesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchUpsertManualWorkloadRulesResponse) ProtoMessage() {}
+
+func (x *BatchUpsertManualWorkloadRulesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[466]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchUpsertManualWorkloadRulesResponse.ProtoReflect.Descriptor instead.
+func (*BatchUpsertManualWorkloadRulesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{466}
+}
+
+func (x *BatchUpsertManualWorkloadRulesResponse) GetResults() []*BatchUpsertManualWorkloadRuleResult {
+ if x != nil {
+ return x.Results
+ }
+ return nil
+}
+
+// Batch preview — applies the same ManualRuleFields to multiple workloads
+// and returns per-workload previews without persisting anything.
+type BatchPreviewWorkloadRulesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Workloads []*BatchWorkloadEntry `protobuf:"bytes,3,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ Fields *ManualRuleFields `protobuf:"bytes,4,opt,name=fields,proto3" json:"fields,omitempty"` // shared across all workloads
+}
+
+func (x *BatchPreviewWorkloadRulesRequest) Reset() {
+ *x = BatchPreviewWorkloadRulesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[467]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchPreviewWorkloadRulesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchPreviewWorkloadRulesRequest) ProtoMessage() {}
+
+func (x *BatchPreviewWorkloadRulesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[467]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchPreviewWorkloadRulesRequest.ProtoReflect.Descriptor instead.
+func (*BatchPreviewWorkloadRulesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{467}
+}
+
+func (x *BatchPreviewWorkloadRulesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *BatchPreviewWorkloadRulesRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *BatchPreviewWorkloadRulesRequest) GetWorkloads() []*BatchWorkloadEntry {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+func (x *BatchPreviewWorkloadRulesRequest) GetFields() *ManualRuleFields {
+ if x != nil {
+ return x.Fields
+ }
+ return nil
+}
+
+type BatchPreviewWorkloadRuleResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"`
+ Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
+ MaterializedRule *WorkloadRule `protobuf:"bytes,6,opt,name=materialized_rule,json=materializedRule,proto3" json:"materialized_rule,omitempty"`
+ EngineProjection *WorkloadRule `protobuf:"bytes,7,opt,name=engine_projection,json=engineProjection,proto3" json:"engine_projection,omitempty"`
+ Profile *WorkloadProfileResult `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"`
+ EngineProjectionUnavailableReason string `protobuf:"bytes,9,opt,name=engine_projection_unavailable_reason,json=engineProjectionUnavailableReason,proto3" json:"engine_projection_unavailable_reason,omitempty"`
+}
+
+func (x *BatchPreviewWorkloadRuleResult) Reset() {
+ *x = BatchPreviewWorkloadRuleResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[468]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchPreviewWorkloadRuleResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchPreviewWorkloadRuleResult) ProtoMessage() {}
+
+func (x *BatchPreviewWorkloadRuleResult) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[468]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchPreviewWorkloadRuleResult.ProtoReflect.Descriptor instead.
+func (*BatchPreviewWorkloadRuleResult) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{468}
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetMaterializedRule() *WorkloadRule {
+ if x != nil {
+ return x.MaterializedRule
+ }
+ return nil
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetEngineProjection() *WorkloadRule {
+ if x != nil {
+ return x.EngineProjection
+ }
+ return nil
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetProfile() *WorkloadProfileResult {
+ if x != nil {
+ return x.Profile
+ }
+ return nil
+}
+
+func (x *BatchPreviewWorkloadRuleResult) GetEngineProjectionUnavailableReason() string {
+ if x != nil {
+ return x.EngineProjectionUnavailableReason
+ }
+ return ""
+}
+
+type BatchPreviewWorkloadRulesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Results []*BatchPreviewWorkloadRuleResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
+}
+
+func (x *BatchPreviewWorkloadRulesResponse) Reset() {
+ *x = BatchPreviewWorkloadRulesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[469]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchPreviewWorkloadRulesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchPreviewWorkloadRulesResponse) ProtoMessage() {}
+
+func (x *BatchPreviewWorkloadRulesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[469]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchPreviewWorkloadRulesResponse.ProtoReflect.Descriptor instead.
+func (*BatchPreviewWorkloadRulesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{469}
+}
+
+func (x *BatchPreviewWorkloadRulesResponse) GetResults() []*BatchPreviewWorkloadRuleResult {
+ if x != nil {
+ return x.Results
+ }
+ return nil
+}
+
+// ApplyOneTimeOptimization runs the MPA v2 engine for a workload and immediately
+// creates a WorkloadRecommendation (no WorkloadRule persisted). Only allowed when
+// no WorkloadRule already exists for the workload — the frontend disables the
+// button in edit mode to enforce this at the UI layer too.
+type ApplyOneTimeOptimizationRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ WorkloadUid string `protobuf:"bytes,6,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"`
+}
+
+func (x *ApplyOneTimeOptimizationRequest) Reset() {
+ *x = ApplyOneTimeOptimizationRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[470]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ApplyOneTimeOptimizationRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ApplyOneTimeOptimizationRequest) ProtoMessage() {}
+
+func (x *ApplyOneTimeOptimizationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[470]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ApplyOneTimeOptimizationRequest.ProtoReflect.Descriptor instead.
+func (*ApplyOneTimeOptimizationRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{470}
+}
+
+func (x *ApplyOneTimeOptimizationRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ApplyOneTimeOptimizationRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *ApplyOneTimeOptimizationRequest) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *ApplyOneTimeOptimizationRequest) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *ApplyOneTimeOptimizationRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ApplyOneTimeOptimizationRequest) GetWorkloadUid() string {
+ if x != nil {
+ return x.WorkloadUid
+ }
+ return ""
+}
+
+type ApplyOneTimeOptimizationResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ApplyOneTimeOptimizationResponse) Reset() {
+ *x = ApplyOneTimeOptimizationResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[471]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ApplyOneTimeOptimizationResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ApplyOneTimeOptimizationResponse) ProtoMessage() {}
+
+func (x *ApplyOneTimeOptimizationResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[471]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ApplyOneTimeOptimizationResponse.ProtoReflect.Descriptor instead.
+func (*ApplyOneTimeOptimizationResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{471}
+}
+
+// WorkloadProfileManifest is the authoritative key set for a single emit cycle
+// of profile snapshots for a (cluster, window) pair. The server sends exactly
+// one manifest followed by zero or more BatchWorkloadProfiles, all tagged with
+// the same emit_id. The operator uses the manifest's keys to GC local
+// WorkloadProfile CRs whose workload_uid is absent from `keys` once the emit
+// cycle finalizes.
+type WorkloadProfileManifest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Window ProfileWindow `protobuf:"varint,1,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
+ Keys []*ProfileKey `protobuf:"bytes,2,rep,name=keys,proto3" json:"keys,omitempty"`
+ IssuedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=issued_at,json=issuedAt,proto3" json:"issued_at,omitempty"`
+ // emit_id is a UUID that identifies this emit cycle. Required. The operator
+ // buffers batches with a matching emit_id and finalizes the prior cycle
+ // when a manifest with a new emit_id arrives.
+ EmitId string `protobuf:"bytes,4,opt,name=emit_id,json=emitId,proto3" json:"emit_id,omitempty"`
+}
+
+func (x *WorkloadProfileManifest) Reset() {
+ *x = WorkloadProfileManifest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[472]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadProfileManifest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadProfileManifest) ProtoMessage() {}
+
+func (x *WorkloadProfileManifest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[472]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadProfileManifest.ProtoReflect.Descriptor instead.
+func (*WorkloadProfileManifest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{472}
+}
+
+func (x *WorkloadProfileManifest) GetWindow() ProfileWindow {
+ if x != nil {
+ return x.Window
+ }
+ return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+}
+
+func (x *WorkloadProfileManifest) GetKeys() []*ProfileKey {
+ if x != nil {
+ return x.Keys
+ }
+ return nil
+}
+
+func (x *WorkloadProfileManifest) GetIssuedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.IssuedAt
+ }
+ return nil
+}
+
+func (x *WorkloadProfileManifest) GetEmitId() string {
+ if x != nil {
+ return x.EmitId
+ }
+ return ""
+}
+
+// BatchWorkloadProfiles is a chunk of WorkloadProfileSnapshot values for a
+// single emit cycle. Up to 128 profiles per batch. The emit_id MUST match the
+// manifest's emit_id for the same cycle; operators discard batches whose
+// emit_id does not match the currently-buffered cycle.
+type BatchWorkloadProfiles struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Window ProfileWindow `protobuf:"varint,1,opt,name=window,proto3,enum=api.v1.ProfileWindow" json:"window,omitempty"`
+ Profiles []*WorkloadProfileSnapshot `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"`
+ // emit_id matches the manifest emit_id for this cycle. Required.
+ EmitId string `protobuf:"bytes,3,opt,name=emit_id,json=emitId,proto3" json:"emit_id,omitempty"`
+}
+
+func (x *BatchWorkloadProfiles) Reset() {
+ *x = BatchWorkloadProfiles{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[473]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BatchWorkloadProfiles) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BatchWorkloadProfiles) ProtoMessage() {}
+
+func (x *BatchWorkloadProfiles) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[473]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BatchWorkloadProfiles.ProtoReflect.Descriptor instead.
+func (*BatchWorkloadProfiles) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{473}
+}
+
+func (x *BatchWorkloadProfiles) GetWindow() ProfileWindow {
+ if x != nil {
+ return x.Window
+ }
+ return ProfileWindow_PROFILE_WINDOW_UNSPECIFIED
+}
+
+func (x *BatchWorkloadProfiles) GetProfiles() []*WorkloadProfileSnapshot {
+ if x != nil {
+ return x.Profiles
+ }
+ return nil
+}
+
+func (x *BatchWorkloadProfiles) GetEmitId() string {
+ if x != nil {
+ return x.EmitId
+ }
+ return ""
+}
+
+type NodeConfigApplyEvent struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ConfigId string `protobuf:"bytes,1,opt,name=config_id,json=configId,proto3" json:"config_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`
+ AppliedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=applied_at,json=appliedAt,proto3" json:"applied_at,omitempty"`
+}
+
+func (x *NodeConfigApplyEvent) Reset() {
+ *x = NodeConfigApplyEvent{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[474]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeConfigApplyEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeConfigApplyEvent) ProtoMessage() {}
+
+func (x *NodeConfigApplyEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[474]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeConfigApplyEvent.ProtoReflect.Descriptor instead.
+func (*NodeConfigApplyEvent) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{474}
+}
+
+func (x *NodeConfigApplyEvent) GetConfigId() string {
+ if x != nil {
+ return x.ConfigId
+ }
+ return ""
+}
+
+func (x *NodeConfigApplyEvent) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *NodeConfigApplyEvent) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *NodeConfigApplyEvent) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *NodeConfigApplyEvent) GetAppliedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.AppliedAt
+ }
+ return nil
+}
+
+type GetNodeRecommendationStatusRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ HistoryLimit int32 `protobuf:"varint,3,opt,name=history_limit,json=historyLimit,proto3" json:"history_limit,omitempty"`
+}
+
+func (x *GetNodeRecommendationStatusRequest) Reset() {
+ *x = GetNodeRecommendationStatusRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[475]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeRecommendationStatusRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeRecommendationStatusRequest) ProtoMessage() {}
+
+func (x *GetNodeRecommendationStatusRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[475]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeRecommendationStatusRequest.ProtoReflect.Descriptor instead.
+func (*GetNodeRecommendationStatusRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{475}
+}
+
+func (x *GetNodeRecommendationStatusRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetNodeRecommendationStatusRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetNodeRecommendationStatusRequest) GetHistoryLimit() int32 {
+ if x != nil {
+ return x.HistoryLimit
+ }
+ return 0
+}
+
+type GetNodeRecommendationStatusResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CurrentConfig *NodeRecommendationConfig `protobuf:"bytes,1,opt,name=current_config,json=currentConfig,proto3" json:"current_config,omitempty"`
+ History []*NodeConfigApplyEvent `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"`
+}
+
+func (x *GetNodeRecommendationStatusResponse) Reset() {
+ *x = GetNodeRecommendationStatusResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[476]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetNodeRecommendationStatusResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNodeRecommendationStatusResponse) ProtoMessage() {}
+
+func (x *GetNodeRecommendationStatusResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[476]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNodeRecommendationStatusResponse.ProtoReflect.Descriptor instead.
+func (*GetNodeRecommendationStatusResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{476}
+}
+
+func (x *GetNodeRecommendationStatusResponse) GetCurrentConfig() *NodeRecommendationConfig {
+ if x != nil {
+ return x.CurrentConfig
+ }
+ return nil
+}
+
+func (x *GetNodeRecommendationStatusResponse) GetHistory() []*NodeConfigApplyEvent {
+ if x != nil {
+ return x.History
+ }
+ return nil
+}
+
+// EnableCheckpointForPolicyRequest is the orchestration request for the C/R
+// toggle on a node policy. enabled=true sets dakr.devzero.io/checkpoint-node
+// on the policy template AND enqueues per-node label patches for all live nodes
+// in the policy's matched groups. enabled=false unsets the label and enqueues
+// the corresponding unset patches.
+type EnableCheckpointForPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
+}
+
+func (x *EnableCheckpointForPolicyRequest) Reset() {
+ *x = EnableCheckpointForPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[477]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EnableCheckpointForPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnableCheckpointForPolicyRequest) ProtoMessage() {}
+
+func (x *EnableCheckpointForPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[477]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EnableCheckpointForPolicyRequest.ProtoReflect.Descriptor instead.
+func (*EnableCheckpointForPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{477}
+}
+
+func (x *EnableCheckpointForPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *EnableCheckpointForPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *EnableCheckpointForPolicyRequest) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+type EnableCheckpointForPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // UUID grouping the enqueued per-node patches; empty when no live nodes
+ // needed enqueueing (policy template still got patched).
+ BatchId string `protobuf:"bytes,1,opt,name=batch_id,json=batchId,proto3" json:"batch_id,omitempty"`
+ EnqueuedNodes uint32 `protobuf:"varint,2,opt,name=enqueued_nodes,json=enqueuedNodes,proto3" json:"enqueued_nodes,omitempty"`
+ // cluster_ids whose live nodes were NOT enqueued because their dakr
+ // operator reports a version lower than MinVersionNodeLabelApply (the
+ // operator release carrying the Node `patch` RBAC verb + the
+ // dakr.devzero.io/* allowlist for SSA). The policy template was still
+ // patched for these clusters, so newly-provisioned nodes inherit the
+ // label via the NodePool template; existing nodes will be picked up the
+ // next time the user re-runs this action after the operator upgrade.
+ SkippedClusters []string `protobuf:"bytes,3,rep,name=skipped_clusters,json=skippedClusters,proto3" json:"skipped_clusters,omitempty"`
+}
+
+func (x *EnableCheckpointForPolicyResponse) Reset() {
+ *x = EnableCheckpointForPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[478]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EnableCheckpointForPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnableCheckpointForPolicyResponse) ProtoMessage() {}
+
+func (x *EnableCheckpointForPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[478]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EnableCheckpointForPolicyResponse.ProtoReflect.Descriptor instead.
+func (*EnableCheckpointForPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{478}
+}
+
+func (x *EnableCheckpointForPolicyResponse) GetBatchId() string {
+ if x != nil {
+ return x.BatchId
+ }
+ return ""
+}
+
+func (x *EnableCheckpointForPolicyResponse) GetEnqueuedNodes() uint32 {
+ if x != nil {
+ return x.EnqueuedNodes
+ }
+ return 0
+}
+
+func (x *EnableCheckpointForPolicyResponse) GetSkippedClusters() []string {
+ if x != nil {
+ return x.SkippedClusters
+ }
+ return nil
+}
+
+type GetCheckpointApplyStatusRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *GetCheckpointApplyStatusRequest) Reset() {
+ *x = GetCheckpointApplyStatusRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[479]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetCheckpointApplyStatusRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetCheckpointApplyStatusRequest) ProtoMessage() {}
+
+func (x *GetCheckpointApplyStatusRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[479]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetCheckpointApplyStatusRequest.ProtoReflect.Descriptor instead.
+func (*GetCheckpointApplyStatusRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{479}
+}
+
+func (x *GetCheckpointApplyStatusRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetCheckpointApplyStatusRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type GetCheckpointApplyStatusResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // batch_id of the most-recent EnableCheckpointForPolicy batch for the
+ // supplied policy, or empty when no batch exists yet.
+ BatchId string `protobuf:"bytes,1,opt,name=batch_id,json=batchId,proto3" json:"batch_id,omitempty"`
+ Pending uint32 `protobuf:"varint,2,opt,name=pending,proto3" json:"pending,omitempty"`
+ Applied uint32 `protobuf:"varint,3,opt,name=applied,proto3" json:"applied,omitempty"`
+ Failed uint32 `protobuf:"varint,4,opt,name=failed,proto3" json:"failed,omitempty"`
+ // rejected lumps every other terminal status (superseded, blocked, ignored,
+ // and the operator's Rejected) — the UI surfaces them collectively as "did
+ // not apply".
+ Rejected uint32 `protobuf:"varint,5,opt,name=rejected,proto3" json:"rejected,omitempty"`
+ Failures []*NodeApplyFailure `protobuf:"bytes,6,rep,name=failures,proto3" json:"failures,omitempty"`
+}
+
+func (x *GetCheckpointApplyStatusResponse) Reset() {
+ *x = GetCheckpointApplyStatusResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[480]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetCheckpointApplyStatusResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetCheckpointApplyStatusResponse) ProtoMessage() {}
+
+func (x *GetCheckpointApplyStatusResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[480]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetCheckpointApplyStatusResponse.ProtoReflect.Descriptor instead.
+func (*GetCheckpointApplyStatusResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{480}
+}
+
+func (x *GetCheckpointApplyStatusResponse) GetBatchId() string {
+ if x != nil {
+ return x.BatchId
+ }
+ return ""
+}
+
+func (x *GetCheckpointApplyStatusResponse) GetPending() uint32 {
+ if x != nil {
+ return x.Pending
+ }
+ return 0
+}
+
+func (x *GetCheckpointApplyStatusResponse) GetApplied() uint32 {
+ if x != nil {
+ return x.Applied
+ }
+ return 0
+}
+
+func (x *GetCheckpointApplyStatusResponse) GetFailed() uint32 {
+ if x != nil {
+ return x.Failed
+ }
+ return 0
+}
+
+func (x *GetCheckpointApplyStatusResponse) GetRejected() uint32 {
+ if x != nil {
+ return x.Rejected
+ }
+ return 0
+}
+
+func (x *GetCheckpointApplyStatusResponse) GetFailures() []*NodeApplyFailure {
+ if x != nil {
+ return x.Failures
+ }
+ return nil
+}
+
+type NodeApplyFailure struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
+ Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
+}
+
+func (x *NodeApplyFailure) Reset() {
+ *x = NodeApplyFailure{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[481]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeApplyFailure) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeApplyFailure) ProtoMessage() {}
+
+func (x *NodeApplyFailure) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[481]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeApplyFailure.ProtoReflect.Descriptor instead.
+func (*NodeApplyFailure) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{481}
+}
+
+func (x *NodeApplyFailure) GetNodeName() string {
+ if x != nil {
+ return x.NodeName
+ }
+ return ""
+}
+
+func (x *NodeApplyFailure) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+type GetClusterCheckpointLabelCoverageRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *GetClusterCheckpointLabelCoverageRequest) Reset() {
+ *x = GetClusterCheckpointLabelCoverageRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[482]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetClusterCheckpointLabelCoverageRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClusterCheckpointLabelCoverageRequest) ProtoMessage() {}
+
+func (x *GetClusterCheckpointLabelCoverageRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[482]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClusterCheckpointLabelCoverageRequest.ProtoReflect.Descriptor instead.
+func (*GetClusterCheckpointLabelCoverageRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{482}
+}
+
+func (x *GetClusterCheckpointLabelCoverageRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetClusterCheckpointLabelCoverageRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type NodeGroupCheckpointLabelCoverage struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodePoolName string `protobuf:"bytes,1,opt,name=node_pool_name,json=nodePoolName,proto3" json:"node_pool_name,omitempty"`
+ // total_nodes counts live nodes in the group whose node_group_name maps to
+ // a policy attached to this cluster via an enabled NodePolicyTarget. Nodes
+ // outside any policy's scope are excluded.
+ TotalNodes uint32 `protobuf:"varint,2,opt,name=total_nodes,json=totalNodes,proto3" json:"total_nodes,omitempty"`
+ LabeledNodes uint32 `protobuf:"varint,3,opt,name=labeled_nodes,json=labeledNodes,proto3" json:"labeled_nodes,omitempty"`
+ PendingNodes uint32 `protobuf:"varint,4,opt,name=pending_nodes,json=pendingNodes,proto3" json:"pending_nodes,omitempty"`
+ FailedNodes uint32 `protobuf:"varint,5,opt,name=failed_nodes,json=failedNodes,proto3" json:"failed_nodes,omitempty"`
+ // ready_nodes = label applied AND criu_configured AND agent heartbeat fresh
+ // (<5 min). Drives the "Active · X/Y ready" / "Awaiting runtime · X/Y ready"
+ // NG-row subtext.
+ ReadyNodes uint32 `protobuf:"varint,6,opt,name=ready_nodes,json=readyNodes,proto3" json:"ready_nodes,omitempty"`
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) Reset() {
+ *x = NodeGroupCheckpointLabelCoverage{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[483]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeGroupCheckpointLabelCoverage) ProtoMessage() {}
+
+func (x *NodeGroupCheckpointLabelCoverage) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[483]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeGroupCheckpointLabelCoverage.ProtoReflect.Descriptor instead.
+func (*NodeGroupCheckpointLabelCoverage) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{483}
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) GetNodePoolName() string {
+ if x != nil {
+ return x.NodePoolName
+ }
+ return ""
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) GetTotalNodes() uint32 {
+ if x != nil {
+ return x.TotalNodes
+ }
+ return 0
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) GetLabeledNodes() uint32 {
+ if x != nil {
+ return x.LabeledNodes
+ }
+ return 0
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) GetPendingNodes() uint32 {
+ if x != nil {
+ return x.PendingNodes
+ }
+ return 0
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) GetFailedNodes() uint32 {
+ if x != nil {
+ return x.FailedNodes
+ }
+ return 0
+}
+
+func (x *NodeGroupCheckpointLabelCoverage) GetReadyNodes() uint32 {
+ if x != nil {
+ return x.ReadyNodes
+ }
+ return 0
+}
+
+type GetClusterCheckpointLabelCoverageResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Groups []*NodeGroupCheckpointLabelCoverage `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"`
+}
+
+func (x *GetClusterCheckpointLabelCoverageResponse) Reset() {
+ *x = GetClusterCheckpointLabelCoverageResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[484]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetClusterCheckpointLabelCoverageResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClusterCheckpointLabelCoverageResponse) ProtoMessage() {}
+
+func (x *GetClusterCheckpointLabelCoverageResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[484]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClusterCheckpointLabelCoverageResponse.ProtoReflect.Descriptor instead.
+func (*GetClusterCheckpointLabelCoverageResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{484}
+}
+
+func (x *GetClusterCheckpointLabelCoverageResponse) GetGroups() []*NodeGroupCheckpointLabelCoverage {
+ if x != nil {
+ return x.Groups
+ }
+ return nil
+}
+
+type ListNodeGroupCheckpointLabelStateRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ NodePoolName string `protobuf:"bytes,3,opt,name=node_pool_name,json=nodePoolName,proto3" json:"node_pool_name,omitempty"`
+}
+
+func (x *ListNodeGroupCheckpointLabelStateRequest) Reset() {
+ *x = ListNodeGroupCheckpointLabelStateRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[485]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListNodeGroupCheckpointLabelStateRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListNodeGroupCheckpointLabelStateRequest) ProtoMessage() {}
+
+func (x *ListNodeGroupCheckpointLabelStateRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[485]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListNodeGroupCheckpointLabelStateRequest.ProtoReflect.Descriptor instead.
+func (*ListNodeGroupCheckpointLabelStateRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{485}
+}
+
+func (x *ListNodeGroupCheckpointLabelStateRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListNodeGroupCheckpointLabelStateRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *ListNodeGroupCheckpointLabelStateRequest) GetNodePoolName() string {
+ if x != nil {
+ return x.NodePoolName
+ }
+ return ""
+}
+
+type NodeCheckpointLabelEntry struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
+ HasLabel bool `protobuf:"varint,2,opt,name=has_label,json=hasLabel,proto3" json:"has_label,omitempty"`
+ LastApplyState NodeCheckpointLabelState `protobuf:"varint,3,opt,name=last_apply_state,json=lastApplyState,proto3,enum=api.v1.NodeCheckpointLabelState" json:"last_apply_state,omitempty"`
+ LastError string `protobuf:"bytes,4,opt,name=last_error,json=lastError,proto3" json:"last_error,omitempty"`
+ // criu_configured = dakr-operator's last probe found criu installed on this
+ // node. Pair with criu_heartbeat_fresh — a true value with a stale heartbeat
+ // is not trustworthy.
+ CriuConfigured bool `protobuf:"varint,5,opt,name=criu_configured,json=criuConfigured,proto3" json:"criu_configured,omitempty"`
+ // criu_heartbeat_fresh = agent_healths.last_ping_at within the last 5 min.
+ // FE renders "Active" only when has_label + criu_configured + this.
+ CriuHeartbeatFresh bool `protobuf:"varint,6,opt,name=criu_heartbeat_fresh,json=criuHeartbeatFresh,proto3" json:"criu_heartbeat_fresh,omitempty"`
+}
+
+func (x *NodeCheckpointLabelEntry) Reset() {
+ *x = NodeCheckpointLabelEntry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[486]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeCheckpointLabelEntry) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeCheckpointLabelEntry) ProtoMessage() {}
+
+func (x *NodeCheckpointLabelEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[486]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeCheckpointLabelEntry.ProtoReflect.Descriptor instead.
+func (*NodeCheckpointLabelEntry) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{486}
+}
+
+func (x *NodeCheckpointLabelEntry) GetNodeName() string {
+ if x != nil {
+ return x.NodeName
+ }
+ return ""
+}
+
+func (x *NodeCheckpointLabelEntry) GetHasLabel() bool {
+ if x != nil {
+ return x.HasLabel
+ }
+ return false
+}
+
+func (x *NodeCheckpointLabelEntry) GetLastApplyState() NodeCheckpointLabelState {
+ if x != nil {
+ return x.LastApplyState
+ }
+ return NodeCheckpointLabelState_NODE_CHECKPOINT_LABEL_STATE_UNSPECIFIED
+}
+
+func (x *NodeCheckpointLabelEntry) GetLastError() string {
+ if x != nil {
+ return x.LastError
+ }
+ return ""
+}
+
+func (x *NodeCheckpointLabelEntry) GetCriuConfigured() bool {
+ if x != nil {
+ return x.CriuConfigured
+ }
+ return false
+}
+
+func (x *NodeCheckpointLabelEntry) GetCriuHeartbeatFresh() bool {
+ if x != nil {
+ return x.CriuHeartbeatFresh
+ }
+ return false
+}
+
+type ListNodeGroupCheckpointLabelStateResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Nodes []*NodeCheckpointLabelEntry `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
+}
+
+func (x *ListNodeGroupCheckpointLabelStateResponse) Reset() {
+ *x = ListNodeGroupCheckpointLabelStateResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[487]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListNodeGroupCheckpointLabelStateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListNodeGroupCheckpointLabelStateResponse) ProtoMessage() {}
+
+func (x *ListNodeGroupCheckpointLabelStateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[487]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListNodeGroupCheckpointLabelStateResponse.ProtoReflect.Descriptor instead.
+func (*ListNodeGroupCheckpointLabelStateResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{487}
+}
+
+func (x *ListNodeGroupCheckpointLabelStateResponse) GetNodes() []*NodeCheckpointLabelEntry {
+ if x != nil {
+ return x.Nodes
+ }
+ return nil
+}
+
+type SnapshotPercentBounds struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Upper *int32 `protobuf:"varint,1,opt,name=upper,proto3,oneof" json:"upper,omitempty"`
+ Lower *int32 `protobuf:"varint,2,opt,name=lower,proto3,oneof" json:"lower,omitempty"`
+}
+
+func (x *SnapshotPercentBounds) Reset() {
+ *x = SnapshotPercentBounds{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[488]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotPercentBounds) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotPercentBounds) ProtoMessage() {}
+
+func (x *SnapshotPercentBounds) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[488]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotPercentBounds.ProtoReflect.Descriptor instead.
+func (*SnapshotPercentBounds) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{488}
+}
+
+func (x *SnapshotPercentBounds) GetUpper() int32 {
+ if x != nil && x.Upper != nil {
+ return *x.Upper
+ }
+ return 0
+}
+
+func (x *SnapshotPercentBounds) GetLower() int32 {
+ if x != nil && x.Lower != nil {
+ return *x.Lower
+ }
+ return 0
+}
+
+type SnapshotResourceThreshold struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CpuPercent *SnapshotPercentBounds `protobuf:"bytes,1,opt,name=cpu_percent,json=cpuPercent,proto3,oneof" json:"cpu_percent,omitempty"`
+ MemoryPercent *SnapshotPercentBounds `protobuf:"bytes,2,opt,name=memory_percent,json=memoryPercent,proto3,oneof" json:"memory_percent,omitempty"`
+ PollIntervalSeconds *int32 `protobuf:"varint,3,opt,name=poll_interval_seconds,json=pollIntervalSeconds,proto3,oneof" json:"poll_interval_seconds,omitempty"`
+}
+
+func (x *SnapshotResourceThreshold) Reset() {
+ *x = SnapshotResourceThreshold{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[489]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotResourceThreshold) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotResourceThreshold) ProtoMessage() {}
+
+func (x *SnapshotResourceThreshold) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[489]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotResourceThreshold.ProtoReflect.Descriptor instead.
+func (*SnapshotResourceThreshold) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{489}
+}
+
+func (x *SnapshotResourceThreshold) GetCpuPercent() *SnapshotPercentBounds {
+ if x != nil {
+ return x.CpuPercent
+ }
+ return nil
+}
+
+func (x *SnapshotResourceThreshold) GetMemoryPercent() *SnapshotPercentBounds {
+ if x != nil {
+ return x.MemoryPercent
+ }
+ return nil
+}
+
+func (x *SnapshotResourceThreshold) GetPollIntervalSeconds() int32 {
+ if x != nil && x.PollIntervalSeconds != nil {
+ return *x.PollIntervalSeconds
+ }
+ return 0
+}
+
+// CheckpointSchedule behavior (triggers only — scope lives on the target).
+type SnapshotSchedulePolicySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ IntervalSeconds *int64 `protobuf:"varint,1,opt,name=interval_seconds,json=intervalSeconds,proto3,oneof" json:"interval_seconds,omitempty"`
+ ResourceThreshold *SnapshotResourceThreshold `protobuf:"bytes,2,opt,name=resource_threshold,json=resourceThreshold,proto3,oneof" json:"resource_threshold,omitempty"`
+ // Values: NodeDrain | PodEviction | Preemption (validated server-side; the CRD has no enum).
+ OnKubernetesEvents []string `protobuf:"bytes,3,rep,name=on_kubernetes_events,json=onKubernetesEvents,proto3" json:"on_kubernetes_events,omitempty"`
+ OnAnnotation bool `protobuf:"varint,4,opt,name=on_annotation,json=onAnnotation,proto3" json:"on_annotation,omitempty"`
+}
+
+func (x *SnapshotSchedulePolicySpec) Reset() {
+ *x = SnapshotSchedulePolicySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[490]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotSchedulePolicySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotSchedulePolicySpec) ProtoMessage() {}
+
+func (x *SnapshotSchedulePolicySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[490]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotSchedulePolicySpec.ProtoReflect.Descriptor instead.
+func (*SnapshotSchedulePolicySpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{490}
+}
+
+func (x *SnapshotSchedulePolicySpec) GetIntervalSeconds() int64 {
+ if x != nil && x.IntervalSeconds != nil {
+ return *x.IntervalSeconds
+ }
+ return 0
+}
+
+func (x *SnapshotSchedulePolicySpec) GetResourceThreshold() *SnapshotResourceThreshold {
+ if x != nil {
+ return x.ResourceThreshold
+ }
+ return nil
+}
+
+func (x *SnapshotSchedulePolicySpec) GetOnKubernetesEvents() []string {
+ if x != nil {
+ return x.OnKubernetesEvents
+ }
+ return nil
+}
+
+func (x *SnapshotSchedulePolicySpec) GetOnAnnotation() bool {
+ if x != nil {
+ return x.OnAnnotation
+ }
+ return false
+}
+
+type SnapshotGlobalRetention struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RetainOrphan *bool `protobuf:"varint,1,opt,name=retain_orphan,json=retainOrphan,proto3,oneof" json:"retain_orphan,omitempty"`
+ MaxCheckpointsPerNamespace *int32 `protobuf:"varint,2,opt,name=max_checkpoints_per_namespace,json=maxCheckpointsPerNamespace,proto3,oneof" json:"max_checkpoints_per_namespace,omitempty"`
+ MaxCheckpointsPerPod *int32 `protobuf:"varint,3,opt,name=max_checkpoints_per_pod,json=maxCheckpointsPerPod,proto3,oneof" json:"max_checkpoints_per_pod,omitempty"`
+ MaxCheckpointsPerContainer *int32 `protobuf:"varint,4,opt,name=max_checkpoints_per_container,json=maxCheckpointsPerContainer,proto3,oneof" json:"max_checkpoints_per_container,omitempty"`
+ // Sizes are integer MB; the compiler renders them as "Mi" quantities.
+ MaxCheckpointSizeMb *int32 `protobuf:"varint,5,opt,name=max_checkpoint_size_mb,json=maxCheckpointSizeMb,proto3,oneof" json:"max_checkpoint_size_mb,omitempty"`
+ MaxTotalSizePerNamespaceMb *int32 `protobuf:"varint,6,opt,name=max_total_size_per_namespace_mb,json=maxTotalSizePerNamespaceMb,proto3,oneof" json:"max_total_size_per_namespace_mb,omitempty"`
+ MaxTotalSizePerPodMb *int32 `protobuf:"varint,7,opt,name=max_total_size_per_pod_mb,json=maxTotalSizePerPodMb,proto3,oneof" json:"max_total_size_per_pod_mb,omitempty"`
+ MaxTotalSizePerContainerMb *int32 `protobuf:"varint,8,opt,name=max_total_size_per_container_mb,json=maxTotalSizePerContainerMb,proto3,oneof" json:"max_total_size_per_container_mb,omitempty"`
+}
+
+func (x *SnapshotGlobalRetention) Reset() {
+ *x = SnapshotGlobalRetention{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[491]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotGlobalRetention) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotGlobalRetention) ProtoMessage() {}
+
+func (x *SnapshotGlobalRetention) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[491]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotGlobalRetention.ProtoReflect.Descriptor instead.
+func (*SnapshotGlobalRetention) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{491}
+}
+
+func (x *SnapshotGlobalRetention) GetRetainOrphan() bool {
+ if x != nil && x.RetainOrphan != nil {
+ return *x.RetainOrphan
+ }
+ return false
+}
+
+func (x *SnapshotGlobalRetention) GetMaxCheckpointsPerNamespace() int32 {
+ if x != nil && x.MaxCheckpointsPerNamespace != nil {
+ return *x.MaxCheckpointsPerNamespace
+ }
+ return 0
+}
+
+func (x *SnapshotGlobalRetention) GetMaxCheckpointsPerPod() int32 {
+ if x != nil && x.MaxCheckpointsPerPod != nil {
+ return *x.MaxCheckpointsPerPod
+ }
+ return 0
+}
+
+func (x *SnapshotGlobalRetention) GetMaxCheckpointsPerContainer() int32 {
+ if x != nil && x.MaxCheckpointsPerContainer != nil {
+ return *x.MaxCheckpointsPerContainer
+ }
+ return 0
+}
+
+func (x *SnapshotGlobalRetention) GetMaxCheckpointSizeMb() int32 {
+ if x != nil && x.MaxCheckpointSizeMb != nil {
+ return *x.MaxCheckpointSizeMb
+ }
+ return 0
+}
+
+func (x *SnapshotGlobalRetention) GetMaxTotalSizePerNamespaceMb() int32 {
+ if x != nil && x.MaxTotalSizePerNamespaceMb != nil {
+ return *x.MaxTotalSizePerNamespaceMb
+ }
+ return 0
+}
+
+func (x *SnapshotGlobalRetention) GetMaxTotalSizePerPodMb() int32 {
+ if x != nil && x.MaxTotalSizePerPodMb != nil {
+ return *x.MaxTotalSizePerPodMb
+ }
+ return 0
+}
+
+func (x *SnapshotGlobalRetention) GetMaxTotalSizePerContainerMb() int32 {
+ if x != nil && x.MaxTotalSizePerContainerMb != nil {
+ return *x.MaxTotalSizePerContainerMb
+ }
+ return 0
+}
+
+type SnapshotContainerRetentionPolicy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Pod string `protobuf:"bytes,2,opt,name=pod,proto3" json:"pod,omitempty"`
+ Container string `protobuf:"bytes,3,opt,name=container,proto3" json:"container,omitempty"`
+ RetainOrphan *bool `protobuf:"varint,4,opt,name=retain_orphan,json=retainOrphan,proto3,oneof" json:"retain_orphan,omitempty"`
+ MaxCheckpoints *int32 `protobuf:"varint,5,opt,name=max_checkpoints,json=maxCheckpoints,proto3,oneof" json:"max_checkpoints,omitempty"`
+ MaxCheckpointSizeMb *int32 `protobuf:"varint,6,opt,name=max_checkpoint_size_mb,json=maxCheckpointSizeMb,proto3,oneof" json:"max_checkpoint_size_mb,omitempty"`
+ MaxTotalSizeMb *int32 `protobuf:"varint,7,opt,name=max_total_size_mb,json=maxTotalSizeMb,proto3,oneof" json:"max_total_size_mb,omitempty"`
+}
+
+func (x *SnapshotContainerRetentionPolicy) Reset() {
+ *x = SnapshotContainerRetentionPolicy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[492]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotContainerRetentionPolicy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotContainerRetentionPolicy) ProtoMessage() {}
+
+func (x *SnapshotContainerRetentionPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[492]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotContainerRetentionPolicy.ProtoReflect.Descriptor instead.
+func (*SnapshotContainerRetentionPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{492}
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetPod() string {
+ if x != nil {
+ return x.Pod
+ }
+ return ""
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetContainer() string {
+ if x != nil {
+ return x.Container
+ }
+ return ""
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetRetainOrphan() bool {
+ if x != nil && x.RetainOrphan != nil {
+ return *x.RetainOrphan
+ }
+ return false
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetMaxCheckpoints() int32 {
+ if x != nil && x.MaxCheckpoints != nil {
+ return *x.MaxCheckpoints
+ }
+ return 0
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetMaxCheckpointSizeMb() int32 {
+ if x != nil && x.MaxCheckpointSizeMb != nil {
+ return *x.MaxCheckpointSizeMb
+ }
+ return 0
+}
+
+func (x *SnapshotContainerRetentionPolicy) GetMaxTotalSizeMb() int32 {
+ if x != nil && x.MaxTotalSizeMb != nil {
+ return *x.MaxTotalSizeMb
+ }
+ return 0
+}
+
+type SnapshotPodRetentionPolicy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Pod string `protobuf:"bytes,2,opt,name=pod,proto3" json:"pod,omitempty"`
+ RetainOrphan *bool `protobuf:"varint,3,opt,name=retain_orphan,json=retainOrphan,proto3,oneof" json:"retain_orphan,omitempty"`
+ MaxCheckpoints *int32 `protobuf:"varint,4,opt,name=max_checkpoints,json=maxCheckpoints,proto3,oneof" json:"max_checkpoints,omitempty"`
+ MaxCheckpointSizeMb *int32 `protobuf:"varint,5,opt,name=max_checkpoint_size_mb,json=maxCheckpointSizeMb,proto3,oneof" json:"max_checkpoint_size_mb,omitempty"`
+ MaxTotalSizeMb *int32 `protobuf:"varint,6,opt,name=max_total_size_mb,json=maxTotalSizeMb,proto3,oneof" json:"max_total_size_mb,omitempty"`
+}
+
+func (x *SnapshotPodRetentionPolicy) Reset() {
+ *x = SnapshotPodRetentionPolicy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[493]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotPodRetentionPolicy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotPodRetentionPolicy) ProtoMessage() {}
+
+func (x *SnapshotPodRetentionPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[493]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotPodRetentionPolicy.ProtoReflect.Descriptor instead.
+func (*SnapshotPodRetentionPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{493}
+}
+
+func (x *SnapshotPodRetentionPolicy) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SnapshotPodRetentionPolicy) GetPod() string {
+ if x != nil {
+ return x.Pod
+ }
+ return ""
+}
+
+func (x *SnapshotPodRetentionPolicy) GetRetainOrphan() bool {
+ if x != nil && x.RetainOrphan != nil {
+ return *x.RetainOrphan
+ }
+ return false
+}
+
+func (x *SnapshotPodRetentionPolicy) GetMaxCheckpoints() int32 {
+ if x != nil && x.MaxCheckpoints != nil {
+ return *x.MaxCheckpoints
+ }
+ return 0
+}
+
+func (x *SnapshotPodRetentionPolicy) GetMaxCheckpointSizeMb() int32 {
+ if x != nil && x.MaxCheckpointSizeMb != nil {
+ return *x.MaxCheckpointSizeMb
+ }
+ return 0
+}
+
+func (x *SnapshotPodRetentionPolicy) GetMaxTotalSizeMb() int32 {
+ if x != nil && x.MaxTotalSizeMb != nil {
+ return *x.MaxTotalSizeMb
+ }
+ return 0
+}
+
+type SnapshotNamespaceRetentionPolicy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ RetainOrphan *bool `protobuf:"varint,2,opt,name=retain_orphan,json=retainOrphan,proto3,oneof" json:"retain_orphan,omitempty"`
+ MaxCheckpoints *int32 `protobuf:"varint,3,opt,name=max_checkpoints,json=maxCheckpoints,proto3,oneof" json:"max_checkpoints,omitempty"`
+ MaxCheckpointSizeMb *int32 `protobuf:"varint,4,opt,name=max_checkpoint_size_mb,json=maxCheckpointSizeMb,proto3,oneof" json:"max_checkpoint_size_mb,omitempty"`
+ MaxTotalSizeMb *int32 `protobuf:"varint,5,opt,name=max_total_size_mb,json=maxTotalSizeMb,proto3,oneof" json:"max_total_size_mb,omitempty"`
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) Reset() {
+ *x = SnapshotNamespaceRetentionPolicy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[494]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotNamespaceRetentionPolicy) ProtoMessage() {}
+
+func (x *SnapshotNamespaceRetentionPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[494]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotNamespaceRetentionPolicy.ProtoReflect.Descriptor instead.
+func (*SnapshotNamespaceRetentionPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{494}
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) GetRetainOrphan() bool {
+ if x != nil && x.RetainOrphan != nil {
+ return *x.RetainOrphan
+ }
+ return false
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) GetMaxCheckpoints() int32 {
+ if x != nil && x.MaxCheckpoints != nil {
+ return *x.MaxCheckpoints
+ }
+ return 0
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) GetMaxCheckpointSizeMb() int32 {
+ if x != nil && x.MaxCheckpointSizeMb != nil {
+ return *x.MaxCheckpointSizeMb
+ }
+ return 0
+}
+
+func (x *SnapshotNamespaceRetentionPolicy) GetMaxTotalSizeMb() int32 {
+ if x != nil && x.MaxTotalSizeMb != nil {
+ return *x.MaxTotalSizeMb
+ }
+ return 0
+}
+
+// CheckpointRestoreOperator behavior (cluster-wide retention/GC config).
+type SnapshotRetentionPolicySpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CheckpointDirectory string `protobuf:"bytes,1,opt,name=checkpoint_directory,json=checkpointDirectory,proto3" json:"checkpoint_directory,omitempty"`
+ ApplyPoliciesImmediately bool `protobuf:"varint,2,opt,name=apply_policies_immediately,json=applyPoliciesImmediately,proto3" json:"apply_policies_immediately,omitempty"`
+ GlobalRetention *SnapshotGlobalRetention `protobuf:"bytes,3,opt,name=global_retention,json=globalRetention,proto3,oneof" json:"global_retention,omitempty"`
+ ContainerPolicies []*SnapshotContainerRetentionPolicy `protobuf:"bytes,4,rep,name=container_policies,json=containerPolicies,proto3" json:"container_policies,omitempty"`
+ PodPolicies []*SnapshotPodRetentionPolicy `protobuf:"bytes,5,rep,name=pod_policies,json=podPolicies,proto3" json:"pod_policies,omitempty"`
+ NamespacePolicies []*SnapshotNamespaceRetentionPolicy `protobuf:"bytes,6,rep,name=namespace_policies,json=namespacePolicies,proto3" json:"namespace_policies,omitempty"`
+}
+
+func (x *SnapshotRetentionPolicySpec) Reset() {
+ *x = SnapshotRetentionPolicySpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[495]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotRetentionPolicySpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotRetentionPolicySpec) ProtoMessage() {}
+
+func (x *SnapshotRetentionPolicySpec) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[495]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotRetentionPolicySpec.ProtoReflect.Descriptor instead.
+func (*SnapshotRetentionPolicySpec) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{495}
+}
+
+func (x *SnapshotRetentionPolicySpec) GetCheckpointDirectory() string {
+ if x != nil {
+ return x.CheckpointDirectory
+ }
+ return ""
+}
+
+func (x *SnapshotRetentionPolicySpec) GetApplyPoliciesImmediately() bool {
+ if x != nil {
+ return x.ApplyPoliciesImmediately
+ }
+ return false
+}
+
+func (x *SnapshotRetentionPolicySpec) GetGlobalRetention() *SnapshotGlobalRetention {
+ if x != nil {
+ return x.GlobalRetention
+ }
+ return nil
+}
+
+func (x *SnapshotRetentionPolicySpec) GetContainerPolicies() []*SnapshotContainerRetentionPolicy {
+ if x != nil {
+ return x.ContainerPolicies
+ }
+ return nil
+}
+
+func (x *SnapshotRetentionPolicySpec) GetPodPolicies() []*SnapshotPodRetentionPolicy {
+ if x != nil {
+ return x.PodPolicies
+ }
+ return nil
+}
+
+func (x *SnapshotRetentionPolicySpec) GetNamespacePolicies() []*SnapshotNamespaceRetentionPolicy {
+ if x != nil {
+ return x.NamespacePolicies
+ }
+ return nil
+}
+
+type SnapshotPolicy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ // Types that are assignable to Spec:
+ //
+ // *SnapshotPolicy_Schedule
+ // *SnapshotPolicy_Retention
+ Spec isSnapshotPolicy_Spec `protobuf_oneof:"spec"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+}
+
+func (x *SnapshotPolicy) Reset() {
+ *x = SnapshotPolicy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[496]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotPolicy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotPolicy) ProtoMessage() {}
+
+func (x *SnapshotPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[496]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotPolicy.ProtoReflect.Descriptor instead.
+func (*SnapshotPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{496}
+}
+
+func (x *SnapshotPolicy) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SnapshotPolicy) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *SnapshotPolicy) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SnapshotPolicy) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (m *SnapshotPolicy) GetSpec() isSnapshotPolicy_Spec {
+ if m != nil {
+ return m.Spec
+ }
+ return nil
+}
+
+func (x *SnapshotPolicy) GetSchedule() *SnapshotSchedulePolicySpec {
+ if x, ok := x.GetSpec().(*SnapshotPolicy_Schedule); ok {
+ return x.Schedule
+ }
+ return nil
+}
+
+func (x *SnapshotPolicy) GetRetention() *SnapshotRetentionPolicySpec {
+ if x, ok := x.GetSpec().(*SnapshotPolicy_Retention); ok {
+ return x.Retention
+ }
+ return nil
+}
+
+func (x *SnapshotPolicy) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *SnapshotPolicy) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+type isSnapshotPolicy_Spec interface {
+ isSnapshotPolicy_Spec()
+}
+
+type SnapshotPolicy_Schedule struct {
+ Schedule *SnapshotSchedulePolicySpec `protobuf:"bytes,11,opt,name=schedule,proto3,oneof"`
+}
+
+type SnapshotPolicy_Retention struct {
+ Retention *SnapshotRetentionPolicySpec `protobuf:"bytes,12,opt,name=retention,proto3,oneof"`
+}
+
+func (*SnapshotPolicy_Schedule) isSnapshotPolicy_Spec() {}
+
+func (*SnapshotPolicy_Retention) isSnapshotPolicy_Spec() {}
+
+type ForensicSnapshotPolicy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ IntervalSeconds *int64 `protobuf:"varint,11,opt,name=interval_seconds,json=intervalSeconds,proto3,oneof" json:"interval_seconds,omitempty"`
+ MaxSnapshots *int32 `protobuf:"varint,12,opt,name=max_snapshots,json=maxSnapshots,proto3,oneof" json:"max_snapshots,omitempty"`
+ MaxDurationSeconds *int64 `protobuf:"varint,13,opt,name=max_duration_seconds,json=maxDurationSeconds,proto3,oneof" json:"max_duration_seconds,omitempty"`
+ HashAlgorithm string `protobuf:"bytes,14,opt,name=hash_algorithm,json=hashAlgorithm,proto3" json:"hash_algorithm,omitempty"`
+ PostSnapshotAction ForensicPostSnapshotAction `protobuf:"varint,15,opt,name=post_snapshot_action,json=postSnapshotAction,proto3,enum=api.v1.ForensicPostSnapshotAction" json:"post_snapshot_action,omitempty"`
+ // Read-only: 0 = never triggered. Mutable only via
+ // TriggerForensicSnapshotRun. Create rejects non-zero values; Update
+ // ignores the field entirely (round-tripped entities carry it).
+ RunGeneration int32 `protobuf:"varint,16,opt,name=run_generation,json=runGeneration,proto3" json:"run_generation,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+}
+
+func (x *ForensicSnapshotPolicy) Reset() {
+ *x = ForensicSnapshotPolicy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[497]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ForensicSnapshotPolicy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForensicSnapshotPolicy) ProtoMessage() {}
+
+func (x *ForensicSnapshotPolicy) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[497]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ForensicSnapshotPolicy.ProtoReflect.Descriptor instead.
+func (*ForensicSnapshotPolicy) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{497}
+}
+
+func (x *ForensicSnapshotPolicy) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicy) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicy) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicy) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicy) GetIntervalSeconds() int64 {
+ if x != nil && x.IntervalSeconds != nil {
+ return *x.IntervalSeconds
+ }
+ return 0
+}
+
+func (x *ForensicSnapshotPolicy) GetMaxSnapshots() int32 {
+ if x != nil && x.MaxSnapshots != nil {
+ return *x.MaxSnapshots
+ }
+ return 0
+}
+
+func (x *ForensicSnapshotPolicy) GetMaxDurationSeconds() int64 {
+ if x != nil && x.MaxDurationSeconds != nil {
+ return *x.MaxDurationSeconds
+ }
+ return 0
+}
+
+func (x *ForensicSnapshotPolicy) GetHashAlgorithm() string {
+ if x != nil {
+ return x.HashAlgorithm
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicy) GetPostSnapshotAction() ForensicPostSnapshotAction {
+ if x != nil {
+ return x.PostSnapshotAction
+ }
+ return ForensicPostSnapshotAction_FORENSIC_POST_SNAPSHOT_ACTION_UNSPECIFIED
+}
+
+func (x *ForensicSnapshotPolicy) GetRunGeneration() int32 {
+ if x != nil {
+ return x.RunGeneration
+ }
+ return 0
+}
+
+func (x *ForensicSnapshotPolicy) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *ForensicSnapshotPolicy) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+// Scope shared by both target families. Non-nil criteria combine with AND.
+// Empty cluster_ids = NO clusters (deliberately inverted from WorkloadPolicyTarget).
+type SnapshotTargetScope struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ Namespaces []string `protobuf:"bytes,11,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
+ NamespaceSelector *LabelSelector `protobuf:"bytes,12,opt,name=namespace_selector,json=namespaceSelector,proto3,oneof" json:"namespace_selector,omitempty"`
+ NamespacePattern *RegexPattern `protobuf:"bytes,13,opt,name=namespace_pattern,json=namespacePattern,proto3,oneof" json:"namespace_pattern,omitempty"`
+ WorkloadSelector *LabelSelector `protobuf:"bytes,14,opt,name=workload_selector,json=workloadSelector,proto3,oneof" json:"workload_selector,omitempty"`
+ AnnotationSelector *LabelSelector `protobuf:"bytes,15,opt,name=annotation_selector,json=annotationSelector,proto3,oneof" json:"annotation_selector,omitempty"`
+ WorkloadNames []string `protobuf:"bytes,16,rep,name=workload_names,json=workloadNames,proto3" json:"workload_names,omitempty"`
+ NamePattern *RegexPattern `protobuf:"bytes,17,opt,name=name_pattern,json=namePattern,proto3,oneof" json:"name_pattern,omitempty"`
+ KindFilter []K8SObjectKind `protobuf:"varint,18,rep,packed,name=kind_filter,json=kindFilter,proto3,enum=api.v1.K8SObjectKind" json:"kind_filter,omitempty"`
+ NodeGroupNames []string `protobuf:"bytes,19,rep,name=node_group_names,json=nodeGroupNames,proto3" json:"node_group_names,omitempty"`
+ // Passed verbatim into the CR's spec.selector; operators restricted to
+ // In/NotIn/Exists/DoesNotExist (validated server-side).
+ PodSelector *LabelSelector `protobuf:"bytes,21,opt,name=pod_selector,json=podSelector,proto3,oneof" json:"pod_selector,omitempty"`
+ ContainerNames []string `protobuf:"bytes,22,rep,name=container_names,json=containerNames,proto3" json:"container_names,omitempty"`
+}
+
+func (x *SnapshotTargetScope) Reset() {
+ *x = SnapshotTargetScope{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[498]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotTargetScope) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotTargetScope) ProtoMessage() {}
+
+func (x *SnapshotTargetScope) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[498]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotTargetScope.ProtoReflect.Descriptor instead.
+func (*SnapshotTargetScope) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{498}
+}
+
+func (x *SnapshotTargetScope) GetClusterIds() []string {
+ if x != nil {
+ return x.ClusterIds
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetNamespaces() []string {
+ if x != nil {
+ return x.Namespaces
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetNamespaceSelector() *LabelSelector {
+ if x != nil {
+ return x.NamespaceSelector
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetNamespacePattern() *RegexPattern {
+ if x != nil {
+ return x.NamespacePattern
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetWorkloadSelector() *LabelSelector {
+ if x != nil {
+ return x.WorkloadSelector
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetAnnotationSelector() *LabelSelector {
+ if x != nil {
+ return x.AnnotationSelector
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetWorkloadNames() []string {
+ if x != nil {
+ return x.WorkloadNames
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetNamePattern() *RegexPattern {
+ if x != nil {
+ return x.NamePattern
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetKindFilter() []K8SObjectKind {
+ if x != nil {
+ return x.KindFilter
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetNodeGroupNames() []string {
+ if x != nil {
+ return x.NodeGroupNames
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetPodSelector() *LabelSelector {
+ if x != nil {
+ return x.PodSelector
+ }
+ return nil
+}
+
+func (x *SnapshotTargetScope) GetContainerNames() []string {
+ if x != nil {
+ return x.ContainerNames
+ }
+ return nil
+}
+
+// NOTE: the spec's target-level runtime `status` field (§8) is deliberately
+// absent — phase 6 (status ingestion) adds it as a backward-compatible field
+// at tag 120, mirroring NodePolicyTarget.status.
+type SnapshotPolicyTarget struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,3,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
+ Priority int32 `protobuf:"varint,6,opt,name=priority,proto3" json:"priority,omitempty"`
+ Enabled bool `protobuf:"varint,7,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ Scope *SnapshotTargetScope `protobuf:"bytes,11,opt,name=scope,proto3" json:"scope,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ // Ingested runtime status of the target's compiled CRs (spec §8).
+ // Populated by ListSnapshotPolicyTargets; unset when nothing ingested.
+ Status *SnapshotPolicyTargetStatus `protobuf:"bytes,120,opt,name=status,proto3" json:"status,omitempty"`
+}
+
+func (x *SnapshotPolicyTarget) Reset() {
+ *x = SnapshotPolicyTarget{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[499]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotPolicyTarget) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotPolicyTarget) ProtoMessage() {}
+
+func (x *SnapshotPolicyTarget) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[499]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotPolicyTarget.ProtoReflect.Descriptor instead.
+func (*SnapshotPolicyTarget) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{499}
+}
+
+func (x *SnapshotPolicyTarget) GetTargetId() string {
+ if x != nil {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *SnapshotPolicyTarget) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SnapshotPolicyTarget) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *SnapshotPolicyTarget) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SnapshotPolicyTarget) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *SnapshotPolicyTarget) GetPriority() int32 {
+ if x != nil {
+ return x.Priority
+ }
+ return 0
+}
+
+func (x *SnapshotPolicyTarget) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *SnapshotPolicyTarget) GetScope() *SnapshotTargetScope {
+ if x != nil {
+ return x.Scope
+ }
+ return nil
+}
+
+func (x *SnapshotPolicyTarget) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *SnapshotPolicyTarget) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (x *SnapshotPolicyTarget) GetStatus() *SnapshotPolicyTargetStatus {
+ if x != nil {
+ return x.Status
+ }
+ return nil
+}
+
+type ForensicSnapshotPolicyTarget struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TeamId string `protobuf:"bytes,3,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
+ Priority int32 `protobuf:"varint,6,opt,name=priority,proto3" json:"priority,omitempty"`
+ Enabled bool `protobuf:"varint,7,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ Scope *SnapshotTargetScope `protobuf:"bytes,11,opt,name=scope,proto3" json:"scope,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ // Ingested runtime status of the target's compiled chain CRs (spec §8).
+ Status *SnapshotPolicyTargetStatus `protobuf:"bytes,120,opt,name=status,proto3" json:"status,omitempty"`
+}
+
+func (x *ForensicSnapshotPolicyTarget) Reset() {
+ *x = ForensicSnapshotPolicyTarget{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[500]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ForensicSnapshotPolicyTarget) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForensicSnapshotPolicyTarget) ProtoMessage() {}
+
+func (x *ForensicSnapshotPolicyTarget) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[500]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ForensicSnapshotPolicyTarget.ProtoReflect.Descriptor instead.
+func (*ForensicSnapshotPolicyTarget) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{500}
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetTargetId() string {
+ if x != nil {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetPriority() int32 {
+ if x != nil {
+ return x.Priority
+ }
+ return 0
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetEnabled() bool {
+ if x != nil {
+ return x.Enabled
+ }
+ return false
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetScope() *SnapshotTargetScope {
+ if x != nil {
+ return x.Scope
+ }
+ return nil
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (x *ForensicSnapshotPolicyTarget) GetStatus() *SnapshotPolicyTargetStatus {
+ if x != nil {
+ return x.Status
+ }
+ return nil
+}
+
+// ---- CRUD: snapshot policies ----
+type CreateSnapshotPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Policies []*SnapshotPolicy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty"` // policy_id/timestamps ignored
+}
+
+func (x *CreateSnapshotPoliciesRequest) Reset() {
+ *x = CreateSnapshotPoliciesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[501]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSnapshotPoliciesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSnapshotPoliciesRequest) ProtoMessage() {}
+
+func (x *CreateSnapshotPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[501]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSnapshotPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*CreateSnapshotPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{501}
+}
+
+func (x *CreateSnapshotPoliciesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *CreateSnapshotPoliciesRequest) GetPolicies() []*SnapshotPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+type CreateSnapshotPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*SnapshotPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+}
+
+func (x *CreateSnapshotPoliciesResponse) Reset() {
+ *x = CreateSnapshotPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[502]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSnapshotPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSnapshotPoliciesResponse) ProtoMessage() {}
+
+func (x *CreateSnapshotPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[502]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSnapshotPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*CreateSnapshotPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{502}
+}
+
+func (x *CreateSnapshotPoliciesResponse) GetPolicies() []*SnapshotPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+type ListSnapshotPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
+ Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
+}
+
+func (x *ListSnapshotPoliciesRequest) Reset() {
+ *x = ListSnapshotPoliciesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[503]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSnapshotPoliciesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSnapshotPoliciesRequest) ProtoMessage() {}
+
+func (x *ListSnapshotPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[503]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSnapshotPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListSnapshotPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{503}
+}
+
+func (x *ListSnapshotPoliciesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListSnapshotPoliciesRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *ListSnapshotPoliciesRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+type ListSnapshotPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*SnapshotPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListSnapshotPoliciesResponse) Reset() {
+ *x = ListSnapshotPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[504]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSnapshotPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSnapshotPoliciesResponse) ProtoMessage() {}
+
+func (x *ListSnapshotPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[504]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSnapshotPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListSnapshotPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{504}
+}
+
+func (x *ListSnapshotPoliciesResponse) GetPolicies() []*SnapshotPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+func (x *ListSnapshotPoliciesResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+type UpdateSnapshotPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Policy *SnapshotPolicy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *UpdateSnapshotPolicyRequest) Reset() {
+ *x = UpdateSnapshotPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[505]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateSnapshotPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSnapshotPolicyRequest) ProtoMessage() {}
+
+func (x *UpdateSnapshotPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[505]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSnapshotPolicyRequest.ProtoReflect.Descriptor instead.
+func (*UpdateSnapshotPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{505}
+}
+
+func (x *UpdateSnapshotPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpdateSnapshotPolicyRequest) GetPolicy() *SnapshotPolicy {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type UpdateSnapshotPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *SnapshotPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *UpdateSnapshotPolicyResponse) Reset() {
+ *x = UpdateSnapshotPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[506]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateSnapshotPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSnapshotPolicyResponse) ProtoMessage() {}
+
+func (x *UpdateSnapshotPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[506]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSnapshotPolicyResponse.ProtoReflect.Descriptor instead.
+func (*UpdateSnapshotPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{506}
+}
+
+func (x *UpdateSnapshotPolicyResponse) GetPolicy() *SnapshotPolicy {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type DeleteSnapshotPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *DeleteSnapshotPolicyRequest) Reset() {
+ *x = DeleteSnapshotPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[507]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSnapshotPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSnapshotPolicyRequest) ProtoMessage() {}
+
+func (x *DeleteSnapshotPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[507]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSnapshotPolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSnapshotPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{507}
+}
+
+func (x *DeleteSnapshotPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteSnapshotPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type DeleteSnapshotPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+}
+
+func (x *DeleteSnapshotPolicyResponse) Reset() {
+ *x = DeleteSnapshotPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[508]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSnapshotPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSnapshotPolicyResponse) ProtoMessage() {}
+
+func (x *DeleteSnapshotPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[508]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSnapshotPolicyResponse.ProtoReflect.Descriptor instead.
+func (*DeleteSnapshotPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{508}
+}
+
+func (x *DeleteSnapshotPolicyResponse) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+// ---- CRUD: snapshot policy targets ----
+type CreateSnapshotPolicyTargetsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Targets []*SnapshotPolicyTarget `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"` // target_id/timestamps ignored
+}
+
+func (x *CreateSnapshotPolicyTargetsRequest) Reset() {
+ *x = CreateSnapshotPolicyTargetsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[509]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSnapshotPolicyTargetsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSnapshotPolicyTargetsRequest) ProtoMessage() {}
+
+func (x *CreateSnapshotPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[509]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSnapshotPolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*CreateSnapshotPolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{509}
+}
+
+func (x *CreateSnapshotPolicyTargetsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *CreateSnapshotPolicyTargetsRequest) GetTargets() []*SnapshotPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type CreateSnapshotPolicyTargetsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Targets []*SnapshotPolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+}
+
+func (x *CreateSnapshotPolicyTargetsResponse) Reset() {
+ *x = CreateSnapshotPolicyTargetsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[510]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSnapshotPolicyTargetsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSnapshotPolicyTargetsResponse) ProtoMessage() {}
+
+func (x *CreateSnapshotPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[510]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSnapshotPolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*CreateSnapshotPolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{510}
+}
+
+func (x *CreateSnapshotPolicyTargetsResponse) GetTargets() []*SnapshotPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type ListSnapshotPolicyTargetsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId *string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"`
+ Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
+ Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
+}
+
+func (x *ListSnapshotPolicyTargetsRequest) Reset() {
+ *x = ListSnapshotPolicyTargetsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[511]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSnapshotPolicyTargetsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSnapshotPolicyTargetsRequest) ProtoMessage() {}
+
+func (x *ListSnapshotPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[511]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSnapshotPolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*ListSnapshotPolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{511}
+}
+
+func (x *ListSnapshotPolicyTargetsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListSnapshotPolicyTargetsRequest) GetPolicyId() string {
+ if x != nil && x.PolicyId != nil {
+ return *x.PolicyId
+ }
+ return ""
+}
+
+func (x *ListSnapshotPolicyTargetsRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *ListSnapshotPolicyTargetsRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+type ListSnapshotPolicyTargetsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Targets []*SnapshotPolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListSnapshotPolicyTargetsResponse) Reset() {
+ *x = ListSnapshotPolicyTargetsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[512]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListSnapshotPolicyTargetsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListSnapshotPolicyTargetsResponse) ProtoMessage() {}
+
+func (x *ListSnapshotPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[512]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListSnapshotPolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*ListSnapshotPolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{512}
+}
+
+func (x *ListSnapshotPolicyTargetsResponse) GetTargets() []*SnapshotPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+func (x *ListSnapshotPolicyTargetsResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+type UpdateSnapshotPolicyTargetRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Target *SnapshotPolicyTarget `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
+}
+
+func (x *UpdateSnapshotPolicyTargetRequest) Reset() {
+ *x = UpdateSnapshotPolicyTargetRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[513]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateSnapshotPolicyTargetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSnapshotPolicyTargetRequest) ProtoMessage() {}
+
+func (x *UpdateSnapshotPolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[513]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSnapshotPolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*UpdateSnapshotPolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{513}
+}
+
+func (x *UpdateSnapshotPolicyTargetRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpdateSnapshotPolicyTargetRequest) GetTarget() *SnapshotPolicyTarget {
+ if x != nil {
+ return x.Target
+ }
+ return nil
+}
+
+type UpdateSnapshotPolicyTargetResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Target *SnapshotPolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+}
+
+func (x *UpdateSnapshotPolicyTargetResponse) Reset() {
+ *x = UpdateSnapshotPolicyTargetResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[514]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateSnapshotPolicyTargetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSnapshotPolicyTargetResponse) ProtoMessage() {}
+
+func (x *UpdateSnapshotPolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[514]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSnapshotPolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*UpdateSnapshotPolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{514}
+}
+
+func (x *UpdateSnapshotPolicyTargetResponse) GetTarget() *SnapshotPolicyTarget {
+ if x != nil {
+ return x.Target
+ }
+ return nil
+}
+
+type DeleteSnapshotPolicyTargetRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ TargetIds []string `protobuf:"bytes,2,rep,name=target_ids,json=targetIds,proto3" json:"target_ids,omitempty"`
+}
+
+func (x *DeleteSnapshotPolicyTargetRequest) Reset() {
+ *x = DeleteSnapshotPolicyTargetRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[515]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSnapshotPolicyTargetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSnapshotPolicyTargetRequest) ProtoMessage() {}
+
+func (x *DeleteSnapshotPolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[515]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSnapshotPolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSnapshotPolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{515}
+}
+
+func (x *DeleteSnapshotPolicyTargetRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteSnapshotPolicyTargetRequest) GetTargetIds() []string {
+ if x != nil {
+ return x.TargetIds
+ }
+ return nil
+}
+
+type DeleteSnapshotPolicyTargetResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+}
+
+func (x *DeleteSnapshotPolicyTargetResponse) Reset() {
+ *x = DeleteSnapshotPolicyTargetResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[516]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSnapshotPolicyTargetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSnapshotPolicyTargetResponse) ProtoMessage() {}
+
+func (x *DeleteSnapshotPolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[516]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSnapshotPolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*DeleteSnapshotPolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{516}
+}
+
+func (x *DeleteSnapshotPolicyTargetResponse) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+// ---- CRUD: forensic snapshot policies + targets (mirrors above) ----
+type CreateForensicSnapshotPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Policies []*ForensicSnapshotPolicy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty"`
+}
+
+func (x *CreateForensicSnapshotPoliciesRequest) Reset() {
+ *x = CreateForensicSnapshotPoliciesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[517]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateForensicSnapshotPoliciesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateForensicSnapshotPoliciesRequest) ProtoMessage() {}
+
+func (x *CreateForensicSnapshotPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[517]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateForensicSnapshotPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*CreateForensicSnapshotPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{517}
+}
+
+func (x *CreateForensicSnapshotPoliciesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *CreateForensicSnapshotPoliciesRequest) GetPolicies() []*ForensicSnapshotPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+type CreateForensicSnapshotPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*ForensicSnapshotPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+}
+
+func (x *CreateForensicSnapshotPoliciesResponse) Reset() {
+ *x = CreateForensicSnapshotPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[518]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateForensicSnapshotPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateForensicSnapshotPoliciesResponse) ProtoMessage() {}
+
+func (x *CreateForensicSnapshotPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[518]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateForensicSnapshotPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*CreateForensicSnapshotPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{518}
+}
+
+func (x *CreateForensicSnapshotPoliciesResponse) GetPolicies() []*ForensicSnapshotPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+type ListForensicSnapshotPoliciesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
+ Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
+}
+
+func (x *ListForensicSnapshotPoliciesRequest) Reset() {
+ *x = ListForensicSnapshotPoliciesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[519]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListForensicSnapshotPoliciesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListForensicSnapshotPoliciesRequest) ProtoMessage() {}
+
+func (x *ListForensicSnapshotPoliciesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[519]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListForensicSnapshotPoliciesRequest.ProtoReflect.Descriptor instead.
+func (*ListForensicSnapshotPoliciesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{519}
+}
+
+func (x *ListForensicSnapshotPoliciesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListForensicSnapshotPoliciesRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *ListForensicSnapshotPoliciesRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+type ListForensicSnapshotPoliciesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policies []*ForensicSnapshotPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListForensicSnapshotPoliciesResponse) Reset() {
+ *x = ListForensicSnapshotPoliciesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[520]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListForensicSnapshotPoliciesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListForensicSnapshotPoliciesResponse) ProtoMessage() {}
+
+func (x *ListForensicSnapshotPoliciesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[520]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListForensicSnapshotPoliciesResponse.ProtoReflect.Descriptor instead.
+func (*ListForensicSnapshotPoliciesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{520}
+}
+
+func (x *ListForensicSnapshotPoliciesResponse) GetPolicies() []*ForensicSnapshotPolicy {
+ if x != nil {
+ return x.Policies
+ }
+ return nil
+}
+
+func (x *ListForensicSnapshotPoliciesResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+type UpdateForensicSnapshotPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Policy *ForensicSnapshotPolicy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *UpdateForensicSnapshotPolicyRequest) Reset() {
+ *x = UpdateForensicSnapshotPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[521]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateForensicSnapshotPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateForensicSnapshotPolicyRequest) ProtoMessage() {}
+
+func (x *UpdateForensicSnapshotPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[521]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateForensicSnapshotPolicyRequest.ProtoReflect.Descriptor instead.
+func (*UpdateForensicSnapshotPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{521}
+}
+
+func (x *UpdateForensicSnapshotPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpdateForensicSnapshotPolicyRequest) GetPolicy() *ForensicSnapshotPolicy {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type UpdateForensicSnapshotPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Policy *ForensicSnapshotPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *UpdateForensicSnapshotPolicyResponse) Reset() {
+ *x = UpdateForensicSnapshotPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[522]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateForensicSnapshotPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateForensicSnapshotPolicyResponse) ProtoMessage() {}
+
+func (x *UpdateForensicSnapshotPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[522]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateForensicSnapshotPolicyResponse.ProtoReflect.Descriptor instead.
+func (*UpdateForensicSnapshotPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{522}
+}
+
+func (x *UpdateForensicSnapshotPolicyResponse) GetPolicy() *ForensicSnapshotPolicy {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type DeleteForensicSnapshotPolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *DeleteForensicSnapshotPolicyRequest) Reset() {
+ *x = DeleteForensicSnapshotPolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[523]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteForensicSnapshotPolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteForensicSnapshotPolicyRequest) ProtoMessage() {}
+
+func (x *DeleteForensicSnapshotPolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[523]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteForensicSnapshotPolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeleteForensicSnapshotPolicyRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{523}
+}
+
+func (x *DeleteForensicSnapshotPolicyRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteForensicSnapshotPolicyRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type DeleteForensicSnapshotPolicyResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+}
+
+func (x *DeleteForensicSnapshotPolicyResponse) Reset() {
+ *x = DeleteForensicSnapshotPolicyResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[524]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteForensicSnapshotPolicyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteForensicSnapshotPolicyResponse) ProtoMessage() {}
+
+func (x *DeleteForensicSnapshotPolicyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[524]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteForensicSnapshotPolicyResponse.ProtoReflect.Descriptor instead.
+func (*DeleteForensicSnapshotPolicyResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{524}
+}
+
+func (x *DeleteForensicSnapshotPolicyResponse) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+type CreateForensicSnapshotPolicyTargetsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Targets []*ForensicSnapshotPolicyTarget `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"`
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsRequest) Reset() {
+ *x = CreateForensicSnapshotPolicyTargetsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[525]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateForensicSnapshotPolicyTargetsRequest) ProtoMessage() {}
+
+func (x *CreateForensicSnapshotPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[525]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateForensicSnapshotPolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*CreateForensicSnapshotPolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{525}
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsRequest) GetTargets() []*ForensicSnapshotPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type CreateForensicSnapshotPolicyTargetsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Targets []*ForensicSnapshotPolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsResponse) Reset() {
+ *x = CreateForensicSnapshotPolicyTargetsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[526]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateForensicSnapshotPolicyTargetsResponse) ProtoMessage() {}
+
+func (x *CreateForensicSnapshotPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[526]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateForensicSnapshotPolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*CreateForensicSnapshotPolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{526}
+}
+
+func (x *CreateForensicSnapshotPolicyTargetsResponse) GetTargets() []*ForensicSnapshotPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+type ListForensicSnapshotPolicyTargetsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId *string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"`
+ Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
+ Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
+}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) Reset() {
+ *x = ListForensicSnapshotPolicyTargetsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[527]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListForensicSnapshotPolicyTargetsRequest) ProtoMessage() {}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[527]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListForensicSnapshotPolicyTargetsRequest.ProtoReflect.Descriptor instead.
+func (*ListForensicSnapshotPolicyTargetsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{527}
+}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) GetPolicyId() string {
+ if x != nil && x.PolicyId != nil {
+ return *x.PolicyId
+ }
+ return ""
+}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *ListForensicSnapshotPolicyTargetsRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+type ListForensicSnapshotPolicyTargetsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Targets []*ForensicSnapshotPolicyTarget `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *ListForensicSnapshotPolicyTargetsResponse) Reset() {
+ *x = ListForensicSnapshotPolicyTargetsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[528]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListForensicSnapshotPolicyTargetsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListForensicSnapshotPolicyTargetsResponse) ProtoMessage() {}
+
+func (x *ListForensicSnapshotPolicyTargetsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[528]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListForensicSnapshotPolicyTargetsResponse.ProtoReflect.Descriptor instead.
+func (*ListForensicSnapshotPolicyTargetsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{528}
+}
+
+func (x *ListForensicSnapshotPolicyTargetsResponse) GetTargets() []*ForensicSnapshotPolicyTarget {
+ if x != nil {
+ return x.Targets
+ }
+ return nil
+}
+
+func (x *ListForensicSnapshotPolicyTargetsResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+type UpdateForensicSnapshotPolicyTargetRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Target *ForensicSnapshotPolicyTarget `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetRequest) Reset() {
+ *x = UpdateForensicSnapshotPolicyTargetRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[529]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateForensicSnapshotPolicyTargetRequest) ProtoMessage() {}
+
+func (x *UpdateForensicSnapshotPolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[529]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateForensicSnapshotPolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*UpdateForensicSnapshotPolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{529}
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetRequest) GetTarget() *ForensicSnapshotPolicyTarget {
+ if x != nil {
+ return x.Target
+ }
+ return nil
+}
+
+type UpdateForensicSnapshotPolicyTargetResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Target *ForensicSnapshotPolicyTarget `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetResponse) Reset() {
+ *x = UpdateForensicSnapshotPolicyTargetResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[530]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateForensicSnapshotPolicyTargetResponse) ProtoMessage() {}
+
+func (x *UpdateForensicSnapshotPolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[530]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateForensicSnapshotPolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*UpdateForensicSnapshotPolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{530}
+}
+
+func (x *UpdateForensicSnapshotPolicyTargetResponse) GetTarget() *ForensicSnapshotPolicyTarget {
+ if x != nil {
+ return x.Target
+ }
+ return nil
+}
+
+type DeleteForensicSnapshotPolicyTargetRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ TargetIds []string `protobuf:"bytes,2,rep,name=target_ids,json=targetIds,proto3" json:"target_ids,omitempty"`
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetRequest) Reset() {
+ *x = DeleteForensicSnapshotPolicyTargetRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[531]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteForensicSnapshotPolicyTargetRequest) ProtoMessage() {}
+
+func (x *DeleteForensicSnapshotPolicyTargetRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[531]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteForensicSnapshotPolicyTargetRequest.ProtoReflect.Descriptor instead.
+func (*DeleteForensicSnapshotPolicyTargetRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{531}
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetRequest) GetTargetIds() []string {
+ if x != nil {
+ return x.TargetIds
+ }
+ return nil
+}
+
+type DeleteForensicSnapshotPolicyTargetResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetResponse) Reset() {
+ *x = DeleteForensicSnapshotPolicyTargetResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[532]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteForensicSnapshotPolicyTargetResponse) ProtoMessage() {}
+
+func (x *DeleteForensicSnapshotPolicyTargetResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[532]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteForensicSnapshotPolicyTargetResponse.ProtoReflect.Descriptor instead.
+func (*DeleteForensicSnapshotPolicyTargetResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{532}
+}
+
+func (x *DeleteForensicSnapshotPolicyTargetResponse) GetSuccess() bool {
+ if x != nil {
+ return x.Success
+ }
+ return false
+}
+
+// ---- Forensic run trigger ----
+type TriggerForensicSnapshotRunRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *TriggerForensicSnapshotRunRequest) Reset() {
+ *x = TriggerForensicSnapshotRunRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[533]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TriggerForensicSnapshotRunRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TriggerForensicSnapshotRunRequest) ProtoMessage() {}
+
+func (x *TriggerForensicSnapshotRunRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[533]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TriggerForensicSnapshotRunRequest.ProtoReflect.Descriptor instead.
+func (*TriggerForensicSnapshotRunRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{533}
+}
+
+func (x *TriggerForensicSnapshotRunRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *TriggerForensicSnapshotRunRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type TriggerForensicSnapshotRunResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RunGeneration int32 `protobuf:"varint,1,opt,name=run_generation,json=runGeneration,proto3" json:"run_generation,omitempty"`
+}
+
+func (x *TriggerForensicSnapshotRunResponse) Reset() {
+ *x = TriggerForensicSnapshotRunResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[534]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TriggerForensicSnapshotRunResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TriggerForensicSnapshotRunResponse) ProtoMessage() {}
+
+func (x *TriggerForensicSnapshotRunResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[534]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TriggerForensicSnapshotRunResponse.ProtoReflect.Descriptor instead.
+func (*TriggerForensicSnapshotRunResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{534}
+}
+
+func (x *TriggerForensicSnapshotRunResponse) GetRunGeneration() int32 {
+ if x != nil {
+ return x.RunGeneration
+ }
+ return 0
+}
+
+// ---- Targeting preview (shared resolver, spec §6) ----
+type SnapshotResolvedWorkload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Kind K8SObjectKind `protobuf:"varint,1,opt,name=kind,proto3,enum=api.v1.K8SObjectKind" json:"kind,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"`
+ PodSelector *LabelSelector `protobuf:"bytes,4,opt,name=pod_selector,json=podSelector,proto3,oneof" json:"pod_selector,omitempty"` // from the workload's pod template
+ // Summed container resource requests + replicas from the workload spec,
+ // for the preview's workload table. Zero when the kind has no typed spec
+ // (Pod, CRDs) or the field is absent (DaemonSet/Job have no replica count).
+ Replicas int32 `protobuf:"varint,5,opt,name=replicas,proto3" json:"replicas,omitempty"`
+ CpuRequestMillicores int64 `protobuf:"varint,6,opt,name=cpu_request_millicores,json=cpuRequestMillicores,proto3" json:"cpu_request_millicores,omitempty"`
+ MemoryRequestBytes int64 `protobuf:"varint,7,opt,name=memory_request_bytes,json=memoryRequestBytes,proto3" json:"memory_request_bytes,omitempty"`
+}
+
+func (x *SnapshotResolvedWorkload) Reset() {
+ *x = SnapshotResolvedWorkload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[535]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotResolvedWorkload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotResolvedWorkload) ProtoMessage() {}
+
+func (x *SnapshotResolvedWorkload) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[535]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotResolvedWorkload.ProtoReflect.Descriptor instead.
+func (*SnapshotResolvedWorkload) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{535}
+}
+
+func (x *SnapshotResolvedWorkload) GetKind() K8SObjectKind {
+ if x != nil {
+ return x.Kind
+ }
+ return K8SObjectKind_K8S_OBJECT_KIND_UNSPECIFIED
+}
+
+func (x *SnapshotResolvedWorkload) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SnapshotResolvedWorkload) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *SnapshotResolvedWorkload) GetPodSelector() *LabelSelector {
+ if x != nil {
+ return x.PodSelector
+ }
+ return nil
+}
+
+func (x *SnapshotResolvedWorkload) GetReplicas() int32 {
+ if x != nil {
+ return x.Replicas
+ }
+ return 0
+}
+
+func (x *SnapshotResolvedWorkload) GetCpuRequestMillicores() int64 {
+ if x != nil {
+ return x.CpuRequestMillicores
+ }
+ return 0
+}
+
+func (x *SnapshotResolvedWorkload) GetMemoryRequestBytes() int64 {
+ if x != nil {
+ return x.MemoryRequestBytes
+ }
+ return 0
+}
+
+type SnapshotResolvedNamespace struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ // Present only when workload-scope criteria were used; empty for
+ // pod_selector-passthrough targets.
+ Workloads []*SnapshotResolvedWorkload `protobuf:"bytes,2,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ PodSelectorPassthrough bool `protobuf:"varint,3,opt,name=pod_selector_passthrough,json=podSelectorPassthrough,proto3" json:"pod_selector_passthrough,omitempty"`
+}
+
+func (x *SnapshotResolvedNamespace) Reset() {
+ *x = SnapshotResolvedNamespace{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[536]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotResolvedNamespace) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotResolvedNamespace) ProtoMessage() {}
+
+func (x *SnapshotResolvedNamespace) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[536]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotResolvedNamespace.ProtoReflect.Descriptor instead.
+func (*SnapshotResolvedNamespace) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{536}
+}
+
+func (x *SnapshotResolvedNamespace) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SnapshotResolvedNamespace) GetWorkloads() []*SnapshotResolvedWorkload {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+func (x *SnapshotResolvedNamespace) GetPodSelectorPassthrough() bool {
+ if x != nil {
+ return x.PodSelectorPassthrough
+ }
+ return false
+}
+
+type SnapshotClusterScopePreview struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespaces []*SnapshotResolvedNamespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
+ Truncated bool `protobuf:"varint,3,opt,name=truncated,proto3" json:"truncated,omitempty"` // fan-out cap hit (spec §6)
+ Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` // per-cluster resolution error (cluster missing, etc.)
+}
+
+func (x *SnapshotClusterScopePreview) Reset() {
+ *x = SnapshotClusterScopePreview{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[537]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotClusterScopePreview) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotClusterScopePreview) ProtoMessage() {}
+
+func (x *SnapshotClusterScopePreview) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[537]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotClusterScopePreview.ProtoReflect.Descriptor instead.
+func (*SnapshotClusterScopePreview) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{537}
+}
+
+func (x *SnapshotClusterScopePreview) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *SnapshotClusterScopePreview) GetNamespaces() []*SnapshotResolvedNamespace {
+ if x != nil {
+ return x.Namespaces
+ }
+ return nil
+}
+
+func (x *SnapshotClusterScopePreview) GetTruncated() bool {
+ if x != nil {
+ return x.Truncated
+ }
+ return false
+}
+
+func (x *SnapshotClusterScopePreview) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+type PreviewSnapshotPolicyTargetMatchesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Scope *SnapshotTargetScope `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"` // unsaved target scope
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesRequest) Reset() {
+ *x = PreviewSnapshotPolicyTargetMatchesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[538]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewSnapshotPolicyTargetMatchesRequest) ProtoMessage() {}
+
+func (x *PreviewSnapshotPolicyTargetMatchesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[538]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewSnapshotPolicyTargetMatchesRequest.ProtoReflect.Descriptor instead.
+func (*PreviewSnapshotPolicyTargetMatchesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{538}
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesRequest) GetScope() *SnapshotTargetScope {
+ if x != nil {
+ return x.Scope
+ }
+ return nil
+}
+
+type PreviewSnapshotPolicyTargetMatchesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Clusters []*SnapshotClusterScopePreview `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesResponse) Reset() {
+ *x = PreviewSnapshotPolicyTargetMatchesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[539]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewSnapshotPolicyTargetMatchesResponse) ProtoMessage() {}
+
+func (x *PreviewSnapshotPolicyTargetMatchesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[539]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewSnapshotPolicyTargetMatchesResponse.ProtoReflect.Descriptor instead.
+func (*PreviewSnapshotPolicyTargetMatchesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{539}
+}
+
+func (x *PreviewSnapshotPolicyTargetMatchesResponse) GetClusters() []*SnapshotClusterScopePreview {
+ if x != nil {
+ return x.Clusters
+ }
+ return nil
+}
+
+type ForensicTargetOverlap struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ WorkloadUids []string `protobuf:"bytes,5,rep,name=workload_uids,json=workloadUids,proto3" json:"workload_uids,omitempty"`
+}
+
+func (x *ForensicTargetOverlap) Reset() {
+ *x = ForensicTargetOverlap{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[540]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ForensicTargetOverlap) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForensicTargetOverlap) ProtoMessage() {}
+
+func (x *ForensicTargetOverlap) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[540]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ForensicTargetOverlap.ProtoReflect.Descriptor instead.
+func (*ForensicTargetOverlap) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{540}
+}
+
+func (x *ForensicTargetOverlap) GetTargetId() string {
+ if x != nil {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *ForensicTargetOverlap) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *ForensicTargetOverlap) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *ForensicTargetOverlap) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *ForensicTargetOverlap) GetWorkloadUids() []string {
+ if x != nil {
+ return x.WorkloadUids
+ }
+ return nil
+}
+
+type PreviewForensicSnapshotPolicyTargetMatchesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ Scope *SnapshotTargetScope `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"`
+ // When previewing edits to an existing target, set this to its id so the
+ // target's persisted copy is not reported as overlapping itself.
+ ExcludeTargetId *string `protobuf:"bytes,3,opt,name=exclude_target_id,json=excludeTargetId,proto3,oneof" json:"exclude_target_id,omitempty"`
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesRequest) Reset() {
+ *x = PreviewForensicSnapshotPolicyTargetMatchesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[541]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewForensicSnapshotPolicyTargetMatchesRequest) ProtoMessage() {}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[541]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewForensicSnapshotPolicyTargetMatchesRequest.ProtoReflect.Descriptor instead.
+func (*PreviewForensicSnapshotPolicyTargetMatchesRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{541}
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesRequest) GetScope() *SnapshotTargetScope {
+ if x != nil {
+ return x.Scope
+ }
+ return nil
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesRequest) GetExcludeTargetId() string {
+ if x != nil && x.ExcludeTargetId != nil {
+ return *x.ExcludeTargetId
+ }
+ return ""
+}
+
+type PreviewForensicSnapshotPolicyTargetMatchesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Clusters []*SnapshotClusterScopePreview `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
+ // Enabled forensic targets whose rendered workloads intersect this scope
+ // (overlapping forensic captures race on DeletePod — spec §2). Computed
+ // against the rendered-scope read model, so overlaps reflect each
+ // target's matches as of its LAST RENDER (up to one render interval
+ // stale), not a live re-resolution.
+ Overlaps []*ForensicTargetOverlap `protobuf:"bytes,2,rep,name=overlaps,proto3" json:"overlaps,omitempty"`
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesResponse) Reset() {
+ *x = PreviewForensicSnapshotPolicyTargetMatchesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[542]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewForensicSnapshotPolicyTargetMatchesResponse) ProtoMessage() {}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[542]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewForensicSnapshotPolicyTargetMatchesResponse.ProtoReflect.Descriptor instead.
+func (*PreviewForensicSnapshotPolicyTargetMatchesResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{542}
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesResponse) GetClusters() []*SnapshotClusterScopePreview {
+ if x != nil {
+ return x.Clusters
+ }
+ return nil
+}
+
+func (x *PreviewForensicSnapshotPolicyTargetMatchesResponse) GetOverlaps() []*ForensicTargetOverlap {
+ if x != nil {
+ return x.Overlaps
+ }
+ return nil
+}
+
+// ---- Rendered scope (read model, spec §3.5) ----
+type SnapshotRenderedScopeRow struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ PolicyId string `protobuf:"bytes,2,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ PodSelector *LabelSelector `protobuf:"bytes,5,opt,name=pod_selector,json=podSelector,proto3,oneof" json:"pod_selector,omitempty"`
+ ContainerNames []string `protobuf:"bytes,6,rep,name=container_names,json=containerNames,proto3" json:"container_names,omitempty"`
+ WorkloadCount int32 `protobuf:"varint,7,opt,name=workload_count,json=workloadCount,proto3" json:"workload_count,omitempty"`
+ Workloads []*SnapshotResolvedWorkload `protobuf:"bytes,8,rep,name=workloads,proto3" json:"workloads,omitempty"`
+ ConfigId string `protobuf:"bytes,9,opt,name=config_id,json=configId,proto3" json:"config_id,omitempty"`
+ RunGeneration *int32 `protobuf:"varint,10,opt,name=run_generation,json=runGeneration,proto3,oneof" json:"run_generation,omitempty"` // forensic only
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+}
+
+func (x *SnapshotRenderedScopeRow) Reset() {
+ *x = SnapshotRenderedScopeRow{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[543]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotRenderedScopeRow) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotRenderedScopeRow) ProtoMessage() {}
+
+func (x *SnapshotRenderedScopeRow) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[543]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotRenderedScopeRow.ProtoReflect.Descriptor instead.
+func (*SnapshotRenderedScopeRow) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{543}
+}
+
+func (x *SnapshotRenderedScopeRow) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *SnapshotRenderedScopeRow) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SnapshotRenderedScopeRow) GetTargetId() string {
+ if x != nil {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *SnapshotRenderedScopeRow) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SnapshotRenderedScopeRow) GetPodSelector() *LabelSelector {
+ if x != nil {
+ return x.PodSelector
+ }
+ return nil
+}
+
+func (x *SnapshotRenderedScopeRow) GetContainerNames() []string {
+ if x != nil {
+ return x.ContainerNames
+ }
+ return nil
+}
+
+func (x *SnapshotRenderedScopeRow) GetWorkloadCount() int32 {
+ if x != nil {
+ return x.WorkloadCount
+ }
+ return 0
+}
+
+func (x *SnapshotRenderedScopeRow) GetWorkloads() []*SnapshotResolvedWorkload {
+ if x != nil {
+ return x.Workloads
+ }
+ return nil
+}
+
+func (x *SnapshotRenderedScopeRow) GetConfigId() string {
+ if x != nil {
+ return x.ConfigId
+ }
+ return ""
+}
+
+func (x *SnapshotRenderedScopeRow) GetRunGeneration() int32 {
+ if x != nil && x.RunGeneration != nil {
+ return *x.RunGeneration
+ }
+ return 0
+}
+
+func (x *SnapshotRenderedScopeRow) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+type GetSnapshotPolicyTargetRenderedScopeRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // Types that are assignable to By:
+ //
+ // *GetSnapshotPolicyTargetRenderedScopeRequest_TargetId
+ // *GetSnapshotPolicyTargetRenderedScopeRequest_PolicyId
+ By isGetSnapshotPolicyTargetRenderedScopeRequest_By `protobuf_oneof:"by"`
+ Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
+ Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"`
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) Reset() {
+ *x = GetSnapshotPolicyTargetRenderedScopeRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[544]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSnapshotPolicyTargetRenderedScopeRequest) ProtoMessage() {}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[544]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSnapshotPolicyTargetRenderedScopeRequest.ProtoReflect.Descriptor instead.
+func (*GetSnapshotPolicyTargetRenderedScopeRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{544}
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (m *GetSnapshotPolicyTargetRenderedScopeRequest) GetBy() isGetSnapshotPolicyTargetRenderedScopeRequest_By {
+ if m != nil {
+ return m.By
+ }
+ return nil
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) GetTargetId() string {
+ if x, ok := x.GetBy().(*GetSnapshotPolicyTargetRenderedScopeRequest_TargetId); ok {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) GetPolicyId() string {
+ if x, ok := x.GetBy().(*GetSnapshotPolicyTargetRenderedScopeRequest_PolicyId); ok {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+type isGetSnapshotPolicyTargetRenderedScopeRequest_By interface {
+ isGetSnapshotPolicyTargetRenderedScopeRequest_By()
+}
+
+type GetSnapshotPolicyTargetRenderedScopeRequest_TargetId struct {
+ TargetId string `protobuf:"bytes,2,opt,name=target_id,json=targetId,proto3,oneof"`
+}
+
+type GetSnapshotPolicyTargetRenderedScopeRequest_PolicyId struct {
+ PolicyId string `protobuf:"bytes,3,opt,name=policy_id,json=policyId,proto3,oneof"`
+}
+
+func (*GetSnapshotPolicyTargetRenderedScopeRequest_TargetId) isGetSnapshotPolicyTargetRenderedScopeRequest_By() {
+}
+
+func (*GetSnapshotPolicyTargetRenderedScopeRequest_PolicyId) isGetSnapshotPolicyTargetRenderedScopeRequest_By() {
+}
+
+type GetSnapshotPolicyTargetRenderedScopeResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rows []*SnapshotRenderedScopeRow `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeResponse) Reset() {
+ *x = GetSnapshotPolicyTargetRenderedScopeResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[545]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSnapshotPolicyTargetRenderedScopeResponse) ProtoMessage() {}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[545]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSnapshotPolicyTargetRenderedScopeResponse.ProtoReflect.Descriptor instead.
+func (*GetSnapshotPolicyTargetRenderedScopeResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{545}
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeResponse) GetRows() []*SnapshotRenderedScopeRow {
+ if x != nil {
+ return x.Rows
+ }
+ return nil
+}
+
+func (x *GetSnapshotPolicyTargetRenderedScopeResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+type GetForensicSnapshotPolicyTargetRenderedScopeRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ // Types that are assignable to By:
+ //
+ // *GetForensicSnapshotPolicyTargetRenderedScopeRequest_TargetId
+ // *GetForensicSnapshotPolicyTargetRenderedScopeRequest_PolicyId
+ By isGetForensicSnapshotPolicyTargetRenderedScopeRequest_By `protobuf_oneof:"by"`
+ Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
+ Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"`
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) Reset() {
+ *x = GetForensicSnapshotPolicyTargetRenderedScopeRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[546]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetForensicSnapshotPolicyTargetRenderedScopeRequest) ProtoMessage() {}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[546]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetForensicSnapshotPolicyTargetRenderedScopeRequest.ProtoReflect.Descriptor instead.
+func (*GetForensicSnapshotPolicyTargetRenderedScopeRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{546}
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (m *GetForensicSnapshotPolicyTargetRenderedScopeRequest) GetBy() isGetForensicSnapshotPolicyTargetRenderedScopeRequest_By {
+ if m != nil {
+ return m.By
+ }
+ return nil
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) GetTargetId() string {
+ if x, ok := x.GetBy().(*GetForensicSnapshotPolicyTargetRenderedScopeRequest_TargetId); ok {
+ return x.TargetId
+ }
+ return ""
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) GetPolicyId() string {
+ if x, ok := x.GetBy().(*GetForensicSnapshotPolicyTargetRenderedScopeRequest_PolicyId); ok {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) GetLimit() int32 {
+ if x != nil {
+ return x.Limit
+ }
+ return 0
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeRequest) GetOffset() int32 {
+ if x != nil {
+ return x.Offset
+ }
+ return 0
+}
+
+type isGetForensicSnapshotPolicyTargetRenderedScopeRequest_By interface {
+ isGetForensicSnapshotPolicyTargetRenderedScopeRequest_By()
+}
+
+type GetForensicSnapshotPolicyTargetRenderedScopeRequest_TargetId struct {
+ TargetId string `protobuf:"bytes,2,opt,name=target_id,json=targetId,proto3,oneof"`
+}
+
+type GetForensicSnapshotPolicyTargetRenderedScopeRequest_PolicyId struct {
+ PolicyId string `protobuf:"bytes,3,opt,name=policy_id,json=policyId,proto3,oneof"`
+}
+
+func (*GetForensicSnapshotPolicyTargetRenderedScopeRequest_TargetId) isGetForensicSnapshotPolicyTargetRenderedScopeRequest_By() {
+}
+
+func (*GetForensicSnapshotPolicyTargetRenderedScopeRequest_PolicyId) isGetForensicSnapshotPolicyTargetRenderedScopeRequest_By() {
+}
+
+type GetForensicSnapshotPolicyTargetRenderedScopeResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Rows []*SnapshotRenderedScopeRow `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
+ Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeResponse) Reset() {
+ *x = GetForensicSnapshotPolicyTargetRenderedScopeResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[547]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetForensicSnapshotPolicyTargetRenderedScopeResponse) ProtoMessage() {}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[547]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetForensicSnapshotPolicyTargetRenderedScopeResponse.ProtoReflect.Descriptor instead.
+func (*GetForensicSnapshotPolicyTargetRenderedScopeResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{547}
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeResponse) GetRows() []*SnapshotRenderedScopeRow {
+ if x != nil {
+ return x.Rows
+ }
+ return nil
+}
+
+func (x *GetForensicSnapshotPolicyTargetRenderedScopeResponse) GetTotal() int64 {
+ if x != nil {
+ return x.Total
+ }
+ return 0
+}
+
+// ---- Delivery status (apply layer now; runtime status added in phase 6) ----
+type SnapshotConfigInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ConfigId string `protobuf:"bytes,1,opt,name=config_id,json=configId,proto3" json:"config_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ ContentHash string `protobuf:"bytes,3,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
+ Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` // pending | applied | failed
+ Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
+ RunGeneration *int32 `protobuf:"varint,6,opt,name=run_generation,json=runGeneration,proto3,oneof" json:"run_generation,omitempty"` // forensic only
+ TriggeredBy string `protobuf:"bytes,7,opt,name=triggered_by,json=triggeredBy,proto3" json:"triggered_by,omitempty"` // forensic only
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+}
+
+func (x *SnapshotConfigInfo) Reset() {
+ *x = SnapshotConfigInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[548]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotConfigInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotConfigInfo) ProtoMessage() {}
+
+func (x *SnapshotConfigInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[548]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotConfigInfo.ProtoReflect.Descriptor instead.
+func (*SnapshotConfigInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{548}
+}
+
+func (x *SnapshotConfigInfo) GetConfigId() string {
+ if x != nil {
+ return x.ConfigId
+ }
+ return ""
+}
+
+func (x *SnapshotConfigInfo) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *SnapshotConfigInfo) GetContentHash() string {
+ if x != nil {
+ return x.ContentHash
+ }
+ return ""
+}
+
+func (x *SnapshotConfigInfo) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *SnapshotConfigInfo) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *SnapshotConfigInfo) GetRunGeneration() int32 {
+ if x != nil && x.RunGeneration != nil {
+ return *x.RunGeneration
+ }
+ return 0
+}
+
+func (x *SnapshotConfigInfo) GetTriggeredBy() string {
+ if x != nil {
+ return x.TriggeredBy
+ }
+ return ""
+}
+
+func (x *SnapshotConfigInfo) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *SnapshotConfigInfo) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+type SnapshotConfigApplyEventInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ EventId string `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"`
+ ConfigId string `protobuf:"bytes,2,opt,name=config_id,json=configId,proto3" json:"config_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`
+ AppliedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=applied_at,json=appliedAt,proto3" json:"applied_at,omitempty"`
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,52,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+}
+
+func (x *SnapshotConfigApplyEventInfo) Reset() {
+ *x = SnapshotConfigApplyEventInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[549]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotConfigApplyEventInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotConfigApplyEventInfo) ProtoMessage() {}
+
+func (x *SnapshotConfigApplyEventInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[549]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SnapshotConfigApplyEventInfo.ProtoReflect.Descriptor instead.
+func (*SnapshotConfigApplyEventInfo) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{549}
+}
+
+func (x *SnapshotConfigApplyEventInfo) GetEventId() string {
+ if x != nil {
+ return x.EventId
+ }
+ return ""
+}
+
+func (x *SnapshotConfigApplyEventInfo) GetConfigId() string {
+ if x != nil {
+ return x.ConfigId
+ }
+ return ""
+}
+
+func (x *SnapshotConfigApplyEventInfo) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *SnapshotConfigApplyEventInfo) GetError() string {
+ if x != nil {
+ return x.Error
+ }
+ return ""
+}
+
+func (x *SnapshotConfigApplyEventInfo) GetAppliedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.AppliedAt
+ }
+ return nil
+}
+
+func (x *SnapshotConfigApplyEventInfo) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+type GetSnapshotRecommendationStatusRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ EventLimit int32 `protobuf:"varint,3,opt,name=event_limit,json=eventLimit,proto3" json:"event_limit,omitempty"` // default 20
+}
+
+func (x *GetSnapshotRecommendationStatusRequest) Reset() {
+ *x = GetSnapshotRecommendationStatusRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[550]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetSnapshotRecommendationStatusRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSnapshotRecommendationStatusRequest) ProtoMessage() {}
+
+func (x *GetSnapshotRecommendationStatusRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[550]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSnapshotRecommendationStatusRequest.ProtoReflect.Descriptor instead.
+func (*GetSnapshotRecommendationStatusRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{550}
+}
+
+func (x *GetSnapshotRecommendationStatusRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetSnapshotRecommendationStatusRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetSnapshotRecommendationStatusRequest) GetEventLimit() int32 {
+ if x != nil {
+ return x.EventLimit
+ }
+ return 0
+}
+
+type GetSnapshotRecommendationStatusResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CurrentConfig *SnapshotConfigInfo `protobuf:"bytes,1,opt,name=current_config,json=currentConfig,proto3,oneof" json:"current_config,omitempty"`
+ Events []*SnapshotConfigApplyEventInfo `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"`
+ // Ingested runtime status of the cluster's resilience-family CRs.
+ Runtime []*SnapshotCRRuntimeStatus `protobuf:"bytes,3,rep,name=runtime,proto3" json:"runtime,omitempty"`
+ Prereqs *SnapshotPrereqs `protobuf:"bytes,4,opt,name=prereqs,proto3" json:"prereqs,omitempty"`
+}
+
+func (x *GetSnapshotRecommendationStatusResponse) Reset() {
+ *x = GetSnapshotRecommendationStatusResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[551]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetSnapshotRecommendationStatusResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSnapshotRecommendationStatusResponse) ProtoMessage() {}
+
+func (x *GetSnapshotRecommendationStatusResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[551]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSnapshotRecommendationStatusResponse.ProtoReflect.Descriptor instead.
+func (*GetSnapshotRecommendationStatusResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{551}
+}
+
+func (x *GetSnapshotRecommendationStatusResponse) GetCurrentConfig() *SnapshotConfigInfo {
+ if x != nil {
+ return x.CurrentConfig
+ }
+ return nil
+}
+
+func (x *GetSnapshotRecommendationStatusResponse) GetEvents() []*SnapshotConfigApplyEventInfo {
+ if x != nil {
+ return x.Events
+ }
+ return nil
+}
+
+func (x *GetSnapshotRecommendationStatusResponse) GetRuntime() []*SnapshotCRRuntimeStatus {
+ if x != nil {
+ return x.Runtime
+ }
+ return nil
+}
+
+func (x *GetSnapshotRecommendationStatusResponse) GetPrereqs() *SnapshotPrereqs {
+ if x != nil {
+ return x.Prereqs
+ }
+ return nil
+}
+
+type GetForensicSnapshotRecommendationStatusRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ EventLimit int32 `protobuf:"varint,3,opt,name=event_limit,json=eventLimit,proto3" json:"event_limit,omitempty"`
+}
+
+func (x *GetForensicSnapshotRecommendationStatusRequest) Reset() {
+ *x = GetForensicSnapshotRecommendationStatusRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[552]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetForensicSnapshotRecommendationStatusRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetForensicSnapshotRecommendationStatusRequest) ProtoMessage() {}
+
+func (x *GetForensicSnapshotRecommendationStatusRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[552]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetForensicSnapshotRecommendationStatusRequest.ProtoReflect.Descriptor instead.
+func (*GetForensicSnapshotRecommendationStatusRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{552}
+}
+
+func (x *GetForensicSnapshotRecommendationStatusRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *GetForensicSnapshotRecommendationStatusRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *GetForensicSnapshotRecommendationStatusRequest) GetEventLimit() int32 {
+ if x != nil {
+ return x.EventLimit
+ }
+ return 0
+}
+
+type GetForensicSnapshotRecommendationStatusResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CurrentConfig *SnapshotConfigInfo `protobuf:"bytes,1,opt,name=current_config,json=currentConfig,proto3,oneof" json:"current_config,omitempty"`
+ Events []*SnapshotConfigApplyEventInfo `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"`
+ // Ingested runtime status of the cluster's ForensicSnapshotChain CRs.
+ Runtime []*SnapshotCRRuntimeStatus `protobuf:"bytes,3,rep,name=runtime,proto3" json:"runtime,omitempty"`
+}
+
+func (x *GetForensicSnapshotRecommendationStatusResponse) Reset() {
+ *x = GetForensicSnapshotRecommendationStatusResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[553]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetForensicSnapshotRecommendationStatusResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetForensicSnapshotRecommendationStatusResponse) ProtoMessage() {}
+
+func (x *GetForensicSnapshotRecommendationStatusResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[553]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetForensicSnapshotRecommendationStatusResponse.ProtoReflect.Descriptor instead.
+func (*GetForensicSnapshotRecommendationStatusResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{553}
+}
+
+func (x *GetForensicSnapshotRecommendationStatusResponse) GetCurrentConfig() *SnapshotConfigInfo {
+ if x != nil {
+ return x.CurrentConfig
+ }
+ return nil
+}
+
+func (x *GetForensicSnapshotRecommendationStatusResponse) GetEvents() []*SnapshotConfigApplyEventInfo {
+ if x != nil {
+ return x.Events
+ }
+ return nil
+}
+
+func (x *GetForensicSnapshotRecommendationStatusResponse) GetRuntime() []*SnapshotCRRuntimeStatus {
+ if x != nil {
+ return x.Runtime
+ }
+ return nil
+}
+
+// ---- Compiled-config preview (implemented in phase 3; Unimplemented now) ----
+type PreviewSnapshotRecommendationConfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *PreviewSnapshotRecommendationConfigRequest) Reset() {
+ *x = PreviewSnapshotRecommendationConfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[554]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewSnapshotRecommendationConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewSnapshotRecommendationConfigRequest) ProtoMessage() {}
+
+func (x *PreviewSnapshotRecommendationConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[554]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewSnapshotRecommendationConfigRequest.ProtoReflect.Descriptor instead.
+func (*PreviewSnapshotRecommendationConfigRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{554}
+}
+
+func (x *PreviewSnapshotRecommendationConfigRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewSnapshotRecommendationConfigRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type PreviewSnapshotRecommendationConfigResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"`
+}
+
+func (x *PreviewSnapshotRecommendationConfigResponse) Reset() {
+ *x = PreviewSnapshotRecommendationConfigResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[555]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewSnapshotRecommendationConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewSnapshotRecommendationConfigResponse) ProtoMessage() {}
+
+func (x *PreviewSnapshotRecommendationConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[555]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewSnapshotRecommendationConfigResponse.ProtoReflect.Descriptor instead.
+func (*PreviewSnapshotRecommendationConfigResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{555}
+}
+
+func (x *PreviewSnapshotRecommendationConfigResponse) GetYaml() string {
+ if x != nil {
+ return x.Yaml
+ }
+ return ""
+}
+
+type PreviewForensicSnapshotRecommendationConfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigRequest) Reset() {
+ *x = PreviewForensicSnapshotRecommendationConfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[556]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewForensicSnapshotRecommendationConfigRequest) ProtoMessage() {}
+
+func (x *PreviewForensicSnapshotRecommendationConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[556]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewForensicSnapshotRecommendationConfigRequest.ProtoReflect.Descriptor instead.
+func (*PreviewForensicSnapshotRecommendationConfigRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{556}
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+type PreviewForensicSnapshotRecommendationConfigResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"`
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigResponse) Reset() {
+ *x = PreviewForensicSnapshotRecommendationConfigResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[557]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewForensicSnapshotRecommendationConfigResponse) ProtoMessage() {}
+
+func (x *PreviewForensicSnapshotRecommendationConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[557]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewForensicSnapshotRecommendationConfigResponse.ProtoReflect.Descriptor instead.
+func (*PreviewForensicSnapshotRecommendationConfigResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{557}
+}
+
+func (x *PreviewForensicSnapshotRecommendationConfigResponse) GetYaml() string {
+ if x != nil {
+ return x.Yaml
+ }
+ return ""
+}
+
+// ---- KEDA shared authentication ----
+type ListReferencedAuthenticationsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *ListReferencedAuthenticationsRequest) Reset() {
+ *x = ListReferencedAuthenticationsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[558]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListReferencedAuthenticationsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListReferencedAuthenticationsRequest) ProtoMessage() {}
+
+func (x *ListReferencedAuthenticationsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[558]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListReferencedAuthenticationsRequest.ProtoReflect.Descriptor instead.
+func (*ListReferencedAuthenticationsRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{558}
+}
+
+func (x *ListReferencedAuthenticationsRequest) GetTeamId() string {
+ if x != nil {
+ return x.TeamId
+ }
+ return ""
+}
+
+func (x *ListReferencedAuthenticationsRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+// ReferencedAuthentication is a distinct KEDA authenticationRef observed
+// across a cluster's active WorkloadRules.
+// It carries no credential or secret data.
+type ReferencedAuthentication struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // kind is either TriggerAuthentication or ClusterTriggerAuthentication.
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ // used_by_count is the number of active WorkloadRules that reference this auth object.
+ UsedByCount int64 `protobuf:"varint,3,opt,name=used_by_count,json=usedByCount,proto3" json:"used_by_count,omitempty"`
+ // namespaces lists the namespaces of the referencing WorkloadRules.
+ Namespaces []string `protobuf:"bytes,4,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
+}
+
+func (x *ReferencedAuthentication) Reset() {
+ *x = ReferencedAuthentication{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[559]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ReferencedAuthentication) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReferencedAuthentication) ProtoMessage() {}
+
+func (x *ReferencedAuthentication) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[559]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReferencedAuthentication.ProtoReflect.Descriptor instead.
+func (*ReferencedAuthentication) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{559}
+}
+
+func (x *ReferencedAuthentication) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ReferencedAuthentication) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *ReferencedAuthentication) GetUsedByCount() int64 {
+ if x != nil {
+ return x.UsedByCount
+ }
+ return 0
+}
+
+func (x *ReferencedAuthentication) GetNamespaces() []string {
+ if x != nil {
+ return x.Namespaces
+ }
+ return nil
+}
+
+type ListReferencedAuthenticationsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Authentications []*ReferencedAuthentication `protobuf:"bytes,1,rep,name=authentications,proto3" json:"authentications,omitempty"`
+}
+
+func (x *ListReferencedAuthenticationsResponse) Reset() {
+ *x = ListReferencedAuthenticationsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[560]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListReferencedAuthenticationsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListReferencedAuthenticationsResponse) ProtoMessage() {}
+
+func (x *ListReferencedAuthenticationsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[560]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListReferencedAuthenticationsResponse.ProtoReflect.Descriptor instead.
+func (*ListReferencedAuthenticationsResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{560}
+}
+
+func (x *ListReferencedAuthenticationsResponse) GetAuthentications() []*ReferencedAuthentication {
+ if x != nil {
+ return x.Authentications
+ }
+ return nil
+}
+
+type SchedulerEnrollmentReport_Observation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,3,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // pre-mutation scheduler observed at first application; "" = field
+ // was unset in the workload spec
+ OriginalSchedulerName string `protobuf:"bytes,5,opt,name=original_scheduler_name,json=originalSchedulerName,proto3" json:"original_scheduler_name,omitempty"`
+}
+
+func (x *SchedulerEnrollmentReport_Observation) Reset() {
+ *x = SchedulerEnrollmentReport_Observation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[597]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerEnrollmentReport_Observation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerEnrollmentReport_Observation) ProtoMessage() {}
+
+func (x *SchedulerEnrollmentReport_Observation) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[597]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerEnrollmentReport_Observation.ProtoReflect.Descriptor instead.
+func (*SchedulerEnrollmentReport_Observation) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{428, 0}
+}
+
+func (x *SchedulerEnrollmentReport_Observation) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SchedulerEnrollmentReport_Observation) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *SchedulerEnrollmentReport_Observation) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *SchedulerEnrollmentReport_Observation) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SchedulerEnrollmentReport_Observation) GetOriginalSchedulerName() string {
+ if x != nil {
+ return x.OriginalSchedulerName
+ }
+ return ""
+}
+
+type SchedulerRevertEventReport_Event struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ PodName string `protobuf:"bytes,2,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"`
+ // Owning controller identity when resolvable from ownerRefs at
+ // admission time; empty for bare pods.
+ WorkloadKind string `protobuf:"bytes,3,opt,name=workload_kind,json=workloadKind,proto3" json:"workload_kind,omitempty"`
+ WorkloadName string `protobuf:"bytes,4,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"`
+ // scheduler-policy id annotation value if the pod carried one.
+ PolicyId string `protobuf:"bytes,5,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ FromScheduler string `protobuf:"bytes,6,opt,name=from_scheduler,json=fromScheduler,proto3" json:"from_scheduler,omitempty"`
+ ToScheduler string `protobuf:"bytes,7,opt,name=to_scheduler,json=toScheduler,proto3" json:"to_scheduler,omitempty"`
+ // Why the scheduler was considered unhealthy at revert time.
+ Reason SchedulerUnhealthyReason `protobuf:"varint,8,opt,name=reason,proto3,enum=api.v1.SchedulerUnhealthyReason" json:"reason,omitempty"`
+ OccurredAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=occurred_at,json=occurredAt,proto3" json:"occurred_at,omitempty"`
+}
+
+func (x *SchedulerRevertEventReport_Event) Reset() {
+ *x = SchedulerRevertEventReport_Event{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_recommendation_proto_msgTypes[598]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SchedulerRevertEventReport_Event) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerRevertEventReport_Event) ProtoMessage() {}
+
+func (x *SchedulerRevertEventReport_Event) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_recommendation_proto_msgTypes[598]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerRevertEventReport_Event.ProtoReflect.Descriptor instead.
+func (*SchedulerRevertEventReport_Event) Descriptor() ([]byte, []int) {
+ return file_api_v1_recommendation_proto_rawDescGZIP(), []int{429, 0}
+}
+
+func (x *SchedulerRevertEventReport_Event) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetPodName() string {
+ if x != nil {
+ return x.PodName
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetWorkloadKind() string {
+ if x != nil {
+ return x.WorkloadKind
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetWorkloadName() string {
+ if x != nil {
+ return x.WorkloadName
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetFromScheduler() string {
+ if x != nil {
+ return x.FromScheduler
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetToScheduler() string {
+ if x != nil {
+ return x.ToScheduler
+ }
+ return ""
+}
+
+func (x *SchedulerRevertEventReport_Event) GetReason() SchedulerUnhealthyReason {
+ if x != nil {
+ return x.Reason
+ }
+ return SchedulerUnhealthyReason_SCHEDULER_UNHEALTHY_REASON_UNSPECIFIED
+}
+
+func (x *SchedulerRevertEventReport_Event) GetOccurredAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.OccurredAt
+ }
+ return nil
+}
+
+var File_api_v1_recommendation_proto protoreflect.FileDescriptor
+
+var file_api_v1_recommendation_proto_rawDesc = []byte{
+ 0x0a, 0x1b, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74,
+ 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x13, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x61, 0x70, 0x69,
+ 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x61,
+ 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x70, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x70, 0x69, 0x2f, 0x76,
+ 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x22, 0xfc, 0x03, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73,
+ 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08,
+ 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e,
+ 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x73, 0x48, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0xae, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x61, 0x67,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88,
+ 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0x99, 0x02, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
+ 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
- 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x6f, 0x64,
- 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
- 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
+ 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
+ 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x71, 0x0a,
+ 0x25, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x22, 0x92, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a,
+ 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52,
+ 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a,
+ 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x65,
+ 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74,
0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
- 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x97, 0x03, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
+ 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x89, 0x03, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74,
0x69, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x39, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
- 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x35, 0x12, 0x2f, 0x0a,
- 0x14, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x5f, 0x70, 0x39, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x66, 0x74,
- 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x39, 0x35, 0x12, 0x41,
- 0x0a, 0x1f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x72, 0x5f, 0x6f, 0x66,
- 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x39,
- 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x18, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72,
- 0x48, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39,
- 0x35, 0x12, 0x27, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f,
- 0x6e, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x39, 0x12, 0x2f, 0x0a, 0x14, 0x61, 0x66,
- 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70,
- 0x39, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4e,
- 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x39, 0x39, 0x12, 0x41, 0x0a, 0x1f, 0x63,
- 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x69, 0x6e,
- 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0d,
- 0x20, 0x01, 0x28, 0x02, 0x52, 0x18, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x72, 0x4f,
- 0x66, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x39, 0x12, 0x21,
- 0x0a, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01,
- 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x22,
- 0x89, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x28,
+ 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
+ 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69,
+ 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52,
+ 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
+ 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a,
+ 0x65, 0x22, 0x97, 0x03, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6f, 0x72, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x27, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e,
+ 0x5f, 0x70, 0x39, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74,
+ 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x35, 0x12, 0x2f, 0x0a, 0x14, 0x61, 0x66, 0x74,
+ 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x39,
+ 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4e, 0x6f,
+ 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x39, 0x35, 0x12, 0x41, 0x0a, 0x1f, 0x63, 0x6f,
+ 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x73,
+ 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x39, 0x35, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x02, 0x52, 0x18, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x72, 0x4f, 0x66,
+ 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x35, 0x12, 0x27, 0x0a,
+ 0x10, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x39,
+ 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70,
+ 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x39, 0x12, 0x2f, 0x0a, 0x14, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x39, 0x39, 0x12, 0x41, 0x0a, 0x1f, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+ 0x70, 0x65, 0x72, 0x5f, 0x68, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x74,
+ 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02,
+ 0x52, 0x18, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x73,
+ 0x74, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x6e, 0x50, 0x39, 0x39, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a,
+ 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x89, 0x01, 0x0a, 0x27,
0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
- 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x65, 0x66,
- 0x6f, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10,
- 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64,
- 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe0, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4c, 0x61,
- 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x89, 0x04, 0x0a, 0x27, 0x47, 0x65,
- 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x4c,
+ 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x74, 0x6f,
+ 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6e,
+ 0x6f, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x2a, 0x0a, 0x11,
+ 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x4e,
+ 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x66, 0x74, 0x65,
+ 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x22, 0xe0, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38,
0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f,
- 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74,
- 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6c,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x17, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xdd, 0x03, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65,
- 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x3c, 0x0a, 0x0c, 0x76, 0x70, 0x61, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b,
- 0x18, 0x09, 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, 0x52, 0x0b, 0x76, 0x70, 0x61, 0x4c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x3c,
- 0x0a, 0x0c, 0x68, 0x70, 0x61, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0a,
- 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, 0x52,
- 0x0b, 0x68, 0x70, 0x61, 0x4c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18,
- 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x5c, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x89, 0x04, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74,
+ 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x30, 0x0a, 0x03, 0x72, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03,
- 0x72, 0x65, 0x63, 0x22, 0x98, 0x03, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69,
- 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12,
- 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
- 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3c, 0x0a, 0x0c, 0x76, 0x70, 0x61,
- 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x06, 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, 0x52, 0x0b, 0x76, 0x70, 0x61, 0x4c,
- 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x0c, 0x68, 0x70, 0x61, 0x5f, 0x6c,
- 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x07, 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, 0x52, 0x0b, 0x68, 0x70, 0x61, 0x4c, 0x6f, 0x6f,
- 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x94,
- 0x01, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72,
+ 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x5c, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x43, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x17, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54,
+ 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x22, 0x89, 0x03, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38,
0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65,
- 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x0f,
+ 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18,
+ 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10,
+ 0x0b, 0x52, 0x0c, 0x76, 0x70, 0x61, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x52,
+ 0x0c, 0x68, 0x70, 0x61, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x5c, 0x0a,
+ 0x28, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x03, 0x72, 0x65, 0x63,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0f,
- 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
- 0xca, 0x03, 0x0a, 0x28, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x72, 0x65, 0x63, 0x22, 0xc4, 0x02, 0x0a, 0x28,
+ 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x38, 0x0a,
+ 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07,
+ 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x0c, 0x76, 0x70, 0x61, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b,
+ 0x62, 0x61, 0x63, 0x6b, 0x52, 0x0c, 0x68, 0x70, 0x61, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61,
+ 0x63, 0x6b, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x29, 0x47, 0x65,
+ 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65,
+ 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x22, 0xca, 0x03, 0x0a, 0x28, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
+ 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
+ 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63,
+ 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61,
+ 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
+ 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63,
+ 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x22, 0x68, 0x0a, 0x29, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a,
+ 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5d, 0x0a, 0x25, 0x47, 0x65,
+ 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x26, 0x47, 0x65, 0x74,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x22, 0x43, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63,
- 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x6c, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x22, 0xe7, 0x03, 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d,
+ 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f,
+ 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
+ 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42,
+ 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x68, 0x0a,
+ 0x29, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x60, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x29, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x22, 0x97, 0x01, 0x0a, 0x28, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x22, 0x45, 0x0a, 0x29, 0x41, 0x74,
+ 0x74, 0x61, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x22, 0x81, 0x02, 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f,
+ 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18,
+ 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xc3, 0x02, 0x0a, 0x2d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
+ 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x1a,
+ 0x5a, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2d, 0x0a, 0x0c, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0xea, 0x05, 0x0a, 0x2a, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x50, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d,
@@ -29178,58 +45351,77 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65,
0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01,
0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e,
- 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e,
- 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42, 0x10,
- 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x68, 0x0a, 0x29,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5d, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e,
+ 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
+ 0x48, 0x02, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e,
+ 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
+ 0x48, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36,
+ 0x0a, 0x17, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
+ 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e,
+ 0x6f, 0x64, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
+ 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42,
+ 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0b, 0x0a,
+ 0x09, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d,
+ 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x22, 0x6c, 0x0a, 0x2b, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5f, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x69, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x22, 0x45, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x43, 0x0a, 0x28,
- 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x22, 0x6c, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f,
- 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22,
- 0xe7, 0x03, 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e,
- 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88,
- 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x2b, 0x4c, 0x69, 0x73, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x87, 0x06, 0x0a, 0x2a, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c,
+ 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x50, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65,
+ 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11,
0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
0x73, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a,
@@ -29239,685 +45431,534 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48,
0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x33,
- 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
- 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a,
- 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x68, 0x0a, 0x29, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x22, 0x60, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x97, 0x01, 0x0a,
- 0x28, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
- 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x22, 0x45, 0x0a, 0x29, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52,
+ 0x07, 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d,
+ 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52,
+ 0x07, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x61,
+ 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76,
+ 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79,
+ 0x70, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18,
+ 0x01, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65,
+ 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03,
+ 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x65, 0x64, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0f,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
+ 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e,
+ 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a,
+ 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x63, 0x70, 0x75, 0x73, 0x22, 0x6c, 0x0a, 0x2b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x81, 0x02,
- 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69,
- 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a,
- 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x22, 0xc3, 0x02, 0x0a, 0x2d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
- 0x65, 0x72, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x7c, 0x0a,
- 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x16, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x70,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2d, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0xea, 0x05, 0x0a, 0x2a, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63,
- 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50,
- 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64,
- 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
- 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a,
- 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
- 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
- 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
- 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x69,
- 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x07,
- 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61,
- 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x07,
- 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x76,
- 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
- 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76, 0x61,
- 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01,
- 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73,
- 0x12, 0x39, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28,
- 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
- 0x65, 0x64, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0f, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x33,
- 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
- 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a,
- 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x69,
- 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63,
- 0x70, 0x75, 0x73, 0x22, 0x6c, 0x0a, 0x2b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
+ 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x22, 0x62, 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x22, 0x5f, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x49, 0x64, 0x22, 0x69, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d,
- 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x45, 0x0a,
- 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
- 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
- 0x61, 0x6d, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x2b, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x87, 0x06, 0x0a, 0x2a, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b,
- 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e,
- 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x12, 0x64,
- 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a,
- 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f,
- 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c,
- 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x63,
- 0x70, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x69, 0x6e,
- 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x63,
- 0x70, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78,
- 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x76, 0x61, 0x69, 0x6c,
- 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
- 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12,
- 0x2c, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x6e, 0x6f,
- 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x63,
- 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x39, 0x0a,
- 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52,
- 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28,
- 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f,
- 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c,
- 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73,
- 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63,
- 0x70, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73,
- 0x22, 0x6c, 0x0a, 0x2b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x3d, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x62,
- 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x2b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22,
+ 0xb3, 0x02, 0x0a, 0x2a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x65, 0x74, 0x61, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x65, 0x74,
+ 0x61, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x75,
+ 0x73, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75,
+ 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72,
+ 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x47, 0x0a, 0x2b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x82,
+ 0x01, 0x0a, 0x29, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x49, 0x64, 0x22, 0x47, 0x0a, 0x2b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x22, 0x6a, 0x0a, 0x2a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xb3, 0x02, 0x0a, 0x2a,
- 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
- 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x63,
- 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x12,
- 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72,
- 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73,
- 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f,
- 0x73, 0x75, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x53,
- 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
- 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x22, 0x47, 0x0a, 0x2b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x29, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
- 0x6a, 0x0a, 0x2a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a,
- 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5e, 0x0a, 0x26, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b,
- 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x67, 0x0a, 0x27, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x22, 0x44, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x2a, 0x4c, 0x69,
- 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69,
+ 0x5e, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22,
+ 0x67, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x29, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x44, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x6e,
+ 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x08,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x82,
+ 0x01, 0x0a, 0x29, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x22, 0x6a, 0x0a, 0x2a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
- 0x6a, 0x0a, 0x2a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x61, 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a,
- 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x61, 0x0a, 0x29, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x22, 0x46, 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x8a, 0x03, 0x0a, 0x29, 0x41,
+ 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x46,
- 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
- 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x8a, 0x03, 0x0a, 0x29, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64,
+ 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b,
+ 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64,
+ 0x65, 0x74, 0x61, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a,
+ 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x75, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72,
+ 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73,
+ 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x46, 0x0a, 0x2a, 0x41, 0x74, 0x74, 0x61, 0x63,
0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74,
- 0x61, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x63,
- 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73,
- 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65,
- 0x72, 0x5f, 0x73, 0x75, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65,
- 0x72, 0x53, 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b,
- 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x54, 0x6f,
- 0x6b, 0x65, 0x6e, 0x22, 0x46, 0x0a, 0x2a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x2b,
- 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
- 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52,
- 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x72, 0x0a, 0x2c, 0x41, 0x74,
- 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x61, 0x74,
- 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e,
- 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xe5,
- 0x02, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
- 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xff, 0x07, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x11, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01,
- 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69,
- 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22,
+ 0xbc, 0x01, 0x0a, 0x2b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
+ 0x69, 0x65, 0x72, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x72,
+ 0x0a, 0x2c, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42,
+ 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x22, 0xe5, 0x02, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73,
+ 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+ 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
+ 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xfa, 0x08, 0x0a, 0x14, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64,
+ 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
+ 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52,
+ 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36,
+ 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20,
+ 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73,
+ 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70,
+ 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01,
+ 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x11, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
+ 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01,
+ 0x12, 0x31, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x4e, 0x6f,
+ 0x74, 0x49, 0x6e, 0x12, 0x42, 0x0a, 0x12, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32,
0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65,
- 0x72, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x03,
- 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01,
- 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+ 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0f, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x2c, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28,
+ 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
+ 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0d, 0x0a, 0x0b,
+ 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e,
+ 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0xf4, 0x07, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a,
+ 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62,
+ 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x11, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88,
+ 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a,
- 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
- 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
- 0x61, 0x6d, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x10,
- 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
- 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0d, 0x0a,
- 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0xf9, 0x06, 0x0a, 0x21, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18,
- 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x11, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+ 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b,
+ 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48,
+ 0x03, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01,
+ 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b,
- 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28,
- 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
- 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88,
- 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12,
- 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
- 0x6e, 0x48, 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42,
- 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14,
- 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x22, 0x5a, 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x25,
+ 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x42,
+ 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61,
+ 0x6d, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x48, 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x15, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x6e, 0x6f,
+ 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x42,
+ 0x0a, 0x12, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f,
+ 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e,
+ 0x64, 0x52, 0x0f, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74,
+ 0x49, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42,
+ 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
+ 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x5a,
+ 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x22, 0x56, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57,
+ 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x56, 0x0a, 0x1e, 0x47, 0x65,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x49, 0x64, 0x22, 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70,
+ 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x20,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a,
+ 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+ 0x26, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x5b, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
- 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0b, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a,
- 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a,
- 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x5b, 0x0a, 0x21, 0x4c,
- 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0xa9, 0x07, 0x0a, 0x21, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18,
- 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x11, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x22, 0xa4, 0x08, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x26,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
+ 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b,
- 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28,
- 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
- 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88,
- 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12,
- 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
- 0x6e, 0x48, 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x08, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5f, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x22, 0x5b, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x76, 0x0a,
- 0x22, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
- 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3f, 0x0a, 0x23, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a,
+ 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48,
+ 0x02, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69,
+ 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c,
+ 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0e,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x61,
+ 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x48, 0x04, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x12, 0x2c, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x46,
+ 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48,
+ 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18,
+ 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x42, 0x0a, 0x12, 0x6b, 0x69, 0x6e,
+ 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18,
+ 0x14, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+ 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0f, 0x6b, 0x69,
+ 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x20, 0x0a,
+ 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x06, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73,
+ 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42,
+ 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a,
+ 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x22, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x34, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x5b, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57,
0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
- 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x3e, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
- 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x5b, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
- 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
- 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75,
- 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63,
- 0x63, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
- 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f,
- 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12,
- 0x46, 0x0a, 0x1f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbf, 0x05, 0x0a, 0x29, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a,
- 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49,
+ 0x64, 0x73, 0x22, 0x76, 0x0a, 0x22, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73,
+ 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3f, 0x0a, 0x23, 0x54, 0x6f,
+ 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x3e, 0x0a, 0x22, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x5b, 0x0a, 0x21, 0x52,
+ 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69,
+ 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x1f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f,
+ 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xba, 0x06, 0x0a,
+ 0x29, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a,
+ 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48,
+ 0x01, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69,
+ 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c,
+ 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x61,
+ 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62,
- 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01,
- 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x6b,
- 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d,
- 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x12, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
- 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x04, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a,
+ 0x48, 0x03, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x12, 0x2c, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x46,
+ 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48,
+ 0x04, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18,
+ 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x42, 0x0a, 0x12, 0x6b, 0x69, 0x6e,
+ 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18,
+ 0x0c, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+ 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0f, 0x6b, 0x69,
+ 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x42, 0x15, 0x0a,
0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65,
0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e,
@@ -29931,7 +45972,7 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
- 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x92, 0x06, 0x0a, 0x34, 0x47,
+ 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0xb7, 0x07, 0x0a, 0x34, 0x47,
0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
@@ -29969,471 +46010,707 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65,
0x72, 0x6e, 0x48, 0x04, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
- 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22,
- 0xb5, 0x03, 0x0a, 0x35, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f,
+ 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x15, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f,
+ 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x42, 0x0a, 0x12,
+ 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f,
+ 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
+ 0x0f, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x49, 0x6e,
+ 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72,
+ 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x08,
+ 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e,
+ 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f,
+ 0x72, 0x69, 0x74, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b,
+ 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf7, 0x05, 0x0a, 0x35, 0x47,
+ 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b,
+ 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x14,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f,
0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65,
- 0x6d, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73,
- 0x12, 0x89, 0x01, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x56, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x69, 0x0a, 0x18,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
- 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc7, 0x02, 0x0a, 0x19, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75,
- 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
- 0x6c, 0x65, 0x73, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a,
- 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67,
- 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73,
- 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
- 0x6c, 0x65, 0x73, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x40, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x22, 0xa9, 0x03, 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88,
- 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28,
- 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
- 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0d,
- 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xa3, 0x02,
- 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e,
- 0x61, 0x6d, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x22, 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x20, 0x47, 0x65,
- 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35,
- 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
- 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
- 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x6e,
- 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
- 0x48, 0x02, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x88,
- 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42,
- 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
- 0x22, 0x5d, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22,
- 0xa3, 0x02, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6c, 0x6c,
+ 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6c,
+ 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x55, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69,
+ 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+ 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x75, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x73, 0x1a, 0x69,
+ 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x69, 0x0a, 0x1c, 0x43, 0x6f, 0x6c,
+ 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x55, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6c, 0x6c,
+ 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc7, 0x02, 0x0a, 0x19, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61,
+ 0x72, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f,
+ 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x0a, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0e,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52,
+ 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa9,
+ 0x03, 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
+ 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74,
+ 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x34,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xa3, 0x02, 0x0a, 0x22, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a,
+ 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x22, 0x5c, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10,
- 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x22, 0x5c, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64,
- 0x73, 0x22, 0x77, 0x0a, 0x23, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x57,
+ 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47,
0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73,
- 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x40, 0x0a, 0x24, 0x54, 0x6f,
- 0x67, 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x25, 0x0a, 0x23,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x2a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e,
- 0x61, 0x6d, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x2b, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x35, 0x47, 0x65, 0x74, 0x50, 0x72,
- 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22,
- 0x83, 0x01, 0x0a, 0x36, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f,
+ 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52,
+ 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42,
+ 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0c,
+ 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d,
+ 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x5d, 0x0a,
+ 0x22, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xeb, 0x03, 0x0a, 0x20, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c,
- 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, 0x0d,
- 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
- 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00,
- 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5c,
- 0x0a, 0x19, 0x69, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28,
+ 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0xa3, 0x02, 0x0a,
+ 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
+ 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61,
+ 0x6d, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x22, 0x5c, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x77,
+ 0x0a, 0x23, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a,
+ 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x40, 0x0a, 0x24, 0x54, 0x6f, 0x67, 0x67, 0x6c,
+ 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x25, 0x0a, 0x23, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x8e, 0x01, 0x0a, 0x2a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x22, 0x70, 0x0a, 0x2b, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x41, 0x0a, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x52, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x35, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x83, 0x01, 0x0a,
+ 0x36, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x22, 0x96, 0x06, 0x0a, 0x20, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65,
+ 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61,
+ 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63,
+ 0x69, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x19, 0x69,
+ 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
+ 0x52, 0x17, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x19, 0x73, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x63, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f,
+ 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x16,
+ 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x63, 0x0a, 0x1b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x45, 0x6e,
+ 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00,
+ 0x52, 0x19, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x45, 0x6e, 0x72, 0x6f, 0x6c,
+ 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x67, 0x0a, 0x1d, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x5f,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x21, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48,
+ 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
+ 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74,
+ 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c,
+ 0x74, 0x68, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x63, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64,
+ 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa3, 0x0e, 0x0a, 0x21,
+ 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x5d, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x59, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x48, 0x00, 0x52, 0x17, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f,
- 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18,
- 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x00, 0x52,
- 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12,
- 0x38, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18,
- 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x67,
- 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x22, 0xb1, 0x0b, 0x0a, 0x21, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47,
- 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x19, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
- 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12,
- 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x70, 0x0a, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
- 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x1d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6c, 0x0a, 0x1e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x12, 0x6f, 0x0a, 0x1e, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x69, 0x74, 0x68,
- 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6b, 0x69, 0x6e, 0x64, 0x54, 0x6f, 0x4e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x73, 0x12, 0x5b, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x5d, 0x0a, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f,
- 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x33, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12,
- 0x57, 0x0a, 0x17, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x48,
- 0x00, 0x52, 0x15, 0x62, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x17, 0x68, 0x65, 0x61, 0x6c,
- 0x74, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x65, 0x64, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48,
- 0x00, 0x52, 0x15, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x82, 0x01, 0x0a, 0x26, 0x62, 0x61, 0x74,
- 0x63, 0x68, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x23, 0x62, 0x61, 0x74, 0x63, 0x68, 0x47,
- 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x73, 0x0a,
- 0x21, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x76, 0x63, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x48, 0x00, 0x52, 0x1e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72,
- 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x12,
- 0x62, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
- 0x65, 0x73, 0x12, 0x58, 0x0a, 0x12, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f,
- 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
- 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x6b, 0x61, 0x72, 0x70, 0x65,
- 0x6e, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x72,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68,
- 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x22, 0x68, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x6e, 0x48, 0x00, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x13, 0x6e,
+ 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x70, 0x0a, 0x20, 0x62, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61,
+ 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x1d, 0x62,
+ 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6c, 0x0a, 0x1e,
+ 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61,
+ 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x62, 0x61,
+ 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6f, 0x0a, 0x1e, 0x6b, 0x69,
+ 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x69, 0x74, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52,
+ 0x1a, 0x6b, 0x69, 0x6e, 0x64, 0x54, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x5b, 0x0a, 0x1b, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c,
+ 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63,
+ 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x19, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x19, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f,
+ 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4d,
+ 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x62, 0x61, 0x74, 0x63, 0x68,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x15, 0x62, 0x61, 0x74, 0x63, 0x68,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73,
+ 0x12, 0x4e, 0x0a, 0x17, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x47, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x15, 0x68, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x12, 0x82, 0x01, 0x0a, 0x26, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72,
+ 0x69, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68,
+ 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00,
+ 0x52, 0x23, 0x62, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x73, 0x0a, 0x21, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70,
+ 0x76, 0x63, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50,
+ 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x1e, 0x62, 0x61, 0x74, 0x63,
+ 0x68, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x62, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x75, 0x6c,
+ 0x65, 0x73, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x12, 0x62, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x12, 0x6b, 0x61,
+ 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+ 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+ 0x73, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48,
+ 0x00, 0x52, 0x11, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74,
+ 0x69, 0x6e, 0x67, 0x73, 0x12, 0x59, 0x0a, 0x17, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x72, 0x0a, 0x20, 0x66, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x48, 0x00, 0x52, 0x1e, 0x66, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x14, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x70, 0x61,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x41, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68,
+ 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52,
+ 0x12, 0x62, 0x61, 0x74, 0x63, 0x68, 0x48, 0x70, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x15, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x42, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x48,
+ 0x00, 0x52, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x49, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x6a, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65,
0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x96, 0x0d,
- 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x17,
- 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08,
- 0x63, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52,
- 0x75, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75,
- 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x68, 0x0a,
+ 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a,
+ 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x98, 0x11, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x75,
+ 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65,
- 0x12, 0x35, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3b, 0x0a,
+ 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07,
- 0x67, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x68, 0x70, 0x61, 0x5f, 0x72,
- 0x75, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x52, 0x07, 0x68, 0x70, 0x61, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67,
- 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63,
- 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3a,
- 0x0a, 0x19, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x17, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20,
- 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x14, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x75, 0x70, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e,
- 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c,
- 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12,
- 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75,
- 0x74, 0x65, 0x73, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6f,
- 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12,
- 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64,
- 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
- 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c,
- 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a,
- 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x03, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a,
- 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c,
- 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e,
- 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67,
- 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x69, 0x6c, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1d,
- 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72,
- 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x46, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56,
- 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x16,
- 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x50, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39,
- 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x53, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64,
- 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f,
- 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x22, 0xfe, 0x05, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a,
+ 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x67, 0x70,
+ 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75,
+ 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x70, 0x75, 0x52, 0x75, 0x6c,
+ 0x65, 0x12, 0x30, 0x0a, 0x08, 0x68, 0x70, 0x61, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41,
+ 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x68, 0x70, 0x61, 0x52,
+ 0x75, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
+ 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72,
+ 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65,
+ 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x6f, 0x75, 0x74, 0x6c,
+ 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x6f, 0x75, 0x74,
+ 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
+ 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f,
+ 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x1f,
+ 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x14, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x50,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f,
+ 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x21, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d,
+ 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
+ 0x22, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18,
+ 0x23, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61,
+ 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66,
+ 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f,
+ 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a,
+ 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+ 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x65, 0x6d,
+ 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3d, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x3c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x46,
+ 0x0a, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e,
+ 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f,
+ 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x75,
+ 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61,
+ 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x24, 0x61, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65,
+ 0x18, 0x47, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x50,
+ 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44,
+ 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x18, 0x50, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x51,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x18, 0x55, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x12, 0x43,
+ 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x5a, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f,
+ 0x72, 0x75, 0x6c, 0x65, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x56, 0x4d, 0x48, 0x65, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x6a, 0x76, 0x6d, 0x48, 0x65, 0x61, 0x70, 0x52, 0x75,
+ 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x20, 0x6a, 0x76, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x6c, 0x6c,
+ 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x1c,
+ 0x6a, 0x76, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x6c, 0x6f,
+ 0x6f, 0x72, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x5d, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x17, 0x6c,
+ 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x15,
+ 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x12, 0x6b, 0x65, 0x64, 0x61,
+ 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x5f,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x45,
+ 0x44, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x65,
+ 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x07, 0x52, 0x10, 0x6b, 0x65, 0x64, 0x61, 0x53, 0x63,
+ 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a,
+ 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f,
+ 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63,
+ 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42,
+ 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a,
+ 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6a,
+ 0x76, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66,
+ 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42,
+ 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72,
+ 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f,
+ 0x6b, 0x65, 0x64, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x22, 0xb5, 0x0a, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x6d,
+ 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b,
+ 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x03, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88,
+ 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74,
+ 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x0f,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88,
+ 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x6a,
+ 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x41, 0x64, 0x6a,
+ 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30,
+ 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x10, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01,
+ 0x12, 0x34, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x70,
+ 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04,
+ 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63,
+ 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x53, 0x63, 0x61,
+ 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01,
+ 0x12, 0x34, 0x0a, 0x16, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x14, 0x70, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x6d, 0x61, 0x78,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x09, 0x70, 0x6d, 0x61,
+ 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
+ 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
+ 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
+ 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x48, 0x07,
+ 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x48, 0x08, 0x52, 0x0c, 0x66, 0x6c,
+ 0x6f, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
+ 0x0f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x48, 0x09, 0x52, 0x0e, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e,
+ 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01,
+ 0x28, 0x03, 0x48, 0x0a, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66,
+ 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01,
+ 0x28, 0x03, 0x48, 0x0b, 0x52, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x72,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x48, 0x0c, 0x52, 0x13, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x43, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x75,
+ 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x0d,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, 0x52, 0x73, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x27, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73,
+ 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0e, 0x52, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x55, 0x73, 0x65, 0x52, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x73,
+ 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62,
+ 0x61, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x69, 0x6e,
+ 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78,
+ 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x14, 0x0a,
+ 0x12, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c,
+ 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17,
+ 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
+ 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6d, 0x61, 0x78,
+ 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66,
+ 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x12, 0x0a, 0x10,
+ 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
+ 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x22, 0xf0, 0x03, 0x0a, 0x10, 0x48,
+ 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12,
+ 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74,
+ 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52,
+ 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x1b, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x08,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
+ 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05,
+ 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x05, 0x71,
+ 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52,
+ 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x1a,
+ 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x15, 0x0a, 0x13,
+ 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42,
+ 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
+ 0x73, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x0f, 0x0a, 0x0d,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x72, 0x0a,
+ 0x0b, 0x48, 0x50, 0x41, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08,
+ 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
+ 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61,
+ 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61,
+ 0x76, 0x69, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f,
+ 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+ 0x64, 0x22, 0xf2, 0x04, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a,
0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f,
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62,
@@ -30449,241 +46726,284 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x6c, 0x69, 0x6d, 0x69, 0x74,
0x73, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c,
- 0x65, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52,
- 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c,
- 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x02, 0x48, 0x04, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70,
- 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61,
- 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x13, 0x6d, 0x61,
- 0x78, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f,
- 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6d,
- 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
- 0x70, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x6d, 0x61,
- 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52,
- 0x09, 0x70, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a,
- 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x69,
- 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x14,
- 0x0a, 0x12, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x69, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61,
- 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x19, 0x0a,
- 0x17, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e,
- 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6d, 0x61,
- 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x22, 0xb7, 0x03, 0x0a, 0x10, 0x48, 0x50, 0x41, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x32, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
- 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06,
- 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a,
- 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65,
- 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72,
- 0x79, 0x88, 0x01, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 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, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x77, 0x65,
- 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
- 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72,
- 0x79, 0x22, 0x72, 0x0a, 0x0b, 0x48, 0x50, 0x41, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
- 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08,
- 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c,
- 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65,
- 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0xd7, 0x03, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62,
- 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24,
- 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x0f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x75, 0x6c,
- 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x73, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x45,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73,
- 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x11,
+ 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61,
+ 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f,
+ 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73,
+ 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f,
+ 0x72, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x72, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, 0x52, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a,
+ 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65,
+ 0x52, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f,
+ 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65,
+ 0x5f, 0x72, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x75,
+ 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a,
+ 0x08, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x67,
+ 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07,
+ 0x67, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x22, 0xaf, 0x04, 0x0a, 0x11, 0x4a, 0x56, 0x4d, 0x48,
+ 0x65, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a,
+ 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x02, 0x48, 0x00, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x68, 0x65, 0x61,
+ 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f,
+ 0x6f, 0x6d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12,
+ 0x3e, 0x0a, 0x19, 0x6e, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72,
+ 0x68, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x02, 0x48, 0x02, 0x52, 0x16, 0x6e, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x70, 0x4f, 0x76, 0x65,
+ 0x72, 0x68, 0x65, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x3a, 0x0a, 0x17, 0x6e, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72,
+ 0x68, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
+ 0x48, 0x03, 0x52, 0x14, 0x6e, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x68,
+ 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x70, 0x42, 0x79,
+ 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x65,
+ 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05,
+ 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01,
+ 0x01, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x16, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14,
- 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e,
- 0x6f, 0x74, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d,
- 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x22,
- 0xfe, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x75,
- 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75,
- 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65,
- 0x22, 0xe2, 0x06, 0x0a, 0x0d, 0x48, 0x50, 0x41, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0c,
- 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61,
- 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01,
- 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48,
- 0x03, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x52, 0x65,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x62, 0x65, 0x68,
- 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
- 0x48, 0x05, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12,
- 0x30, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72,
- 0x6d, 0x75, 0x6c, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x63, 0x6f,
- 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x88, 0x01,
- 0x01, 0x12, 0x34, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41,
- 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x48, 0x07, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c,
- 0x62, 0x61, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x73, 0x63, 0x61, 0x6c, 0x65,
- 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73,
- 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x18,
- 0x73, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77,
- 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x19, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69,
- 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09,
- 0x52, 0x17, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74,
- 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d,
- 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x0f, 0x0a,
- 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x15,
- 0x0a, 0x13, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
- 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x78,
- 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f,
- 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x65, 0x68, 0x61,
- 0x76, 0x69, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
- 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66,
- 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x73, 0x63, 0x61, 0x6c,
- 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
- 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf8, 0x02, 0x0a, 0x17, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65,
- 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6f, 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x6f, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c,
- 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x02, 0x52, 0x13, 0x6f, 0x6f, 0x6d, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x75, 0x6c, 0x74,
- 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0f, 0x6f, 0x6f, 0x6d, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
- 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x12, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x6f,
- 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x63, 0x70, 0x75, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
- 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x70,
- 0x75, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72,
- 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x16, 0x63, 0x70,
- 0x75, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73,
- 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x6f,
- 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65,
- 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x63, 0x70, 0x75, 0x54, 0x68, 0x72, 0x6f,
- 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72,
- 0x22, 0x6c, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x03, 0x70, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x38, 0x30, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x38, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39,
- 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03,
- 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x39, 0x39, 0x22, 0xd5,
- 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x03, 0x63,
- 0x70, 0x75, 0x12, 0x30, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x6d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52,
- 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d,
+ 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6e, 0x6f,
+ 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f,
+ 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f,
+ 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70,
+ 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68,
+ 0x65, 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0xb3, 0x05, 0x0a, 0x0d, 0x48, 0x50,
+ 0x41, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x6d,
+ 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a,
+ 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x17, 0x6d, 0x61, 0x78,
+ 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x62,
+ 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69,
+ 0x6f, 0x72, 0x48, 0x03, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x88, 0x01,
+ 0x01, 0x12, 0x30, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x66,
+ 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x10,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61,
+ 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18,
+ 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
+ 0x50, 0x41, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x48, 0x05, 0x52, 0x08, 0x66, 0x61,
+ 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x73, 0x63, 0x61,
+ 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e,
+ 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06,
+ 0x52, 0x18, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6f, 0x6c, 0x64,
+ 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a,
+ 0x0d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x0f,
+ 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42,
+ 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x0b,
+ 0x0a, 0x09, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c,
+ 0x61, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x42, 0x1e,
+ 0x0a, 0x1c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f,
+ 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x4a, 0x04,
+ 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d,
+ 0x52, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x52, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
+ 0xf8, 0x02, 0x0a, 0x17, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6f,
+ 0x6f, 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x0a, 0x6f, 0x6f, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15,
+ 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
+ 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6f, 0x6f, 0x6d,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72,
+ 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6f, 0x6f, 0x6d,
+ 0x4d, 0x61, 0x78, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14,
+ 0x6f, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6f, 0x6f, 0x6d, 0x43,
+ 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x34,
+ 0x0a, 0x16, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67,
+ 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14,
+ 0x63, 0x70, 0x75, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x6f,
+ 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x16, 0x63, 0x70, 0x75, 0x54, 0x68, 0x72, 0x6f, 0x74,
+ 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x3a,
+ 0x0a, 0x19, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67,
+ 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x02, 0x52, 0x17, 0x63, 0x70, 0x75, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67,
+ 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, 0x8b, 0x05, 0x0a, 0x18, 0x4b,
+ 0x45, 0x44, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
+ 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4b, 0x45, 0x44, 0x41, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f,
+ 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x78,
+ 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x69, 0x64,
+ 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x10, 0x69, 0x64, 0x6c, 0x65, 0x52, 0x65,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a,
+ 0x10, 0x70, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
+ 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0f, 0x70, 0x6f, 0x6c, 0x6c, 0x69,
+ 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
+ 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
+ 0x77, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
+ 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x15,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x50,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c,
+ 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x45, 0x44, 0x41, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
+ 0x48, 0x06, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12,
+ 0x35, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x45, 0x44, 0x41, 0x41,
+ 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x48, 0x07, 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e,
+ 0x63, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12,
+ 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6f,
+ 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x12,
+ 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63,
+ 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x0b,
+ 0x0a, 0x09, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+ 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x22, 0xea, 0x02, 0x0a, 0x0b, 0x4b, 0x45, 0x44,
+ 0x41, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x45, 0x44, 0x41,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65,
+ 0x12, 0x51, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x45, 0x44, 0x41, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e,
+ 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x11, 0x61,
+ 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66,
+ 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65,
+ 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x10, 0x75, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x15,
+ 0x0a, 0x13, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x22, 0x3f, 0x0a, 0x15, 0x4b, 0x45, 0x44, 0x41, 0x41, 0x75, 0x74,
+ 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x73, 0x0a, 0x0c, 0x4b, 0x45, 0x44, 0x41, 0x46, 0x61,
+ 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
+ 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68,
+ 0x6f, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12,
+ 0x1a, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0c,
+ 0x4b, 0x45, 0x44, 0x41, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x21,
+ 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69,
+ 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
+ 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63,
+ 0x65, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x6a, 0x73, 0x6f, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64,
+ 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x10,
0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
- 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x22, 0xa0, 0x01, 0x0a, 0x10, 0x42, 0x75, 0x72, 0x73, 0x74,
- 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63,
- 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a,
- 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12,
- 0x12, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x64,
- 0x69, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x70, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x12, 0x19,
- 0x0a, 0x08, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x07, 0x70, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x22, 0x7f, 0x0a, 0x16, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x5f,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
- 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x12, 0x38, 0x0a, 0x0a, 0x62, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75,
- 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x73, 0x52, 0x0a,
- 0x62, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x6d, 0x0a, 0x12, 0x42, 0x61,
- 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73,
- 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x12,
- 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64,
+ 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70,
+ 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x38, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x03, 0x70, 0x38, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x35, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x39, 0x39, 0x22, 0xd5, 0x01, 0x0a, 0x13, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
+ 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x30,
+ 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x12, 0x32, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x07, 0x6e, 0x65, 0x74,
+ 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x04, 0x64, 0x69,
+ 0x73, 0x6b, 0x22, 0xa0, 0x01, 0x0a, 0x10, 0x42, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73,
+ 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64,
+ 0x69, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12,
+ 0x19, 0x0a, 0x08, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x07, 0x70, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6d,
+ 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x70, 0x6d,
+ 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x22, 0x7f, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f, 0x6d, 0x69,
+ 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a,
+ 0x62, 0x75, 0x72, 0x73, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72, 0x73, 0x74, 0x69,
+ 0x6e, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x73, 0x52, 0x0a, 0x62, 0x75, 0x72, 0x73,
+ 0x74, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x6d, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05,
+ 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x12, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x54, 0x6f, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48,
+ 0x50, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0a,
+ 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f,
+ 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64,
0x73, 0x54, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x5d, 0x0a, 0x21, 0x57, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x69, 0x74, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52,
0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38,
@@ -30807,3284 +47127,4137 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x63,
- 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x29,
- 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b,
- 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c,
- 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c,
- 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x22,
- 0xfd, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5a, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
- 0xf7, 0x04, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c,
- 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x18, 0x0a, 0x07,
- 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
- 0x24, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x70,
- 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x54,
- 0x0a, 0x27, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x75, 0x74, 0x68,
- 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x23, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x5f, 0x63, 0x72, 0x65, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6e, 0x6f,
- 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x72, 0x65, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75,
- 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x29,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x5f,
- 0x70, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
- 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x50, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x35,
- 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x62,
- 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x42, 0x61, 0x74, 0x63,
- 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12,
- 0x28, 0x0a, 0x10, 0x73, 0x76, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x76, 0x63, 0x41, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x0b, 0x41, 0x67,
- 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x55, 0x0a, 0x12, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74,
- 0x1a, 0x5b, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x41, 0x67,
- 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4d, 0x65,
- 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01,
- 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4d, 0x65, 0x74,
- 0x61, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
- 0x63, 0x72, 0x69, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x12, 0x21,
- 0x0a, 0x0c, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x69, 0x75, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72,
- 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
- 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x0e, 0x0a,
- 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xfc, 0x01,
- 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
- 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12,
- 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f,
- 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x2c,
- 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x9f, 0x04, 0x0a,
- 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x74,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x70, 0x75,
- 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f,
- 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x70, 0x75,
- 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73,
- 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0e, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72,
- 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x14,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f,
- 0x68, 0x6f, 0x75, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x21, 0x0a,
- 0x0c, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x67, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a,
- 0x11, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f,
- 0x75, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x73,
- 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x70, 0x75, 0x5f,
- 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d,
- 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x70,
- 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x16, 0x67, 0x70,
- 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f,
- 0x68, 0x6f, 0x75, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x67, 0x70, 0x75, 0x56,
- 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x22, 0xcd,
- 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
- 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a,
- 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x50, 0x0a, 0x12,
- 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x11, 0x73, 0x75, 0x6d,
- 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xe4,
- 0x03, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1b, 0x0a, 0x09,
- 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x70, 0x75,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70,
- 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63,
- 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c,
- 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
- 0x24, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d,
- 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61,
- 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x0e, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x24, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a,
- 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12,
- 0x26, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
- 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x29, 0x0a, 0x08, 0x67, 0x70, 0x75,
- 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x67, 0x70, 0x75,
- 0x56, 0x72, 0x61, 0x6d, 0x22, 0xee, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
- 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69,
- 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03,
- 0x61, 0x76, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02,
- 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x02, 0x52, 0x03, 0x70, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x30,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70,
- 0x39, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10, 0x0a,
- 0x03, 0x70, 0x39, 0x37, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39, 0x37, 0x12,
- 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39,
- 0x39, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x31, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52,
- 0x04, 0x70, 0x31, 0x30, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05,
- 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x9b, 0x03, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x4f, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12,
- 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4c,
- 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63,
- 0x6f, 0x72, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x1e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c,
- 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f,
- 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
- 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d,
- 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
- 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x22, 0xcc, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x63,
- 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a,
- 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x76,
- 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x70, 0x75, 0x56, 0x72,
- 0x61, 0x6d, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x52, 0x09, 0x63, 0x70,
- 0x75, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x5f, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b,
- 0x65, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0a,
- 0x67, 0x70, 0x75, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x52, 0x09, 0x67, 0x70, 0x75, 0x41, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x3c, 0x0a, 0x0f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x61, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65,
- 0x52, 0x0d, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22,
- 0xf1, 0x01, 0x0a, 0x0a, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
- 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01,
- 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x03, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x32,
- 0x0a, 0x12, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x11, 0x74, 0x6f,
- 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
- 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13,
- 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x73, 0x22, 0x9c, 0x04, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x02,
- 0x18, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e,
- 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x12, 0x64,
- 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64,
- 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
- 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62,
- 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
- 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70,
- 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
- 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62,
- 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
- 0x64, 0x73, 0x22, 0x92, 0x07, 0x0a, 0x1d, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
- 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42,
- 0x02, 0x18, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f,
- 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x12,
- 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4b,
- 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c,
- 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73,
- 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15,
- 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f,
- 0x63, 0x70, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x07, 0x6d, 0x69,
- 0x6e, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f,
- 0x63, 0x70, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x07, 0x6d, 0x61,
- 0x78, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x76, 0x61, 0x69,
- 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c,
- 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73,
- 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x6e,
- 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e,
- 0x63, 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x39,
- 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32,
- 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
- 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f,
- 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x33,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x39, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12,
- 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x73, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
- 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42,
- 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0b, 0x0a,
- 0x09, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d,
- 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x22, 0xb9, 0x06, 0x0a, 0x21, 0x56, 0x65, 0x72, 0x74,
- 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6d,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a,
- 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a,
- 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a,
- 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01,
- 0x28, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f,
- 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02,
- 0x48, 0x02, 0x52, 0x12, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4d, 0x75, 0x6c, 0x74,
- 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x16,
- 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6d,
- 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x11, 0x6d, 0x61, 0x78,
- 0x53, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01,
- 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64,
- 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28,
- 0x02, 0x48, 0x05, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77,
- 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x19, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74,
- 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06,
- 0x52, 0x17, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,
- 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10,
- 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72,
- 0x18, 0x1b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, 0x52, 0x0f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4d,
- 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f,
- 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18,
- 0x1f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61,
- 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x1a, 0x61, 0x64, 0x6a,
- 0x75, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x5f, 0x69, 0x66, 0x5f,
- 0x6e, 0x6f, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61,
- 0x64, 0x6a, 0x75, 0x73, 0x74, 0x52, 0x65, 0x71, 0x45, 0x76, 0x65, 0x6e, 0x49, 0x66, 0x4e, 0x6f,
- 0x74, 0x53, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x72,
- 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x2a,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f,
- 0x76, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d,
- 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d,
- 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f,
- 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
- 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78,
- 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f,
- 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1c, 0x0a, 0x1a,
- 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,
- 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42,
- 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x73, 0x22, 0x85, 0x07, 0x0a, 0x23, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74,
- 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
- 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x6d,
- 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a,
- 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
- 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28,
- 0x02, 0x48, 0x02, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x16, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d,
- 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f,
- 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18,
- 0x1f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61,
- 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x6d, 0x61, 0x78,
- 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f,
- 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52,
- 0x17, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x27, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x68,
- 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70,
- 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x29, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x22,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x68, 0x72,
- 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53,
- 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x33, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, 0x52, 0x17, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x18, 0x34, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x08, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x46, 0x6f,
- 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x73, 0x63, 0x61, 0x6c,
- 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
- 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x05, 0x48, 0x09, 0x52,
- 0x18, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
- 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d,
- 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x0f, 0x0a,
- 0x0d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x15,
- 0x0a, 0x13, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
- 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e,
- 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x1d, 0x0a, 0x1b,
- 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x2a, 0x0a, 0x28, 0x5f,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74,
- 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f,
- 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x42, 0x1e, 0x0a, 0x1c, 0x5f,
- 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64,
- 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xda, 0x12, 0x0a, 0x1c,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72,
- 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e,
- 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x02,
- 0x18, 0x01, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x5b, 0x0a, 0x14, 0x63, 0x70, 0x75, 0x5f, 0x76, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x09,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x12, 0x63, 0x70, 0x75, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c,
- 0x69, 0x6e, 0x67, 0x12, 0x61, 0x0a, 0x17, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x76, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x15, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53,
- 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x5b, 0x0a, 0x14, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0b,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x12, 0x67, 0x70, 0x75, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c,
- 0x69, 0x6e, 0x67, 0x12, 0x64, 0x0a, 0x19, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f,
- 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f,
- 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x52, 0x16, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63,
- 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x5a, 0x0a, 0x12, 0x68, 0x6f, 0x72,
- 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
- 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67,
- 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x11, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x63,
- 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63,
- 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
- 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61,
- 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
- 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01,
- 0x28, 0x03, 0x48, 0x02, 0x52, 0x14, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x50, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a,
- 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c,
- 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
- 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
- 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
- 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73,
- 0x18, 0x39, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x55, 0x69, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e,
- 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x3e, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01,
- 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd6, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72,
+ 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x46, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65,
+ 0x12, 0x3e, 0x0a, 0x0d, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61,
+ 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x73, 0x6f,
+ 0x6e, 0x22, 0xce, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74,
+ 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x73, 0x22, 0x5d, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c,
+ 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x22, 0x66, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74,
+ 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x09,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x11, 0x52, 0x65,
+ 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12,
+ 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64,
+ 0x22, 0xfd, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5a, 0x0a, 0x16, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0xf7, 0x04, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x65, 0x61,
+ 0x6c, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x18, 0x0a,
+ 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x41,
+ 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x54, 0x0a, 0x27, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x75, 0x74,
+ 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x23, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f,
+ 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x75,
+ 0x64, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6e,
+ 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x72, 0x65, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63,
+ 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18,
+ 0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64,
+ 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0e, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x50, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x12,
+ 0x35, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x5f,
+ 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x42, 0x61, 0x74,
+ 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73,
+ 0x69, 0x7a, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65,
+ 0x12, 0x28, 0x0a, 0x10, 0x73, 0x76, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x76, 0x63, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x0b, 0x41,
+ 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x55, 0x0a, 0x12, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e,
+ 0x74, 0x1a, 0x5b, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x41,
+ 0x67, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4d,
+ 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd,
+ 0x01, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4d, 0x65,
+ 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x18, 0x0a, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0e, 0x63, 0x72, 0x69, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x12,
+ 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x69, 0x75, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
+ 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x0e,
+ 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xfc,
+ 0x01, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a,
+ 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a,
+ 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12,
+ 0x2c, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x9f, 0x04,
+ 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09,
+ 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x70,
+ 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75,
+ 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x70,
+ 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f,
+ 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0e, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75,
+ 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a,
+ 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x21,
+ 0x0a, 0x0c, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x0e,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x67, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
+ 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0f,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29,
+ 0x0a, 0x11, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68,
+ 0x6f, 0x75, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x67, 0x70, 0x75, 0x43, 0x6f,
+ 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x70, 0x75,
+ 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x11,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x43, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61,
+ 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67,
+ 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x16, 0x67,
+ 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x67, 0x70, 0x75,
+ 0x56, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x22,
+ 0xcd, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61,
+ 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23,
+ 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x6d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x50, 0x0a,
+ 0x12, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d,
+ 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x11, 0x73, 0x75,
+ 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22,
+ 0xe4, 0x03, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1b, 0x0a,
+ 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x70,
+ 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0a, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63,
+ 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
+ 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
+ 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61,
+ 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x70, 0x75, 0x55, 0x73, 0x61,
+ 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74,
+ 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x61,
+ 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61,
+ 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72,
+ 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0e, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61,
+ 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20,
+ 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x63, 0x70, 0x75,
+ 0x12, 0x26, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x29, 0x0a, 0x08, 0x67, 0x70,
+ 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x67, 0x70,
+ 0x75, 0x56, 0x72, 0x61, 0x6d, 0x22, 0xee, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d,
+ 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52,
+ 0x03, 0x61, 0x76, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x37, 0x35, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x37, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39,
+ 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39, 0x30, 0x12, 0x10, 0x0a, 0x03,
+ 0x70, 0x39, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39, 0x35, 0x12, 0x10,
+ 0x0a, 0x03, 0x70, 0x39, 0x37, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70, 0x39, 0x37,
+ 0x12, 0x10, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x70,
+ 0x39, 0x39, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x31, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02,
+ 0x52, 0x04, 0x70, 0x31, 0x30, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xcd, 0x04, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65,
+ 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x5f, 0x6d, 0x75, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x6e, 0x76, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x4e, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x72, 0x67,
+ 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
+ 0x64, 0x41, 0x72, 0x67, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x41, 0x72, 0x67, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6f, 0x6d, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x6f, 0x6d, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x1e, 0x4b, 0x65, 0x64, 0x61, 0x53,
+ 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21,
+ 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
+ 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10,
+ 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75,
+ 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70,
+ 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x70,
+ 0x75, 0x56, 0x72, 0x61, 0x6d, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x52,
+ 0x09, 0x63, 0x70, 0x75, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x6d, 0x65,
+ 0x6d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f,
+ 0x54, 0x61, 0x6b, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x33, 0x0a, 0x0a, 0x67, 0x70, 0x75, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x52, 0x09, 0x67, 0x70, 0x75, 0x41, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d,
+ 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54,
+ 0x61, 0x6b, 0x65, 0x52, 0x0d, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x41, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x0e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x4d, 0x75, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa8, 0x01,
+ 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x41, 0x72, 0x67, 0x4d, 0x75, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72,
+ 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66,
+ 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08,
+ 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x7d, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a,
+ 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x78, 0x0a, 0x12, 0x54, 0x6f, 0x6c, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a,
+ 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a,
+ 0x0a, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0xf1, 0x01, 0x0a, 0x0a, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61,
+ 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01,
+ 0x12, 0x32, 0x0a, 0x12, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x11,
+ 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0b, 0x0a, 0x09,
+ 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x42, 0x15,
+ 0x0a, 0x13, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x9c, 0x04, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72,
+ 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a,
+ 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x13,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d,
+ 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f,
+ 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f,
+ 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f,
+ 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32,
+ 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+ 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f,
+ 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x92, 0x07, 0x0a, 0x1d, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63,
+ 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50,
+ 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64,
+ 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a,
+ 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+ 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x07,
+ 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61,
+ 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x07,
+ 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x76,
+ 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
+ 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76, 0x61,
+ 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70,
+ 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01,
+ 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73,
+ 0x12, 0x39, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28,
+ 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
+ 0x65, 0x64, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69,
+ 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x39, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x73, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x12, 0x31, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f,
- 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x56, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52,
- 0x10, 0x6d, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61,
- 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52,
- 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01,
- 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63,
- 0x76, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x0e, 0x73,
- 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x76, 0x4d, 0x61, 0x78, 0x88, 0x01, 0x01,
- 0x12, 0x35, 0x0a, 0x14, 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x76,
- 0x73, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07,
- 0x52, 0x12, 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x56, 0x73, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x72, 0x69, 0x66, 0x74,
- 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x5e,
- 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, 0x11, 0x64, 0x72, 0x69, 0x66, 0x74, 0x44, 0x65, 0x6c,
- 0x74, 0x61, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x1a,
- 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x70, 0x61, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x64,
- 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x05,
- 0x48, 0x09, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x56, 0x70, 0x61, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77,
- 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a,
- 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65,
- 0x73, 0x18, 0x60, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0a, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64,
- 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a,
- 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x6d, 0x70, 0x61, 0x18, 0x61, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x70, 0x61, 0x12,
- 0x46, 0x0a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61,
- 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c,
- 0x69, 0x6e, 0x67, 0x18, 0x67, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c,
- 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c,
- 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x64, 0x62, 0x5f, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x64,
- 0x62, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72,
- 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x63,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d,
- 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x5f, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x50, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35,
- 0x0a, 0x14, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72,
- 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0b, 0x52, 0x12,
- 0x70, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
- 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
- 0x5f, 0x61, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x0c, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
- 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73,
- 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70,
- 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f,
- 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1b,
- 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f,
- 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x76, 0x5f, 0x6d, 0x61, 0x78, 0x42, 0x17, 0x0a, 0x15, 0x5f,
- 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x76, 0x73, 0x5f, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x5f, 0x64,
- 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1d, 0x0a, 0x1b,
- 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x70, 0x61, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f,
- 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f,
- 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73,
- 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x5f,
- 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f,
- 0x64, 0x65, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x64, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c,
- 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
+ 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b,
+ 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42,
+ 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09,
+ 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x22, 0xb5, 0x07, 0x0a, 0x21, 0x56, 0x65,
+ 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x69, 0x6e,
+ 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00,
+ 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61,
+ 0x64, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01,
+ 0x28, 0x02, 0x48, 0x02, 0x52, 0x12, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4d, 0x75,
+ 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a,
+ 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x11, 0x6d,
+ 0x61, 0x78, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20,
+ 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44,
+ 0x6f, 0x77, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a,
+ 0x19, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,
+ 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08,
+ 0x48, 0x06, 0x52, 0x17, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74,
+ 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e,
+ 0x0a, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
+ 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, 0x52, 0x0f, 0x6c, 0x69, 0x6d, 0x69,
+ 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b,
+ 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61,
+ 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x1a, 0x61,
+ 0x64, 0x6a, 0x75, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x5f, 0x69,
+ 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x15, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x52, 0x65, 0x71, 0x45, 0x76, 0x65, 0x6e, 0x49, 0x66,
+ 0x4e, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73,
+ 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x0f,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x18,
+ 0x2b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x55, 0x73, 0x65, 0x52, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x08,
+ 0x48, 0x0a, 0x52, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x52, 0x73, 0x73, 0x88,
+ 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f,
+ 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
+ 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75,
+ 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x61,
+ 0x78, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f,
+ 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x75, 0x6c,
+ 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f,
+ 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73, 0x73, 0x42,
+ 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x73,
+ 0x73, 0x22, 0x85, 0x07, 0x0a, 0x23, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c,
+ 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x69, 0x6e,
+ 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d,
+ 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
+ 0x05, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
+ 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74,
+ 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x48,
+ 0x02, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61,
+ 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
+ 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x1f, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x72,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x17, 0x6d,
+ 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x27, 0x6e, 0x65, 0x74,
+ 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x6f,
+ 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x73, 0x65, 0x63, 0x18, 0x29, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x22, 0x6e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x75,
+ 0x67, 0x68, 0x70, 0x75, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63,
+ 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x33, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, 0x52, 0x17, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x08, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d,
+ 0x75, 0x6c, 0x61, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f,
+ 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x05, 0x48, 0x09, 0x52, 0x18, 0x73,
+ 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e,
+ 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
+ 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x42, 0x15, 0x0a, 0x13,
+ 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f,
+ 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64,
+ 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d,
+ 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x2a, 0x0a, 0x28, 0x5f, 0x6e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x72,
+ 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65,
+ 0x72, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x73, 0x63,
+ 0x61, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77,
+ 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xe7, 0x1e, 0x0a, 0x1c, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xb1, 0x01, 0x0a,
- 0x16, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x65, 0x61,
- 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
- 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
- 0x22, 0xfd, 0x02, 0x0a, 0x0f, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69,
- 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x23, 0x62,
- 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x20, 0x62, 0x61, 0x74, 0x63,
- 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12,
- 0x55, 0x0a, 0x25, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
- 0x52, 0x21, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53,
- 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x72,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x1c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65,
- 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x26,
- 0x0a, 0x24, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x28, 0x0a, 0x26, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68,
- 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x22, 0xb0, 0x02, 0x0a, 0x22, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x70, 0x70, 0x6c,
- 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x19,
- 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
- 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x15, 0x6c, 0x69, 0x76,
- 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x01, 0x52, 0x13, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x42,
+ 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x02, 0x18, 0x01,
+ 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x5b, 0x0a, 0x14, 0x63, 0x70, 0x75, 0x5f, 0x76, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x12, 0x63,
+ 0x70, 0x75, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e,
+ 0x67, 0x12, 0x61, 0x0a, 0x17, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x15, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61,
+ 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x5b, 0x0a, 0x14, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x12, 0x67,
+ 0x70, 0x75, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e,
+ 0x67, 0x12, 0x64, 0x0a, 0x19, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x72, 0x61, 0x6d, 0x5f, 0x76, 0x65,
+ 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65,
+ 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x16, 0x67, 0x70, 0x75, 0x56, 0x72, 0x61, 0x6d, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c,
+ 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x5a, 0x0a, 0x12, 0x68, 0x6f, 0x72, 0x69, 0x7a,
+ 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x72,
+ 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x52, 0x11, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c,
+ 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f,
+ 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0e,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b,
+ 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x39, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03,
+ 0x48, 0x02, 0x52, 0x14, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x50, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c,
+ 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76,
+ 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73,
+ 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x0a,
+ 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18, 0x39,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69,
+ 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f,
+ 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12,
+ 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x73, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
+ 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12,
+ 0x31, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x56, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x10, 0x6d,
+ 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88,
+ 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x0d, 0x6d,
+ 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x2d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x76, 0x5f,
+ 0x6d, 0x61, 0x78, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x0e, 0x73, 0x74, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x76, 0x4d, 0x61, 0x78, 0x88, 0x01, 0x01, 0x12, 0x35,
+ 0x0a, 0x14, 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x76, 0x73, 0x5f,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, 0x52, 0x12,
+ 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x56, 0x73, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x72, 0x69, 0x66, 0x74, 0x5f, 0x64,
+ 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x5e, 0x20, 0x01,
+ 0x28, 0x02, 0x48, 0x08, 0x52, 0x11, 0x64, 0x72, 0x69, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61,
+ 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x1a, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x76, 0x70, 0x61, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x64, 0x61, 0x74,
+ 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x09,
+ 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x56, 0x70, 0x61, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x61,
+ 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63,
+ 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18,
+ 0x60, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0a, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77,
+ 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x20, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76,
+ 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18,
+ 0x67, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x50,
+ 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c,
+ 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x24, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x18, 0x79, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x1f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x63, 0x72, 0x65, 0x61,
+ 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x64, 0x62, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x64, 0x62, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79,
+ 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6d,
+ 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x64, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6d, 0x61, 0x78, 0x50,
+ 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x14, 0x70, 0x6d, 0x61,
+ 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+ 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0b, 0x52, 0x12, 0x70, 0x6d, 0x61, 0x78, 0x52,
+ 0x61, 0x74, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01,
+ 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x66,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x48, 0x0c, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01,
+ 0x12, 0x41, 0x0a, 0x1d, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x18, 0x68, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x6a, 0x76, 0x6d, 0x48, 0x65, 0x61, 0x70,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x1a, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c,
+ 0x65, 0x18, 0x69, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0d, 0x52, 0x17, 0x6a, 0x76, 0x6d, 0x48, 0x65,
+ 0x61, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
+ 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61,
+ 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
+ 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0e, 0x52, 0x19, 0x6a,
+ 0x76, 0x6d, 0x48, 0x65, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x4d, 0x75,
+ 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x1d, 0x6a,
+ 0x76, 0x6d, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72,
+ 0x68, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x6b, 0x20, 0x01,
+ 0x28, 0x02, 0x48, 0x0f, 0x52, 0x19, 0x6a, 0x76, 0x6d, 0x4e, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x70,
+ 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88,
+ 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1b, 0x6a, 0x76, 0x6d, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x68, 0x65,
+ 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x03, 0x48, 0x10, 0x52, 0x17, 0x6a, 0x76, 0x6d, 0x4e, 0x6f,
+ 0x6e, 0x48, 0x65, 0x61, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74,
+ 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x12, 0x6a, 0x76, 0x6d, 0x5f, 0x6d, 0x69, 0x6e,
+ 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x6d, 0x20, 0x01, 0x28,
+ 0x03, 0x48, 0x11, 0x52, 0x0f, 0x6a, 0x76, 0x6d, 0x4d, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x70, 0x42,
+ 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x12, 0x6a, 0x76, 0x6d, 0x5f, 0x6d,
+ 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x6e, 0x20,
+ 0x01, 0x28, 0x03, 0x48, 0x12, 0x52, 0x0f, 0x6a, 0x76, 0x6d, 0x4d, 0x61, 0x78, 0x48, 0x65, 0x61,
+ 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x1c, 0x6a, 0x76, 0x6d,
+ 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x19, 0x6a, 0x76, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4b, 0x0a, 0x20, 0x6a, 0x76,
+ 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c,
+ 0x6f, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x70,
+ 0x20, 0x01, 0x28, 0x03, 0x48, 0x13, 0x52, 0x1c, 0x6a, 0x76, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x74,
+ 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63,
+ 0x6f, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x66,
+ 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x71, 0x20, 0x01,
+ 0x28, 0x03, 0x48, 0x14, 0x52, 0x0f, 0x63, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x18, 0x72, 0x20, 0x01, 0x28, 0x03, 0x48, 0x15, 0x52, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x33, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x73, 0x20, 0x01, 0x28, 0x03, 0x48, 0x16, 0x52, 0x11,
+ 0x63, 0x70, 0x75, 0x43, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63,
+ 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x74,
+ 0x20, 0x01, 0x28, 0x03, 0x48, 0x17, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x65,
+ 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x3a, 0x0a, 0x17, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
+ 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x03,
+ 0x48, 0x18, 0x52, 0x14, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x6c, 0x6f, 0x6f,
+ 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1a, 0x6d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f,
+ 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x76, 0x20, 0x01, 0x28, 0x03, 0x48,
+ 0x19, 0x52, 0x17, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x6c,
+ 0x6f, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a,
+ 0x19, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69,
+ 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x77, 0x20, 0x01, 0x28, 0x03,
+ 0x48, 0x1a, 0x52, 0x16, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x69, 0x6c,
+ 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a,
+ 0x1c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65,
+ 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x78, 0x20,
+ 0x01, 0x28, 0x03, 0x48, 0x1b, 0x52, 0x19, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x43, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61,
+ 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65,
+ 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1b, 0x0a, 0x19,
+ 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x5f, 0x63, 0x76, 0x5f, 0x6d, 0x61, 0x78, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x68, 0x79,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x76, 0x73, 0x5f, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x6c,
+ 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x76, 0x70, 0x61, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x64, 0x61,
+ 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f,
+ 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42, 0x17,
+ 0x0a, 0x15, 0x5f, 0x70, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x74, 0x68,
+ 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x68,
+ 0x65, 0x61, 0x70, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65,
+ 0x61, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6d, 0x75, 0x6c, 0x74,
+ 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x6e,
+ 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64,
+ 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6a, 0x76, 0x6d,
+ 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65,
+ 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6a, 0x76, 0x6d,
+ 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42,
+ 0x15, 0x0a, 0x13, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x70,
+ 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72,
+ 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f,
+ 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x66, 0x6c, 0x6f,
+ 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x65,
+ 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1a, 0x0a,
+ 0x18, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f,
+ 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72,
+ 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x63, 0x70, 0x75,
+ 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f,
+ 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x61, 0x10, 0x62, 0x52, 0x14, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x6d, 0x70, 0x61, 0x22, 0x8b, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x12, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
+ 0x65, 0x22, 0x64, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xb1, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x6c, 0x61,
+ 0x6e, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x48,
+ 0x00, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b,
+ 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x0f,
+ 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
+ 0x25, 0x0a, 0x0e, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x23, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x25, 0x62, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73,
+ 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x21, 0x62, 0x61, 0x74,
+ 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01,
+ 0x01, 0x12, 0x46, 0x0a, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65,
+ 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x62, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x69, 0x7a,
+ 0x65, 0x42, 0x28, 0x0a, 0x26, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xa4, 0x03, 0x0a, 0x22,
+ 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
+ 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x15, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x76,
+ 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x48, 0x01, 0x52, 0x13, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12,
+ 0x3e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48,
+ 0x02, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42,
0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x69,
0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x22, 0xb2, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64,
- 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64,
- 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75,
- 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
- 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16,
- 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x68,
- 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x11, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x4d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x6f,
- 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53,
- 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a,
- 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xfb, 0x02, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x26,
- 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f,
- 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x38,
- 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64,
- 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65,
- 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0d, 0x52, 0x10, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x43,
- 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x3d,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x06, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x22, 0xe1, 0x06, 0x0a, 0x0a, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x61,
- 0x63, 0x74, 0x12, 0x47, 0x0a, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f,
- 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
- 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43,
- 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x4f, 0x0a, 0x1a, 0x72,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f,
- 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x75, 0x6c, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f,
+ 0x61, 0x74, 0x22, 0xed, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65,
+ 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x65,
+ 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
+ 0x65, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66,
+ 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63,
+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
+ 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x75, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11,
+ 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
+ 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x6f, 0x64,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69,
+ 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x70, 0x70,
+ 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65,
+ 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22,
+ 0xfb, 0x02, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x73,
+ 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x64, 0x65,
+ 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42,
+ 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88,
+ 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xe1, 0x06,
+ 0x0a, 0x0a, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x47, 0x0a, 0x16,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72,
+ 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x4f, 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f,
+ 0x6e, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x17, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65,
+ 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d,
+ 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x16,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65,
+ 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x54, 0x0a, 0x1d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65,
+ 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x56, 0x0a, 0x1e,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f,
+ 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79,
+ 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d,
+ 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x5c, 0x0a, 0x21, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+ 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f,
- 0x6e, 0x65, 0x79, 0x52, 0x17, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
- 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x1a,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d,
- 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x70, 0x75,
- 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x54, 0x0a, 0x1d,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63,
- 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70,
- 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x6e, 0x65, 0x79, 0x52, 0x1d, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e,
+ 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x70,
+ 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x16, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e,
0x74, 0x68, 0x12, 0x56, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d,
- 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x64, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d,
+ 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1a,
- 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x70, 0x75, 0x43, 0x6f,
- 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x5c, 0x0a, 0x21, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74,
- 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1d, 0x72, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x73, 0x74,
- 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72,
- 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
- 0x52, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74,
- 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x56, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x73, 0x74,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d,
- 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68,
- 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f,
- 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
- 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3c, 0x0a, 0x18,
- 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x70,
- 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
- 0x52, 0x15, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x73, 0x50,
- 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65,
- 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x70, 0x65,
- 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x22, 0x91, 0x0e, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
- 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55,
- 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x5c, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a,
- 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
- 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a,
- 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x71, 0x0a, 0x21, 0x6b, 0x65, 0x64, 0x61, 0x5f,
- 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61,
- 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1e, 0x6b, 0x65, 0x64, 0x61,
- 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41,
- 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52,
- 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01,
- 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69,
- 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x75,
- 0x73, 0x65, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x3d, 0x0a, 0x08, 0x64, 0x65, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x4d,
- 0x69, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x21,
- 0x0a, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01,
- 0x01, 0x12, 0x43, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6c,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6c, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x17, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x33, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x48, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41,
- 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x48, 0x04, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01,
- 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x3e,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x06, 0x52, 0x0c, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18,
- 0x48, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x72, 0x75,
- 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x49, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x06, 0x72,
- 0x75, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x51, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x52, 0x12, 0x72, 0x65,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x54, 0x0a, 0x15, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x09, 0x52, 0x13,
- 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
- 0x53, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0a, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01,
- 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74,
- 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x48, 0x0b, 0x52, 0x0a, 0x63, 0x6f,
- 0x73, 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1d, 0x75,
- 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74,
- 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x5c, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a,
- 0x0c, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x5d, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42,
- 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67,
- 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
- 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x69, 0x76, 0x65,
- 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
- 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x23,
- 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e,
- 0x61, 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
- 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xd3,
- 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a,
- 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64,
- 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69,
- 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x64, 0x22, 0xf9, 0x02, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61,
- 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x11,
- 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x1c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
- 0x64, 0x54, 0x6f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x54, 0x6f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x1a, 0x6e, 0x0a, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x54, 0x6f, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0x65, 0x0a, 0x21, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x19, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x4f, 0x0a, 0x13,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
- 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
- 0x65, 0x72, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x8c, 0x01,
- 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
- 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x47, 0x70, 0x75, 0x43, 0x6f,
+ 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e,
+ 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x74,
+ 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3c, 0x0a, 0x18, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e,
+ 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x15, 0x65, 0x73, 0x74, 0x69,
+ 0x6d, 0x61, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x6e, 0x74,
+ 0x68, 0x88, 0x01, 0x01, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74,
+ 0x68, 0x22, 0x8b, 0x14, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x19, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x72,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x12, 0x71, 0x0a, 0x21, 0x6b, 0x65, 0x64, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64,
+ 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64,
+ 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1e, 0x6b, 0x65, 0x64, 0x61, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64,
+ 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x75,
+ 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x75, 0x73, 0x65, 0x4c, 0x69, 0x76, 0x65,
+ 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x64, 0x65, 0x6c,
+ 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x07, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x72,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x13, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x12, 0x4f, 0x0a, 0x17, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f,
+ 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48,
+ 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x06,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xa3, 0x01, 0x0a,
- 0x23, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72,
+ 0x63, 0x79, 0x48, 0x04, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12,
+ 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x3e, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01,
+ 0x01, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x06, 0x52, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x48, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x49, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x06, 0x72, 0x75, 0x6c,
+ 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x0a, 0x72,
+ 0x75, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x69, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0a,
+ 0x52, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x14, 0x72,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x52,
+ 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x15, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x52, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x76, 0x65,
+ 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48,
+ 0x0b, 0x52, 0x13, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x18, 0x53, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0c, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
+ 0x6a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x61,
+ 0x63, 0x74, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x48, 0x0e, 0x52, 0x0a,
+ 0x63, 0x6f, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a,
+ 0x1d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65,
+ 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x5c,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65,
+ 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12,
+ 0x4d, 0x0a, 0x24, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63,
+ 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64,
+ 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x61,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x12, 0x21,
+ 0x0a, 0x0c, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x5d,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x53, 0x63, 0x6f, 0x72,
+ 0x65, 0x12, 0x54, 0x0a, 0x17, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x75,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x74, 0x6f, 0x6c, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x66, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54,
+ 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x13, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x49, 0x0a,
+ 0x16, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54,
+ 0x61, 0x6b, 0x65, 0x52, 0x13, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x72, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x6c, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x0f, 0x52,
+ 0x10, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+ 0x73, 0x88, 0x01, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64,
+ 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c,
+ 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x1b, 0x0a, 0x19,
+ 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x69,
+ 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a,
+ 0x08, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f,
+ 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22,
+ 0xc8, 0x03, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74,
+ 0x61, 0x69, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x08, 0x69,
+ 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67,
+ 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
+ 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x43,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x10,
+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73,
+ 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x48, 0x00, 0x52,
+ 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x09,
+ 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69,
+ 0x6e, 0x67, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x65, 0x63, 0x69,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65,
+ 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x72, 0x69, 0x73, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
+ 0x3c, 0x0a, 0x1a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x61,
+ 0x64, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x18, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65,
+ 0x61, 0x64, 0x62, 0x61, 0x6e, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x0a,
+ 0x09, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x22, 0x69, 0x0a, 0x11, 0x52, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65,
+ 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xb9, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x69, 0x67,
+ 0x68, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x08,
+ 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e,
+ 0x67, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79,
+ 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69,
+ 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x76,
+ 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45,
+ 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63,
+ 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x65, 0x66, 0x6f,
+ 0x72, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x66,
+ 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x66, 0x74, 0x65, 0x72, 0x22, 0xf6, 0x01, 0x0a, 0x18,
+ 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x64,
+ 0x67, 0x65, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x35, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2f,
+ 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12,
+ 0x23, 0x0a, 0x0d, 0x6f, 0x6f, 0x6d, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x6f, 0x6d, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x65, 0x64, 0x22, 0xa2, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69,
+ 0x6e, 0x67, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x09, 0x63, 0x70, 0x75, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x25, 0x0a,
+ 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x52, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61,
+ 0x6c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x6f, 0x73, 0x63, 0x69, 0x6c, 0x6c, 0x61,
+ 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4f, 0x73,
+ 0x63, 0x69, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x6e, 0x63, 0x79, 0x22, 0xea, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69,
+ 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d,
+ 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x3e, 0x0a, 0x0b, 0x75, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e,
+ 0x67, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x75, 0x74,
+ 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51,
+ 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x11,
+ 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x22, 0xa6, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44,
+ 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x69, 0x6e,
+ 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08,
+ 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x61,
+ 0x63, 0x74, 0x75, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x06, 0x61,
+ 0x63, 0x74, 0x75, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42,
+ 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x22, 0x85, 0x01, 0x0a, 0x23, 0x47,
+ 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61,
+ 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65,
+ 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xd3, 0x01,
+ 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a,
- 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d,
- 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a,
- 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69,
- 0x64, 0x73, 0x22, 0x9e, 0x03, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
- 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74,
- 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x60, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12,
+ 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x64, 0x22, 0xf9, 0x02, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x70, 0x1a, 0x62, 0x0a, 0x0e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a,
- 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0xa9, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61,
- 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x49, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22,
- 0xa8, 0x03, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64,
- 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
- 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x11, 0x72,
+ 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x1c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,
+ 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
+ 0x54, 0x6f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x54,
+ 0x6f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a,
+ 0x6e, 0x0a, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x54, 0x6f, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0x65, 0x0a, 0x21, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x19, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
+ 0x72, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
+ 0x72, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x8c, 0x01, 0x0a,
+ 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x12, 0x36, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52,
+ 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x23,
+ 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64,
+ 0x73, 0x22, 0x9e, 0x03, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
+ 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61,
+ 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x65, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61,
- 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x63, 0x0a,
- 0x0e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d,
- 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x0d, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x22, 0xbc, 0x01,
- 0x0a, 0x1c, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x1f, 0x0a, 0x1d,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70,
- 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd9, 0x02,
- 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
- 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01,
- 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x75,
- 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
- 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x5c, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x1a, 0x0a,
- 0x18, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x70, 0x70,
- 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x36, 0x0a, 0x1c, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22,
- 0xd7, 0x02, 0x0a, 0x21, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69,
- 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x75, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35,
- 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e,
- 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x39,
- 0x0a, 0x19, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbd, 0x01, 0x0a, 0x22, 0x52, 0x65,
- 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x33, 0x0a, 0x07, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e,
- 0x67, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x07, 0x73, 0x61,
- 0x76, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
- 0x0f, 0x67, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70,
- 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x22, 0x64, 0x0a, 0x19, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x2e, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22,
- 0x4c, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a,
- 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x54, 0x0a,
- 0x1a, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x60, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
+ 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x70, 0x1a, 0x62, 0x0a, 0x0e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x10,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0xa9, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
- 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x1b, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64,
- 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x8d,
- 0x01, 0x0a, 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65,
- 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xa8,
+ 0x03, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
+ 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x65, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c,
+ 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x63, 0x0a, 0x0e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+ 0x01, 0x1a, 0x56, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61,
+ 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x0d, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x22, 0xbc, 0x01, 0x0a,
+ 0x1c, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41,
+ 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88,
+ 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70,
+ 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd9, 0x02, 0x0a,
+ 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70,
- 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x8f,
- 0x01, 0x0a, 0x29, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65,
- 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08,
+ 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
+ 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
+ 0x12, 0x2e, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01,
+ 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x75, 0x6c,
+ 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x5c, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x1a, 0x0a, 0x18,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c,
+ 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x36, 0x0a, 0x1c, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd7,
+ 0x02, 0x0a, 0x21, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e,
+ 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+ 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
+ 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a,
+ 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69,
+ 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a,
+ 0x19, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbd, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x74,
+ 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x33, 0x0a, 0x07, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67,
+ 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x07, 0x73, 0x61, 0x76,
+ 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f,
+ 0x67, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x88,
+ 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x22, 0x64, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x2e,
+ 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x4c,
+ 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08,
0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x1a,
+ 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x22, 0x49, 0x0a, 0x1b, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x8d, 0x01,
+ 0x0a, 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x65,
+ 0x72, 0x73, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x8f, 0x01,
+ 0x0a, 0x29, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x22, 0x8e, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
+ 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22,
+ 0x8e, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
+ 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x22, 0x9b, 0x02, 0x0a, 0x2a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73,
- 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x22, 0x9b, 0x02, 0x0a, 0x2a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f,
- 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x12, 0x32, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x77, 0x61,
- 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x0b, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69,
- 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x0b, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22,
- 0x78, 0x0a, 0x1d, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x67, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
- 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12,
- 0x18, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x22, 0x5b, 0x0a, 0x21, 0x47, 0x65, 0x74,
- 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xc2, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64,
- 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x27,
- 0x0a, 0x0f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
- 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x6e, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x10, 0x75, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x4e,
- 0x6f, 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x6e,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x75, 0x6e, 0x61, 0x6e,
- 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x3b,
- 0x0a, 0x1a, 0x61, 0x6b, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x17, 0x61, 0x6b, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x52, 0x0a, 0x18, 0x47,
- 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22,
- 0x9a, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f,
- 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61,
- 0x74, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
- 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xaf, 0x01, 0x0a,
- 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x2e, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12,
+ 0x32, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x77, 0x61, 0x72,
+ 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x0b, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x52, 0x0b, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x78,
+ 0x0a, 0x1d, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x67, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e,
+ 0x0a, 0x0a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18,
+ 0x0a, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x22, 0x5b, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61,
+ 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xc2, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69,
+ 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x27, 0x0a,
+ 0x0f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65,
+ 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x6e, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x10, 0x75, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f,
+ 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x6e, 0x61,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x75, 0x6e, 0x61, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12,
+ 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a,
+ 0x1a, 0x61, 0x6b, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x17, 0x61, 0x6b, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x58, 0x0a, 0x1e, 0x44, 0x65,
+ 0x74, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x73,
+ 0x63, 0x61, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12,
- 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0x2e,
- 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd4,
- 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f,
- 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f,
- 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e,
- 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x1d, 0x47, 0x65, 0x74,
- 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x22, 0xd2, 0x01, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12,
- 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x64, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x76, 0x61, 0x6c,
- 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c,
- 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbd, 0x01,
- 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74,
- 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x23,
- 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x32, 0x0a,
- 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x22, 0x4a, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a,
- 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x5e, 0x0a,
- 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x65, 0x72, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x1f, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x6f,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x61, 0x73, 0x5f, 0x6b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x4b, 0x61, 0x72,
+ 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0b,
+ 0x68, 0x61, 0x73, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x43, 0x61, 0x73, 0x74, 0x41, 0x69, 0x22, 0x52, 0x0a, 0x18,
+ 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x46, 0x0a,
- 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xf4, 0x01, 0x0a, 0x19, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53,
- 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x73, 0x68, 0x61,
- 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x73, 0x68, 0x61, 0x72, 0x65,
- 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2c,
- 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72,
- 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x5e, 0x0a, 0x24,
- 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x22, 0x9a, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74,
+ 0x61, 0x74, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xaf, 0x01,
+ 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a,
+ 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x22,
+ 0x2e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22,
+ 0x5b, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xee, 0x01, 0x0a,
- 0x25, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68,
- 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0d, 0x62, 0x79, 0x5f, 0x6e, 0x6f, 0x64,
- 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x79, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x62,
- 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x61, 0x0a, 0x10, 0x42, 0x79,
- 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a,
- 0x23, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68,
- 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e,
- 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x22, 0x40, 0x0a, 0x24, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
- 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x4f, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x30, 0x0a,
- 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22,
- 0xf5, 0x17, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x46, 0x0a,
- 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f,
- 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67,
- 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x43, 0x70, 0x75, 0x73, 0x12, 0x48, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x5f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x0d, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62,
- 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x48, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x12,
- 0x48, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x76, 0x6d, 0x65, 0x18, 0x71, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x76, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x17,
- 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
- 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
- 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
- 0x69, 0x65, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x5f, 0x74,
- 0x69, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x54, 0x69, 0x70, 0x88,
- 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63,
- 0x70, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52,
- 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x70, 0x75, 0x73, 0x54, 0x69, 0x70,
- 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
- 0x68, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18,
- 0x1d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x16, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x48, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x54, 0x69, 0x70, 0x88,
- 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x67,
- 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1e,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01,
- 0x01, 0x12, 0x31, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52,
- 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x54, 0x69,
- 0x70, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x76, 0x6d, 0x65, 0x5f, 0x74, 0x69, 0x70, 0x18,
- 0x72, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x76, 0x6d, 0x65, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01,
- 0x12, 0x2b, 0x0a, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x3b, 0x0a,
- 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x25,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x61, 0x72, 0x63,
- 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x26, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63,
- 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x27, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62,
- 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06,
- 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65,
- 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x5f, 0x74, 0x69,
- 0x70, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x08, 0x7a, 0x6f, 0x6e, 0x65, 0x73,
- 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74,
- 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x2e, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x08, 0x52, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72,
- 0x65, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x2f, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x0f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x54,
- 0x79, 0x70, 0x65, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x6f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x74,
- 0x69, 0x70, 0x18, 0x30, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0a, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x54, 0x69, 0x70, 0x88,
- 0x01, 0x01, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x33, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x06, 0x74, 0x61,
- 0x69, 0x6e, 0x74, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x61, 0x69, 0x6e, 0x74,
- 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
- 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x0a, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x73, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x0e, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x37, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x69,
- 0x6e, 0x74, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x54, 0x61, 0x69, 0x6e, 0x74,
- 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18,
- 0x39, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0b, 0x52, 0x09, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x54,
- 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0c,
- 0x52, 0x0e, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x69, 0x70,
- 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x74, 0x69,
- 0x70, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0d, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x75, 0x70, 0x5f, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x3c, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x0e, 0x52, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x54, 0x61,
- 0x69, 0x6e, 0x74, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x19, 0x6d, 0x61,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x72, 0x6f,
- 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6d,
- 0x61, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x6f, 0x6c,
- 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f,
- 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e,
- 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
- 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x48,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x4e, 0x6f, 0x64,
- 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12,
- 0x2a, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61,
- 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, 0x30, 0x0a, 0x05, 0x61,
- 0x7a, 0x75, 0x72, 0x65, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61,
- 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x2a, 0x0a,
- 0x03, 0x6f, 0x63, 0x69, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
- 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x6f, 0x63, 0x69, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x55,
- 0x20, 0x01, 0x28, 0x03, 0x48, 0x0f, 0x52, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f,
- 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x56, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75,
- 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0b, 0x7a, 0x6f, 0x6e, 0x61,
- 0x6c, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x69, 0x66,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x7a, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68,
- 0x69, 0x66, 0x74, 0x12, 0x2a, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x64, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x4b, 0x61, 0x72,
- 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12,
- 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x6e, 0x20,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a,
+ 0x22, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x22, 0xb8, 0x01, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x61, 0x72,
+ 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0x37, 0x0a,
+ 0x25, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc0, 0x02, 0x0a, 0x1a, 0x4b, 0x61, 0x72, 0x70, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e,
+ 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x3b,
+ 0x0a, 0x0b, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
- 0x5f, 0x61, 0x74, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74,
- 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
- 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
- 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69,
- 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63,
- 0x70, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73,
- 0x5f, 0x74, 0x69, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69,
- 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73,
- 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x76, 0x6d, 0x65,
- 0x5f, 0x74, 0x69, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x5f, 0x74,
- 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74,
- 0x75, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x61, 0x70,
- 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x18,
- 0x0a, 0x16, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73,
- 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x61, 0x69,
- 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x69, 0x73, 0x72,
- 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
- 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69,
- 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x26, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x0a, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0f, 0x61,
+ 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0e, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x41, 0x74,
+ 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64,
+ 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x42, 0x79, 0x22, 0x62, 0x0a, 0x28, 0x44, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65,
+ 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xa6, 0x01,
+ 0x0a, 0x29, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69,
+ 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x63,
+ 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69,
+ 0x63, 0x74, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a,
+ 0x18, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x7a, 0x65, 0x72,
+ 0x6f, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x15, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x44, 0x65, 0x76, 0x5a, 0x65, 0x72, 0x6f, 0x4d,
+ 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x2c, 0x41, 0x63, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4f,
+ 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x49,
+ 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65,
+ 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x6b, 0x6e,
+ 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x42, 0x79, 0x22, 0x3f, 0x0a, 0x2d, 0x41, 0x63,
+ 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c,
+ 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x17, 0x4b,
+ 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61,
+ 0x6d, 0x6c, 0x22, 0x5c, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x22, 0x64, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x16, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6f, 0x6c, 0x41, 0x64, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0x83, 0x01, 0x0a,
+ 0x21, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x64, 0x6f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x22, 0x5d, 0x0a, 0x27, 0x50, 0x72, 0x65,
- 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x03, 0x6e, 0x72, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x03, 0x6e, 0x72, 0x63, 0x22, 0xb2, 0x03, 0x0a, 0x18, 0x4e, 0x6f, 0x64,
- 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x22, 0x60, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x41, 0x64, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x6f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x65, 0x73, 0x22, 0xd4, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x70,
+ 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f,
+ 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
+ 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x57, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0xd2, 0x01, 0x0a, 0x18, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f,
+ 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f,
+ 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e,
+ 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65,
+ 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x64, 0x0a,
+ 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x42, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x61, 0x72,
+ 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x22, 0x46, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xa6, 0x02, 0x0a, 0x19,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x74, 0x61,
+ 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x33, 0x0a, 0x16, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70,
+ 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x13, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x5f,
- 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x59, 0x61, 0x6d, 0x6c,
- 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
- 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+ 0x65, 0x72, 0x49, 0x64, 0x22, 0xee, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62,
+ 0x0a, 0x0d, 0x62, 0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x62, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x1a, 0x61, 0x0a, 0x10, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x40, 0x0a, 0x24,
+ 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x4f,
+ 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22,
+ 0x66, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73,
+ 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
+ 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8c, 0x1a, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
+ 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a,
+ 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69,
+ 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65,
+ 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x70,
+ 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x70, 0x75, 0x73, 0x12, 0x48, 0x0a,
+ 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x76,
+ 0x69, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x79, 0x70, 0x65,
+ 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
+ 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69,
+ 0x7a, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12,
+ 0x3e, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x70,
+ 0x65, 0x73, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x73, 0x12,
+ 0x3c, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x45, 0x0a,
+ 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f,
+ 0x6e, 0x76, 0x6d, 0x65, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
+ 0x4e, 0x76, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18,
+ 0x1a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01,
+ 0x01, 0x12, 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61,
+ 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x01, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69,
+ 0x6c, 0x69, 0x65, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18,
+ 0x1c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x43, 0x70, 0x75, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x69,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73,
+ 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52,
+ 0x16, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x79, 0x70, 0x65, 0x72, 0x76, 0x69,
+ 0x73, 0x6f, 0x72, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x16,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18,
+ 0x1f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x73, 0x5f,
+ 0x74, 0x69, 0x70, 0x18, 0x75, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x11, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01,
+ 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x6f,
+ 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x76, 0x6d, 0x65, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x72, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x07, 0x52, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f,
+ 0x63, 0x61, 0x6c, 0x4e, 0x76, 0x6d, 0x65, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a,
+ 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x52, 0x05, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0d, 0x61, 0x72,
+ 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74,
+ 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63,
+ 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x12, 0x20, 0x0a, 0x09, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x2d,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x08, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x54, 0x69, 0x70,
+ 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74,
+ 0x75, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09,
+ 0x52, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x54,
+ 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
+ 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x0a, 0x52, 0x0f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65,
+ 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18,
+ 0x30, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0b, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12,
+ 0x36, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x06, 0x74, 0x61, 0x69, 0x6e, 0x74,
+ 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x38,
+ 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x35, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x72,
+ 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x64, 0x69,
+ 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69,
+ 0x74, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73,
+ 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x37, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x52,
+ 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x54, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x22,
+ 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x39, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x54, 0x69, 0x70, 0x88,
+ 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0d, 0x52, 0x0e, 0x64,
+ 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01,
+ 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x3b,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x0e, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x54, 0x69,
+ 0x70, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f,
+ 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x0f, 0x52, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x54, 0x61, 0x69, 0x6e, 0x74,
+ 0x73, 0x54, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x19, 0x6d, 0x61, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6d, 0x61, 0x73, 0x74,
+ 0x65, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x48, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c,
+ 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x2a, 0x0a, 0x03,
+ 0x67, 0x63, 0x70, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72,
+ 0x65, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6f, 0x63,
+ 0x69, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x52, 0x03, 0x6f, 0x63, 0x69, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f,
+ 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x55, 0x20, 0x01, 0x28,
+ 0x03, 0x48, 0x10, 0x52, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
+ 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
+ 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f,
+ 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0b, 0x7a, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73,
+ 0x68, 0x69, 0x66, 0x74, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x7a, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x69, 0x66, 0x74,
+ 0x12, 0x2a, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x39, 0x0a, 0x0a,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x59, 0x0a,
- 0x1f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
- 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0xb0, 0x03, 0x0a, 0x20, 0x53, 0x75, 0x67,
- 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a,
- 0x0e, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
- 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
- 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
- 0x4e, 0x67, 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0c, 0x6e, 0x67, 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12,
- 0x63, 0x0a, 0x0f, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74,
- 0x65, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65,
- 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x2e, 0x4e, 0x67, 0x54, 0x6f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6e, 0x67, 0x54, 0x6f, 0x53, 0x75, 0x67, 0x67, 0x65,
- 0x73, 0x74, 0x65, 0x64, 0x1a, 0x61, 0x0a, 0x11, 0x4e, 0x67, 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67,
- 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, 0x0a, 0x12, 0x4e, 0x67, 0x54, 0x6f, 0x53,
- 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x2a,
- 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64,
- 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
- 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x73, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x73, 0x22, 0x8d, 0x02, 0x0a, 0x28, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e,
- 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61,
- 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x12,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79,
- 0x70, 0x65, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x73, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x73, 0x22, 0x86, 0x03, 0x0a, 0x0d, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a,
- 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
- 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
- 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16,
- 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
- 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69,
- 0x6e, 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c,
- 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
- 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x61,
- 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x11,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
- 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x01, 0x52,
- 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
- 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x5a, 0x0a, 0x2b, 0x47,
- 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73,
- 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x6b, 0x69,
- 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a,
+ 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x73, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x76, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x44, 0x0a, 0x1e, 0x75, 0x6e, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74,
+ 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b,
+ 0x65, 0x79, 0x73, 0x18, 0x77, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c, 0x75, 0x6e, 0x72, 0x65, 0x70,
+ 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
+ 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x18,
+ 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69,
+ 0x6c, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x1b,
+ 0x0a, 0x19, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x68, 0x79, 0x70, 0x65,
+ 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42,
+ 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61,
+ 0x70, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x76, 0x6d, 0x65, 0x5f,
+ 0x74, 0x69, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x5f, 0x74, 0x69,
+ 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75,
+ 0x72, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x61, 0x70, 0x61,
+ 0x63, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x18, 0x0a,
+ 0x16, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74,
+ 0x65, 0x6d, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x61, 0x69, 0x6e,
+ 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x69, 0x73, 0x72, 0x75,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x70,
+ 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x26, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x22, 0x5d, 0x0a, 0x27, 0x50, 0x72, 0x65, 0x76,
+ 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x03, 0x6e, 0x72, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x52, 0x03, 0x6e, 0x72, 0x63, 0x22, 0xb2, 0x03, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x5f, 0x79,
+ 0x61, 0x6d, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x12,
+ 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41,
+ 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x59, 0x0a, 0x1f,
+ 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0xb0, 0x03, 0x0a, 0x20, 0x53, 0x75, 0x67, 0x67,
+ 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0e,
+ 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75,
+ 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e,
+ 0x67, 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0c, 0x6e, 0x67, 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x63,
+ 0x0a, 0x0f, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65,
+ 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x2e, 0x4e, 0x67, 0x54, 0x6f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6e, 0x67, 0x54, 0x6f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x65, 0x64, 0x1a, 0x61, 0x0a, 0x11, 0x4e, 0x67, 0x54, 0x6f, 0x4f, 0x72, 0x69, 0x67, 0x69,
+ 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, 0x0a, 0x12, 0x4e, 0x67, 0x54, 0x6f, 0x53, 0x75,
+ 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd6, 0x01, 0x0a, 0x24, 0x53,
+ 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x22, 0xf0, 0x02, 0x0a, 0x25, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a,
+ 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x30, 0x0a,
+ 0x09, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
+ 0x3e, 0x0a, 0x0b, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64,
+ 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x41,
+ 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65,
+ 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x05, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xc1, 0x01, 0x0a, 0x28, 0x4c, 0x69,
+ 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67,
+ 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f,
+ 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d,
+ 0x70, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6c, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x22, 0xcb, 0x02,
+ 0x0a, 0x1e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67,
+ 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23,
+ 0x0a, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67,
+ 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75,
+ 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52,
+ 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70,
+ 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x75,
+ 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x22, 0xe5, 0x05, 0x0a, 0x14,
+ 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2d, 0x0a,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, 0x06,
+ 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
+ 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x52, 0x06, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x12, 0x36,
+ 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65,
+ 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
+ 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
+ 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x67, 0x67, 0x65,
+ 0x73, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x65, 0x76, 0x69,
+ 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x45,
+ 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63,
+ 0x65, 0x12, 0x46, 0x0a, 0x1d, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d,
+ 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x75,
+ 0x73, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x1a, 0x65, 0x73, 0x74, 0x69,
+ 0x6d, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x53, 0x61, 0x76, 0x69,
+ 0x6e, 0x67, 0x73, 0x55, 0x73, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x18, 0x61, 0x64, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+ 0x69, 0x65, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x16, 0x61, 0x64, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x73, 0x12, 0x49, 0x0a, 0x1f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e,
+ 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67,
+ 0x73, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x1b, 0x75,
+ 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79,
+ 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x55, 0x73, 0x64, 0x88, 0x01, 0x01, 0x42, 0x20, 0x0a,
+ 0x1e, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x74,
+ 0x68, 0x6c, 0x79, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x75, 0x73, 0x64, 0x42,
+ 0x22, 0x0a, 0x20, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f,
+ 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x5f,
+ 0x75, 0x73, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69,
+ 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x12,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x79, 0x61,
+ 0x6d, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+ 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75,
+ 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x79, 0x61,
+ 0x6d, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xc2, 0x01, 0x0a,
+ 0x12, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x69, 0x64, 0x65,
+ 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
+ 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73,
+ 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x65, 0x66, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x22, 0x89, 0x01, 0x0a, 0x15, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x75,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x22, 0xc9, 0x02,
+ 0x0a, 0x11, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
+ 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64,
+ 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x3c, 0x0a, 0x0e, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x70,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x0d,
+ 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x34, 0x0a,
+ 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x1e, 0x75, 0x6e, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65,
+ 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c, 0x75, 0x6e, 0x72,
+ 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x2a, 0x47, 0x65,
+ 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x42,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x73, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
+ 0x22, 0x8d, 0x02, 0x0a, 0x28, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x12, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+ 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x73, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
+ 0x22, 0x86, 0x03, 0x0a, 0x0d, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
+ 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64,
- 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x22, 0x99, 0x02, 0x0a, 0x29, 0x53, 0x65, 0x61, 0x72,
- 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x61, 0x72,
- 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x12, 0x3e, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
- 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
- 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x6c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x22, 0x2b, 0x0a, 0x15, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x22, 0x3e, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x61, 0x72,
- 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x22, 0x2b, 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x61,
- 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a,
- 0x11, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 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, 0x22, 0x54, 0x0a, 0x1e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x22, 0x55, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x37, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e,
- 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
- 0x22, 0x53, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0c,
+ 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65,
+ 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65,
+ 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x01, 0x52, 0x10, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88,
+ 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x5a, 0x0a, 0x2b, 0x47, 0x65, 0x74,
+ 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x42, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x6b, 0x69, 0x6e, 0x64,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x05,
+ 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x22, 0x99, 0x02, 0x0a, 0x29, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x3e,
+ 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x31,
+ 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x61,
+ 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x22, 0x2b, 0x0a, 0x15, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65,
+ 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3e,
+ 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2b,
+ 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x4c,
+ 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 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, 0x22, 0x54, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x55,
+ 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x51, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x52, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xbf, 0x03, 0x0a,
- 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a,
- 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b,
- 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
- 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
- 0x5f, 0x61, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74,
- 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x6f,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x18, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x37, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x53,
+ 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x32, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x22, 0x51, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x52, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc1,
- 0x01, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
- 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61,
- 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xbf, 0x03, 0x0a, 0x10, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
+ 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x6f, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12,
- 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
- 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x16, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0a,
- 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x10, 0x5a, 0x6f,
- 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e,
- 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
- 0x73, 0x68, 0x69, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x72, 0x65, 0x73,
- 0x70, 0x65, 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x69, 0x66, 0x74, 0x12, 0x30,
- 0x0a, 0x14, 0x65, 0x76, 0x69, 0x63, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64,
- 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x76,
- 0x69, 0x63, 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73,
- 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x66,
- 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61,
- 0x6c, 0x6c, 0x6f, 0x77, 0x5a, 0x6f, 0x6e, 0x65, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
- 0x22, 0x47, 0x0a, 0x05, 0x54, 0x61, 0x69, 0x6e, 0x74, 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, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x10, 0x44, 0x69, 0x73,
- 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a,
- 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
- 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1a, 0x0a,
- 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x02, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f,
- 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78,
- 0x70, 0x69, 0x72, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a,
- 0x17, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x66, 0x74,
- 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14,
- 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
- 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d,
- 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x61, 0x63, 0x65,
- 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x32, 0x0a,
- 0x07, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74,
- 0x73, 0x22, 0x3a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x86, 0x0a,
- 0x0a, 0x10, 0x41, 0x57, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65,
- 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x13, 0x73,
- 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72,
- 0x6d, 0x73, 0x12, 0x64, 0x0a, 0x1d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65,
- 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x1a, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x23, 0x63, 0x61, 0x70, 0x61,
- 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x20,
- 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73,
- 0x12, 0x42, 0x0a, 0x1b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x75,
- 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61,
- 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x12, 0x61, 0x6d, 0x69, 0x5f, 0x73, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x4d, 0x49, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x10, 0x61, 0x6d, 0x69, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x61,
- 0x6d, 0x69, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x01, 0x52, 0x09, 0x61, 0x6d, 0x69, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12,
- 0x20, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01,
- 0x01, 0x12, 0x17, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x03, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e,
- 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x09,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x61,
- 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x41, 0x57, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61,
- 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62,
- 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x48, 0x05, 0x52, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12,
- 0x4e, 0x0a, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63,
- 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12,
- 0x54, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x06, 0x52, 0x13, 0x69,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65,
- 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01,
- 0x28, 0x08, 0x48, 0x07, 0x52, 0x12, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4d, 0x6f,
- 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x6d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
- 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x08,
- 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18,
- 0x10, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x88, 0x01, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1e, 0x0a, 0x1c,
- 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0d, 0x0a, 0x0b,
- 0x5f, 0x61, 0x6d, 0x69, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
- 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f,
- 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6b, 0x75, 0x62, 0x65,
- 0x6c, 0x65, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x16, 0x0a,
- 0x14, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74,
- 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63,
- 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x45, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72,
- 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x62, 0x0a,
- 0x1b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69,
- 0x6c, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11,
- 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52,
- 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65,
- 0x73, 0x22, 0x42, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x52,
- 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x22, 0x49,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x78,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc1, 0x01, 0x0a,
+ 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61,
+ 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
+ 0x22, 0x55, 0x0a, 0x16, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x10, 0x5a, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x13,
+ 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x68,
+ 0x69, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x72, 0x65, 0x73, 0x70, 0x65,
+ 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x69, 0x66, 0x74, 0x12, 0x30, 0x0a, 0x14,
+ 0x65, 0x76, 0x69, 0x63, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x76, 0x69, 0x63,
+ 0x74, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2e,
+ 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x66, 0x61, 0x6c,
+ 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x5a, 0x6f, 0x6e, 0x65, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x47,
+ 0x0a, 0x05, 0x54, 0x61, 0x69, 0x6e, 0x74, 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, 0x12,
+ 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x72, 0x75,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x02, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
+ 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x69,
+ 0x72, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x17, 0x74,
+ 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72,
+ 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x74,
+ 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x45, 0x6d, 0x70,
+ 0x74, 0x79, 0x12, 0x47, 0x0a, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x74, 0x65,
+ 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65,
+ 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x62,
+ 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x22,
+ 0x3a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74,
+ 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x86, 0x0a, 0x0a, 0x10,
+ 0x41, 0x57, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x4e, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x13, 0x73, 0x75, 0x62,
+ 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73,
+ 0x12, 0x64, 0x0a, 0x1d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x1a, 0x73, 0x65, 0x63, 0x75,
+ 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x23, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69,
+ 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70,
+ 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x20, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x42,
+ 0x0a, 0x1b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c,
+ 0x69, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65,
+ 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88,
+ 0x01, 0x01, 0x12, 0x45, 0x0a, 0x12, 0x61, 0x6d, 0x69, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x4d, 0x49, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x10, 0x61, 0x6d, 0x69, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6d, 0x69,
+ 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52,
+ 0x09, 0x61, 0x6d, 0x69, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a,
+ 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x02, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12,
+ 0x17, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52,
+ 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x04, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73,
+ 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x41, 0x57, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73,
+ 0x12, 0x3b, 0x0a, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c,
+ 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48,
+ 0x05, 0x52, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a,
+ 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x54, 0x0a,
+ 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74,
+ 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x06, 0x52, 0x13, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f,
+ 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08,
+ 0x48, 0x07, 0x52, 0x12, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x6e, 0x69,
+ 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x08, 0x52, 0x0f,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88,
+ 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01,
+ 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61,
+ 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+ 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61,
+ 0x6d, 0x69, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x75, 0x73,
+ 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65,
+ 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65,
+ 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73,
+ 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x16, 0x0a, 0x14, 0x5f,
+ 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72,
+ 0x69, 0x6e, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x22, 0x45, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f,
+ 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x62, 0x0a, 0x1b, 0x47,
+ 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x10, 0x69,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x22,
+ 0x42, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69,
+ 0x7a, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c,
+ 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
+ 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3b, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x0d, 0x69,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x18,
+ 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75,
+ 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+ 0x73, 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x53, 0x68, 0x61, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e,
+ 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, 0x0e,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x73, 0x22, 0x49,
0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f,
- 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x49, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x48, 0x0a, 0x0d, 0x49, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23,
+ 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53,
+ 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x10,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a,
+ 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x12, 0x12, 0x0a, 0x04,
+ 0x76, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x63, 0x70, 0x75,
+ 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
+ 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a,
0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61,
- 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61,
- 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x23,
- 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e,
- 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43,
- 0x50, 0x55, 0x12, 0x12, 0x0a, 0x04, 0x76, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x04, 0x76, 0x63, 0x70, 0x75, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
- 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x10, 0x49,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
- 0x73, 0x22, 0x6a, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63,
- 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f,
+ 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x6a, 0x0a, 0x1d, 0x47,
+ 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
+ 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x13,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
+ 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67,
+ 0x6f, 0x72, 0x79, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74,
+ 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75,
+ 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x53, 0x0a, 0x17, 0x47, 0x65,
+ 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50,
+ 0x55, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x70, 0x75, 0x73, 0x22,
+ 0x46, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79,
+ 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27,
+ 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x5f, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x41, 0x0a,
- 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73,
- 0x22, 0x53, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43,
- 0x50, 0x55, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x69,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x43, 0x70, 0x75, 0x73, 0x22, 0x46, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72,
- 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x5f, 0x0a,
- 0x1c, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
- 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52,
- 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x97,
- 0x01, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62,
- 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e,
- 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a,
- 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb9, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x54,
- 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x01, 0x0a, 0x1f, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
- 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e,
- 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61,
- 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x12, 0x53, 0x75, 0x62,
+ 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12,
+ 0x38, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0xb9, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d,
+ 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72,
+ 0x6d, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67,
+ 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc,
+ 0x01, 0x0a, 0x1f, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72,
+ 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65,
+ 0x72, 0x6d, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
+ 0x74, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e,
+ 0x65, 0x72, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, 0x01,
+ 0x0a, 0x0f, 0x41, 0x4d, 0x49, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72,
+ 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+ 0x4d, 0x49, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x2e, 0x54,
+ 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x73, 0x6d, 0x5f,
+ 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x73, 0x73, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x1a, 0x37, 0x0a,
+ 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x0a, 0x0a, 0x14, 0x4b, 0x75, 0x62, 0x65, 0x6c,
+ 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6e, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6e, 0x73,
+ 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x64, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x70, 0x6f, 0x64, 0x73, 0x50,
+ 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65,
+ 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0d, 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x72, 0x65, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6b, 0x75, 0x62,
+ 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x76, 0x69,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45,
+ 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0c, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x72, 0x64, 0x12, 0x53,
+ 0x0a, 0x0d, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x18,
+ 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+ 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x6f, 0x66, 0x74, 0x12, 0x76, 0x0a, 0x1a, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f,
+ 0x66, 0x74, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x17, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74,
+ 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x45, 0x0a, 0x1d, 0x65,
+ 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x5f,
+ 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x05, 0x48, 0x02, 0x52, 0x19, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61,
+ 0x78, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88,
+ 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x68,
+ 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x1b, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63, 0x48, 0x69, 0x67, 0x68, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68,
+ 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a,
+ 0x1e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68,
+ 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x1a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63,
+ 0x4c, 0x6f, 0x77, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66,
+ 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52,
+ 0x0b, 0x63, 0x70, 0x75, 0x43, 0x66, 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x1a,
+ 0x41, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x64, 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, 0x1a, 0x3f, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0xf6, 0x01, 0x0a, 0x0f, 0x41, 0x4d, 0x49, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x35, 0x0a,
- 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x4d, 0x49, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x54, 0x65, 0x72, 0x6d, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04,
- 0x74, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65,
- 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23,
- 0x0a, 0x0d, 0x73, 0x73, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x73, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x0a, 0x0a,
- 0x14, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x64, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x44, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f,
- 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x50,
- 0x6f, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x73, 0x5f, 0x70,
- 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52,
- 0x0b, 0x70, 0x6f, 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12,
- 0x59, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74,
- 0x65, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0d, 0x6b, 0x75,
- 0x62, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c,
- 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0c, 0x6b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12,
- 0x53, 0x0a, 0x0d, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x72, 0x64,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x72,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x48, 0x61, 0x72, 0x64, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x76, 0x69,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74, 0x12, 0x76, 0x0a, 0x1a, 0x65, 0x76, 0x69,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65,
- 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x69, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x12, 0x45, 0x0a, 0x1d, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61,
+ 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48,
+ 0x61, 0x72, 0x64, 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, 0x1a, 0x3f, 0x0a, 0x11, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x53, 0x6f, 0x66, 0x74, 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, 0x1a, 0x4a, 0x0a, 0x1c, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x6f, 0x66, 0x74, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 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, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x42, 0x10,
+ 0x0a, 0x0e, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65,
+ 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61,
0x78, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x19, 0x65, 0x76, 0x69, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1f, 0x69, 0x6d, 0x61, 0x67,
- 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,
- 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x05, 0x48, 0x03, 0x52, 0x1b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63, 0x48, 0x69, 0x67, 0x68,
- 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f,
- 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x1a, 0x69,
- 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63, 0x4c, 0x6f, 0x77, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
- 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d,
- 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x43, 0x66, 0x73, 0x51, 0x75, 0x6f,
- 0x74, 0x61, 0x88, 0x01, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52,
- 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 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, 0x1a, 0x3f, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65,
- 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 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, 0x1a, 0x3f, 0x0a, 0x11, 0x45, 0x76, 0x69,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x6f, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f,
+ 0x68, 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x5f, 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+ 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x70,
+ 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x22, 0xb4, 0x01, 0x0a, 0x12,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x62, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03, 0x65, 0x62,
+ 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0a, 0x72, 0x6f, 0x6f,
+ 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65,
+ 0x62, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x22, 0x9d, 0x04, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x12, 0x37, 0x0a, 0x15, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x08, 0x48, 0x00, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x54, 0x65, 0x72,
+ 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x65,
+ 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01,
+ 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17,
+ 0x0a, 0x04, 0x69, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x04,
+ 0x69, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0a, 0x6b, 0x6d, 0x73, 0x5f, 0x6b,
+ 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x6b,
+ 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x04, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01,
+ 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70,
+ 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72,
+ 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x18, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52,
+ 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24,
+ 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70,
+ 0x65, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f,
+ 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c,
+ 0x0a, 0x0a, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05,
+ 0x5f, 0x69, 0x6f, 0x70, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65,
+ 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68,
+ 0x70, 0x75, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61,
+ 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69,
+ 0x7a, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79,
+ 0x70, 0x65, 0x22, 0xb0, 0x02, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x65,
+ 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x0c, 0x68, 0x74, 0x74, 0x70, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01,
+ 0x12, 0x31, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x10,
+ 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36,
+ 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x75, 0x74, 0x5f,
+ 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x17, 0x68, 0x74, 0x74, 0x70,
+ 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x6f, 0x70, 0x4c, 0x69,
+ 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0a, 0x68,
+ 0x74, 0x74, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e,
+ 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x15,
+ 0x0a, 0x13, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70,
+ 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x6f, 0x70, 0x5f,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0xfa, 0x04, 0x0a, 0x10, 0x47, 0x43, 0x50, 0x4e, 0x6f, 0x64,
+ 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52,
+ 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65,
+ 0x72, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x6d,
+ 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x15, 0x6b,
+ 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x14, 0x6b, 0x75, 0x62, 0x65,
+ 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50,
+ 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50,
+ 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+ 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x74,
+ 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x05, 0x64, 0x69, 0x73, 0x6b,
+ 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x43, 0x50, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x1a,
+ 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x45, 0x76,
- 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74, 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, 0x1a, 0x4a, 0x0a, 0x1c, 0x45,
- 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x66, 0x74, 0x47, 0x72, 0x61, 0x63, 0x65,
- 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
- 0x70, 0x6f, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x5f, 0x70, 0x65,
- 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x65, 0x76, 0x69, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x63,
- 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73,
- 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f,
- 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68,
- 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42,
- 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74,
- 0x61, 0x22, 0xb4, 0x01, 0x0a, 0x12, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
- 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a,
- 0x0a, 0x03, 0x65, 0x62, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
- 0x48, 0x01, 0x52, 0x03, 0x65, 0x62, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x6f,
- 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48,
- 0x02, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x88, 0x01, 0x01,
- 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x62, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x6f, 0x6f,
- 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x9d, 0x04, 0x0a, 0x0b, 0x42, 0x6c, 0x6f,
- 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x15, 0x64, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x4f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
- 0x01, 0x12, 0x21, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65,
- 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x69, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x48, 0x02, 0x52, 0x04, 0x69, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a,
- 0x0a, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x03, 0x52, 0x08, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01,
- 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
- 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67,
- 0x68, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x0a, 0x74, 0x68,
- 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48,
- 0x06, 0x52, 0x18, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24,
- 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a,
- 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0a, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
- 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x6f, 0x70, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
- 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73,
- 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74,
- 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb0, 0x02, 0x0a, 0x0f, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0d,
- 0x68, 0x74, 0x74, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x45, 0x6e, 0x64, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x01, 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1b, 0x68, 0x74, 0x74,
- 0x70, 0x5f, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68,
- 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02,
- 0x52, 0x17, 0x68, 0x74, 0x74, 0x70, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b,
- 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x03, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x88,
- 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x1e, 0x0a, 0x1c, 0x5f,
- 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
- 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0xfa, 0x04, 0x0a, 0x10,
- 0x47, 0x43, 0x50, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63,
- 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x72, 0x6d,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x43, 0x50, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01,
- 0x01, 0x12, 0x56, 0x0a, 0x15, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01,
- 0x52, 0x14, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x06, 0x6c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53,
- 0x70, 0x65, 0x63, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53,
- 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x12, 0x25,
- 0x0a, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x05,
- 0x64, 0x69, 0x73, 0x6b, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6b, 0x75, 0x62,
+ 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x14, 0x47, 0x43, 0x50, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c,
+ 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x22, 0xb6, 0x01, 0x0a, 0x07, 0x47, 0x43, 0x50, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x08,
+ 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
+ 0x73, 0x69, 0x7a, 0x65, 0x47, 0x69, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67,
+ 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67,
+ 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x63, 0x6f, 0x6e,
+ 0x64, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79,
+ 0x42, 0x6f, 0x6f, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72,
+ 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xa5, 0x04, 0x0a, 0x12, 0x41, 0x7a,
+ 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x29, 0x0a, 0x0e, 0x76, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x76, 0x6e, 0x65, 0x74,
+ 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0f, 0x6f,
+ 0x73, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x62, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0c, 0x6f, 0x73, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69,
+ 0x7a, 0x65, 0x47, 0x62, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52,
+ 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12,
+ 0x20, 0x0a, 0x09, 0x66, 0x69, 0x70, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x66, 0x69, 0x70, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01,
+ 0x01, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x61, 0x67, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x07, 0x6b,
+ 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x6c,
+ 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48,
+ 0x04, 0x52, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a,
+ 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48,
+ 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a,
+ 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x18,
- 0x0a, 0x16, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x14, 0x47, 0x43, 0x50, 0x49,
+ 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74,
+ 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f,
+ 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x62, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x70,
+ 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x6c,
+ 0x65, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x42,
+ 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x22, 0xc4, 0x06, 0x0a, 0x19, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x6c,
+ 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x31, 0x0a, 0x12, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x63,
+ 0x70, 0x75, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88,
+ 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75,
+ 0x6f, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x70, 0x75,
+ 0x43, 0x66, 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x63,
+ 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72,
+ 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x63, 0x70, 0x75,
+ 0x43, 0x66, 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01,
+ 0x01, 0x12, 0x49, 0x0a, 0x1f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x68, 0x69,
+ 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x1b, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x47, 0x63, 0x48, 0x69, 0x67, 0x68, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
+ 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68, 0x72,
+ 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x1a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63, 0x4c,
+ 0x6f, 0x77, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67,
+ 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x15, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88,
+ 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x75, 0x6e,
+ 0x73, 0x61, 0x66, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x63, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x55, 0x6e, 0x73, 0x61, 0x66,
+ 0x65, 0x53, 0x79, 0x73, 0x63, 0x74, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69,
+ 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
+ 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x4c, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x29,
+ 0x0a, 0x0e, 0x70, 0x6f, 0x64, 0x5f, 0x70, 0x69, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x08, 0x52, 0x0c, 0x70, 0x6f, 0x64, 0x50, 0x69, 0x64,
+ 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, 0x70,
+ 0x75, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f,
+ 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71,
+ 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68,
+ 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42,
+ 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77,
+ 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f,
+ 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x19,
+ 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67,
+ 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x66, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x70, 0x69,
+ 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x61, 0x0a, 0x14, 0x4f, 0x43, 0x49, 0x49,
0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d,
- 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x07, 0x47, 0x43, 0x50, 0x44, 0x69,
- 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x7a, 0x65, 0x47, 0x69, 0x62, 0x12, 0x1a, 0x0a,
- 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f,
- 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x74, 0x12, 0x30, 0x0a,
- 0x14, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12,
- 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x6f, 0x6f,
- 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22,
- 0xe9, 0x03, 0x0a, 0x12, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61,
- 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x0e, 0x76, 0x6e, 0x65, 0x74, 0x5f, 0x73,
- 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x0c, 0x76, 0x6e, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01,
- 0x01, 0x12, 0x2a, 0x0a, 0x0f, 0x6f, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a,
- 0x65, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0c, 0x6f, 0x73,
- 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x47, 0x62, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a,
- 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x61, 0x6d, 0x69,
- 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x69, 0x70, 0x73, 0x5f, 0x6d, 0x6f,
- 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x66, 0x69, 0x70, 0x73,
- 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x7a, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65,
- 0x63, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67,
- 0x73, 0x12, 0x40, 0x0a, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x7a, 0x75, 0x72,
- 0x65, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x07, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74,
- 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x64, 0x73,
- 0x88, 0x01, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x11, 0x0a, 0x0f,
- 0x5f, 0x76, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42,
- 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x5f, 0x67, 0x62, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61,
- 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x70, 0x73, 0x5f, 0x6d, 0x6f,
- 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x42, 0x0b,
- 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x22, 0xc4, 0x06, 0x0a, 0x19,
- 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x70, 0x75,
- 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x63, 0x70, 0x75, 0x4d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d,
- 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x43, 0x66, 0x73, 0x51, 0x75, 0x6f,
- 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73,
- 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x63, 0x70, 0x75, 0x43, 0x66, 0x73, 0x51, 0x75, 0x6f,
- 0x74, 0x61, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1f, 0x69,
- 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72,
- 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x1b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63, 0x48,
- 0x69, 0x67, 0x68, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f,
- 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,
- 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04,
- 0x52, 0x1a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x63, 0x4c, 0x6f, 0x77, 0x54, 0x68, 0x72, 0x65,
- 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
- 0x3b, 0x0a, 0x17, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x05, 0x52, 0x15, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x4d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16,
- 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x73,
- 0x79, 0x73, 0x63, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x6c,
- 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x53, 0x79, 0x73, 0x63, 0x74,
- 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
- 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x06, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c,
- 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52,
- 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x4d, 0x61, 0x78,
- 0x46, 0x69, 0x6c, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x6f, 0x64, 0x5f,
- 0x70, 0x69, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03,
- 0x48, 0x08, 0x52, 0x0c, 0x70, 0x6f, 0x64, 0x50, 0x69, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74,
- 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63,
- 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15,
- 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x66, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x70,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f,
- 0x67, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
- 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x5f, 0x67, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73,
- 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x1a, 0x0a, 0x18,
- 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
- 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73,
- 0x69, 0x7a, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x42,
- 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x70, 0x69, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x22, 0x61, 0x0a, 0x14, 0x4f, 0x43, 0x49, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25,
- 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x74, 0x6d,
- 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x15, 0x4f, 0x43, 0x49, 0x53, 0x75, 0x62, 0x6e,
- 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x1c, 0x4f, 0x43, 0x49, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65,
- 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x0d, 0x4f, 0x43, 0x49, 0x42, 0x6f, 0x6f,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x5f,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x67,
- 0x62, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x6f, 0x6f, 0x74, 0x56, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x47, 0x62, 0x73, 0x12, 0x34, 0x0a,
- 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x76, 0x70, 0x75,
- 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13,
- 0x62, 0x6f, 0x6f, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x56, 0x70, 0x75, 0x73, 0x50, 0x65,
- 0x72, 0x47, 0x62, 0x22, 0x90, 0x03, 0x0a, 0x10, 0x4f, 0x43, 0x49, 0x4c, 0x61, 0x75, 0x6e, 0x63,
- 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x74,
- 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x66, 0x69, 0x72, 0x6d, 0x77,
- 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x66, 0x69, 0x72,
- 0x6d, 0x77, 0x61, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02,
- 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01,
- 0x12, 0x3a, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x03, 0x52, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x23,
- 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x1f, 0x69, 0x73, 0x43,
- 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e,
- 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42,
- 0x13, 0x0a, 0x11, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
- 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72,
- 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x61,
- 0x74, 0x61, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x26,
- 0x0a, 0x24, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
- 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x55, 0x0a, 0x13, 0x4f, 0x43, 0x49, 0x56, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a,
- 0x0b, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x62, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x47, 0x62, 0x73, 0x12, 0x1e, 0x0a,
- 0x0b, 0x76, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x76, 0x70, 0x75, 0x73, 0x50, 0x65, 0x72, 0x47, 0x62, 0x22, 0x91, 0x08,
- 0x0a, 0x10, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x63, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x76, 0x63, 0x6e, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52,
- 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x46,
- 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4f, 0x43, 0x49, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5c, 0x0a, 0x17, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4f, 0x43, 0x49, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x15, 0x73,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x74, 0x6d,
+ 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f,
+ 0x6d, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x15, 0x4f,
+ 0x43, 0x49, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x54, 0x65, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x1c, 0x4f, 0x43, 0x49, 0x53,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x44,
- 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e,
- 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x01, 0x52, 0x10, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
- 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x74,
- 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61,
- 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21,
- 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c,
- 0x79, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x66, 0x72, 0x65,
- 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f,
- 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x46, 0x72, 0x65, 0x65,
- 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x66,
- 0x72, 0x65, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x62,
- 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x42, 0x6f, 0x6f,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x74, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x6f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65,
- 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74,
- 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f,
- 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e,
- 0x74, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74,
- 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x0d,
+ 0x4f, 0x43, 0x49, 0x42, 0x6f, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a,
+ 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a,
+ 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x62, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13,
+ 0x62, 0x6f, 0x6f, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x49, 0x6e,
+ 0x47, 0x62, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x5f, 0x76, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x62, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x6f, 0x6f, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x56, 0x70, 0x75, 0x73, 0x50, 0x65, 0x72, 0x47, 0x62, 0x22, 0x90, 0x03, 0x0a, 0x10, 0x4f, 0x43,
+ 0x49, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d,
+ 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x74,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a,
+ 0x08, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x01, 0x52, 0x08, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26,
+ 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54,
+ 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74,
+ 0x65, 0x44, 0x61, 0x74, 0x61, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x51, 0x0a, 0x23, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74,
+ 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x69, 0x6e,
+ 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48,
+ 0x04, 0x52, 0x1f, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x76,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66,
+ 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x72, 0x65, 0x6d,
+ 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
+ 0x74, 0x79, 0x70, 0x65, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73,
+ 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x55, 0x0a, 0x13,
+ 0x4f, 0x43, 0x49, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x67,
+ 0x62, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e,
+ 0x47, 0x62, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x76, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f,
+ 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x76, 0x70, 0x75, 0x73, 0x50, 0x65,
+ 0x72, 0x47, 0x62, 0x22, 0x91, 0x08, 0x0a, 0x10, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43,
+ 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x63, 0x6e, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x63, 0x6e, 0x49, 0x64, 0x12,
+ 0x43, 0x0a, 0x0e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4f, 0x43, 0x49, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x52, 0x0e, 0x73, 0x75,
+ 0x62, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5c, 0x0a, 0x17,
+ 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
+ 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54,
+ 0x65, 0x72, 0x6d, 0x52, 0x15, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x75, 0x73,
+ 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x08, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12,
+ 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x10, 0x70, 0x72, 0x65, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4e,
+ 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74,
+ 0x61, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
+ 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61,
+ 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
+ 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
+ 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e,
+ 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12,
+ 0x50, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x67,
+ 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x2e, 0x46, 0x72, 0x65, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67,
+ 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4f, 0x43, 0x49, 0x42, 0x6f, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x62,
+ 0x6f, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0e, 0x6c, 0x61, 0x75,
+ 0x6e, 0x63, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4c, 0x61,
+ 0x75, 0x6e, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x6c, 0x61, 0x75,
+ 0x6e, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0d, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x56, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x0c,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d,
+ 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 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, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+ 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x46, 0x72, 0x65, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x46,
- 0x72, 0x65, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a,
- 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70,
- 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x22, 0x6a, 0x0a, 0x1f, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x65,
- 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73,
- 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a,
- 0x10, 0x52, 0x61, 0x77, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65,
- 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x61,
- 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f,
- 0x6f, 0x6c, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
- 0x6e, 0x6f, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xeb, 0x01,
- 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x4b, 0x61,
- 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x61, 0x77, 0x73,
- 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x4b, 0x53, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
- 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x61, 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x03,
- 0x67, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53,
- 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, 0x2a, 0x0a, 0x03, 0x6f, 0x63, 0x69, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
- 0x43, 0x49, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52,
- 0x03, 0x6f, 0x63, 0x69, 0x12, 0x25, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63,
- 0x5f, 0x63, 0x66, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e,
- 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x43, 0x66, 0x67, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x10, 0x41,
- 0x57, 0x53, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12,
- 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x02, 0x6e,
- 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x63, 0x32, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x43, 0x32, 0x4e, 0x6f, 0x64,
- 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x65, 0x63, 0x32, 0x6e, 0x63, 0x22, 0x60, 0x0a,
- 0x10, 0x41, 0x4b, 0x53, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65,
- 0x63, 0x12, 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52,
- 0x02, 0x6e, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x61, 0x6b, 0x73, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x4b, 0x53, 0x4e,
- 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x61, 0x6b, 0x73, 0x6e, 0x63, 0x22,
- 0x26, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63,
+ 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61,
+ 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
+ 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x6a, 0x0a, 0x1f, 0x4b, 0x61, 0x72, 0x70, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f,
+ 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f,
+ 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x10, 0x52, 0x61, 0x77, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x70,
+ 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x25, 0x0a, 0x0e,
+ 0x6e, 0x6f, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x59,
+ 0x61, 0x6d, 0x6c, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36,
+ 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
+ 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x5f, 0x63, 0x66, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x66, 0x67, 0x49, 0x64, 0x12, 0x21,
+ 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73,
+ 0x68, 0x22, 0xa3, 0x01, 0x0a, 0x1e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64,
+ 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x26, 0x0a, 0x0f,
+ 0x66, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x5f, 0x63, 0x66, 0x67, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x43,
+ 0x66, 0x67, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f,
+ 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x50, 0x0a, 0x16, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x43, 0x52, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x98, 0x02, 0x0a, 0x10, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6a, 0x73,
+ 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x4a, 0x73, 0x6f, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe2, 0x04, 0x0a, 0x17, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x43, 0x52, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x6d,
+ 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75,
+ 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
+ 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a,
+ 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1f,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76,
+ 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74,
+ 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
+ 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x63, 0x6f,
+ 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b,
+ 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f,
+ 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x41, 0x74, 0x22, 0x5b, 0x0a, 0x1a, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52, 0x52, 0x75,
+ 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0f, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x6b, 0x75,
+ 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x6b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x1a, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x6d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72,
+ 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e,
+ 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+ 0x57, 0x53, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52,
+ 0x03, 0x61, 0x77, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x4b, 0x53, 0x4b, 0x61,
+ 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x61, 0x6b, 0x73,
+ 0x12, 0x2a, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x50, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, 0x2a, 0x0a, 0x03,
+ 0x6f, 0x63, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53,
+ 0x70, 0x65, 0x63, 0x52, 0x03, 0x6f, 0x63, 0x69, 0x12, 0x25, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x63, 0x66, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x43, 0x66, 0x67, 0x49, 0x64, 0x22,
+ 0x60, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f,
+ 0x6c, 0x52, 0x02, 0x6e, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x63, 0x32, 0x6e, 0x63, 0x18, 0x06,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x43,
+ 0x32, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x65, 0x63, 0x32, 0x6e,
+ 0x63, 0x22, 0x60, 0x0a, 0x10, 0x41, 0x4b, 0x53, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6f, 0x6c, 0x52, 0x02, 0x6e, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x61, 0x6b, 0x73, 0x6e, 0x63,
+ 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x41, 0x4b, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x61, 0x6b,
+ 0x73, 0x6e, 0x63, 0x22, 0x26, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12,
+ 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2a, 0x0a, 0x0c, 0x45,
+ 0x43, 0x32, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63,
- 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2a, 0x0a, 0x0c, 0x45, 0x43, 0x32, 0x4e, 0x6f,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2a, 0x0a, 0x0c, 0x41, 0x4b, 0x53, 0x4e, 0x6f,
0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65,
- 0x6e, 0x74, 0x73, 0x22, 0x2a, 0x0a, 0x0c, 0x41, 0x4b, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22,
- 0x6d, 0x0a, 0x10, 0x47, 0x43, 0x50, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53,
- 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f,
- 0x6c, 0x52, 0x02, 0x6e, 0x70, 0x12, 0x37, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x45, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x2a,
- 0x0a, 0x0c, 0x47, 0x43, 0x45, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a,
- 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
- 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6d, 0x0a, 0x10, 0x4f, 0x43,
- 0x49, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20,
- 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x02, 0x6e, 0x70,
- 0x12, 0x37, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0b, 0x6e, 0x6f,
- 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x2a, 0x0a, 0x0c, 0x4f, 0x43, 0x49,
- 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e,
- 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e,
- 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x93, 0x0a, 0x0a, 0x1b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x6e, 0x74, 0x73, 0x22, 0x6d, 0x0a, 0x10, 0x47, 0x43, 0x50, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x02, 0x6e, 0x70, 0x12, 0x37, 0x0a, 0x0c, 0x6e, 0x6f, 0x64,
+ 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x45, 0x4e, 0x6f, 0x64, 0x65,
+ 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
+ 0x65, 0x73, 0x22, 0x2a, 0x0a, 0x0c, 0x47, 0x43, 0x45, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6d,
+ 0x0a, 0x10, 0x4f, 0x43, 0x49, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70,
+ 0x65, 0x63, 0x12, 0x20, 0x0a, 0x02, 0x6e, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c,
+ 0x52, 0x02, 0x6e, 0x70, 0x12, 0x37, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
+ 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x2a, 0x0a,
+ 0x0c, 0x4f, 0x43, 0x49, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a,
+ 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
+ 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x93, 0x0a, 0x0a, 0x1b, 0x53, 0x74,
+ 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72,
+ 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a,
+ 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+ 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02,
+ 0x52, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a,
+ 0x11, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75,
+ 0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0e, 0x77, 0x61, 0x72, 0x6e,
+ 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a,
+ 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
+ 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48,
+ 0x04, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50,
+ 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d,
+ 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0d,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x50,
+ 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x15, 0x63, 0x72, 0x69, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c,
+ 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x12, 0x63, 0x72, 0x69, 0x74, 0x69,
+ 0x63, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01,
+ 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79,
+ 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x72,
+ 0x6f, 0x6f, 0x6d, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x15,
+ 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x47, 0x69, 0x62, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f,
+ 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64,
+ 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x4d, 0x6f, 0x6e,
+ 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b,
+ 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x48,
+ 0x0a, 0x52, 0x15, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x11, 0x69,
+ 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x10, 0x0a,
+ 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42,
+ 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72,
+ 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77,
+ 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c,
+ 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a,
+ 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64,
+ 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
+ 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x42, 0x1b, 0x0a,
+ 0x19, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63,
+ 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d,
+ 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+ 0x75, 0x73, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e,
+ 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22,
+ 0xa3, 0x08, 0x0a, 0x28, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x3c, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12,
- 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
- 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12,
- 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f,
- 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x18, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x11, 0x77, 0x61, 0x72,
- 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0b,
- 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0e, 0x77, 0x61, 0x72, 0x6e, 0x44, 0x61, 0x79, 0x73,
- 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x61, 0x78,
- 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x15, 0x6d,
- 0x61, 0x78, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x41, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64,
- 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
- 0x48, 0x05, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74,
- 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x15, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
- 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0e, 0x20,
- 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x12, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x44,
- 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d,
- 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0f, 0x20,
- 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x44,
- 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65,
- 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67,
- 0x69, 0x62, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x52,
- 0x65, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x69,
- 0x62, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74,
- 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x11, 0x20, 0x01,
- 0x28, 0x02, 0x48, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79,
- 0x43, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x63, 0x6f,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0f, 0x61,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63,
+ 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63,
+ 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61,
+ 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
+ 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65,
+ 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x11, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61,
+ 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
+ 0x48, 0x03, 0x52, 0x0e, 0x77, 0x61, 0x72, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75,
+ 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70,
+ 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x45, 0x78,
+ 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x0d,
+ 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x36, 0x0a, 0x15, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79,
+ 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48,
+ 0x06, 0x52, 0x12, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x73, 0x54,
+ 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64,
+ 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48,
+ 0x07, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x61, 0x79, 0x73, 0x88,
+ 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65,
+ 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x0d,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x69, 0x7a,
+ 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x69, 0x62, 0x88, 0x01, 0x01,
+ 0x12, 0x34, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f,
+ 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09,
+ 0x52, 0x11, 0x6d, 0x61, 0x78, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74,
+ 0x55, 0x73, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
+ 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0a, 0x52, 0x15, 0x63, 0x6f, 0x6f, 0x6c, 0x64,
+ 0x6f, 0x77, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61,
+ 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74,
+ 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65,
+ 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61,
+ 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x72, 0x69, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c,
+ 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64,
+ 0x61, 0x79, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69,
+ 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62,
+ 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79,
+ 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f,
0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0a, 0x52, 0x15, 0x63,
- 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x32, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
- 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
- 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x34, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72,
- 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
- 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f,
- 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x5f,
- 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x1b, 0x0a, 0x19,
- 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
- 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69,
- 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x18, 0x0a,
- 0x16, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f,
- 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x65, 0x61, 0x64,
- 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x69,
- 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65,
- 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d,
- 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64, 0x42,
- 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e,
- 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xa3, 0x08, 0x0a, 0x28,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x68, 0x0a, 0x29, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
+ 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
+ 0x44, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x43, 0x0a, 0x28,
+ 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e,
- 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01,
- 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41,
- 0x0a, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x02, 0x48, 0x02, 0x52, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01,
- 0x01, 0x12, 0x2e, 0x0a, 0x11, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74,
- 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0e,
- 0x77, 0x61, 0x72, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01,
- 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69,
- 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20,
- 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73,
- 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12,
- 0x2b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44,
- 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x15,
- 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f,
- 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x12, 0x63,
- 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c,
- 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d,
- 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x0c, 0x68,
- 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c,
- 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63,
- 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
- 0x48, 0x08, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63,
- 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x69, 0x62, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14,
- 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74,
- 0x5f, 0x75, 0x73, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x11, 0x6d, 0x61,
- 0x78, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x64, 0x88,
- 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x77,
- 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0f, 0x20,
- 0x01, 0x28, 0x05, 0x48, 0x0a, 0x52, 0x15, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x57,
- 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42,
- 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1d, 0x0a,
- 0x1b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12,
- 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75,
- 0x6c, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e,
- 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42,
- 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
- 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x10, 0x0a,
- 0x0e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x42,
- 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69,
- 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x42, 0x17, 0x0a, 0x15,
- 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73,
- 0x74, 0x5f, 0x75, 0x73, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
- 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
- 0x73, 0x22, 0x68, 0x0a, 0x29, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b,
- 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x44, 0x0a, 0x25, 0x47,
- 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
- 0x64, 0x22, 0x65, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x43, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74,
- 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x6c, 0x0a,
- 0x29, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xc0, 0x08, 0x0a, 0x28,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
+ 0x64, 0x22, 0x6c, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f,
+ 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22,
+ 0xc0, 0x08, 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
+ 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x41, 0x0a, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88,
+ 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x11, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f,
+ 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52,
+ 0x0e, 0x77, 0x61, 0x72, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88,
+ 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x61, 0x6e,
+ 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01,
+ 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x0d, 0x6d, 0x69, 0x6e,
+ 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a,
+ 0x15, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74,
+ 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x12,
+ 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75,
+ 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f,
+ 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x0c,
+ 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x3c, 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e,
+ 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28,
+ 0x05, 0x48, 0x08, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e,
+ 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x69, 0x62, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a,
+ 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73,
+ 0x74, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x11, 0x6d,
+ 0x61, 0x78, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x64,
+ 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
+ 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x10,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x0a, 0x52, 0x15, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01,
+ 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f,
+ 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1d,
+ 0x0a, 0x1b, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x14, 0x0a,
+ 0x12, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66,
+ 0x75, 0x6c, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61,
+ 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61,
+ 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x10,
+ 0x0a, 0x0e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73,
+ 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f,
+ 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x42, 0x17, 0x0a,
+ 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f,
+ 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64,
+ 0x6f, 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
+ 0x64, 0x73, 0x22, 0x68, 0x0a, 0x29, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3b, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x60, 0x0a, 0x28,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63,
- 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b,
- 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48,
- 0x01, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48,
- 0x02, 0x52, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e,
- 0x0a, 0x11, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66,
- 0x75, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0e, 0x77, 0x61, 0x72,
- 0x6e, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3c,
- 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
- 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02,
- 0x48, 0x04, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
- 0x50, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f,
- 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61,
- 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x15, 0x63, 0x72, 0x69,
- 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75,
- 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x12, 0x63, 0x72, 0x69, 0x74,
- 0x69, 0x63, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x88, 0x01,
- 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61,
- 0x79, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64,
- 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6d,
- 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d,
- 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52,
- 0x15, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d,
- 0x65, 0x6e, 0x74, 0x47, 0x69, 0x62, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6d, 0x61, 0x78,
- 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73,
- 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x4d, 0x6f,
- 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x64, 0x88, 0x01, 0x01, 0x12,
- 0x3b, 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64,
- 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05,
- 0x48, 0x0a, 0x52, 0x15, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x57, 0x69, 0x6e, 0x64,
- 0x6f, 0x77, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e,
- 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x1a,
- 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69,
- 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x77, 0x61,
- 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42,
- 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f,
- 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10,
- 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
- 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61,
- 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68,
- 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x42, 0x1b, 0x0a, 0x19,
- 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x72,
- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x62, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75,
- 0x73, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
- 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x68,
- 0x0a, 0x29, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x45,
+ 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x60, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
- 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x29, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65,
- 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
- 0x73, 0x22, 0xda, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07,
- 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
- 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a,
- 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72,
- 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65,
- 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
- 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xd4,
- 0x02, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52,
- 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
- 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x42, 0x15,
- 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22,
- 0x6d, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42,
- 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x59,
- 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73,
+ 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xda, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a,
+ 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
+ 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f,
+ 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18,
+ 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c,
+ 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x5f, 0x61, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74,
+ 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x22, 0xd4, 0x02, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f,
0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x20, 0x55, 0x70, 0x64,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x49,
+ 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x6f,
+ 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
+ 0x65, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x21, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a,
- 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x22, 0x58, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72,
- 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33,
+ 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x22, 0x6d, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x22, 0x59, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x58, 0x0a, 0x20,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a,
- 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x57, 0x0a,
+ 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x33, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x58, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73,
- 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75,
- 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xaf, 0x0b, 0x0a, 0x18, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f,
- 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
- 0x17, 0x0a, 0x07, 0x70, 0x76, 0x63, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x70, 0x76, 0x63, 0x55, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x76, 0x63, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x76, 0x63, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79,
- 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65,
- 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
- 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x63,
- 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
- 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a,
- 0x12, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x64, 0x42,
- 0x79, 0x74, 0x65, 0x73, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x74,
- 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x0d, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x0e, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x19, 0x67, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x5f, 0x72, 0x61,
- 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x79,
- 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x67, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x52, 0x61,
- 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x12, 0x20, 0x0a,
- 0x0c, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x0f, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46, 0x75, 0x6c, 0x6c, 0x12,
- 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63,
- 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x75,
- 0x73, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x55, 0x73, 0x64, 0x12,
- 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x64, 0x18,
- 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x55, 0x73, 0x64,
- 0x12, 0x33, 0x0a, 0x16, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d,
- 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x13, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x6f, 0x6e, 0x74, 0x68,
- 0x6c, 0x79, 0x55, 0x73, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
- 0x1e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x72,
- 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
- 0x52, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x19,
- 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52,
- 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x61,
- 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x48, 0x03, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x41, 0x74,
- 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
- 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
- 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x6f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x4f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x6f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x3d, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x04, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e,
- 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0c, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26,
- 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x3f,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x55, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
- 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72,
- 0x72, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f,
- 0x61, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x50, 0x76,
+ 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x22, 0x58, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49,
+ 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x21, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xaf, 0x0b, 0x0a, 0x18, 0x50, 0x76,
0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a,
- 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6f, 0x0a, 0x23, 0x47, 0x65,
- 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x76, 0x63, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x76, 0x63, 0x55, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08,
+ 0x70, 0x76, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x70, 0x76, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x34, 0x0a,
+ 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
+ 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79,
+ 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x65, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x65, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65,
+ 0x73, 0x12, 0x2b, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f,
+ 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x75,
+ 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27,
+ 0x0a, 0x0f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63,
+ 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x19, 0x67, 0x72, 0x6f, 0x77, 0x74,
+ 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72,
+ 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x67, 0x72, 0x6f, 0x77,
+ 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x44, 0x61,
+ 0x79, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x75, 0x6c,
+ 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64, 0x61, 0x79, 0x73, 0x54, 0x6f, 0x46,
+ 0x75, 0x6c, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63,
+ 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b,
+ 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x10, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6f,
+ 0x73, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68,
+ 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6f,
+ 0x73, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79,
+ 0x55, 0x73, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f,
+ 0x75, 0x73, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x63, 0x6f, 0x73, 0x74, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c,
+ 0x79, 0x55, 0x73, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6c,
+ 0x74, 0x61, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x1b,
+ 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x63, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d,
+ 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x55, 0x73, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
+ 0x21, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x1f, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x88,
+ 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x02, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a,
+ 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x69,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x03, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69,
+ 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3f, 0x0a,
+ 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x3c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
+ 0x76, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52,
+ 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28,
+ 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x3d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
+ 0x69, 0x64, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42,
+ 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x08, 0x0a,
+ 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x70, 0x70, 0x6c,
+ 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x22, 0x47,
+ 0x65, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6f,
+ 0x0a, 0x23, 0x47, 0x65, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
+ 0xba, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52,
+ 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d,
+ 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a,
+ 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x01, 0x0a,
+ 0x25, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x27, 0x47,
+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x07, 0x70, 0x76, 0x63, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x70, 0x76, 0x63, 0x55, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x48, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xba, 0x01, 0x0a, 0x24,
- 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01,
- 0x01, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61,
- 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73,
- 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37,
- 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x6e, 0x65, 0x72,
- 0x61, 0x74, 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x76,
- 0x63, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x76, 0x63,
- 0x55, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x22, 0xaa, 0x01, 0x0a, 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x76, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x73,
+ 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01,
+ 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x22, 0x96, 0x01, 0x0a, 0x26, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x50, 0x76, 0x63,
0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a,
- 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
- 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x6b, 0x69, 0x70, 0x5f,
- 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a,
- 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a,
- 0x0c, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x96, 0x01,
- 0x0a, 0x26, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72,
- 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
- 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x70, 0x76, 0x63, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x70, 0x76, 0x63, 0x55, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x27, 0x50, 0x72, 0x65, 0x76, 0x69,
- 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b,
- 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88,
- 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x22, 0x91, 0x05, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72,
- 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75,
- 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a,
- 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x5f,
- 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x65, 0x6d,
- 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f,
- 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x74, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75,
- 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x12, 0x2d, 0x0a, 0x12,
- 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65,
- 0x6e, 0x63, 0x79, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x10, 0x6e,
- 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x4d, 0x65, 0x6d, 0x6f,
- 0x72, 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28,
- 0x05, 0x48, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
- 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42,
- 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61,
- 0x66, 0x74, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72,
- 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75,
- 0x6c, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01,
- 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f,
- 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x6f, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
- 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xcd, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01,
- 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f,
- 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x6b, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a,
- 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x22, 0xf1, 0x04, 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45,
- 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
- 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x47,
- 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x74, 0x12,
- 0x20, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x74, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41,
- 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61,
- 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67,
- 0x65, 0x41, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64,
- 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x11, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f,
- 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11,
- 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x27, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x66, 0x74,
- 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x43,
- 0x70, 0x75, 0x41, 0x66, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x70,
- 0x75, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0xc4, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54,
- 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a,
- 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88,
- 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a,
- 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52,
- 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67,
- 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x7f,
- 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
- 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
- 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22,
- 0xd5, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x76, 0x63, 0x5f, 0x75, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x76, 0x63, 0x55, 0x69, 0x64, 0x12, 0x1b, 0x0a,
+ 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x27, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f,
+ 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x91, 0x05, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88,
- 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07,
- 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74,
- 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x3c, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x72,
+ 0x75, 0x6c, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x74,
+ 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
+ 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74,
+ 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6d,
+ 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x2d, 0x0a, 0x10, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x66,
+ 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x77,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x28,
+ 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+ 0x0e, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x20, 0x4c,
+ 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f,
+ 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a,
+ 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09,
+ 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x6f, 0x0a, 0x21, 0x4c, 0x69, 0x73,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34,
+ 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xcd, 0x01, 0x0a, 0x1c, 0x4c,
+ 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42,
+ 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x6b, 0x0a, 0x1d, 0x4c, 0x69,
+ 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xf1, 0x04, 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74,
+ 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23,
+ 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x67, 0x65, 0x6e,
+ 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72,
+ 0x75, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a,
+ 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x74, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x4c, 0x69,
+ 0x6d, 0x69, 0x74, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61,
+ 0x67, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x70, 0x75,
+ 0x55, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x68, 0x72, 0x6f, 0x74,
+ 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x11, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x46, 0x72,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65,
+ 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x61,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x70, 0x75,
+ 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0b,
+ 0x6e, 0x65, 0x77, 0x43, 0x70, 0x75, 0x41, 0x66, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39,
+ 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65,
+ 0x77, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0xc4, 0x01, 0x0a, 0x28,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49,
+ 0x64, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01,
+ 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x05, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d,
+ 0x0a, 0x0b, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a,
+ 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x22, 0x7f, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
- 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14,
- 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xcb, 0x08, 0x0a, 0x1f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3c, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a,
+ 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f,
+ 0x74, 0x61, 0x6c, 0x22, 0xd5, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19,
+ 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x25, 0x4c,
+ 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54, 0x68,
+ 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72,
+ 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x3a, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a,
+ 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e,
+ 0x6f, 0x74, 0x49, 0x6e, 0x22, 0xe4, 0x10, 0x0a, 0x1f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
@@ -34092,1713 +51265,4231 @@ var file_api_v1_recommendation_proto_rawDesc = []byte{
0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08,
+ 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
+ 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x48, 0x01, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5e,
+ 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
+ 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3e,
+ 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28,
+ 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18,
+ 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c,
+ 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01,
+ 0x28, 0x05, 0x48, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69,
+ 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0e,
+ 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+ 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0f,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50,
+ 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67,
+ 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72,
+ 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x1d,
+ 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72,
+ 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56,
+ 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4d,
+ 0x0a, 0x24, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65,
+ 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x65,
+ 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x61, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x68, 0x70, 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x43,
+ 0x0a, 0x0d, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18,
+ 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x48, 0x05, 0x52, 0x0c, 0x6b, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x48, 0x06, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70,
+ 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x48, 0x07, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61,
+ 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x08, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17,
+ 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f,
+ 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x48, 0x09, 0x52,
+ 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x70, 0x75,
+ 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65,
+ 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18,
+ 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a,
+ 0x08, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x70, 0x75,
+ 0x52, 0x75, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x68, 0x70, 0x61, 0x5f, 0x72, 0x75, 0x6c, 0x65,
+ 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x48, 0x50, 0x41, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x68,
+ 0x70, 0x61, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65,
+ 0x61, 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x56, 0x4d, 0x48, 0x65, 0x61, 0x70, 0x52, 0x75,
+ 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x6a, 0x76, 0x6d, 0x48, 0x65, 0x61,
+ 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x20, 0x6a, 0x76, 0x6d, 0x5f, 0x63, 0x70, 0x75,
+ 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x6d,
+ 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x48,
+ 0x0a, 0x52, 0x1c, 0x6a, 0x76, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70,
+ 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x88,
+ 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f,
+ 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63,
+ 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63,
+ 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11,
+ 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65,
+ 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x10,
+ 0x0a, 0x0e, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c,
+ 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72,
+ 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0xfb, 0x03, 0x0a, 0x1b,
+ 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x63,
+ 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75,
+ 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12,
+ 0x35, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67,
+ 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x68, 0x70, 0x61, 0x5f, 0x72, 0x75,
+ 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x48, 0x50, 0x41, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x07, 0x68, 0x70, 0x61, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6a, 0x76, 0x6d, 0x5f,
+ 0x68, 0x65, 0x61, 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x56, 0x4d, 0x48, 0x65, 0x61, 0x70,
+ 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x6a, 0x76, 0x6d, 0x48,
+ 0x65, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x20, 0x6a, 0x76, 0x6d, 0x5f, 0x63,
+ 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72,
+ 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x03, 0x48, 0x00, 0x52, 0x1c, 0x6a, 0x76, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x74, 0x61, 0x72, 0x74,
+ 0x75, 0x70, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65,
+ 0x73, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63,
+ 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65,
+ 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x63, 0x70, 0x75,
+ 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x6d,
+ 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0xa8, 0x0b, 0x0a, 0x27, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69,
+ 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52,
+ 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c,
+ 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75,
+ 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6f,
+ 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64,
+ 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c,
+ 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a,
+ 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x04, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a,
+ 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c,
+ 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x1d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c,
+ 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61,
+ 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49,
+ 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63,
+ 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x24, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69,
+ 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x18, 0x1f, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x1f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63,
+ 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x63, 0x72,
+ 0x65, 0x61, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x70, 0x61, 0x45, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0d, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x05, 0x52, 0x0c, 0x6b, 0x69, 0x6e, 0x64, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
+ 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x0d, 0x6c, 0x61, 0x62,
+ 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a,
+ 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x12, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
+ 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x07, 0x52, 0x0b, 0x6e, 0x61, 0x6d,
+ 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
+ 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x08, 0x52, 0x10,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
+ 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f,
+ 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x14,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x09, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b,
+ 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x1e, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65,
+ 0x72, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+ 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f,
+ 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63,
+ 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42,
+ 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e,
+ 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11,
+ 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f,
+ 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x28, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x22, 0x61, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x22, 0x6f, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x43, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x22, 0x68, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xbf, 0x01,
+ 0x0a, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42,
+ 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22,
+ 0x72, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x22, 0xcd, 0x0c, 0x0a, 0x27, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25,
+ 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52,
+ 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c,
+ 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75,
+ 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6f,
+ 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64,
+ 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c,
+ 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a,
+ 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x05, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a,
+ 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52,
+ 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x1d, 0x75, 0x73, 0x65, 0x5f,
+ 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61,
+ 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x48,
+ 0x07, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72,
+ 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12,
+ 0x52, 0x0a, 0x24, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63,
+ 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64,
+ 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52,
+ 0x1f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65,
+ 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x0a, 0x68, 0x70, 0x61, 0x45,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0d, 0x6b, 0x69, 0x6e,
+ 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+ 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x0a, 0x52, 0x0c, 0x6b,
+ 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41,
+ 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x0b, 0x52,
+ 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01,
+ 0x01, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x0c, 0x52,
+ 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12,
+ 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
+ 0x48, 0x0d, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6c, 0x6f, 0x6f, 0x6b, 0x62,
+ 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
+ 0x64, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0e, 0x52, 0x15, 0x6c, 0x6f, 0x6f, 0x6b,
+ 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+ 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74,
+ 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e,
+ 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15,
+ 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6c,
+ 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19,
+ 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x69,
+ 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73,
+ 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+ 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+ 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x42,
+ 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42,
+ 0x10, 0x0a, 0x0e, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61,
+ 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+ 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f,
+ 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
+ 0x15, 0x10, 0x16, 0x22, 0xd5, 0x01, 0x0a, 0x2f, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a,
+ 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x75, 0x6c,
+ 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x75, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x75,
+ 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
+ 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x30, 0x54,
+ 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44,
+ 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3f, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x22, 0x6b, 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xb7, 0x01,
+ 0x0a, 0x27, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12,
+ 0x40, 0x0a, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x48, 0x00, 0x52, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
+ 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x2a, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x04, 0x0a, 0x2f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88,
+ 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53,
+ 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x11, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88,
+ 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0d, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0c, 0x6b, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c,
+ 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61,
+ 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50,
+ 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61,
+ 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
+ 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x05, 0x52, 0x10, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01,
+ 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15,
+ 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x22, 0xed, 0x02, 0x0a, 0x1f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
+ 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x0e, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88,
+ 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
+ 0x52, 0x10, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61,
+ 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67,
+ 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6f,
+ 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x30, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
+ 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65,
+ 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x22, 0x91, 0x03, 0x0a, 0x1a, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
+ 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x6b, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x12, 0x37, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x0b, 0x6e, 0x61,
+ 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x41, 0x0a, 0x11, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0xeb, 0x05, 0x0a,
+ 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19,
+ 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
+ 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x17, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x07, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5e, 0x0a, 0x0d,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0f,
- 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
- 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d,
- 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
- 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
- 0x48, 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75,
- 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03,
- 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75,
- 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67,
- 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x11,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x1d, 0x75, 0x73,
- 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69,
- 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72,
- 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b,
- 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x0a, 0x68, 0x70, 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x3f, 0x0a,
- 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0e,
- 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10,
- 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69,
- 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67,
- 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x22, 0xac, 0x06, 0x0a, 0x27, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88,
- 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a,
- 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0f,
- 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
- 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d,
- 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f,
- 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
- 0x48, 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75,
- 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03,
- 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75,
- 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67,
- 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x1d, 0x75, 0x73,
- 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69,
- 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72,
- 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b,
- 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x0a, 0x68, 0x70, 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x0e, 0x0a,
- 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a,
- 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42,
- 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e,
- 0x75, 0x74, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d,
- 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x22, 0x6b, 0x0a, 0x28, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
- 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f,
- 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x61,
- 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
- 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
- 0x64, 0x22, 0x6f, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a,
+ 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x13,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a,
+ 0x12, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x65, 0x6e, 0x72, 0x6f, 0x6c,
+ 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x53, 0x0a, 0x0d,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x1c, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12,
+ 0x3a, 0x0a, 0x19, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74,
+ 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x75, 0x73, 0x74,
+ 0x6f, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x07, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x1d, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x22, 0x6a, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a,
+ 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x1d,
+ 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a,
0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
+ 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xf3, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b,
+ 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3f,
+ 0x0a, 0x19, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f,
+ 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x08, 0x48, 0x02, 0x52, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x75, 0x73,
+ 0x74, 0x6f, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12,
+ 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63,
+ 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x07, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42,
+ 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
+ 0x1c, 0x0a, 0x1a, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x73,
+ 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x22, 0x55, 0x0a,
+ 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34,
+ 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x22, 0x78, 0x0a, 0x24, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x8a,
+ 0x01, 0x0a, 0x25, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b,
+ 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
+ 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x76, 0x65, 0x72,
+ 0x74, 0x73, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x22, 0x6a, 0x0a, 0x1c, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
+ 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6f, 0x75, 0x74,
+ 0x63, 0x6f, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x63, 0x6f,
+ 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72,
+ 0x65, 0x76, 0x65, 0x72, 0x74, 0x73, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x22,
+ 0x4e, 0x0a, 0x07, 0x4f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x55,
+ 0x54, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
+ 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x55, 0x54, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x44,
+ 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x55, 0x54, 0x43,
+ 0x4f, 0x4d, 0x45, 0x5f, 0x52, 0x45, 0x56, 0x45, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22,
+ 0xad, 0x01, 0x0a, 0x24, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
+ 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x22,
+ 0xf5, 0x03, 0x0a, 0x1a, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67,
+ 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x01, 0x52, 0x10, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x72, 0x22, 0x74, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
+ 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
+ 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x45, 0x57, 0x5f, 0x45,
+ 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41,
+ 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f,
+ 0x54, 0x48, 0x49, 0x53, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x1c, 0x0a,
+ 0x18, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x4f, 0x54, 0x48,
+ 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x03, 0x42, 0x13, 0x0a, 0x11, 0x5f,
+ 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
+ 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x25, 0x50, 0x72, 0x65, 0x76,
+ 0x69, 0x65, 0x77, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x4f, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68,
+ 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x34,
+ 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14,
+ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x72, 0x6f, 0x6c,
+ 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x49, 0x64, 0x22, 0xb3, 0x04, 0x0a, 0x19, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e,
+ 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45,
+ 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
+ 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
+ 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x6f, 0x72, 0x69, 0x67, 0x69,
+ 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f,
+ 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x74,
+ 0x12, 0x44, 0x0a, 0x0d, 0x75, 0x6e, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0c, 0x75, 0x6e, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65,
+ 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x22, 0x73, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
+ 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
+ 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54,
+ 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x56, 0x45, 0x52, 0x54,
+ 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x56, 0x45,
+ 0x52, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
+ 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+ 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x75, 0x6e, 0x65, 0x6e,
+ 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x95, 0x02, 0x0a, 0x26, 0x4c, 0x69,
+ 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65,
+ 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e,
+ 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x65, 0x0a, 0x0d, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x40, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x72,
+ 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+ 0x01, 0x22, 0x87, 0x02, 0x0a, 0x13, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74,
+ 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72,
+ 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x79, 0x6e,
+ 0x63, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x12,
+ 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
+ 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x7c, 0x0a, 0x16, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61,
+ 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+ 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39,
+ 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x1a, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x72, 0x6f,
+ 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
+ 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xfe, 0x02, 0x0a,
+ 0x19, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c,
+ 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x6f, 0x62,
+ 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x0c, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a,
+ 0x10, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e,
+ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x69, 0x6e,
+ 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x1a, 0xb9, 0x01, 0x0a, 0x0b, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61,
+ 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
+ 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf0, 0x03,
+ 0x0a, 0x1a, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72,
+ 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x06,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52,
+ 0x65, 0x76, 0x65, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25,
+ 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xe8, 0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
+ 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a,
+ 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a,
+ 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12,
+ 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x5f, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f,
+ 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x68, 0x65,
+ 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f,
+ 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74,
+ 0x22, 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xbc, 0x02, 0x0a, 0x20, 0x47, 0x65,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39,
+ 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x6e,
+ 0x61, 0x67, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x65, 0x78, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01,
+ 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x22, 0xf9, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a,
+ 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0d, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x1a,
+ 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42,
+ 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x22, 0x68, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f,
- 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xc4, 0x07, 0x0a, 0x27, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
- 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52,
- 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x12,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0f, 0x61,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x08,
- 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63,
- 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a,
+ 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04,
+ 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x20, 0x47,
+ 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x79,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa7,
+ 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
+ 0x6c, 0x65, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x21,
+ 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x54, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x46,
+ 0x0a, 0x21, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
+ 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x22, 0x4d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
+ 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72,
+ 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x20, 0x0a, 0x1e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73,
+ 0x0a, 0x1e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65,
+ 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65,
+ 0x49, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7b, 0x0a, 0x26, 0x42,
+ 0x75, 0x6c, 0x6b, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a,
+ 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x22, 0x4e, 0x0a, 0x27, 0x42, 0x75, 0x6c, 0x6b,
+ 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
+ 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x27, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a,
+ 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65,
+ 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe1,
+ 0x0b, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x65,
+ 0x6c, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x6d,
+ 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x72,
+ 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x30,
+ 0x0a, 0x08, 0x68, 0x70, 0x61, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50, 0x41, 0x52, 0x75, 0x6c,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x68, 0x70, 0x61, 0x52, 0x75, 0x6c, 0x65,
+ 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x65,
+ 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x12, 0x39, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
+ 0x48, 0x00, 0x52, 0x14, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x50, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x63,
+ 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77,
- 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48,
- 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74,
+ 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48,
+ 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74,
0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
+ 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28,
0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28,
+ 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
0x09, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67,
0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e,
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d,
+ 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d,
0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, 0x20,
- 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x45,
- 0x0a, 0x1d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76,
- 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18,
- 0x0f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c,
- 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69,
- 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x0a, 0x68, 0x70,
- 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
- 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
- 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f,
- 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72,
- 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69,
- 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42,
- 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65,
- 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e,
- 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x70, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x64, 0x22, 0x6b, 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
- 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f,
- 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x82,
- 0x01, 0x0a, 0x27, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
- 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75,
- 0x6c, 0x65, 0x73, 0x22, 0x2a, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
- 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xbc, 0x02, 0x0a, 0x20, 0x47, 0x65, 0x74,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a,
- 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01,
- 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22,
- 0xf9, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a,
- 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
- 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0d, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x1a, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x79,
- 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x1b,
- 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42,
- 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x72,
- 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52,
- 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x20, 0x47, 0x65,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x79, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
- 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01,
- 0x0a, 0x21, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
- 0x65, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x1d, 0x75, 0x73, 0x65,
+ 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63,
+ 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x24, 0x61,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65,
+ 0x61, 0x73, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+ 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x44, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12,
+ 0x3d, 0x0a, 0x0d, 0x6a, 0x76, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65,
+ 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4a, 0x56, 0x4d, 0x48, 0x65, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x0b, 0x6a, 0x76, 0x6d, 0x48, 0x65, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4b,
+ 0x0a, 0x20, 0x6a, 0x76, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75,
+ 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72,
+ 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x1c, 0x6a, 0x76, 0x6d, 0x43,
+ 0x70, 0x75, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x4d, 0x69,
+ 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x64,
+ 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52,
+ 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17,
+ 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f,
+ 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52,
+ 0x15, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x12, 0x6b, 0x65, 0x64,
+ 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
+ 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+ 0x45, 0x44, 0x41, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
+ 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x07, 0x52, 0x10, 0x6b, 0x65, 0x64, 0x61, 0x53,
+ 0x63, 0x61, 0x6c, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x42, 0x19,
+ 0x0a, 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
+ 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72,
+ 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f,
+ 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73,
+ 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x23, 0x0a,
+ 0x21, 0x5f, 0x6a, 0x76, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75,
+ 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72,
+ 0x65, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42,
+ 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72,
+ 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f,
+ 0x6b, 0x65, 0x64, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x22, 0xaa, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e,
+ 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c,
+ 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x67, 0x65, 0x6e,
+ 0x65, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x75, 0x74,
+ 0x6f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x65,
+ 0x6c, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x65,
+ 0x6c, 0x64, 0x73, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22,
+ 0x4c, 0x0a, 0x20, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x0a,
- 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x54, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
- 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
- 0x61, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x46, 0x0a,
- 0x21, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x55, 0x69, 0x64, 0x22, 0x4d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x71, 0x0a,
+ 0x21, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72,
0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75,
- 0x6c, 0x65, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f,
+ 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x22, 0x4e, 0x0a, 0x22, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65,
+ 0x22, 0x9f, 0x02, 0x0a, 0x1a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64,
+ 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c,
+ 0x52, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c,
+ 0x64, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
+ 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x22, 0xdc, 0x02, 0x0a, 0x1b, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f,
0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0xee, 0x07, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75, 0x6c,
- 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x72,
- 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x70, 0x75, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3b,
- 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x67,
- 0x70, 0x75, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
- 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x70, 0x75, 0x52, 0x75,
- 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x68, 0x70, 0x61, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x50,
- 0x41, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x68, 0x70, 0x61,
- 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63,
- 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65,
- 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x52, 0x11, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f,
- 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x14, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x50,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12,
- 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x6f, 0x6f,
- 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20,
- 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x4d,
- 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x12, 0x64, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
- 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18,
- 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
- 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x18, 0x64, 0x65, 0x66, 0x72, 0x61,
- 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x17, 0x64, 0x65, 0x66,
- 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x69, 0x76, 0x65, 0x5f,
- 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a,
- 0x1d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65,
- 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0e,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x75, 0x73, 0x65, 0x49, 0x6e, 0x50, 0x6c, 0x61, 0x63, 0x65,
- 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12,
- 0x43, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75,
- 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70,
- 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42,
- 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d,
- 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x72, 0x61,
- 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x22, 0xaa, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61,
+ 0x73, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a,
+ 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f,
+ 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72,
+ 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x12, 0x4f, 0x0a, 0x24, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
+ 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x21, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x64, 0x62, 0x52, 0x75, 0x6c,
+ 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c,
+ 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x22, 0x61, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f,
+ 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12,
+ 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x21, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41,
+ 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x1f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75,
+ 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18,
+ 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x28,
+ 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
+ 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x67, 0x0a, 0x22, 0x42, 0x61, 0x74, 0x63,
+ 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41,
+ 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75,
+ 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x73, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26,
+ 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x55, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xa4, 0x02, 0x0a, 0x25, 0x42, 0x61, 0x74, 0x63,
+ 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f,
+ 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c,
+ 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x65, 0x6c,
+ 0x64, 0x73, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc5,
+ 0x01, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61,
0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
+ 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
+ 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x04,
+ 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x6f, 0x0a, 0x26, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55,
+ 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x45, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68,
+ 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x20, 0x42, 0x61, 0x74, 0x63,
+ 0x68, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x30,
+ 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75,
+ 0x6c, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73,
+ 0x22, 0xa6, 0x03, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x11, 0x6d, 0x61, 0x74,
+ 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x65,
+ 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x11,
+ 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x65,
+ 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x37, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52,
+ 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x24, 0x65, 0x6e, 0x67, 0x69,
+ 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e,
+ 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x21, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72,
+ 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x21, 0x42, 0x61, 0x74,
+ 0x63, 0x68, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40,
+ 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72,
+ 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
+ 0x22, 0xc2, 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x6e, 0x65, 0x54, 0x69, 0x6d,
+ 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75,
+ 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x55, 0x69, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x6e,
+ 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x37, 0x0a, 0x09,
+ 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73, 0x73,
+ 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x22, 0x9c,
+ 0x01, 0x0a, 0x15, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64,
+ 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52,
+ 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x3b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x22, 0xbb, 0x01,
+ 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c,
+ 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x41, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x22,
+ 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0c, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22,
+ 0xa6, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x12, 0x36, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52,
+ 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x72, 0x0a, 0x20, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07,
+ 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
+ 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x90, 0x01, 0x0a,
+ 0x21, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x25, 0x0a,
+ 0x0e, 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4e,
+ 0x6f, 0x64, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
+ 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22,
+ 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a,
+ 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x61,
+ 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x12, 0x34, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
+ 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x61,
+ 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x70,
+ 0x70, 0x6c, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e,
+ 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x62, 0x0a,
+ 0x28, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
+ 0x64, 0x22, 0xf7, 0x01, 0x0a, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43,
+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f,
+ 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70,
+ 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a,
+ 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64,
+ 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f,
+ 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65,
+ 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x66,
+ 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65,
+ 0x61, 0x64, 0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x0a, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x6d, 0x0a, 0x29, 0x47,
+ 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61,
+ 0x67, 0x65, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x28, 0x4c,
+ 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
- 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x67, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x75,
- 0x74, 0x6f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69,
- 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x46, 0x69,
- 0x65, 0x6c, 0x64, 0x73, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x06,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
- 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x22, 0x4c, 0x0a, 0x20, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0xef,
- 0x01, 0x0a, 0x1a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
+ 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f,
+ 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x02, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68,
+ 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x4a, 0x0a, 0x10,
+ 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61,
+ 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x70,
+ 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74,
+ 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61,
+ 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x69, 0x75, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x0e, 0x63, 0x72, 0x69, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64,
+ 0x12, 0x30, 0x0a, 0x14, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
+ 0x61, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
+ 0x63, 0x72, 0x69, 0x75, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x46, 0x72, 0x65,
+ 0x73, 0x68, 0x22, 0x63, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62,
+ 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x36, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x15, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73,
+ 0x12, 0x19, 0x0a, 0x05, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48,
+ 0x00, 0x52, 0x05, 0x75, 0x70, 0x70, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c,
+ 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x6f,
+ 0x77, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72,
+ 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x22, 0xa1, 0x02, 0x0a, 0x19, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54,
+ 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f,
+ 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x48, 0x00, 0x52, 0x0a,
+ 0x63, 0x70, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a,
+ 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6f,
+ 0x75, 0x6e, 0x64, 0x73, 0x48, 0x01, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x65,
+ 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x6f, 0x6c, 0x6c,
+ 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, 0x6c, 0x49,
+ 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01,
+ 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72,
+ 0x63, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xa6,
+ 0x02, 0x0a, 0x1a, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a,
+ 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+ 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a,
+ 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,
+ 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x48, 0x01, 0x52, 0x11,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+ 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x6e, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x12, 0x6f, 0x6e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f,
+ 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x68,
+ 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x8e, 0x06, 0x0a, 0x17, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x72,
+ 0x70, 0x68, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65,
+ 0x74, 0x61, 0x69, 0x6e, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a,
+ 0x1d, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
+ 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x1a, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x50, 0x6f, 0x64, 0x88, 0x01,
+ 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x1a, 0x6d, 0x61, 0x78, 0x43,
+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e,
+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78,
+ 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+ 0x5f, 0x6d, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x13, 0x6d, 0x61, 0x78,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62,
+ 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x1a,
+ 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x50, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a,
+ 0x19, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f,
+ 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
+ 0x48, 0x06, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65,
+ 0x50, 0x65, 0x72, 0x50, 0x6f, 0x64, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1f, 0x6d,
+ 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65,
+ 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x62, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x1a, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x74, 0x61, 0x6c,
+ 0x53, 0x69, 0x7a, 0x65, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
+ 0x4d, 0x62, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e,
+ 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6d, 0x61,
+ 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x65,
+ 0x72, 0x5f, 0x70, 0x6f, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68,
+ 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f,
+ 0x6d, 0x62, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x62, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74,
+ 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f,
+ 0x64, 0x5f, 0x6d, 0x62, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x62, 0x22, 0x89, 0x03, 0x0a, 0x20, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
+ 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1c, 0x0a,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70,
+ 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x72,
+ 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x4f, 0x72, 0x70, 0x68,
+ 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+ 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
+ 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b,
+ 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a,
+ 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f,
+ 0x6d, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x54,
+ 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a,
+ 0x0e, 0x5f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x42,
+ 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x42, 0x14,
+ 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a,
+ 0x65, 0x5f, 0x6d, 0x62, 0x22, 0xe5, 0x02, 0x0a, 0x1a, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x70, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x72,
+ 0x70, 0x68, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65,
+ 0x74, 0x61, 0x69, 0x6e, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
+ 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d,
+ 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69,
+ 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x13, 0x6d,
+ 0x61, 0x78, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65,
+ 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
+ 0x48, 0x03, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65,
+ 0x4d, 0x62, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e,
+ 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f,
+ 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73,
+ 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74,
+ 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x22, 0xd9, 0x02, 0x0a,
+ 0x20, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e,
+ 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6d, 0x61, 0x78,
+ 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x48, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x63,
+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d,
+ 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x43, 0x68,
+ 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x88, 0x01,
+ 0x01, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73,
+ 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x0e,
+ 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x88, 0x01,
+ 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x70,
+ 0x68, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f,
+ 0x6d, 0x62, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x22, 0xed, 0x03, 0x0a, 0x1b, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63,
+ 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x1a, 0x61,
+ 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x5f, 0x69, 0x6d,
+ 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x18, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x49, 0x6d,
+ 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x10, 0x67, 0x6c, 0x6f,
+ 0x62, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65, 0x74, 0x65, 0x6e,
+ 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65,
+ 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x12, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65,
+ 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x70,
+ 0x6f, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x12, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x72,
+ 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x03, 0x0a, 0x0e, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52,
+ 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x74,
+ 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65,
+ 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65,
+ 0x63, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39,
+ 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x41, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xef, 0x04, 0x0a,
+ 0x16, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f,
+ 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52,
+ 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0c, 0x6d, 0x61,
+ 0x78, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a,
+ 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x12, 0x6d,
+ 0x61, 0x78, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67,
+ 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x61,
+ 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x54, 0x0a, 0x14, 0x70,
+ 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x50, 0x6f, 0x73, 0x74, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x70,
+ 0x6f, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x47, 0x65,
+ 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x13,
+ 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f,
+ 0x6e, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xab,
+ 0x06, 0x0a, 0x13, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62,
+ 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88,
+ 0x01, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x48, 0x01, 0x52, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x11, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18,
+ 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
+ 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01,
+ 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
+ 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x50, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x48, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0b, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x66, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e,
+ 0x64, 0x52, 0x0a, 0x6b, 0x69, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a,
+ 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x48, 0x05, 0x52, 0x0b, 0x70, 0x6f, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42,
+ 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x14, 0x0a, 0x12,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
+ 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xba, 0x03, 0x0a,
+ 0x14, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b,
+ 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a,
+ 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65,
+ 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, 0x0a,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc2, 0x03, 0x0a, 0x1c, 0x46, 0x6f,
+ 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
+ 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x63, 0x6f,
+ 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x78, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6c,
+ 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x1e,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32,
+ 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x22, 0x64, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x22, 0x66, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x4e, 0x0a, 0x1c, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x53, 0x0a, 0x1b, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
+ 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22,
+ 0x38, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x75, 0x0a, 0x22, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
+ 0x22, 0x5d, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22,
+ 0x99, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a,
+ 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+ 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0c, 0x0a,
+ 0x0a, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x71, 0x0a, 0x21, 0x4c,
+ 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61,
+ 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x72,
+ 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x22, 0x5a, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x5b,
+ 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x3e, 0x0a, 0x22, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x7c, 0x0a, 0x25, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3a, 0x0a,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x26, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22,
+ 0x6c, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x78, 0x0a,
+ 0x24, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x76, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
+ 0x5e, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
+ 0x5b, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x24,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x85,
+ 0x01, 0x0a, 0x2a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x30,
- 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x75,
- 0x6c, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73,
- 0x22, 0xad, 0x02, 0x0a, 0x1b, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x41, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
- 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
- 0x65, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52,
- 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72,
- 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x6a,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12,
- 0x4f, 0x0a, 0x24, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
- 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x21, 0x65,
- 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55,
- 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x22, 0xa0, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65,
+ 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x6d, 0x0a, 0x2b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f,
+ 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+ 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x29, 0x4c, 0x69,
+ 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x82, 0x01,
+ 0x0a, 0x29, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f,
+ 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x22, 0x6a, 0x0a, 0x2a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65,
+ 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x3c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73,
+ 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x63,
+ 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
+ 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
+ 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69,
+ 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x49, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x59, 0x0a, 0x21, 0x54,
+ 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x22, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e,
+ 0x72, 0x75, 0x6e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x02, 0x0a, 0x18, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x38, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
+ 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00,
+ 0x52, 0x0b, 0x70, 0x6f, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01,
+ 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x34, 0x0a, 0x16,
+ 0x63, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x6c, 0x6c,
+ 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x70,
+ 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72,
+ 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42,
+ 0x79, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x6c,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x19, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x16, 0x70, 0x6f, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0xb3, 0x01, 0x0a, 0x1b,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53,
+ 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a,
+ 0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x22, 0x77, 0x0a, 0x29, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
+ 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x63,
+ 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x6d, 0x0a, 0x2a, 0x50, 0x72,
+ 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52,
+ 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x15, 0x46, 0x6f,
+ 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72,
+ 0x6c, 0x61, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64,
+ 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x73, 0x22,
+ 0xc6, 0x01, 0x0a, 0x31, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e,
+ 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
- 0x73, 0x22, 0x61, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70,
- 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c,
- 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
- 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x21, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75,
- 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65,
- 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61,
- 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42,
- 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x1f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74,
- 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a,
- 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
- 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x28, 0x0a,
- 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
- 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x67, 0x0a, 0x22, 0x42, 0x61, 0x74, 0x63, 0x68,
- 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a,
- 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74,
- 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
- 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f,
- 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06,
- 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x6e,
- 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x04, 0x6b,
- 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b,
- 0x65, 0x79, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07,
- 0x65, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65,
- 0x6d, 0x69, 0x74, 0x49, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x15, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12,
- 0x2d, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
- 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x3b,
- 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
- 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65,
- 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6d,
- 0x69, 0x74, 0x49, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a,
- 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x69,
- 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x31,
+ 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70,
+ 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f,
+ 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x88,
+ 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xb0, 0x01, 0x0a, 0x32, 0x50, 0x72, 0x65,
+ 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3f, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
+ 0x12, 0x39, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65,
+ 0x6e, 0x73, 0x69, 0x63, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61,
+ 0x70, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70, 0x73, 0x22, 0x88, 0x04, 0x0a, 0x18,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64,
+ 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x6f, 0x77, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49,
+ 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x3d, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
+ 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b,
+ 0x70, 0x6f, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x27,
+ 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e,
+ 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x1b,
+ 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0e, 0x72,
+ 0x75, 0x6e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64,
- 0x41, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x41, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x67, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb8, 0x01, 0x0a, 0x2b, 0x47, 0x65, 0x74, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x04, 0x0a, 0x02, 0x62,
+ 0x79, 0x22, 0x7a, 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64,
+ 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x6f,
+ 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xc0, 0x01,
+ 0x0a, 0x33, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d,
+ 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d,
+ 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x04, 0x0a, 0x02, 0x62, 0x79,
+ 0x22, 0x82, 0x01, 0x0a, 0x34, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x77,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65,
+ 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12,
+ 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xf9, 0x02, 0x0a, 0x12, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x75, 0x6e,
+ 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x05, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x11,
+ 0x0a, 0x0f, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0xfa, 0x01, 0x0a, 0x1c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e,
+ 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a,
+ 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x6c,
+ 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x81,
+ 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65,
0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47,
+ 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x22, 0xb0, 0x02, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46,
0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c,
- 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22,
- 0x72, 0x0a, 0x20, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e,
+ 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70,
+ 0x70, 0x6c, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12,
+ 0x31, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x73, 0x52, 0x07, 0x70, 0x72, 0x65, 0x72, 0x65,
+ 0x71, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x89, 0x01, 0x0a, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69,
+ 0x74, 0x22, 0x85, 0x02, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a,
+ 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49,
+ 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x72,
+ 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x52,
+ 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x72,
+ 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x64, 0x0a, 0x2a, 0x50, 0x72, 0x65,
+ 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22,
+ 0x41, 0x0a, 0x2b, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61,
+ 0x6d, 0x6c, 0x22, 0x6c, 0x0a, 0x32, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49,
+ 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x22, 0x49, 0x0a, 0x33, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e,
+ 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x5e, 0x0a, 0x24, 0x4c,
+ 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75, 0x74,
+ 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x21, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68,
- 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x74,
- 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x74,
- 0x63, 0x68, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64,
- 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x65, 0x6e,
- 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73,
- 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61,
- 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d,
- 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22,
- 0xdb, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
- 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c,
- 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72,
- 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72,
- 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75,
- 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x61, 0x69, 0x6c,
- 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x22, 0x45, 0x0a,
- 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
- 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14,
- 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
- 0x72, 0x72, 0x6f, 0x72, 0x2a, 0x79, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c,
- 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x43, 0x4f, 0x4e,
- 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x4f, 0x50,
- 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d,
- 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52,
- 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
- 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x2a,
- 0x5b, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x54, 0x61, 0x6b, 0x65, 0x12,
- 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x41, 0x4b,
- 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x54, 0x49, 0x4f,
- 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x41, 0x4b, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10,
- 0x01, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x54,
- 0x41, 0x4b, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10, 0x02, 0x2a, 0x55, 0x0a, 0x0a,
- 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f,
- 0x53, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x53, 0x54, 0x5f,
- 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x01, 0x12, 0x13,
- 0x0a, 0x0f, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x52, 0x55,
- 0x4e, 0x10, 0x02, 0x2a, 0xd1, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x67, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x29, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x5f, 0x44,
- 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
- 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x5f, 0x44, 0x45,
- 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x4f, 0x52, 0x50, 0x48, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x4c,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x18,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e,
+ 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x73, 0x22, 0x73, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a,
+ 0x0f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e,
+ 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e,
+ 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x79, 0x0a, 0x0f, 0x52, 0x65, 0x63,
+ 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15,
+ 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
+ 0x5f, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x43, 0x4f, 0x4e,
+ 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x45, 0x57, 0x5f,
+ 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01,
+ 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x49,
+ 0x4e, 0x47, 0x10, 0x02, 0x2a, 0x5b, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f,
+ 0x54, 0x61, 0x6b, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
+ 0x4f, 0x5f, 0x54, 0x41, 0x4b, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14,
+ 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x41, 0x4b, 0x45, 0x5f, 0x55,
+ 0x4e, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x41, 0x4b, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10,
+ 0x02, 0x2a, 0x69, 0x0a, 0x0e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x55, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x55, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01,
+ 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x55, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x2a, 0x54, 0x0a, 0x09,
+ 0x41, 0x72, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x52, 0x47,
+ 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x52, 0x47, 0x5f, 0x54, 0x41, 0x52,
+ 0x47, 0x45, 0x54, 0x5f, 0x41, 0x52, 0x47, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x52,
+ 0x47, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44,
+ 0x10, 0x02, 0x2a, 0x55, 0x0a, 0x0a, 0x43, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f,
+ 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a,
+ 0x11, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x4d, 0x4f, 0x4e,
+ 0x54, 0x48, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x50, 0x45, 0x52,
+ 0x49, 0x4f, 0x44, 0x5f, 0x52, 0x55, 0x4e, 0x10, 0x02, 0x2a, 0x84, 0x02, 0x0a, 0x18, 0x52, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x65,
+ 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e,
+ 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x56, 0x45,
+ 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f,
+ 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59,
+ 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x41, 0x53, 0x4f,
+ 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x56,
+ 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x52,
+ 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54,
+ 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d,
+ 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f,
+ 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59,
+ 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x41, 0x53, 0x4f,
+ 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x56,
+ 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x05,
+ 0x2a, 0x96, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e,
+ 0x73, 0x69, 0x67, 0x68, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x45, 0x41,
+ 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
+ 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49,
+ 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x54,
+ 0x45, 0x52, 0x4e, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49,
+ 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x41, 0x4e, 0x4f, 0x4d, 0x41, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x41,
+ 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x52,
+ 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e,
+ 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52,
+ 0x49, 0x53, 0x4b, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49,
+ 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x06, 0x2a, 0xd9, 0x04, 0x0a, 0x15, 0x52, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4b,
+ 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47,
+ 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55,
+ 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b,
+ 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49,
+ 0x4e, 0x54, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a,
+ 0x27, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f,
+ 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x45,
+ 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x46, 0x4c, 0x4f,
+ 0x4f, 0x52, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e,
+ 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f,
+ 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x43, 0x45, 0x49, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x04,
+ 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45,
+ 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4c, 0x41, 0x54,
+ 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24,
+ 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x41, 0x46, 0x45, 0x54, 0x59, 0x5f, 0x46,
+ 0x4c, 0x4f, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e,
+ 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e,
+ 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12,
+ 0x2d, 0x0a, 0x29, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43,
+ 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55,
+ 0x52, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x08, 0x12, 0x28,
+ 0x0a, 0x24, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49,
+ 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49,
+ 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x45, 0x41, 0x53,
+ 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b,
+ 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x10, 0x0a, 0x12, 0x2e, 0x0a, 0x2a, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47,
+ 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50,
+ 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f,
+ 0x52, 0x10, 0x0b, 0x12, 0x30, 0x0a, 0x2c, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x49, 0x4e, 0x47,
+ 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50,
+ 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x43, 0x45, 0x49, 0x4c,
+ 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x2a, 0xd1, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x69,
+ 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x29, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x47,
+ 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47,
+ 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
+ 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x5f,
+ 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x52, 0x50, 0x48, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x2c, 0x0a,
+ 0x28, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42,
+ 0x41, 0x43, 0x4b, 0x47, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x2c, 0x0a, 0x28, 0x4c,
0x49, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x41, 0x43,
- 0x4b, 0x47, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x2c, 0x0a, 0x28, 0x4c, 0x49, 0x56,
- 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50,
- 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x45, 0x47,
- 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, 0xe7, 0x04, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x43, 0x4f, 0x4d,
- 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
- 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x52, 0x45,
- 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41,
- 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x02, 0x08,
- 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45,
- 0x44, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x43, 0x4f, 0x4d,
- 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
- 0x5f, 0x50, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x45,
+ 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x41, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52,
+ 0x45, 0x47, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, 0xe7, 0x04, 0x0a, 0x14, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50,
+ 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x43,
+ 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54,
+ 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x1d,
+ 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53,
+ 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x02, 0x1a,
+ 0x02, 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44,
+ 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49,
+ 0x4c, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x43,
+ 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54,
+ 0x55, 0x53, 0x5f, 0x50, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20,
+ 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53,
+ 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x53, 0x45, 0x44, 0x45, 0x44,
+ 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x44, 0x5f,
+ 0x53, 0x41, 0x56, 0x45, 0x44, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x0b, 0x12,
+ 0x28, 0x0a, 0x24, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x44, 0x5f, 0x53, 0x41, 0x56,
+ 0x45, 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x0c, 0x12, 0x35, 0x0a, 0x31, 0x52, 0x45, 0x43,
+ 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54,
+ 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x43,
+ 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x15,
+ 0x12, 0x32, 0x0a, 0x2e, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45,
+ 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x46, 0x41,
+ 0x49, 0x4c, 0x10, 0x16, 0x12, 0x34, 0x0a, 0x30, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e,
+ 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50,
+ 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52,
+ 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x1f, 0x12, 0x31, 0x0a, 0x2d, 0x52, 0x45,
0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41,
- 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x53, 0x45, 0x44, 0x45, 0x44, 0x10, 0x05,
- 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x44, 0x5f, 0x53, 0x41,
- 0x56, 0x45, 0x44, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x0b, 0x12, 0x28, 0x0a,
- 0x24, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x44, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x44,
- 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x0c, 0x12, 0x35, 0x0a, 0x31, 0x52, 0x45, 0x43, 0x4f, 0x4d,
- 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
- 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45,
- 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x15, 0x12, 0x32,
- 0x0a, 0x2e, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f,
- 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c,
- 0x10, 0x16, 0x12, 0x34, 0x0a, 0x30, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41,
- 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c,
- 0x49, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53,
- 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x1f, 0x12, 0x31, 0x0a, 0x2d, 0x52, 0x45, 0x43, 0x4f,
- 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
- 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49,
- 0x47, 0x47, 0x45, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x20, 0x12, 0x21, 0x0a, 0x1d, 0x52,
- 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54,
- 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x29, 0x12, 0x21,
- 0x0a, 0x1d, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44, 0x10,
- 0x2a, 0x2a, 0xba, 0x02, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43,
- 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b,
- 0x0a, 0x27, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45,
- 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x4e,
+ 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x54,
+ 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x20, 0x12, 0x21, 0x0a,
+ 0x1d, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x29,
+ 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45,
+ 0x44, 0x10, 0x2a, 0x2a, 0xba, 0x02, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65,
+ 0x12, 0x2b, 0x0a, 0x27, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43,
+ 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
+ 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a,
+ 0x2a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43,
+ 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54,
+ 0x5f, 0x44, 0x5a, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x3b, 0x0a,
+ 0x37, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43,
+ 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x5a, 0x5f,
+ 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56,
+ 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x2f, 0x0a, 0x2b, 0x4e, 0x4f,
+ 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f,
+ 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59,
+ 0x5f, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x4e,
0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50,
- 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44,
- 0x5a, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x3b, 0x0a, 0x37, 0x4e,
- 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50,
- 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x5a, 0x5f, 0x4d, 0x41,
- 0x4e, 0x41, 0x47, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f,
- 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x2f, 0x0a, 0x2b, 0x4e, 0x4f, 0x44, 0x45,
- 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e,
- 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4e,
- 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x4e, 0x4f, 0x44,
- 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49,
- 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55,
- 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52,
- 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53,
- 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x2a, 0xba,
- 0x01, 0x0a, 0x10, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49,
- 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x52, 0x47, 0x45,
- 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41,
- 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52,
- 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41,
+ 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49,
+ 0x47, 0x55, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x4f, 0x44, 0x45, 0x5f,
+ 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54,
+ 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x05,
+ 0x2a, 0xb5, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f,
+ 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x48, 0x45, 0x43,
+ 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50,
+ 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10,
+ 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f,
+ 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x53, 0x45, 0x54,
+ 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12,
+ 0x27, 0x0a, 0x23, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45,
+ 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x5f, 0x50,
+ 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0xb7, 0x02, 0x0a, 0x0f, 0x53, 0x75, 0x67,
+ 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x0a, 0x1c,
+ 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
+ 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f,
+ 0x0a, 0x1b, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f,
+ 0x55, 0x50, 0x5f, 0x44, 0x49, 0x53, 0x52, 0x55, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12,
+ 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52,
+ 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x53,
+ 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x53,
+ 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x53, 0x10, 0x05, 0x12,
+ 0x1e, 0x0a, 0x1a, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52,
+ 0x4f, 0x55, 0x50, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x06, 0x12,
+ 0x22, 0x0a, 0x1e, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52,
+ 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54,
+ 0x59, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45,
+ 0x10, 0x08, 0x2a, 0x81, 0x02, 0x0a, 0x10, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f,
+ 0x6e, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x47, 0x47, 0x45,
+ 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55,
+ 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f,
+ 0x43, 0x4f, 0x53, 0x54, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x4c, 0x49,
+ 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x47,
+ 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50,
+ 0x45, 0x52, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a,
+ 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f,
+ 0x52, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f,
+ 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f,
+ 0x52, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x50, 0x52, 0x41, 0x43, 0x54, 0x49, 0x43, 0x45, 0x10,
+ 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x49,
+ 0x4c, 0x49, 0x54, 0x59, 0x10, 0x06, 0x2a, 0x9c, 0x01, 0x0a, 0x12, 0x53, 0x75, 0x67, 0x67, 0x65,
+ 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a,
+ 0x1f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x56, 0x45,
+ 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01,
+ 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53,
+ 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e,
+ 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x52,
+ 0x4f, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0x64, 0x0a, 0x0d, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63,
+ 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e,
+ 0x43, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e,
+ 0x43, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x01, 0x12,
+ 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x50,
+ 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x02, 0x2a, 0xba, 0x01, 0x0a, 0x10,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+ 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45,
+ 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x46,
+ 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53,
+ 0x50, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54,
+ 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x4f, 0x52,
+ 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x52, 0x47, 0x45,
+ 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f,
+ 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41,
0x52, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45,
- 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x1c, 0x0a,
- 0x18, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x04, 0x2a, 0x36, 0x0a, 0x13, 0x49,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53,
- 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x52, 0x41, 0x49, 0x44,
- 0x30, 0x10, 0x00, 0x2a, 0x8b, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x01,
- 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47,
- 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x02,
- 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47,
- 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10,
- 0x03, 0x2a, 0xa4, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65,
- 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x21,
- 0x0a, 0x1d, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47,
+ 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x04, 0x2a, 0x36, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
+ 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52,
+ 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x30, 0x10, 0x00,
+ 0x2a, 0x8b, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49,
+ 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49,
+ 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1e, 0x0a,
+ 0x1a, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f,
+ 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a,
+ 0x1b, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f,
+ 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0xa4,
+ 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x44,
+ 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52,
+ 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22,
+ 0x0a, 0x1e, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47,
+ 0x47, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+ 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x55, 0x50, 0x44, 0x41,
+ 0x54, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x45, 0x56,
+ 0x49, 0x43, 0x54, 0x10, 0x03, 0x2a, 0x8f, 0x01, 0x0a, 0x19, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x28, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55,
+ 0x50, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47,
0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
- 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
- 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x55,
- 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x45, 0x54, 0x45, 0x43,
- 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x44,
- 0x5f, 0x45, 0x56, 0x49, 0x43, 0x54, 0x10, 0x03, 0x2a, 0x8f, 0x01, 0x0a, 0x19, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x28, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47,
- 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
- 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
- 0x45, 0x44, 0x10, 0x00, 0x12, 0x44, 0x0a, 0x40, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f,
- 0x55, 0x50, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49,
- 0x47, 0x47, 0x45, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x43, 0x48, 0x45,
- 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x43, 0x48,
- 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x2a, 0xd2, 0x02, 0x0a, 0x17, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41,
- 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x26, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47,
+ 0x00, 0x12, 0x44, 0x0a, 0x40, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f,
+ 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45,
+ 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c,
+ 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55,
+ 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x2a, 0xd2, 0x02, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x26, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55,
+ 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45,
+ 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x28, 0x0a, 0x24, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43,
+ 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x41, 0x44,
+ 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x4e, 0x4f, 0x44,
+ 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f,
+ 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x4e,
+ 0x4f, 0x44, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x31, 0x0a, 0x2d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47,
0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c,
- 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
- 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
- 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44,
- 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27,
- 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56,
- 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x31, 0x0a, 0x2d, 0x4e, 0x4f, 0x44,
+ 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, 0x49, 0x4e,
+ 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x42, 0x0a, 0x3e, 0x4e, 0x4f, 0x44,
0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f,
- 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x53, 0x50, 0x4f, 0x54,
- 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x42, 0x0a, 0x3e,
- 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47,
- 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x53,
- 0x5f, 0x57, 0x49, 0x54, 0x48, 0x49, 0x4e, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x10, 0x14,
- 0x12, 0x3d, 0x0a, 0x39, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41,
- 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x49,
- 0x4e, 0x54, 0x52, 0x4f, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41,
- 0x54, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x49, 0x45, 0x53, 0x10, 0x19, 0x2a,
- 0xa5, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d,
- 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x52,
- 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f,
- 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a,
- 0x1e, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10,
- 0x02, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x52, 0x56,
- 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x2a, 0xc3, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23,
- 0x0a, 0x1f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44,
- 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
- 0x4f, 0x41, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45,
- 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44,
- 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x43,
- 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45,
- 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x52, 0x44, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x52,
+ 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x49,
+ 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x53, 0x5f, 0x57, 0x49,
+ 0x54, 0x48, 0x49, 0x4e, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x10, 0x14, 0x12, 0x3d, 0x0a,
+ 0x39, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49,
+ 0x4f, 0x4e, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x52,
+ 0x4f, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x49, 0x56,
+ 0x45, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x49, 0x45, 0x53, 0x10, 0x19, 0x2a, 0xa5, 0x01, 0x0a,
+ 0x12, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
+ 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44,
+ 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f,
+ 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f,
+ 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45,
+ 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44,
+ 0x45, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x24,
+ 0x0a, 0x20, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49,
+ 0x56, 0x45, 0x10, 0x03, 0x2a, 0xe9, 0x03, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x52,
0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59,
- 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55,
- 0x52, 0x43, 0x45, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45,
- 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x56, 0x43,
- 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45,
- 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10,
- 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x41, 0x52, 0x50, 0x45, 0x4e, 0x54,
- 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x07, 0x2a, 0xc7, 0x01,
- 0x0a, 0x0d, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x1f, 0x0a, 0x1b, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59,
0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
- 0x12, 0x17, 0x0a, 0x13, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x50, 0x41,
- 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d,
- 0x4f, 0x52, 0x59, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54,
- 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x10, 0x03, 0x12, 0x23,
- 0x0a, 0x1f, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53,
- 0x53, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49,
- 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x45,
- 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x2a, 0x74, 0x0a, 0x10, 0x50, 0x76, 0x63, 0x4f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x50,
- 0x56, 0x43, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x1d, 0x0a, 0x19, 0x50, 0x56, 0x43, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x1d,
- 0x0a, 0x19, 0x50, 0x56, 0x43, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x48, 0x52, 0x49, 0x4e, 0x4b, 0x10, 0x02, 0x2a, 0xe8, 0x02,
- 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44,
- 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53,
- 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x57, 0x4f,
- 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52,
- 0x43, 0x45, 0x5f, 0x43, 0x52, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b,
+ 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44,
+ 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x47,
+ 0x52, 0x4f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d,
+ 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f,
+ 0x44, 0x45, 0x5f, 0x43, 0x52, 0x44, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x45, 0x43, 0x4f,
+ 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
+ 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x56, 0x43, 0x5f, 0x53, 0x54,
+ 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45, 0x43, 0x4f, 0x4d,
+ 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57,
+ 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x06, 0x12, 0x2a,
+ 0x0a, 0x26, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x41, 0x52, 0x50, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f,
+ 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x45,
+ 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x43, 0x52, 0x44, 0x10, 0x08,
+ 0x12, 0x2d, 0x0a, 0x29, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x45, 0x4e, 0x53, 0x49, 0x43,
+ 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x43, 0x52, 0x44, 0x10, 0x09, 0x12,
+ 0x25, 0x0a, 0x21, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x50, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45,
+ 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0a, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d,
+ 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43,
+ 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x0b,
+ 0x2a, 0xc7, 0x01, 0x0a, 0x0d, 0x48, 0x50, 0x41, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
+ 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49,
+ 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16,
+ 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x50, 0x41, 0x5f,
+ 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x10,
+ 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x47,
+ 0x52, 0x45, 0x53, 0x53, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x50, 0x41, 0x5f, 0x4d, 0x45,
+ 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52,
+ 0x4b, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x2a, 0x74, 0x0a, 0x10, 0x50, 0x76,
+ 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22,
+ 0x0a, 0x1e, 0x50, 0x56, 0x43, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x56, 0x43, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x10,
+ 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x56, 0x43, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x48, 0x52, 0x49, 0x4e, 0x4b, 0x10, 0x02,
+ 0x2a, 0x9c, 0x01, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
+ 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a,
+ 0x19, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41,
+ 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b,
+ 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x43,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x12, 0x20, 0x0a,
+ 0x1c, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41,
+ 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x2a,
+ 0xbe, 0x03, 0x0a, 0x25, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69,
+ 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61,
+ 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x35, 0x57, 0x4f, 0x52,
+ 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f,
+ 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x36, 0x0a, 0x32, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44,
+ 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x4f,
+ 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x4a, 0x0a, 0x46,
+ 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a,
+ 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4d, 0x41, 0x54,
+ 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44,
+ 0x59, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x48, 0x49, 0x53, 0x5f,
+ 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x45, 0x0a, 0x41, 0x57, 0x4f, 0x52, 0x4b,
+ 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53,
+ 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x4f, 0x57,
+ 0x4e, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x03, 0x12,
+ 0x42, 0x0a, 0x3e, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4f, 0x50, 0x54, 0x49,
+ 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f,
+ 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4b, 0x49,
+ 0x50, 0x50, 0x45, 0x44, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x43, 0x52,
+ 0x44, 0x10, 0x04, 0x12, 0x4b, 0x0a, 0x47, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f,
+ 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x4c,
+ 0x49, 0x43, 0x59, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
+ 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x44, 0x5f, 0x42,
+ 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x05,
+ 0x2a, 0xa8, 0x01, 0x0a, 0x18, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x55, 0x6e,
+ 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a,
+ 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x48, 0x45, 0x41,
+ 0x4c, 0x54, 0x48, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50,
+ 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48,
+ 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59,
+ 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5a, 0x5f,
+ 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x43, 0x48, 0x45,
+ 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x5f,
+ 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x50,
+ 0x4f, 0x44, 0x53, 0x5f, 0x53, 0x54, 0x55, 0x43, 0x4b, 0x10, 0x02, 0x2a, 0xe8, 0x02, 0x0a, 0x12,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52,
+ 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x57, 0x4f, 0x52, 0x4b,
0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
- 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x57, 0x4f, 0x52,
- 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43,
- 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41,
- 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4d, 0x41,
- 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f,
+ 0x5f, 0x43, 0x52, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f,
0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50,
- 0x55, 0x4c, 0x55, 0x4d, 0x49, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x24,
- 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f,
- 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x4c, 0x55, 0x4d, 0x49, 0x5f, 0x41, 0x55,
- 0x54, 0x4f, 0x10, 0x06, 0x12, 0x29, 0x0a, 0x25, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44,
- 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x52,
- 0x52, 0x41, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x07, 0x12,
- 0x27, 0x0a, 0x23, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45,
- 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x52, 0x52, 0x41, 0x46, 0x4f, 0x52,
- 0x4d, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x08, 0x32, 0x84, 0x6d, 0x0a, 0x18, 0x4b, 0x38, 0x73,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x8a, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x82, 0x01, 0x0a,
- 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
+ 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f,
+ 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f,
+ 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x55,
+ 0x41, 0x4c, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44,
+ 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x4c,
+ 0x55, 0x4d, 0x49, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20,
+ 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f,
+ 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x4c, 0x55, 0x4d, 0x49, 0x5f, 0x41, 0x55, 0x54, 0x4f,
+ 0x10, 0x06, 0x12, 0x29, 0x0a, 0x25, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52,
+ 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x52, 0x52, 0x41,
+ 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x07, 0x12, 0x27, 0x0a,
+ 0x23, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53,
+ 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x52, 0x52, 0x41, 0x46, 0x4f, 0x52, 0x4d, 0x5f,
+ 0x41, 0x55, 0x54, 0x4f, 0x10, 0x08, 0x2a, 0x91, 0x02, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x43,
+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43,
+ 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41,
+ 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+ 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f,
+ 0x49, 0x4e, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
+ 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43,
+ 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f,
+ 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12,
+ 0x27, 0x0a, 0x23, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49,
+ 0x4e, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41,
+ 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x4e, 0x4f, 0x44, 0x45,
+ 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45,
+ 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04,
+ 0x12, 0x28, 0x0a, 0x24, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f,
+ 0x49, 0x4e, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
+ 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x05, 0x2a, 0xa1, 0x01, 0x0a, 0x1a, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x4f, 0x52,
+ 0x45, 0x4e, 0x53, 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53,
+ 0x48, 0x4f, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x46, 0x4f, 0x52, 0x45,
+ 0x4e, 0x53, 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48,
+ 0x4f, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01,
+ 0x12, 0x2c, 0x0a, 0x28, 0x46, 0x4f, 0x52, 0x45, 0x4e, 0x53, 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x53,
+ 0x54, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x10, 0x02, 0x32, 0xe1,
+ 0xa5, 0x01, 0x0a, 0x18, 0x4b, 0x38, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x11,
+ 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74,
+ 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4c, 0x61,
+ 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03,
+ 0x88, 0x02, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74,
- 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74,
- 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74,
+ 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x88, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x47, 0x65,
- 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
- 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72,
- 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x47,
0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46,
- 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x93, 0x01, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x47, 0x65, 0x74,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a,
+ 0x20, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x4c, 0x69,
+ 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
+ 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12,
+ 0x93, 0x01, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47,
0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64,
0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23,
+ 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74,
+ 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88,
- 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02,
+ 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44,
+ 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x8b, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01,
+ 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x93,
- 0x01, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x03, 0x88, 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
- 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
+ 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x41, 0x74,
+ 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f,
0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74,
+ 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a,
- 0x1c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2b, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75,
- 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12,
- 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74,
+ 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x24, 0x41, 0x74, 0x74, 0x61,
+ 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x12, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
- 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x91, 0x01, 0x0a, 0x24, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x47, 0x65, 0x74,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+ 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x6a, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73,
+ 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x29, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x74, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x50, 0x72,
- 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
- 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
- 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65,
- 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x2d, 0x47, 0x65, 0x74, 0x50,
- 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x54, 0x6f, 0x67, 0x67,
+ 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67,
+ 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xac,
+ 0x01, 0x0a, 0x2d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63,
- 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
- 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68,
- 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a,
- 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x72, 0x0a, 0x18, 0x47, 0x65,
- 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x78,
- 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x7b, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
+ 0x12, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65,
+ 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01,
+ 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69,
+ 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x57, 0x69, 0x74,
+ 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x73, 0x57, 0x69, 0x74, 0x68, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x7b, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e,
0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88,
- 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x1c, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02,
+ 0x01, 0x12, 0x72, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x27, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x78, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
+ 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67,
- 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88,
- 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f,
+ 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12,
+ 0x7b, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2a,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f,
0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x7b, 0x0a, 0x1b,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47,
0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0xb4, 0x01, 0x0a, 0x2e, 0x47, 0x65, 0x74,
- 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f,
- 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x1c, 0x54, 0x6f, 0x67,
+ 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x23, 0x50, 0x72,
+ 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65,
+ 0x73, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12,
+ 0xb4, 0x01, 0x0a, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f,
0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12,
- 0x74, 0x0a, 0x19, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x3e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72,
+ 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x90, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c,
- 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6f, 0x72, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69,
- 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46,
- 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41,
- 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41,
- 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x88, 0x01, 0x0a, 0x21, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42,
- 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x23,
- 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64,
- 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x42, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e,
- 0x64, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c,
- 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
- 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57,
+ 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x74, 0x0a, 0x19, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+ 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6c,
+ 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65,
+ 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x90, 0x01, 0x0a,
+ 0x22, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54,
+ 0x79, 0x70, 0x65, 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12,
+ 0x7e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12,
+ 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61,
+ 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65,
+ 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12,
+ 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2a,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57,
0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74,
- 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x53, 0x65, 0x61, 0x72,
+ 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e,
+ 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
+ 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c,
+ 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x42, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
+ 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
+ 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74,
+ 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81,
+ 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e,
0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64,
- 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e,
- 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64,
- 0x0a, 0x15, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41,
- 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65,
- 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72,
- 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53,
- 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12,
- 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e,
- 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74,
+ 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x61,
+ 0x63, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88,
+ 0x02, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+ 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x24,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x6c,
+ 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x52,
+ 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f,
+ 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e,
+ 0x67, 0x73, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
+ 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x5b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a,
- 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f,
+ 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f,
0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x53,
- 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67,
- 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x53,
- 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65,
- 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
+ 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64,
+ 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b,
+ 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65,
+ 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
- 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
- 0x74, 0x65, 0x64, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x47,
- 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72,
- 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
- 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72,
- 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65,
+ 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67,
+ 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6d, 0x70,
+ 0x72, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6d, 0x70, 0x72, 0x6f,
+ 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x85, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
+ 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
+ 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
- 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72,
- 0x6f, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x31, 0x2e, 0x61,
+ 0x46, 0x72, 0x6f, 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x30, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4b,
+ 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+ 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f,
+ 0x6d, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e,
+ 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4e,
+ 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x6f,
0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4e, 0x6f,
- 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f,
- 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e,
- 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79,
+ 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43,
+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2b,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19,
- 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61,
+ 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65,
+ 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d,
- 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41,
- 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a,
- 0x1a, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
- 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
- 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x6d, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f,
- 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67,
- 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
- 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
- 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x47,
+ 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c,
+ 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x70,
+ 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x47,
+ 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65,
+ 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61,
+ 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
+ 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65,
+ 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x61,
+ 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x73, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x29,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x41,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65,
+ 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72,
+ 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41,
+ 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73,
+ 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69,
+ 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x61, 0x72,
+ 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x67, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x4b, 0x61, 0x72, 0x70,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f,
+ 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63,
+ 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c,
+ 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a,
+ 0x25, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4b, 0x61, 0x72, 0x70,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f,
+ 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e,
+ 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
+ 0x65, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73,
+ 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b,
+ 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x47,
+ 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x64, 0x6f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41,
+ 0x64, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x4b, 0x61, 0x72, 0x70, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x64, 0x6f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x6d, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
+ 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
+ 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
+ 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x55, 0x70, 0x64,
+ 0x65, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f,
- 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x6e,
- 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x22,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e,
- 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61,
+ 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x24, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
+ 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x16, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e,
+ 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x12,
+ 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64,
- 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74,
- 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65,
- 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e,
+ 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x49,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73,
+ 0x63, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x64, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61,
+ 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74,
+ 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53,
+ 0x68, 0x61, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x53, 0x68, 0x61, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50,
+ 0x55, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x50, 0x55, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
+ 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
+ 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44,
- 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
- 0x41, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72,
- 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x33, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6e,
- 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72,
- 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44,
- 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75,
- 0x64, 0x67, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
+ 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91,
+ 0x01, 0x0a, 0x24, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f,
- 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65,
- 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65,
- 0x74, 0x50, 0x44, 0x42, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x44, 0x42, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x44, 0x42, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88,
- 0x01, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
- 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
+ 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
+ 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6e,
+ 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44,
+ 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12,
+ 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50,
+ 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67,
+ 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x44, 0x69, 0x73, 0x72,
+ 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x44, 0x42, 0x52,
+ 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x44, 0x42, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x44, 0x42, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x4c, 0x69, 0x73,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75,
+ 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
+ 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x7f, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x1e, 0x47, 0x65, 0x74,
- 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x4c,
- 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74,
+ 0x79, 0x12, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f,
0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x88, 0x01, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
+ 0x12, 0x88, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74,
+ 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x70, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x28,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74,
+ 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a,
- 0x18, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12,
+ 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f,
+ 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53,
+ 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70,
- 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x61, 0x70,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74,
+ 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x76, 0x63, 0x53,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74,
- 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72,
- 0x61, 0x74, 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x76, 0x63,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x76, 0x63,
0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x76,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x76,
0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82,
- 0x01, 0x0a, 0x1f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f,
- 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c,
+ 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63,
+ 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x76, 0x63, 0x53, 0x74,
+ 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a,
+ 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x74, 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76,
- 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
+ 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x74, 0x65, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
+ 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x50, 0x76, 0x63, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x4c, 0x69, 0x73,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x24,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
+ 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x4c,
+ 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21,
- 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
- 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68,
- 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55,
- 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
- 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55,
- 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
- 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54, 0x68,
- 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x43, 0x72,
+ 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4f, 0x4f, 0x4d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
+ 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54,
+ 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x43, 0x50, 0x55, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f,
+ 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x85, 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69,
- 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f,
+ 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9a, 0x01,
+ 0x0a, 0x27, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42,
+ 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f,
0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
+ 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57,
0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69,
- 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f,
- 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x9d, 0x01, 0x0a, 0x28, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72,
0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x85, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69,
- 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74,
- 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x55, 0x70, 0x73, 0x65, 0x72,
- 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x75, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73,
- 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75,
- 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
- 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x22, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69,
- 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x5e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
- 0x6c, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
+ 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f,
+ 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9d, 0x01, 0x0a, 0x28, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x38, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x64, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
+ 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d,
+ 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x7c, 0x0a, 0x1d, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
+ 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f,
+ 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+ 0x12, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x72,
+ 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x72, 0x6f,
+ 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x6d, 0x0a, 0x18, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61,
+ 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
+ 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73,
+ 0x0a, 0x1a, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
+ 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x13,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42,
- 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x75, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
- 0x6c, 0x65, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x28, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x79, 0x49, 0x44, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x44,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42,
- 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x28,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
+ 0x6c, 0x65, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x79, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70,
+ 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x57, 0x6f, 0x72, 0x6b,
0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f,
- 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41,
- 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70,
- 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4e, 0x6f,
- 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e,
+ 0x12, 0x5b, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75,
+ 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a,
+ 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c,
+ 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65,
+ 0x73, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x6f, 0x67, 0x67, 0x6c,
+ 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x44, 0x69,
+ 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x42, 0x61, 0x74,
+ 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f,
+ 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69,
+ 0x7a, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63,
+ 0x68, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f,
+ 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e,
+ 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73,
+ 0x12, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55,
+ 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70,
+ 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x70, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x6e, 0x65, 0x54, 0x69, 0x6d,
+ 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x6e, 0x65, 0x54,
+ 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69,
+ 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x85, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41,
+ 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c,
+ 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70,
+ 0x6c, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4e,
0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42,
- 0x91, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x13,
- 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72,
- 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e, 0x63, 0x2f, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x6b, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41,
- 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x70,
- 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50,
- 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x70, 0x69, 0x3a,
- 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+ 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x67, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x4c, 0x69, 0x73,
+ 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x61, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x76, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x4c, 0x69,
+ 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
+ 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63,
+ 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
+ 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65,
+ 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a,
+ 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73,
+ 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x23, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
+ 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x21, 0x4c, 0x69,
+ 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12,
+ 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x31, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e,
+ 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f,
+ 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65,
+ 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x73, 0x0a, 0x1a, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x6e,
+ 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x29,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x46,
+ 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52,
+ 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73,
+ 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75,
+ 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
+ 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x75, 0x74, 0x68,
+ 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x22, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x2a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
+ 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65,
+ 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65,
+ 0x12, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63,
+ 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x2c,
+ 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73,
+ 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
+ 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3b, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69,
+ 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f,
+ 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9a, 0x01, 0x0a,
+ 0x27, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72,
+ 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x23, 0x50, 0x72,
+ 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69,
+ 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x2b, 0x50,
+ 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e,
+ 0x73, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+ 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x46, 0x6f, 0x72, 0x65, 0x6e, 0x73, 0x69, 0x63, 0x53,
+ 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x42, 0x91, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x42, 0x13, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75,
+ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x7a, 0x65, 0x72, 0x6f, 0x2d, 0x69, 0x6e,
+ 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x6b, 0x72, 0x2f,
+ 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31,
+ 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca,
+ 0x02, 0x06, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x70, 0x69, 0x5c, 0x56,
+ 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07,
+ 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -35813,1183 +55504,1768 @@ func file_api_v1_recommendation_proto_rawDescGZIP() []byte {
return file_api_v1_recommendation_proto_rawDescData
}
-var file_api_v1_recommendation_proto_enumTypes = make([]protoimpl.EnumInfo, 17)
-var file_api_v1_recommendation_proto_msgTypes = make([]protoimpl.MessageInfo, 402)
+var file_api_v1_recommendation_proto_enumTypes = make([]protoimpl.EnumInfo, 35)
+var file_api_v1_recommendation_proto_msgTypes = make([]protoimpl.MessageInfo, 602)
var file_api_v1_recommendation_proto_goTypes = []interface{}{
(ReconcileStatus)(0), // 0: api.v1.ReconcileStatus
(ActionToTake)(0), // 1: api.v1.ActionToTake
- (CostPeriod)(0), // 2: api.v1.CostPeriod
- (LiveMigDeletionPropagation)(0), // 3: api.v1.LiveMigDeletionPropagation
- (RecommendationStatus)(0), // 4: api.v1.RecommendationStatus
- (NodeGroupCheckpointState)(0), // 5: api.v1.NodeGroupCheckpointState
- (TargetFilterType)(0), // 6: api.v1.TargetFilterType
- (InstanceStorePolicy)(0), // 7: api.v1.InstanceStorePolicy
- (ActionTrigger)(0), // 8: api.v1.ActionTrigger
- (WorkloadDetectionTrigger)(0), // 9: api.v1.WorkloadDetectionTrigger
- (NodeGroupDetectionTrigger)(0), // 10: api.v1.NodeGroupDetectionTrigger
- (NodeGroupActionsAllowed)(0), // 11: api.v1.NodeGroupActionsAllowed
- (RecommendationMode)(0), // 12: api.v1.RecommendationMode
- (RecommendationType)(0), // 13: api.v1.RecommendationType
- (HPAMetricType)(0), // 14: api.v1.HPAMetricType
- (PvcOperationType)(0), // 15: api.v1.PvcOperationType
- (WorkloadRuleSource)(0), // 16: api.v1.WorkloadRuleSource
- (*GetRecommendationsRequest)(nil), // 17: api.v1.GetRecommendationsRequest
- (*GetRecommendationsResponse)(nil), // 18: api.v1.GetRecommendationsResponse
- (*GetRecommendationsForWorkloadRequest)(nil), // 19: api.v1.GetRecommendationsForWorkloadRequest
- (*GetRecommendationsForWorkloadResponse)(nil), // 20: api.v1.GetRecommendationsForWorkloadResponse
- (*GetNodeGroupStatsRequest)(nil), // 21: api.v1.GetNodeGroupStatsRequest
- (*GetNodeGroupStatsResponse)(nil), // 22: api.v1.GetNodeGroupStatsResponse
- (*GetOptimalInstanceTypeForNodeGroupRequest)(nil), // 23: api.v1.GetOptimalInstanceTypeForNodeGroupRequest
- (*GetOptimalInstanceTypeForNodeGroupResponse)(nil), // 24: api.v1.GetOptimalInstanceTypeForNodeGroupResponse
- (*GetLatestNodeGroupRecommendationRequest)(nil), // 25: api.v1.GetLatestNodeGroupRecommendationRequest
- (*GetLatestNodeGroupRecommendationResponse)(nil), // 26: api.v1.GetLatestNodeGroupRecommendationResponse
- (*GetLatestWorkloadRecommendationRequest)(nil), // 27: api.v1.GetLatestWorkloadRecommendationRequest
- (*GetLatestWorkloadRecommendationResponse)(nil), // 28: api.v1.GetLatestWorkloadRecommendationResponse
- (*GetPreviewWorkloadRecommendationRequest)(nil), // 29: api.v1.GetPreviewWorkloadRecommendationRequest
- (*GetPreviewWorkloadRecommendationResponse)(nil), // 30: api.v1.GetPreviewWorkloadRecommendationResponse
- (*GetPreviewWorkloadRecommendationsRequest)(nil), // 31: api.v1.GetPreviewWorkloadRecommendationsRequest
- (*WorkloadIdentifier)(nil), // 32: api.v1.WorkloadIdentifier
- (*GetPreviewWorkloadRecommendationsResponse)(nil), // 33: api.v1.GetPreviewWorkloadRecommendationsResponse
- (*CreateClusterRecommendationPolicyRequest)(nil), // 34: api.v1.CreateClusterRecommendationPolicyRequest
- (*CreateClusterRecommendationPolicyResponse)(nil), // 35: api.v1.CreateClusterRecommendationPolicyResponse
- (*GetClusterRecommendationPolicyRequest)(nil), // 36: api.v1.GetClusterRecommendationPolicyRequest
- (*GetClusterRecommendationPolicyResponse)(nil), // 37: api.v1.GetClusterRecommendationPolicyResponse
- (*ListClusterRecommendationPoliciesRequest)(nil), // 38: api.v1.ListClusterRecommendationPoliciesRequest
- (*ListClusterRecommendationPoliciesResponse)(nil), // 39: api.v1.ListClusterRecommendationPoliciesResponse
- (*UpdateClusterRecommendationPolicyRequest)(nil), // 40: api.v1.UpdateClusterRecommendationPolicyRequest
- (*UpdateClusterRecommendationPolicyResponse)(nil), // 41: api.v1.UpdateClusterRecommendationPolicyResponse
- (*DeleteClusterRecommendationPolicyRequest)(nil), // 42: api.v1.DeleteClusterRecommendationPolicyRequest
- (*DeleteClusterRecommendationPolicyResponse)(nil), // 43: api.v1.DeleteClusterRecommendationPolicyResponse
- (*AttachClusterRecommendationPolicyRequest)(nil), // 44: api.v1.AttachClusterRecommendationPolicyRequest
- (*AttachClusterRecommendationPolicyResponse)(nil), // 45: api.v1.AttachClusterRecommendationPolicyResponse
- (*GetWorkloadsWithAttachedPolicyTargetsRequest)(nil), // 46: api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest
- (*GetWorkloadsWithAttachedPolicyTargetsResponse)(nil), // 47: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse
- (*TargetIdList)(nil), // 48: api.v1.TargetIdList
- (*CreateNodeGroupRecommendationPolicyRequest)(nil), // 49: api.v1.CreateNodeGroupRecommendationPolicyRequest
- (*CreateNodeGroupRecommendationPolicyResponse)(nil), // 50: api.v1.CreateNodeGroupRecommendationPolicyResponse
- (*GetNodeGroupRecommendationPolicyRequest)(nil), // 51: api.v1.GetNodeGroupRecommendationPolicyRequest
- (*GetNodeGroupRecommendationPolicyResponse)(nil), // 52: api.v1.GetNodeGroupRecommendationPolicyResponse
- (*ListNodeGroupRecommendationPoliciesRequest)(nil), // 53: api.v1.ListNodeGroupRecommendationPoliciesRequest
- (*ListNodeGroupRecommendationPoliciesResponse)(nil), // 54: api.v1.ListNodeGroupRecommendationPoliciesResponse
- (*UpdateNodeGroupRecommendationPolicyRequest)(nil), // 55: api.v1.UpdateNodeGroupRecommendationPolicyRequest
- (*UpdateNodeGroupRecommendationPolicyResponse)(nil), // 56: api.v1.UpdateNodeGroupRecommendationPolicyResponse
- (*DeleteNodeGroupRecommendationPolicyRequest)(nil), // 57: api.v1.DeleteNodeGroupRecommendationPolicyRequest
- (*DeleteNodeGroupRecommendationPolicyResponse)(nil), // 58: api.v1.DeleteNodeGroupRecommendationPolicyResponse
- (*AttachNodeGroupRecommendationPolicyRequest)(nil), // 59: api.v1.AttachNodeGroupRecommendationPolicyRequest
- (*AttachNodeGroupRecommendationPolicyResponse)(nil), // 60: api.v1.AttachNodeGroupRecommendationPolicyResponse
- (*CreateWorkloadRecommendationPolicyRequest)(nil), // 61: api.v1.CreateWorkloadRecommendationPolicyRequest
- (*CreateWorkloadRecommendationPolicyResponse)(nil), // 62: api.v1.CreateWorkloadRecommendationPolicyResponse
- (*GetWorkloadRecommendationPolicyRequest)(nil), // 63: api.v1.GetWorkloadRecommendationPolicyRequest
- (*GetWorkloadRecommendationPolicyResponse)(nil), // 64: api.v1.GetWorkloadRecommendationPolicyResponse
- (*ListWorkloadRecommendationPoliciesRequest)(nil), // 65: api.v1.ListWorkloadRecommendationPoliciesRequest
- (*ListWorkloadRecommendationPoliciesResponse)(nil), // 66: api.v1.ListWorkloadRecommendationPoliciesResponse
- (*UpdateWorkloadRecommendationPolicyRequest)(nil), // 67: api.v1.UpdateWorkloadRecommendationPolicyRequest
- (*UpdateWorkloadRecommendationPolicyResponse)(nil), // 68: api.v1.UpdateWorkloadRecommendationPolicyResponse
- (*DeleteWorkloadRecommendationPolicyRequest)(nil), // 69: api.v1.DeleteWorkloadRecommendationPolicyRequest
- (*DeleteWorkloadRecommendationPolicyResponse)(nil), // 70: api.v1.DeleteWorkloadRecommendationPolicyResponse
- (*AttachWorkloadRecommendationPolicyRequest)(nil), // 71: api.v1.AttachWorkloadRecommendationPolicyRequest
- (*AttachWorkloadRecommendationPolicyResponse)(nil), // 72: api.v1.AttachWorkloadRecommendationPolicyResponse
- (*AttachWorkloadRecommendationPoliciesRequest)(nil), // 73: api.v1.AttachWorkloadRecommendationPoliciesRequest
- (*AttachWorkloadRecommendationPoliciesResponse)(nil), // 74: api.v1.AttachWorkloadRecommendationPoliciesResponse
- (*WorkloadPolicyAttachment)(nil), // 75: api.v1.WorkloadPolicyAttachment
- (*WorkloadPolicyTarget)(nil), // 76: api.v1.WorkloadPolicyTarget
- (*CreateWorkloadPolicyTargetRequest)(nil), // 77: api.v1.CreateWorkloadPolicyTargetRequest
- (*CreateWorkloadPolicyTargetResponse)(nil), // 78: api.v1.CreateWorkloadPolicyTargetResponse
- (*GetWorkloadPolicyTargetRequest)(nil), // 79: api.v1.GetWorkloadPolicyTargetRequest
- (*GetWorkloadPolicyTargetResponse)(nil), // 80: api.v1.GetWorkloadPolicyTargetResponse
- (*ListWorkloadPolicyTargetsRequest)(nil), // 81: api.v1.ListWorkloadPolicyTargetsRequest
- (*ListWorkloadPolicyTargetsResponse)(nil), // 82: api.v1.ListWorkloadPolicyTargetsResponse
- (*UpdateWorkloadPolicyTargetRequest)(nil), // 83: api.v1.UpdateWorkloadPolicyTargetRequest
- (*UpdateWorkloadPolicyTargetResponse)(nil), // 84: api.v1.UpdateWorkloadPolicyTargetResponse
- (*DeleteWorkloadPolicyTargetRequest)(nil), // 85: api.v1.DeleteWorkloadPolicyTargetRequest
- (*ToggleWorkloadPolicyTargetsRequest)(nil), // 86: api.v1.ToggleWorkloadPolicyTargetsRequest
- (*ToggleWorkloadPolicyTargetsResponse)(nil), // 87: api.v1.ToggleWorkloadPolicyTargetsResponse
- (*DeleteWorkloadPolicyTargetResponse)(nil), // 88: api.v1.DeleteWorkloadPolicyTargetResponse
- (*RemoveClusterOptimizationsRequest)(nil), // 89: api.v1.RemoveClusterOptimizationsRequest
- (*RemoveClusterOptimizationsResponse)(nil), // 90: api.v1.RemoveClusterOptimizationsResponse
- (*PreviewWorkloadPolicyTargetMatchesRequest)(nil), // 91: api.v1.PreviewWorkloadPolicyTargetMatchesRequest
- (*PreviewWorkloadPolicyTargetMatchesResponse)(nil), // 92: api.v1.PreviewWorkloadPolicyTargetMatchesResponse
- (*GetPreviewWorkloadPolicyTargetRecommendationsRequest)(nil), // 93: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest
- (*GetPreviewWorkloadPolicyTargetRecommendationsResponse)(nil), // 94: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse
- (*WorkloadPercentileSummary)(nil), // 95: api.v1.WorkloadPercentileSummary
- (*NodeGroupPolicyTarget)(nil), // 96: api.v1.NodeGroupPolicyTarget
- (*CreateNodeGroupPolicyTargetRequest)(nil), // 97: api.v1.CreateNodeGroupPolicyTargetRequest
- (*CreateNodeGroupPolicyTargetResponse)(nil), // 98: api.v1.CreateNodeGroupPolicyTargetResponse
- (*GetNodeGroupPolicyTargetRequest)(nil), // 99: api.v1.GetNodeGroupPolicyTargetRequest
- (*GetNodeGroupPolicyTargetResponse)(nil), // 100: api.v1.GetNodeGroupPolicyTargetResponse
- (*ListNodeGroupPolicyTargetsRequest)(nil), // 101: api.v1.ListNodeGroupPolicyTargetsRequest
- (*ListNodeGroupPolicyTargetsResponse)(nil), // 102: api.v1.ListNodeGroupPolicyTargetsResponse
- (*UpdateNodeGroupPolicyTargetRequest)(nil), // 103: api.v1.UpdateNodeGroupPolicyTargetRequest
- (*UpdateNodeGroupPolicyTargetResponse)(nil), // 104: api.v1.UpdateNodeGroupPolicyTargetResponse
- (*DeleteNodeGroupPolicyTargetRequest)(nil), // 105: api.v1.DeleteNodeGroupPolicyTargetRequest
- (*ToggleNodeGroupPolicyTargetsRequest)(nil), // 106: api.v1.ToggleNodeGroupPolicyTargetsRequest
- (*ToggleNodeGroupPolicyTargetsResponse)(nil), // 107: api.v1.ToggleNodeGroupPolicyTargetsResponse
- (*DeleteNodeGroupPolicyTargetResponse)(nil), // 108: api.v1.DeleteNodeGroupPolicyTargetResponse
- (*PreviewNodeGroupPolicyTargetMatchesRequest)(nil), // 109: api.v1.PreviewNodeGroupPolicyTargetMatchesRequest
- (*PreviewNodeGroupPolicyTargetMatchesResponse)(nil), // 110: api.v1.PreviewNodeGroupPolicyTargetMatchesResponse
- (*GetPreviewNodeGroupPolicyTargetRecommendationsRequest)(nil), // 111: api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsRequest
- (*GetPreviewNodeGroupPolicyTargetRecommendationsResponse)(nil), // 112: api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsResponse
- (*BalanceGetRecommendationsRequest)(nil), // 113: api.v1.BalanceGetRecommendationsRequest
- (*BalanceGetRecommendationsResponse)(nil), // 114: api.v1.BalanceGetRecommendationsResponse
- (*BatchNodeGroupRecommendations)(nil), // 115: api.v1.BatchNodeGroupRecommendations
- (*BatchWorkloadRecommendations)(nil), // 116: api.v1.BatchWorkloadRecommendations
- (*WorkloadRule)(nil), // 117: api.v1.WorkloadRule
- (*ResourceRuleConfig)(nil), // 118: api.v1.ResourceRuleConfig
- (*HPAMetricTrigger)(nil), // 119: api.v1.HPAMetricTrigger
- (*HPAFallback)(nil), // 120: api.v1.HPAFallback
- (*ContainerResourceConfig)(nil), // 121: api.v1.ContainerResourceConfig
- (*ContainerResourceRuleConfig)(nil), // 122: api.v1.ContainerResourceRuleConfig
- (*HPARuleConfig)(nil), // 123: api.v1.HPARuleConfig
- (*EmergencyResponseConfig)(nil), // 124: api.v1.EmergencyResponseConfig
- (*PercentileValues)(nil), // 125: api.v1.PercentileValues
- (*ResourcePercentiles)(nil), // 126: api.v1.ResourcePercentiles
- (*BurstinessRatios)(nil), // 127: api.v1.BurstinessRatios
- (*WorkloadClassification)(nil), // 128: api.v1.WorkloadClassification
- (*BatchWorkloadRules)(nil), // 129: api.v1.BatchWorkloadRules
- (*WorkloadWithActiveRecommendations)(nil), // 130: api.v1.WorkloadWithActiveRecommendations
- (*GenericResourceRecommendation)(nil), // 131: api.v1.GenericResourceRecommendation
- (*BatchGenericResourceRecommendations)(nil), // 132: api.v1.BatchGenericResourceRecommendations
- (*BatchPvcStorageRecommendations)(nil), // 133: api.v1.BatchPvcStorageRecommendations
- (*GeneratePodDisruptionBudgetRequest)(nil), // 134: api.v1.GeneratePodDisruptionBudgetRequest
- (*GeneratePodDisruptionBudgetResponse)(nil), // 135: api.v1.GeneratePodDisruptionBudgetResponse
- (*GenerateAndCreatePodDisruptionBudgetRequest)(nil), // 136: api.v1.GenerateAndCreatePodDisruptionBudgetRequest
- (*GenerateAndCreatePodDisruptionBudgetResponse)(nil), // 137: api.v1.GenerateAndCreatePodDisruptionBudgetResponse
- (*CreatePodDisruptionBudgetRequest)(nil), // 138: api.v1.CreatePodDisruptionBudgetRequest
- (*CreatePodDisruptionBudgetResponse)(nil), // 139: api.v1.CreatePodDisruptionBudgetResponse
- (*GetPDBRecommendationForWorkloadRequest)(nil), // 140: api.v1.GetPDBRecommendationForWorkloadRequest
- (*GetPDBRecommendationForWorkloadResponse)(nil), // 141: api.v1.GetPDBRecommendationForWorkloadResponse
- (*ReconcileWorkload)(nil), // 142: api.v1.ReconcileWorkload
- (*ReconcileResponse)(nil), // 143: api.v1.ReconcileResponse
- (*OperatorHealth)(nil), // 144: api.v1.OperatorHealth
- (*AgentHealth)(nil), // 145: api.v1.AgentHealth
- (*AgentHealthMeta)(nil), // 146: api.v1.AgentHealthMeta
- (*HealthReport)(nil), // 147: api.v1.HealthReport
- (*NodeStats)(nil), // 148: api.v1.NodeStats
- (*NodeMetric)(nil), // 149: api.v1.NodeMetric
- (*ContainerStats)(nil), // 150: api.v1.ContainerStats
- (*ContainerMetric)(nil), // 151: api.v1.ContainerMetric
- (*ContainerSummarizedMetric)(nil), // 152: api.v1.ContainerSummarizedMetric
- (*Metric)(nil), // 153: api.v1.Metric
- (*ContainerRecommendation)(nil), // 154: api.v1.ContainerRecommendation
- (*KedaScaledObjectRecommendation)(nil), // 155: api.v1.KedaScaledObjectRecommendation
- (*ResourceRecommendation)(nil), // 156: api.v1.ResourceRecommendation
- (*Toleration)(nil), // 157: api.v1.Toleration
- (*ClusterRecommendationPolicy)(nil), // 158: api.v1.ClusterRecommendationPolicy
- (*NodeGroupRecommendationPolicy)(nil), // 159: api.v1.NodeGroupRecommendationPolicy
- (*VerticalScalingOptimizationTarget)(nil), // 160: api.v1.VerticalScalingOptimizationTarget
- (*HorizontalScalingOptimizationTarget)(nil), // 161: api.v1.HorizontalScalingOptimizationTarget
- (*WorkloadRecommendationPolicy)(nil), // 162: api.v1.WorkloadRecommendationPolicy
- (*GetPolicyRecommendedDefaultsRequest)(nil), // 163: api.v1.GetPolicyRecommendedDefaultsRequest
- (*GetPolicyRecommendedDefaultsResponse)(nil), // 164: api.v1.GetPolicyRecommendedDefaultsResponse
- (*BalanceRegisterRequest)(nil), // 165: api.v1.BalanceRegisterRequest
- (*BalanceFeatures)(nil), // 166: api.v1.BalanceFeatures
- (*BalanceApplyRecommendationResponse)(nil), // 167: api.v1.BalanceApplyRecommendationResponse
- (*LiveMigrationResult)(nil), // 168: api.v1.LiveMigrationResult
- (*NodeGroupReference)(nil), // 169: api.v1.NodeGroupReference
- (*NodeGroupRecommendation)(nil), // 170: api.v1.NodeGroupRecommendation
- (*CostImpact)(nil), // 171: api.v1.CostImpact
- (*WorkloadRecommendation)(nil), // 172: api.v1.WorkloadRecommendation
- (*GetAttachedNodeGroupPoliciesRequest)(nil), // 173: api.v1.GetAttachedNodeGroupPoliciesRequest
- (*GetAttachedNodeGroupPoliciesResponse)(nil), // 174: api.v1.GetAttachedNodeGroupPoliciesResponse
- (*GetAttachedWorkloadPoliciesRequest)(nil), // 175: api.v1.GetAttachedWorkloadPoliciesRequest
- (*GetAttachedWorkloadPoliciesResponse)(nil), // 176: api.v1.GetAttachedWorkloadPoliciesResponse
- (*WorkloadRecommendationPolicyGroup)(nil), // 177: api.v1.WorkloadRecommendationPolicyGroup
- (*WorkloadPolicyTargetGroup)(nil), // 178: api.v1.WorkloadPolicyTargetGroup
- (*WorkloadIdentifiers)(nil), // 179: api.v1.WorkloadIdentifiers
- (*WorkloadPolicies)(nil), // 180: api.v1.WorkloadPolicies
- (*ListAttachedWorkloadPoliciesRequest)(nil), // 181: api.v1.ListAttachedWorkloadPoliciesRequest
- (*ListAttachedWorkloadPoliciesResponse)(nil), // 182: api.v1.ListAttachedWorkloadPoliciesResponse
- (*ListAttachedNodeGroupPoliciesRequest)(nil), // 183: api.v1.ListAttachedNodeGroupPoliciesRequest
- (*ListAttachedNodeGroupPoliciesResponse)(nil), // 184: api.v1.ListAttachedNodeGroupPoliciesResponse
- (*NodeGroupItem)(nil), // 185: api.v1.NodeGroupItem
- (*RecommendationAppliedRequest)(nil), // 186: api.v1.RecommendationAppliedRequest
- (*RecommendationAppliedResponse)(nil), // 187: api.v1.RecommendationAppliedResponse
- (*ApplyRecommendationRequest)(nil), // 188: api.v1.ApplyRecommendationRequest
- (*ApplyRecommendationResponse)(nil), // 189: api.v1.ApplyRecommendationResponse
- (*RecommendationEventsRequest)(nil), // 190: api.v1.RecommendationEventsRequest
- (*RecommendationEventsResponse)(nil), // 191: api.v1.RecommendationEventsResponse
- (*RetrieveSavingsForWorkloadRequest)(nil), // 192: api.v1.RetrieveSavingsForWorkloadRequest
- (*RetrieveSavingsForWorkloadResponse)(nil), // 193: api.v1.RetrieveSavingsForWorkloadResponse
- (*CreateNodePoliciesRequest)(nil), // 194: api.v1.CreateNodePoliciesRequest
- (*CreateNodePoliciesResponse)(nil), // 195: api.v1.CreateNodePoliciesResponse
- (*SuggestedNodePolicyRequest)(nil), // 196: api.v1.SuggestedNodePolicyRequest
- (*SuggestedNodePolicyResponse)(nil), // 197: api.v1.SuggestedNodePolicyResponse
- (*GenerateNodePoliciesFromKarpenterRequest)(nil), // 198: api.v1.GenerateNodePoliciesFromKarpenterRequest
- (*GenerateNodePoliciesFromKarpenterResponse)(nil), // 199: api.v1.GenerateNodePoliciesFromKarpenterResponse
- (*GenerateNodePoliciesFromNodeGroupsRequest)(nil), // 200: api.v1.GenerateNodePoliciesFromNodeGroupsRequest
- (*GenerateNodePoliciesFromNodeGroupsResponse)(nil), // 201: api.v1.GenerateNodePoliciesFromNodeGroupsResponse
- (*NodeGroupMigrationEligibility)(nil), // 202: api.v1.NodeGroupMigrationEligibility
- (*GetNodeAnnotationReadinessRequest)(nil), // 203: api.v1.GetNodeAnnotationReadinessRequest
- (*GetNodeAnnotationReadinessResponse)(nil), // 204: api.v1.GetNodeAnnotationReadinessResponse
- (*GetMigrationStateRequest)(nil), // 205: api.v1.GetMigrationStateRequest
- (*GetMigrationStateResponse)(nil), // 206: api.v1.GetMigrationStateResponse
- (*UpdateMigrationStateRequest)(nil), // 207: api.v1.UpdateMigrationStateRequest
- (*UpdateMigrationStateResponse)(nil), // 208: api.v1.UpdateMigrationStateResponse
- (*ReportNodePoolValidationRequest)(nil), // 209: api.v1.ReportNodePoolValidationRequest
- (*ReportNodePoolValidationResponse)(nil), // 210: api.v1.ReportNodePoolValidationResponse
- (*GetNodePoolValidationsRequest)(nil), // 211: api.v1.GetNodePoolValidationsRequest
- (*NodePoolValidationReport)(nil), // 212: api.v1.NodePoolValidationReport
- (*GetNodePoolValidationsResponse)(nil), // 213: api.v1.GetNodePoolValidationsResponse
- (*WorkloadCompatibilityWarning)(nil), // 214: api.v1.WorkloadCompatibilityWarning
- (*ListNodePoliciesRequest)(nil), // 215: api.v1.ListNodePoliciesRequest
- (*ListNodePoliciesResponse)(nil), // 216: api.v1.ListNodePoliciesResponse
- (*UpdateNodePolicyRequest)(nil), // 217: api.v1.UpdateNodePolicyRequest
- (*UpdateNodePolicyResponse)(nil), // 218: api.v1.UpdateNodePolicyResponse
- (*NodeGroupCheckpointStatus)(nil), // 219: api.v1.NodeGroupCheckpointStatus
- (*GetNodeGroupsCheckpointStatusRequest)(nil), // 220: api.v1.GetNodeGroupsCheckpointStatusRequest
- (*GetNodeGroupsCheckpointStatusResponse)(nil), // 221: api.v1.GetNodeGroupsCheckpointStatusResponse
- (*SetNodePolicyCheckpointLabelRequest)(nil), // 222: api.v1.SetNodePolicyCheckpointLabelRequest
- (*SetNodePolicyCheckpointLabelResponse)(nil), // 223: api.v1.SetNodePolicyCheckpointLabelResponse
- (*DeleteNodePolicyRequest)(nil), // 224: api.v1.DeleteNodePolicyRequest
- (*DeleteNodePolicyResponse)(nil), // 225: api.v1.DeleteNodePolicyResponse
- (*NodePolicy)(nil), // 226: api.v1.NodePolicy
- (*PreviewNodeRecommendationConfigRequest)(nil), // 227: api.v1.PreviewNodeRecommendationConfigRequest
- (*PreviewNodeRecommendationConfigResponse)(nil), // 228: api.v1.PreviewNodeRecommendationConfigResponse
- (*NodeRecommendationConfig)(nil), // 229: api.v1.NodeRecommendationConfig
- (*SuggestedKarpenterConfigRequest)(nil), // 230: api.v1.SuggestedKarpenterConfigRequest
- (*SuggestedKarpenterConfigResponse)(nil), // 231: api.v1.SuggestedKarpenterConfigResponse
- (*GetAvailableKindsByTargetingFiltersRequest)(nil), // 232: api.v1.GetAvailableKindsByTargetingFiltersRequest
- (*SearchResourcesByTargetingFiltersRequest)(nil), // 233: api.v1.SearchResourcesByTargetingFiltersRequest
- (*TargetFilters)(nil), // 234: api.v1.TargetFilters
- (*GetAvailableKindsByTargetingFiltersResponse)(nil), // 235: api.v1.GetAvailableKindsByTargetingFiltersResponse
- (*SearchResourcesByTargetingFiltersResponse)(nil), // 236: api.v1.SearchResourcesByTargetingFiltersResponse
- (*NamespaceSearchResult)(nil), // 237: api.v1.NamespaceSearchResult
- (*WorkloadSearchResult)(nil), // 238: api.v1.WorkloadSearchResult
- (*NodeGroupSearchResult)(nil), // 239: api.v1.NodeGroupSearchResult
- (*LabelSearchResult)(nil), // 240: api.v1.LabelSearchResult
- (*CreateNodePolicyTargetsRequest)(nil), // 241: api.v1.CreateNodePolicyTargetsRequest
- (*CreateNodePolicyTargetsResponse)(nil), // 242: api.v1.CreateNodePolicyTargetsResponse
- (*ListNodePolicyTargetsRequest)(nil), // 243: api.v1.ListNodePolicyTargetsRequest
- (*ListNodePolicyTargetsResponse)(nil), // 244: api.v1.ListNodePolicyTargetsResponse
- (*UpdateNodePolicyTargetRequest)(nil), // 245: api.v1.UpdateNodePolicyTargetRequest
- (*UpdateNodePolicyTargetResponse)(nil), // 246: api.v1.UpdateNodePolicyTargetResponse
- (*NodePolicyTarget)(nil), // 247: api.v1.NodePolicyTarget
- (*NodePolicyCondition)(nil), // 248: api.v1.NodePolicyCondition
- (*NodePolicyTargetStatus)(nil), // 249: api.v1.NodePolicyTargetStatus
- (*ZonalShiftConfig)(nil), // 250: api.v1.ZonalShiftConfig
- (*Taint)(nil), // 251: api.v1.Taint
- (*DisruptionBudget)(nil), // 252: api.v1.DisruptionBudget
- (*DisruptionPolicy)(nil), // 253: api.v1.DisruptionPolicy
- (*ResourceLimits)(nil), // 254: api.v1.ResourceLimits
- (*AWSNodeClassSpec)(nil), // 255: api.v1.AWSNodeClassSpec
- (*GetInstanceFamiliesRequest)(nil), // 256: api.v1.GetInstanceFamiliesRequest
- (*GetInstanceFamiliesResponse)(nil), // 257: api.v1.GetInstanceFamiliesResponse
- (*GetInstanceSizesRequest)(nil), // 258: api.v1.GetInstanceSizesRequest
- (*GetInstanceSizesResponse)(nil), // 259: api.v1.GetInstanceSizesResponse
- (*InstanceFamily)(nil), // 260: api.v1.InstanceFamily
- (*InstanceSize)(nil), // 261: api.v1.InstanceSize
- (*InstanceCategory)(nil), // 262: api.v1.InstanceCategory
- (*InstanceCPU)(nil), // 263: api.v1.InstanceCPU
- (*InstanceTypeName)(nil), // 264: api.v1.InstanceTypeName
- (*GetInstanceCategoriesRequest)(nil), // 265: api.v1.GetInstanceCategoriesRequest
- (*GetInstanceCategoriesResponse)(nil), // 266: api.v1.GetInstanceCategoriesResponse
- (*GetInstanceCPUsRequest)(nil), // 267: api.v1.GetInstanceCPUsRequest
- (*GetInstanceCPUsResponse)(nil), // 268: api.v1.GetInstanceCPUsResponse
- (*GetInstanceTypeNamesRequest)(nil), // 269: api.v1.GetInstanceTypeNamesRequest
- (*GetInstanceTypeNamesResponse)(nil), // 270: api.v1.GetInstanceTypeNamesResponse
- (*SubnetSelectorTerm)(nil), // 271: api.v1.SubnetSelectorTerm
- (*SecurityGroupSelectorTerm)(nil), // 272: api.v1.SecurityGroupSelectorTerm
- (*CapacityReservationSelectorTerm)(nil), // 273: api.v1.CapacityReservationSelectorTerm
- (*AMISelectorTerm)(nil), // 274: api.v1.AMISelectorTerm
- (*KubeletConfiguration)(nil), // 275: api.v1.KubeletConfiguration
- (*BlockDeviceMapping)(nil), // 276: api.v1.BlockDeviceMapping
- (*BlockDevice)(nil), // 277: api.v1.BlockDevice
- (*MetadataOptions)(nil), // 278: api.v1.MetadataOptions
- (*GCPNodeClassSpec)(nil), // 279: api.v1.GCPNodeClassSpec
- (*GCPImageSelectorTerm)(nil), // 280: api.v1.GCPImageSelectorTerm
- (*GCPDisk)(nil), // 281: api.v1.GCPDisk
- (*AzureNodeClassSpec)(nil), // 282: api.v1.AzureNodeClassSpec
- (*AzureKubeletConfiguration)(nil), // 283: api.v1.AzureKubeletConfiguration
- (*OCIImageSelectorTerm)(nil), // 284: api.v1.OCIImageSelectorTerm
- (*OCISubnetSelectorTerm)(nil), // 285: api.v1.OCISubnetSelectorTerm
- (*OCISecurityGroupSelectorTerm)(nil), // 286: api.v1.OCISecurityGroupSelectorTerm
- (*OCIBootConfig)(nil), // 287: api.v1.OCIBootConfig
- (*OCILaunchOptions)(nil), // 288: api.v1.OCILaunchOptions
- (*OCIVolumeAttributes)(nil), // 289: api.v1.OCIVolumeAttributes
- (*OCINodeClassSpec)(nil), // 290: api.v1.OCINodeClassSpec
- (*KarpenterSettingsRecommendation)(nil), // 291: api.v1.KarpenterSettingsRecommendation
- (*RawKarpenterSpec)(nil), // 292: api.v1.RawKarpenterSpec
- (*NodeRecommendation)(nil), // 293: api.v1.NodeRecommendation
- (*AWSKarpenterSpec)(nil), // 294: api.v1.AWSKarpenterSpec
- (*AKSKarpenterSpec)(nil), // 295: api.v1.AKSKarpenterSpec
- (*NodePool)(nil), // 296: api.v1.NodePool
- (*EC2NodeClass)(nil), // 297: api.v1.EC2NodeClass
- (*AKSNodeClass)(nil), // 298: api.v1.AKSNodeClass
- (*GCPKarpenterSpec)(nil), // 299: api.v1.GCPKarpenterSpec
- (*GCENodeClass)(nil), // 300: api.v1.GCENodeClass
- (*OCIKarpenterSpec)(nil), // 301: api.v1.OCIKarpenterSpec
- (*OCINodeClass)(nil), // 302: api.v1.OCINodeClass
- (*StorageRecommendationPolicy)(nil), // 303: api.v1.StorageRecommendationPolicy
- (*CreateStorageRecommendationPolicyRequest)(nil), // 304: api.v1.CreateStorageRecommendationPolicyRequest
- (*CreateStorageRecommendationPolicyResponse)(nil), // 305: api.v1.CreateStorageRecommendationPolicyResponse
- (*GetStorageRecommendationPolicyRequest)(nil), // 306: api.v1.GetStorageRecommendationPolicyRequest
- (*GetStorageRecommendationPolicyResponse)(nil), // 307: api.v1.GetStorageRecommendationPolicyResponse
- (*ListStorageRecommendationPoliciesRequest)(nil), // 308: api.v1.ListStorageRecommendationPoliciesRequest
- (*ListStorageRecommendationPoliciesResponse)(nil), // 309: api.v1.ListStorageRecommendationPoliciesResponse
- (*UpdateStorageRecommendationPolicyRequest)(nil), // 310: api.v1.UpdateStorageRecommendationPolicyRequest
- (*UpdateStorageRecommendationPolicyResponse)(nil), // 311: api.v1.UpdateStorageRecommendationPolicyResponse
- (*DeleteStorageRecommendationPolicyRequest)(nil), // 312: api.v1.DeleteStorageRecommendationPolicyRequest
- (*DeleteStorageRecommendationPolicyResponse)(nil), // 313: api.v1.DeleteStorageRecommendationPolicyResponse
- (*StoragePolicyTarget)(nil), // 314: api.v1.StoragePolicyTarget
- (*CreateStoragePolicyTargetRequest)(nil), // 315: api.v1.CreateStoragePolicyTargetRequest
- (*CreateStoragePolicyTargetResponse)(nil), // 316: api.v1.CreateStoragePolicyTargetResponse
- (*ListStoragePolicyTargetsRequest)(nil), // 317: api.v1.ListStoragePolicyTargetsRequest
- (*ListStoragePolicyTargetsResponse)(nil), // 318: api.v1.ListStoragePolicyTargetsResponse
- (*UpdateStoragePolicyTargetRequest)(nil), // 319: api.v1.UpdateStoragePolicyTargetRequest
- (*UpdateStoragePolicyTargetResponse)(nil), // 320: api.v1.UpdateStoragePolicyTargetResponse
- (*DeleteStoragePolicyTargetRequest)(nil), // 321: api.v1.DeleteStoragePolicyTargetRequest
- (*DeleteStoragePolicyTargetResponse)(nil), // 322: api.v1.DeleteStoragePolicyTargetResponse
- (*PvcStorageRecommendation)(nil), // 323: api.v1.PvcStorageRecommendation
- (*GetPvcStorageRecommendationRequest)(nil), // 324: api.v1.GetPvcStorageRecommendationRequest
- (*GetPvcStorageRecommendationResponse)(nil), // 325: api.v1.GetPvcStorageRecommendationResponse
- (*ListPvcStorageRecommendationsRequest)(nil), // 326: api.v1.ListPvcStorageRecommendationsRequest
- (*ListPvcStorageRecommendationsResponse)(nil), // 327: api.v1.ListPvcStorageRecommendationsResponse
- (*GeneratePvcStorageRecommendationRequest)(nil), // 328: api.v1.GeneratePvcStorageRecommendationRequest
- (*GeneratePvcStorageRecommendationResponse)(nil), // 329: api.v1.GeneratePvcStorageRecommendationResponse
- (*PreviewPvcStorageRecommendationRequest)(nil), // 330: api.v1.PreviewPvcStorageRecommendationRequest
- (*PreviewPvcStorageRecommendationResponse)(nil), // 331: api.v1.PreviewPvcStorageRecommendationResponse
- (*WorkloadRuleOOMEvent)(nil), // 332: api.v1.WorkloadRuleOOMEvent
- (*ListWorkloadRuleOOMEventsRequest)(nil), // 333: api.v1.ListWorkloadRuleOOMEventsRequest
- (*ListWorkloadRuleOOMEventsResponse)(nil), // 334: api.v1.ListWorkloadRuleOOMEventsResponse
- (*ListWorkloadOOMEventsRequest)(nil), // 335: api.v1.ListWorkloadOOMEventsRequest
- (*ListWorkloadOOMEventsResponse)(nil), // 336: api.v1.ListWorkloadOOMEventsResponse
- (*WorkloadRuleCPUThrottleEvent)(nil), // 337: api.v1.WorkloadRuleCPUThrottleEvent
- (*ListWorkloadRuleCPUThrottleEventsRequest)(nil), // 338: api.v1.ListWorkloadRuleCPUThrottleEventsRequest
- (*ListWorkloadRuleCPUThrottleEventsResponse)(nil), // 339: api.v1.ListWorkloadRuleCPUThrottleEventsResponse
- (*ListWorkloadCPUThrottleEventsRequest)(nil), // 340: api.v1.ListWorkloadCPUThrottleEventsRequest
- (*ListWorkloadCPUThrottleEventsResponse)(nil), // 341: api.v1.ListWorkloadCPUThrottleEventsResponse
- (*WorkloadOptimizationPolicyProto)(nil), // 342: api.v1.WorkloadOptimizationPolicyProto
- (*CreateWorkloadOptimizationPolicyRequest)(nil), // 343: api.v1.CreateWorkloadOptimizationPolicyRequest
- (*CreateWorkloadOptimizationPolicyResponse)(nil), // 344: api.v1.CreateWorkloadOptimizationPolicyResponse
- (*ListWorkloadOptimizationPoliciesRequest)(nil), // 345: api.v1.ListWorkloadOptimizationPoliciesRequest
- (*ListWorkloadOptimizationPoliciesResponse)(nil), // 346: api.v1.ListWorkloadOptimizationPoliciesResponse
- (*GetWorkloadOptimizationPolicyRequest)(nil), // 347: api.v1.GetWorkloadOptimizationPolicyRequest
- (*GetWorkloadOptimizationPolicyResponse)(nil), // 348: api.v1.GetWorkloadOptimizationPolicyResponse
- (*UpdateWorkloadOptimizationPolicyRequest)(nil), // 349: api.v1.UpdateWorkloadOptimizationPolicyRequest
- (*UpdateWorkloadOptimizationPolicyResponse)(nil), // 350: api.v1.UpdateWorkloadOptimizationPolicyResponse
- (*DeleteWorkloadOptimizationPolicyRequest)(nil), // 351: api.v1.DeleteWorkloadOptimizationPolicyRequest
- (*DeleteWorkloadOptimizationPolicyResponse)(nil), // 352: api.v1.DeleteWorkloadOptimizationPolicyResponse
- (*GetWorkloadRulesByPolicyRequest)(nil), // 353: api.v1.GetWorkloadRulesByPolicyRequest
- (*GetWorkloadRulesByPolicyResponse)(nil), // 354: api.v1.GetWorkloadRulesByPolicyResponse
- (*ListWorkloadRulesRequest)(nil), // 355: api.v1.ListWorkloadRulesRequest
- (*ListWorkloadRulesResponse)(nil), // 356: api.v1.ListWorkloadRulesResponse
- (*GetWorkloadRuleByIDRequest)(nil), // 357: api.v1.GetWorkloadRuleByIDRequest
- (*GetWorkloadRuleByIDResponse)(nil), // 358: api.v1.GetWorkloadRuleByIDResponse
- (*GetWorkloadRuleByWorkloadRequest)(nil), // 359: api.v1.GetWorkloadRuleByWorkloadRequest
- (*GetWorkloadRuleByWorkloadResponse)(nil), // 360: api.v1.GetWorkloadRuleByWorkloadResponse
- (*GetWorkloadByWorkloadRuleRequest)(nil), // 361: api.v1.GetWorkloadByWorkloadRuleRequest
- (*GetWorkloadByWorkloadRuleResponse)(nil), // 362: api.v1.GetWorkloadByWorkloadRuleResponse
- (*DeleteWorkloadRuleRequest)(nil), // 363: api.v1.DeleteWorkloadRuleRequest
- (*DeleteWorkloadRuleResponse)(nil), // 364: api.v1.DeleteWorkloadRuleResponse
- (*ManualRuleFields)(nil), // 365: api.v1.ManualRuleFields
- (*UpsertManualWorkloadRuleRequest)(nil), // 366: api.v1.UpsertManualWorkloadRuleRequest
- (*UpsertManualWorkloadRuleResponse)(nil), // 367: api.v1.UpsertManualWorkloadRuleResponse
- (*PreviewWorkloadRuleRequest)(nil), // 368: api.v1.PreviewWorkloadRuleRequest
- (*PreviewWorkloadRuleResponse)(nil), // 369: api.v1.PreviewWorkloadRuleResponse
- (*GetWorkloadContainerNamesRequest)(nil), // 370: api.v1.GetWorkloadContainerNamesRequest
- (*GetWorkloadContainerNamesResponse)(nil), // 371: api.v1.GetWorkloadContainerNamesResponse
- (*BatchAutoOptimizeWorkload)(nil), // 372: api.v1.BatchAutoOptimizeWorkload
- (*BatchAutoOptimizeWorkloadsRequest)(nil), // 373: api.v1.BatchAutoOptimizeWorkloadsRequest
- (*BatchAutoOptimizeWorkloadResult)(nil), // 374: api.v1.BatchAutoOptimizeWorkloadResult
- (*BatchAutoOptimizeWorkloadsResponse)(nil), // 375: api.v1.BatchAutoOptimizeWorkloadsResponse
- (*WorkloadProfileManifest)(nil), // 376: api.v1.WorkloadProfileManifest
- (*BatchWorkloadProfiles)(nil), // 377: api.v1.BatchWorkloadProfiles
- (*NodeConfigApplyEvent)(nil), // 378: api.v1.NodeConfigApplyEvent
- (*GetNodeRecommendationStatusRequest)(nil), // 379: api.v1.GetNodeRecommendationStatusRequest
- (*GetNodeRecommendationStatusResponse)(nil), // 380: api.v1.GetNodeRecommendationStatusResponse
- (*EnableCheckpointForPolicyRequest)(nil), // 381: api.v1.EnableCheckpointForPolicyRequest
- (*EnableCheckpointForPolicyResponse)(nil), // 382: api.v1.EnableCheckpointForPolicyResponse
- (*GetCheckpointApplyStatusRequest)(nil), // 383: api.v1.GetCheckpointApplyStatusRequest
- (*GetCheckpointApplyStatusResponse)(nil), // 384: api.v1.GetCheckpointApplyStatusResponse
- (*NodeApplyFailure)(nil), // 385: api.v1.NodeApplyFailure
- nil, // 386: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.WorkloadTargetMapEntry
- nil, // 387: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.WorkloadPercentilesEntry
- nil, // 388: api.v1.HPAMetricTrigger.MetadataEntry
- nil, // 389: api.v1.AgentHealth.NodeNameToAgentEntry
- nil, // 390: api.v1.GetAttachedWorkloadPoliciesResponse.PolicyIdToMatchedTargetsEntry
- nil, // 391: api.v1.ListAttachedWorkloadPoliciesResponse.PolicyMapEntry
- nil, // 392: api.v1.ListAttachedWorkloadPoliciesResponse.WorkloadMapEntry
- nil, // 393: api.v1.ListAttachedNodeGroupPoliciesResponse.PolicyMapEntry
- nil, // 394: api.v1.ListAttachedNodeGroupPoliciesResponse.NodeGroupMapEntry
- nil, // 395: api.v1.GetNodeGroupsCheckpointStatusResponse.ByNodeGroupEntry
- nil, // 396: api.v1.NodePolicy.LabelsEntry
- nil, // 397: api.v1.SuggestedKarpenterConfigResponse.NgToOriginalEntry
- nil, // 398: api.v1.SuggestedKarpenterConfigResponse.NgToSuggestedEntry
- nil, // 399: api.v1.AWSNodeClassSpec.TagsEntry
- nil, // 400: api.v1.SubnetSelectorTerm.TagsEntry
- nil, // 401: api.v1.SecurityGroupSelectorTerm.TagsEntry
- nil, // 402: api.v1.CapacityReservationSelectorTerm.TagsEntry
- nil, // 403: api.v1.AMISelectorTerm.TagsEntry
- nil, // 404: api.v1.KubeletConfiguration.SystemReservedEntry
- nil, // 405: api.v1.KubeletConfiguration.KubeReservedEntry
- nil, // 406: api.v1.KubeletConfiguration.EvictionHardEntry
- nil, // 407: api.v1.KubeletConfiguration.EvictionSoftEntry
- nil, // 408: api.v1.KubeletConfiguration.EvictionSoftGracePeriodEntry
- nil, // 409: api.v1.GCPNodeClassSpec.LabelsEntry
- nil, // 410: api.v1.GCPNodeClassSpec.MetadataEntry
- nil, // 411: api.v1.AzureNodeClassSpec.TagsEntry
- nil, // 412: api.v1.OCINodeClassSpec.MetaDataEntry
- nil, // 413: api.v1.OCINodeClassSpec.TagsEntry
- nil, // 414: api.v1.OCINodeClassSpec.FreeFormTagsEntry
- nil, // 415: api.v1.WorkloadOptimizationPolicyProto.ClusterNamesEntry
- nil, // 416: api.v1.GetWorkloadRulesByPolicyResponse.ClusterNamesEntry
- nil, // 417: api.v1.ListWorkloadRulesResponse.ClusterNamesEntry
- nil, // 418: api.v1.ListWorkloadRulesResponse.PolicyNamesEntry
- (*timestamppb.Timestamp)(nil), // 419: google.protobuf.Timestamp
- (*WorkloadFilters)(nil), // 420: api.v1.WorkloadFilters
- (*Pagination)(nil), // 421: api.v1.Pagination
- (K8SObjectKind)(0), // 422: api.v1.K8sObjectKind
- (*durationpb.Duration)(nil), // 423: google.protobuf.Duration
- (*LabelSelector)(nil), // 424: api.v1.LabelSelector
- (*RegexPattern)(nil), // 425: api.v1.RegexPattern
- (*WorkloadItem)(nil), // 426: api.v1.WorkloadItem
- (*MetricPercentiles)(nil), // 427: api.v1.MetricPercentiles
- (*NodeGroup)(nil), // 428: api.v1.NodeGroup
- (*HPABehavior)(nil), // 429: api.v1.HPABehavior
- (*money.Money)(nil), // 430: google.type.Money
- (*SavingsTimeSeries)(nil), // 431: api.v1.SavingsTimeSeries
- (*GetWorkloadResponse)(nil), // 432: api.v1.GetWorkloadResponse
- (*CloudProvider)(nil), // 433: api.v1.CloudProvider
- (*WorkloadProfileResult)(nil), // 434: api.v1.WorkloadProfileResult
- (ProfileWindow)(0), // 435: api.v1.ProfileWindow
- (*ProfileKey)(nil), // 436: api.v1.ProfileKey
- (*WorkloadProfileSnapshot)(nil), // 437: api.v1.WorkloadProfileSnapshot
+ (MutationAction)(0), // 2: api.v1.MutationAction
+ (ArgTarget)(0), // 3: api.v1.ArgTarget
+ (CostPeriod)(0), // 4: api.v1.CostPeriod
+ (ReasoningInsightSeverity)(0), // 5: api.v1.ReasoningInsightSeverity
+ (ReasoningInsightType)(0), // 6: api.v1.ReasoningInsightType
+ (ReasoningDecisionKind)(0), // 7: api.v1.ReasoningDecisionKind
+ (LiveMigDeletionPropagation)(0), // 8: api.v1.LiveMigDeletionPropagation
+ (RecommendationStatus)(0), // 9: api.v1.RecommendationStatus
+ (NodeGroupCheckpointState)(0), // 10: api.v1.NodeGroupCheckpointState
+ (CheckpointReason)(0), // 11: api.v1.CheckpointReason
+ (SuggestionGroup)(0), // 12: api.v1.SuggestionGroup
+ (SuggestionFlavor)(0), // 13: api.v1.SuggestionFlavor
+ (SuggestionSeverity)(0), // 14: api.v1.SuggestionSeverity
+ (EvidenceScope)(0), // 15: api.v1.EvidenceScope
+ (TargetFilterType)(0), // 16: api.v1.TargetFilterType
+ (InstanceStorePolicy)(0), // 17: api.v1.InstanceStorePolicy
+ (ActionTrigger)(0), // 18: api.v1.ActionTrigger
+ (WorkloadDetectionTrigger)(0), // 19: api.v1.WorkloadDetectionTrigger
+ (NodeGroupDetectionTrigger)(0), // 20: api.v1.NodeGroupDetectionTrigger
+ (NodeGroupActionsAllowed)(0), // 21: api.v1.NodeGroupActionsAllowed
+ (RecommendationMode)(0), // 22: api.v1.RecommendationMode
+ (RecommendationType)(0), // 23: api.v1.RecommendationType
+ (HPAMetricType)(0), // 24: api.v1.HPAMetricType
+ (PvcOperationType)(0), // 25: api.v1.PvcOperationType
+ (WorkloadRuleAction)(0), // 26: api.v1.WorkloadRuleAction
+ (WorkloadOptimizationPolicyMatchStatus)(0), // 27: api.v1.WorkloadOptimizationPolicyMatchStatus
+ (SchedulerUnhealthyReason)(0), // 28: api.v1.SchedulerUnhealthyReason
+ (WorkloadRuleSource)(0), // 29: api.v1.WorkloadRuleSource
+ (NodeCheckpointLabelState)(0), // 30: api.v1.NodeCheckpointLabelState
+ (ForensicPostSnapshotAction)(0), // 31: api.v1.ForensicPostSnapshotAction
+ (DeleteSchedulerPolicyResponse_Outcome)(0), // 32: api.v1.DeleteSchedulerPolicyResponse.Outcome
+ (SchedulerPolicyTargetMatch_Status)(0), // 33: api.v1.SchedulerPolicyTargetMatch.Status
+ (SchedulerPolicyEnrollment_State)(0), // 34: api.v1.SchedulerPolicyEnrollment.State
+ (*GetRecommendationsRequest)(nil), // 35: api.v1.GetRecommendationsRequest
+ (*GetRecommendationsResponse)(nil), // 36: api.v1.GetRecommendationsResponse
+ (*GetRecommendationsForWorkloadRequest)(nil), // 37: api.v1.GetRecommendationsForWorkloadRequest
+ (*GetRecommendationsForWorkloadResponse)(nil), // 38: api.v1.GetRecommendationsForWorkloadResponse
+ (*GetNodeGroupStatsRequest)(nil), // 39: api.v1.GetNodeGroupStatsRequest
+ (*GetNodeGroupStatsResponse)(nil), // 40: api.v1.GetNodeGroupStatsResponse
+ (*GetOptimalInstanceTypeForNodeGroupRequest)(nil), // 41: api.v1.GetOptimalInstanceTypeForNodeGroupRequest
+ (*GetOptimalInstanceTypeForNodeGroupResponse)(nil), // 42: api.v1.GetOptimalInstanceTypeForNodeGroupResponse
+ (*GetLatestNodeGroupRecommendationRequest)(nil), // 43: api.v1.GetLatestNodeGroupRecommendationRequest
+ (*GetLatestNodeGroupRecommendationResponse)(nil), // 44: api.v1.GetLatestNodeGroupRecommendationResponse
+ (*GetLatestWorkloadRecommendationRequest)(nil), // 45: api.v1.GetLatestWorkloadRecommendationRequest
+ (*GetLatestWorkloadRecommendationResponse)(nil), // 46: api.v1.GetLatestWorkloadRecommendationResponse
+ (*GetPreviewWorkloadRecommendationRequest)(nil), // 47: api.v1.GetPreviewWorkloadRecommendationRequest
+ (*GetPreviewWorkloadRecommendationResponse)(nil), // 48: api.v1.GetPreviewWorkloadRecommendationResponse
+ (*GetPreviewWorkloadRecommendationsRequest)(nil), // 49: api.v1.GetPreviewWorkloadRecommendationsRequest
+ (*WorkloadIdentifier)(nil), // 50: api.v1.WorkloadIdentifier
+ (*GetPreviewWorkloadRecommendationsResponse)(nil), // 51: api.v1.GetPreviewWorkloadRecommendationsResponse
+ (*CreateClusterRecommendationPolicyRequest)(nil), // 52: api.v1.CreateClusterRecommendationPolicyRequest
+ (*CreateClusterRecommendationPolicyResponse)(nil), // 53: api.v1.CreateClusterRecommendationPolicyResponse
+ (*GetClusterRecommendationPolicyRequest)(nil), // 54: api.v1.GetClusterRecommendationPolicyRequest
+ (*GetClusterRecommendationPolicyResponse)(nil), // 55: api.v1.GetClusterRecommendationPolicyResponse
+ (*ListClusterRecommendationPoliciesRequest)(nil), // 56: api.v1.ListClusterRecommendationPoliciesRequest
+ (*ListClusterRecommendationPoliciesResponse)(nil), // 57: api.v1.ListClusterRecommendationPoliciesResponse
+ (*UpdateClusterRecommendationPolicyRequest)(nil), // 58: api.v1.UpdateClusterRecommendationPolicyRequest
+ (*UpdateClusterRecommendationPolicyResponse)(nil), // 59: api.v1.UpdateClusterRecommendationPolicyResponse
+ (*DeleteClusterRecommendationPolicyRequest)(nil), // 60: api.v1.DeleteClusterRecommendationPolicyRequest
+ (*DeleteClusterRecommendationPolicyResponse)(nil), // 61: api.v1.DeleteClusterRecommendationPolicyResponse
+ (*AttachClusterRecommendationPolicyRequest)(nil), // 62: api.v1.AttachClusterRecommendationPolicyRequest
+ (*AttachClusterRecommendationPolicyResponse)(nil), // 63: api.v1.AttachClusterRecommendationPolicyResponse
+ (*GetWorkloadsWithAttachedPolicyTargetsRequest)(nil), // 64: api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest
+ (*GetWorkloadsWithAttachedPolicyTargetsResponse)(nil), // 65: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse
+ (*TargetIdList)(nil), // 66: api.v1.TargetIdList
+ (*CreateNodeGroupRecommendationPolicyRequest)(nil), // 67: api.v1.CreateNodeGroupRecommendationPolicyRequest
+ (*CreateNodeGroupRecommendationPolicyResponse)(nil), // 68: api.v1.CreateNodeGroupRecommendationPolicyResponse
+ (*GetNodeGroupRecommendationPolicyRequest)(nil), // 69: api.v1.GetNodeGroupRecommendationPolicyRequest
+ (*GetNodeGroupRecommendationPolicyResponse)(nil), // 70: api.v1.GetNodeGroupRecommendationPolicyResponse
+ (*ListNodeGroupRecommendationPoliciesRequest)(nil), // 71: api.v1.ListNodeGroupRecommendationPoliciesRequest
+ (*ListNodeGroupRecommendationPoliciesResponse)(nil), // 72: api.v1.ListNodeGroupRecommendationPoliciesResponse
+ (*UpdateNodeGroupRecommendationPolicyRequest)(nil), // 73: api.v1.UpdateNodeGroupRecommendationPolicyRequest
+ (*UpdateNodeGroupRecommendationPolicyResponse)(nil), // 74: api.v1.UpdateNodeGroupRecommendationPolicyResponse
+ (*DeleteNodeGroupRecommendationPolicyRequest)(nil), // 75: api.v1.DeleteNodeGroupRecommendationPolicyRequest
+ (*DeleteNodeGroupRecommendationPolicyResponse)(nil), // 76: api.v1.DeleteNodeGroupRecommendationPolicyResponse
+ (*AttachNodeGroupRecommendationPolicyRequest)(nil), // 77: api.v1.AttachNodeGroupRecommendationPolicyRequest
+ (*AttachNodeGroupRecommendationPolicyResponse)(nil), // 78: api.v1.AttachNodeGroupRecommendationPolicyResponse
+ (*CreateWorkloadRecommendationPolicyRequest)(nil), // 79: api.v1.CreateWorkloadRecommendationPolicyRequest
+ (*CreateWorkloadRecommendationPolicyResponse)(nil), // 80: api.v1.CreateWorkloadRecommendationPolicyResponse
+ (*GetWorkloadRecommendationPolicyRequest)(nil), // 81: api.v1.GetWorkloadRecommendationPolicyRequest
+ (*GetWorkloadRecommendationPolicyResponse)(nil), // 82: api.v1.GetWorkloadRecommendationPolicyResponse
+ (*ListWorkloadRecommendationPoliciesRequest)(nil), // 83: api.v1.ListWorkloadRecommendationPoliciesRequest
+ (*ListWorkloadRecommendationPoliciesResponse)(nil), // 84: api.v1.ListWorkloadRecommendationPoliciesResponse
+ (*UpdateWorkloadRecommendationPolicyRequest)(nil), // 85: api.v1.UpdateWorkloadRecommendationPolicyRequest
+ (*UpdateWorkloadRecommendationPolicyResponse)(nil), // 86: api.v1.UpdateWorkloadRecommendationPolicyResponse
+ (*DeleteWorkloadRecommendationPolicyRequest)(nil), // 87: api.v1.DeleteWorkloadRecommendationPolicyRequest
+ (*DeleteWorkloadRecommendationPolicyResponse)(nil), // 88: api.v1.DeleteWorkloadRecommendationPolicyResponse
+ (*AttachWorkloadRecommendationPolicyRequest)(nil), // 89: api.v1.AttachWorkloadRecommendationPolicyRequest
+ (*AttachWorkloadRecommendationPolicyResponse)(nil), // 90: api.v1.AttachWorkloadRecommendationPolicyResponse
+ (*AttachWorkloadRecommendationPoliciesRequest)(nil), // 91: api.v1.AttachWorkloadRecommendationPoliciesRequest
+ (*AttachWorkloadRecommendationPoliciesResponse)(nil), // 92: api.v1.AttachWorkloadRecommendationPoliciesResponse
+ (*WorkloadPolicyAttachment)(nil), // 93: api.v1.WorkloadPolicyAttachment
+ (*WorkloadPolicyTarget)(nil), // 94: api.v1.WorkloadPolicyTarget
+ (*CreateWorkloadPolicyTargetRequest)(nil), // 95: api.v1.CreateWorkloadPolicyTargetRequest
+ (*CreateWorkloadPolicyTargetResponse)(nil), // 96: api.v1.CreateWorkloadPolicyTargetResponse
+ (*GetWorkloadPolicyTargetRequest)(nil), // 97: api.v1.GetWorkloadPolicyTargetRequest
+ (*GetWorkloadPolicyTargetResponse)(nil), // 98: api.v1.GetWorkloadPolicyTargetResponse
+ (*ListWorkloadPolicyTargetsRequest)(nil), // 99: api.v1.ListWorkloadPolicyTargetsRequest
+ (*ListWorkloadPolicyTargetsResponse)(nil), // 100: api.v1.ListWorkloadPolicyTargetsResponse
+ (*UpdateWorkloadPolicyTargetRequest)(nil), // 101: api.v1.UpdateWorkloadPolicyTargetRequest
+ (*UpdateWorkloadPolicyTargetResponse)(nil), // 102: api.v1.UpdateWorkloadPolicyTargetResponse
+ (*DeleteWorkloadPolicyTargetRequest)(nil), // 103: api.v1.DeleteWorkloadPolicyTargetRequest
+ (*ToggleWorkloadPolicyTargetsRequest)(nil), // 104: api.v1.ToggleWorkloadPolicyTargetsRequest
+ (*ToggleWorkloadPolicyTargetsResponse)(nil), // 105: api.v1.ToggleWorkloadPolicyTargetsResponse
+ (*DeleteWorkloadPolicyTargetResponse)(nil), // 106: api.v1.DeleteWorkloadPolicyTargetResponse
+ (*RemoveClusterOptimizationsRequest)(nil), // 107: api.v1.RemoveClusterOptimizationsRequest
+ (*RemoveClusterOptimizationsResponse)(nil), // 108: api.v1.RemoveClusterOptimizationsResponse
+ (*PreviewWorkloadPolicyTargetMatchesRequest)(nil), // 109: api.v1.PreviewWorkloadPolicyTargetMatchesRequest
+ (*PreviewWorkloadPolicyTargetMatchesResponse)(nil), // 110: api.v1.PreviewWorkloadPolicyTargetMatchesResponse
+ (*GetPreviewWorkloadPolicyTargetRecommendationsRequest)(nil), // 111: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest
+ (*WorkloadCollisionInfo)(nil), // 112: api.v1.WorkloadCollisionInfo
+ (*GetPreviewWorkloadPolicyTargetRecommendationsResponse)(nil), // 113: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse
+ (*WorkloadPercentileSummary)(nil), // 114: api.v1.WorkloadPercentileSummary
+ (*NodeGroupPolicyTarget)(nil), // 115: api.v1.NodeGroupPolicyTarget
+ (*CreateNodeGroupPolicyTargetRequest)(nil), // 116: api.v1.CreateNodeGroupPolicyTargetRequest
+ (*CreateNodeGroupPolicyTargetResponse)(nil), // 117: api.v1.CreateNodeGroupPolicyTargetResponse
+ (*GetNodeGroupPolicyTargetRequest)(nil), // 118: api.v1.GetNodeGroupPolicyTargetRequest
+ (*GetNodeGroupPolicyTargetResponse)(nil), // 119: api.v1.GetNodeGroupPolicyTargetResponse
+ (*ListNodeGroupPolicyTargetsRequest)(nil), // 120: api.v1.ListNodeGroupPolicyTargetsRequest
+ (*ListNodeGroupPolicyTargetsResponse)(nil), // 121: api.v1.ListNodeGroupPolicyTargetsResponse
+ (*UpdateNodeGroupPolicyTargetRequest)(nil), // 122: api.v1.UpdateNodeGroupPolicyTargetRequest
+ (*UpdateNodeGroupPolicyTargetResponse)(nil), // 123: api.v1.UpdateNodeGroupPolicyTargetResponse
+ (*DeleteNodeGroupPolicyTargetRequest)(nil), // 124: api.v1.DeleteNodeGroupPolicyTargetRequest
+ (*ToggleNodeGroupPolicyTargetsRequest)(nil), // 125: api.v1.ToggleNodeGroupPolicyTargetsRequest
+ (*ToggleNodeGroupPolicyTargetsResponse)(nil), // 126: api.v1.ToggleNodeGroupPolicyTargetsResponse
+ (*DeleteNodeGroupPolicyTargetResponse)(nil), // 127: api.v1.DeleteNodeGroupPolicyTargetResponse
+ (*PreviewNodeGroupPolicyTargetMatchesRequest)(nil), // 128: api.v1.PreviewNodeGroupPolicyTargetMatchesRequest
+ (*PreviewNodeGroupPolicyTargetMatchesResponse)(nil), // 129: api.v1.PreviewNodeGroupPolicyTargetMatchesResponse
+ (*GetPreviewNodeGroupPolicyTargetRecommendationsRequest)(nil), // 130: api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsRequest
+ (*GetPreviewNodeGroupPolicyTargetRecommendationsResponse)(nil), // 131: api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsResponse
+ (*BalanceGetRecommendationsRequest)(nil), // 132: api.v1.BalanceGetRecommendationsRequest
+ (*BalanceGetRecommendationsResponse)(nil), // 133: api.v1.BalanceGetRecommendationsResponse
+ (*BatchNodeGroupRecommendations)(nil), // 134: api.v1.BatchNodeGroupRecommendations
+ (*BatchWorkloadRecommendations)(nil), // 135: api.v1.BatchWorkloadRecommendations
+ (*WorkloadRule)(nil), // 136: api.v1.WorkloadRule
+ (*ResourceRuleConfig)(nil), // 137: api.v1.ResourceRuleConfig
+ (*HPAMetricTrigger)(nil), // 138: api.v1.HPAMetricTrigger
+ (*HPAFallback)(nil), // 139: api.v1.HPAFallback
+ (*ContainerResourceConfig)(nil), // 140: api.v1.ContainerResourceConfig
+ (*ContainerResourceRuleConfig)(nil), // 141: api.v1.ContainerResourceRuleConfig
+ (*JVMHeapRuleConfig)(nil), // 142: api.v1.JVMHeapRuleConfig
+ (*HPARuleConfig)(nil), // 143: api.v1.HPARuleConfig
+ (*EmergencyResponseConfig)(nil), // 144: api.v1.EmergencyResponseConfig
+ (*KEDAScaledObjectTemplate)(nil), // 145: api.v1.KEDAScaledObjectTemplate
+ (*KEDATrigger)(nil), // 146: api.v1.KEDATrigger
+ (*KEDAAuthenticationRef)(nil), // 147: api.v1.KEDAAuthenticationRef
+ (*KEDAFallback)(nil), // 148: api.v1.KEDAFallback
+ (*KEDAAdvanced)(nil), // 149: api.v1.KEDAAdvanced
+ (*PercentileValues)(nil), // 150: api.v1.PercentileValues
+ (*ResourcePercentiles)(nil), // 151: api.v1.ResourcePercentiles
+ (*BurstinessRatios)(nil), // 152: api.v1.BurstinessRatios
+ (*WorkloadClassification)(nil), // 153: api.v1.WorkloadClassification
+ (*BatchWorkloadRules)(nil), // 154: api.v1.BatchWorkloadRules
+ (*BatchHPAConnectors)(nil), // 155: api.v1.BatchHPAConnectors
+ (*WorkloadWithActiveRecommendations)(nil), // 156: api.v1.WorkloadWithActiveRecommendations
+ (*GenericResourceRecommendation)(nil), // 157: api.v1.GenericResourceRecommendation
+ (*BatchGenericResourceRecommendations)(nil), // 158: api.v1.BatchGenericResourceRecommendations
+ (*BatchPvcStorageRecommendations)(nil), // 159: api.v1.BatchPvcStorageRecommendations
+ (*GeneratePodDisruptionBudgetRequest)(nil), // 160: api.v1.GeneratePodDisruptionBudgetRequest
+ (*GeneratePodDisruptionBudgetResponse)(nil), // 161: api.v1.GeneratePodDisruptionBudgetResponse
+ (*GenerateAndCreatePodDisruptionBudgetRequest)(nil), // 162: api.v1.GenerateAndCreatePodDisruptionBudgetRequest
+ (*GenerateAndCreatePodDisruptionBudgetResponse)(nil), // 163: api.v1.GenerateAndCreatePodDisruptionBudgetResponse
+ (*CreatePodDisruptionBudgetRequest)(nil), // 164: api.v1.CreatePodDisruptionBudgetRequest
+ (*CreatePodDisruptionBudgetResponse)(nil), // 165: api.v1.CreatePodDisruptionBudgetResponse
+ (*GetPDBRecommendationForWorkloadRequest)(nil), // 166: api.v1.GetPDBRecommendationForWorkloadRequest
+ (*GetPDBRecommendationForWorkloadResponse)(nil), // 167: api.v1.GetPDBRecommendationForWorkloadResponse
+ (*StructuralHealthFinding)(nil), // 168: api.v1.StructuralHealthFinding
+ (*WorkloadStructuralHealth)(nil), // 169: api.v1.WorkloadStructuralHealth
+ (*ListWorkloadStructuralHealthRequest)(nil), // 170: api.v1.ListWorkloadStructuralHealthRequest
+ (*ListWorkloadStructuralHealthResponse)(nil), // 171: api.v1.ListWorkloadStructuralHealthResponse
+ (*ReconcileWorkload)(nil), // 172: api.v1.ReconcileWorkload
+ (*ReconcileResponse)(nil), // 173: api.v1.ReconcileResponse
+ (*OperatorHealth)(nil), // 174: api.v1.OperatorHealth
+ (*AgentHealth)(nil), // 175: api.v1.AgentHealth
+ (*AgentHealthMeta)(nil), // 176: api.v1.AgentHealthMeta
+ (*HealthReport)(nil), // 177: api.v1.HealthReport
+ (*NodeStats)(nil), // 178: api.v1.NodeStats
+ (*NodeMetric)(nil), // 179: api.v1.NodeMetric
+ (*ContainerStats)(nil), // 180: api.v1.ContainerStats
+ (*ContainerMetric)(nil), // 181: api.v1.ContainerMetric
+ (*ContainerSummarizedMetric)(nil), // 182: api.v1.ContainerSummarizedMetric
+ (*Metric)(nil), // 183: api.v1.Metric
+ (*ContainerRecommendation)(nil), // 184: api.v1.ContainerRecommendation
+ (*KedaScaledObjectRecommendation)(nil), // 185: api.v1.KedaScaledObjectRecommendation
+ (*ResourceRecommendation)(nil), // 186: api.v1.ResourceRecommendation
+ (*EnvVarMutation)(nil), // 187: api.v1.EnvVarMutation
+ (*CommandArgMutation)(nil), // 188: api.v1.CommandArgMutation
+ (*NodeSelectorMutation)(nil), // 189: api.v1.NodeSelectorMutation
+ (*TolerationMutation)(nil), // 190: api.v1.TolerationMutation
+ (*Toleration)(nil), // 191: api.v1.Toleration
+ (*ClusterRecommendationPolicy)(nil), // 192: api.v1.ClusterRecommendationPolicy
+ (*NodeGroupRecommendationPolicy)(nil), // 193: api.v1.NodeGroupRecommendationPolicy
+ (*VerticalScalingOptimizationTarget)(nil), // 194: api.v1.VerticalScalingOptimizationTarget
+ (*HorizontalScalingOptimizationTarget)(nil), // 195: api.v1.HorizontalScalingOptimizationTarget
+ (*WorkloadRecommendationPolicy)(nil), // 196: api.v1.WorkloadRecommendationPolicy
+ (*GetPolicyRecommendedDefaultsRequest)(nil), // 197: api.v1.GetPolicyRecommendedDefaultsRequest
+ (*GetPolicyRecommendedDefaultsResponse)(nil), // 198: api.v1.GetPolicyRecommendedDefaultsResponse
+ (*BalanceRegisterRequest)(nil), // 199: api.v1.BalanceRegisterRequest
+ (*BalanceFeatures)(nil), // 200: api.v1.BalanceFeatures
+ (*BalanceApplyRecommendationResponse)(nil), // 201: api.v1.BalanceApplyRecommendationResponse
+ (*LiveMigrationResult)(nil), // 202: api.v1.LiveMigrationResult
+ (*NodeGroupReference)(nil), // 203: api.v1.NodeGroupReference
+ (*NodeGroupRecommendation)(nil), // 204: api.v1.NodeGroupRecommendation
+ (*CostImpact)(nil), // 205: api.v1.CostImpact
+ (*WorkloadRecommendation)(nil), // 206: api.v1.WorkloadRecommendation
+ (*ReasoningDetails)(nil), // 207: api.v1.ReasoningDetails
+ (*ReasoningEvidence)(nil), // 208: api.v1.ReasoningEvidence
+ (*ReasoningInsight)(nil), // 209: api.v1.ReasoningInsight
+ (*ReasoningResourceEdge)(nil), // 210: api.v1.ReasoningResourceEdge
+ (*ReasoningContainerChange)(nil), // 211: api.v1.ReasoningContainerChange
+ (*ReasoningUtilization)(nil), // 212: api.v1.ReasoningUtilization
+ (*ReasoningHistoricalPattern)(nil), // 213: api.v1.ReasoningHistoricalPattern
+ (*ReasoningReplicas)(nil), // 214: api.v1.ReasoningReplicas
+ (*ReasoningDecision)(nil), // 215: api.v1.ReasoningDecision
+ (*GetAttachedNodeGroupPoliciesRequest)(nil), // 216: api.v1.GetAttachedNodeGroupPoliciesRequest
+ (*GetAttachedNodeGroupPoliciesResponse)(nil), // 217: api.v1.GetAttachedNodeGroupPoliciesResponse
+ (*GetAttachedWorkloadPoliciesRequest)(nil), // 218: api.v1.GetAttachedWorkloadPoliciesRequest
+ (*GetAttachedWorkloadPoliciesResponse)(nil), // 219: api.v1.GetAttachedWorkloadPoliciesResponse
+ (*WorkloadRecommendationPolicyGroup)(nil), // 220: api.v1.WorkloadRecommendationPolicyGroup
+ (*WorkloadPolicyTargetGroup)(nil), // 221: api.v1.WorkloadPolicyTargetGroup
+ (*WorkloadIdentifiers)(nil), // 222: api.v1.WorkloadIdentifiers
+ (*WorkloadPolicies)(nil), // 223: api.v1.WorkloadPolicies
+ (*ListAttachedWorkloadPoliciesRequest)(nil), // 224: api.v1.ListAttachedWorkloadPoliciesRequest
+ (*ListAttachedWorkloadPoliciesResponse)(nil), // 225: api.v1.ListAttachedWorkloadPoliciesResponse
+ (*ListAttachedNodeGroupPoliciesRequest)(nil), // 226: api.v1.ListAttachedNodeGroupPoliciesRequest
+ (*ListAttachedNodeGroupPoliciesResponse)(nil), // 227: api.v1.ListAttachedNodeGroupPoliciesResponse
+ (*NodeGroupItem)(nil), // 228: api.v1.NodeGroupItem
+ (*RecommendationAppliedRequest)(nil), // 229: api.v1.RecommendationAppliedRequest
+ (*RecommendationAppliedResponse)(nil), // 230: api.v1.RecommendationAppliedResponse
+ (*ApplyRecommendationRequest)(nil), // 231: api.v1.ApplyRecommendationRequest
+ (*ApplyRecommendationResponse)(nil), // 232: api.v1.ApplyRecommendationResponse
+ (*RecommendationEventsRequest)(nil), // 233: api.v1.RecommendationEventsRequest
+ (*RecommendationEventsResponse)(nil), // 234: api.v1.RecommendationEventsResponse
+ (*RetrieveSavingsForWorkloadRequest)(nil), // 235: api.v1.RetrieveSavingsForWorkloadRequest
+ (*RetrieveSavingsForWorkloadResponse)(nil), // 236: api.v1.RetrieveSavingsForWorkloadResponse
+ (*CreateNodePoliciesRequest)(nil), // 237: api.v1.CreateNodePoliciesRequest
+ (*CreateNodePoliciesResponse)(nil), // 238: api.v1.CreateNodePoliciesResponse
+ (*SuggestedNodePolicyRequest)(nil), // 239: api.v1.SuggestedNodePolicyRequest
+ (*SuggestedNodePolicyResponse)(nil), // 240: api.v1.SuggestedNodePolicyResponse
+ (*GenerateNodePoliciesFromKarpenterRequest)(nil), // 241: api.v1.GenerateNodePoliciesFromKarpenterRequest
+ (*GenerateNodePoliciesFromKarpenterResponse)(nil), // 242: api.v1.GenerateNodePoliciesFromKarpenterResponse
+ (*GenerateNodePoliciesFromNodeGroupsRequest)(nil), // 243: api.v1.GenerateNodePoliciesFromNodeGroupsRequest
+ (*GenerateNodePoliciesFromNodeGroupsResponse)(nil), // 244: api.v1.GenerateNodePoliciesFromNodeGroupsResponse
+ (*NodeGroupMigrationEligibility)(nil), // 245: api.v1.NodeGroupMigrationEligibility
+ (*GetNodeAnnotationReadinessRequest)(nil), // 246: api.v1.GetNodeAnnotationReadinessRequest
+ (*GetNodeAnnotationReadinessResponse)(nil), // 247: api.v1.GetNodeAnnotationReadinessResponse
+ (*DetectClusterAutoscalerRequest)(nil), // 248: api.v1.DetectClusterAutoscalerRequest
+ (*DetectClusterAutoscalerResponse)(nil), // 249: api.v1.DetectClusterAutoscalerResponse
+ (*GetMigrationStateRequest)(nil), // 250: api.v1.GetMigrationStateRequest
+ (*GetMigrationStateResponse)(nil), // 251: api.v1.GetMigrationStateResponse
+ (*UpdateMigrationStateRequest)(nil), // 252: api.v1.UpdateMigrationStateRequest
+ (*UpdateMigrationStateResponse)(nil), // 253: api.v1.UpdateMigrationStateResponse
+ (*GetKarpenterMigrationStateRequest)(nil), // 254: api.v1.GetKarpenterMigrationStateRequest
+ (*GetKarpenterMigrationStateResponse)(nil), // 255: api.v1.GetKarpenterMigrationStateResponse
+ (*UpdateKarpenterMigrationStateRequest)(nil), // 256: api.v1.UpdateKarpenterMigrationStateRequest
+ (*UpdateKarpenterMigrationStateResponse)(nil), // 257: api.v1.UpdateKarpenterMigrationStateResponse
+ (*KarpenterOwnershipConflict)(nil), // 258: api.v1.KarpenterOwnershipConflict
+ (*DetectKarpenterOwnershipConflictsRequest)(nil), // 259: api.v1.DetectKarpenterOwnershipConflictsRequest
+ (*DetectKarpenterOwnershipConflictsResponse)(nil), // 260: api.v1.DetectKarpenterOwnershipConflictsResponse
+ (*AcknowledgeKarpenterOwnershipConflictRequest)(nil), // 261: api.v1.AcknowledgeKarpenterOwnershipConflictRequest
+ (*AcknowledgeKarpenterOwnershipConflictResponse)(nil), // 262: api.v1.AcknowledgeKarpenterOwnershipConflictResponse
+ (*KarpenterSourceResource)(nil), // 263: api.v1.KarpenterSourceResource
+ (*GetKarpenterSourceResourcesRequest)(nil), // 264: api.v1.GetKarpenterSourceResourcesRequest
+ (*GetKarpenterSourceResourcesResponse)(nil), // 265: api.v1.GetKarpenterSourceResourcesResponse
+ (*NodePoolAdoptionStatus)(nil), // 266: api.v1.NodePoolAdoptionStatus
+ (*GetKarpenterAdoptionStatusRequest)(nil), // 267: api.v1.GetKarpenterAdoptionStatusRequest
+ (*GetKarpenterAdoptionStatusResponse)(nil), // 268: api.v1.GetKarpenterAdoptionStatusResponse
+ (*ReportNodePoolValidationRequest)(nil), // 269: api.v1.ReportNodePoolValidationRequest
+ (*ReportNodePoolValidationResponse)(nil), // 270: api.v1.ReportNodePoolValidationResponse
+ (*GetNodePoolValidationsRequest)(nil), // 271: api.v1.GetNodePoolValidationsRequest
+ (*NodePoolValidationReport)(nil), // 272: api.v1.NodePoolValidationReport
+ (*GetNodePoolValidationsResponse)(nil), // 273: api.v1.GetNodePoolValidationsResponse
+ (*WorkloadCompatibilityWarning)(nil), // 274: api.v1.WorkloadCompatibilityWarning
+ (*ListNodePoliciesRequest)(nil), // 275: api.v1.ListNodePoliciesRequest
+ (*ListNodePoliciesResponse)(nil), // 276: api.v1.ListNodePoliciesResponse
+ (*UpdateNodePolicyRequest)(nil), // 277: api.v1.UpdateNodePolicyRequest
+ (*UpdateNodePolicyResponse)(nil), // 278: api.v1.UpdateNodePolicyResponse
+ (*NodeGroupCheckpointStatus)(nil), // 279: api.v1.NodeGroupCheckpointStatus
+ (*GetNodeGroupsCheckpointStatusRequest)(nil), // 280: api.v1.GetNodeGroupsCheckpointStatusRequest
+ (*GetNodeGroupsCheckpointStatusResponse)(nil), // 281: api.v1.GetNodeGroupsCheckpointStatusResponse
+ (*SetNodePolicyCheckpointLabelRequest)(nil), // 282: api.v1.SetNodePolicyCheckpointLabelRequest
+ (*SetNodePolicyCheckpointLabelResponse)(nil), // 283: api.v1.SetNodePolicyCheckpointLabelResponse
+ (*DeleteNodePolicyRequest)(nil), // 284: api.v1.DeleteNodePolicyRequest
+ (*DeleteNodePolicyResponse)(nil), // 285: api.v1.DeleteNodePolicyResponse
+ (*NodePolicy)(nil), // 286: api.v1.NodePolicy
+ (*PreviewNodeRecommendationConfigRequest)(nil), // 287: api.v1.PreviewNodeRecommendationConfigRequest
+ (*PreviewNodeRecommendationConfigResponse)(nil), // 288: api.v1.PreviewNodeRecommendationConfigResponse
+ (*NodeRecommendationConfig)(nil), // 289: api.v1.NodeRecommendationConfig
+ (*SuggestedKarpenterConfigRequest)(nil), // 290: api.v1.SuggestedKarpenterConfigRequest
+ (*SuggestedKarpenterConfigResponse)(nil), // 291: api.v1.SuggestedKarpenterConfigResponse
+ (*SuggestNodePolicyImprovementsRequest)(nil), // 292: api.v1.SuggestNodePolicyImprovementsRequest
+ (*SuggestNodePolicyImprovementsResponse)(nil), // 293: api.v1.SuggestNodePolicyImprovementsResponse
+ (*ListClusterNodePolicySuggestionsRequest)(nil), // 294: api.v1.ListClusterNodePolicySuggestionsRequest
+ (*ListClusterNodePolicySuggestionsResponse)(nil), // 295: api.v1.ListClusterNodePolicySuggestionsResponse
+ (*NodePolicySuggestionsForPolicy)(nil), // 296: api.v1.NodePolicySuggestionsForPolicy
+ (*NodePolicySuggestion)(nil), // 297: api.v1.NodePolicySuggestion
+ (*SuggestionFieldChange)(nil), // 298: api.v1.SuggestionFieldChange
+ (*SuggestionEvidence)(nil), // 299: api.v1.SuggestionEvidence
+ (*SuggestionWorkloadRef)(nil), // 300: api.v1.SuggestionWorkloadRef
+ (*SuggestionContext)(nil), // 301: api.v1.SuggestionContext
+ (*GetAvailableKindsByTargetingFiltersRequest)(nil), // 302: api.v1.GetAvailableKindsByTargetingFiltersRequest
+ (*SearchResourcesByTargetingFiltersRequest)(nil), // 303: api.v1.SearchResourcesByTargetingFiltersRequest
+ (*TargetFilters)(nil), // 304: api.v1.TargetFilters
+ (*GetAvailableKindsByTargetingFiltersResponse)(nil), // 305: api.v1.GetAvailableKindsByTargetingFiltersResponse
+ (*SearchResourcesByTargetingFiltersResponse)(nil), // 306: api.v1.SearchResourcesByTargetingFiltersResponse
+ (*NamespaceSearchResult)(nil), // 307: api.v1.NamespaceSearchResult
+ (*WorkloadSearchResult)(nil), // 308: api.v1.WorkloadSearchResult
+ (*NodeGroupSearchResult)(nil), // 309: api.v1.NodeGroupSearchResult
+ (*LabelSearchResult)(nil), // 310: api.v1.LabelSearchResult
+ (*CreateNodePolicyTargetsRequest)(nil), // 311: api.v1.CreateNodePolicyTargetsRequest
+ (*CreateNodePolicyTargetsResponse)(nil), // 312: api.v1.CreateNodePolicyTargetsResponse
+ (*ListNodePolicyTargetsRequest)(nil), // 313: api.v1.ListNodePolicyTargetsRequest
+ (*ListNodePolicyTargetsResponse)(nil), // 314: api.v1.ListNodePolicyTargetsResponse
+ (*UpdateNodePolicyTargetRequest)(nil), // 315: api.v1.UpdateNodePolicyTargetRequest
+ (*UpdateNodePolicyTargetResponse)(nil), // 316: api.v1.UpdateNodePolicyTargetResponse
+ (*NodePolicyTarget)(nil), // 317: api.v1.NodePolicyTarget
+ (*NodePolicyCondition)(nil), // 318: api.v1.NodePolicyCondition
+ (*NodePolicyTargetStatus)(nil), // 319: api.v1.NodePolicyTargetStatus
+ (*ZonalShiftConfig)(nil), // 320: api.v1.ZonalShiftConfig
+ (*Taint)(nil), // 321: api.v1.Taint
+ (*DisruptionBudget)(nil), // 322: api.v1.DisruptionBudget
+ (*DisruptionPolicy)(nil), // 323: api.v1.DisruptionPolicy
+ (*ResourceLimits)(nil), // 324: api.v1.ResourceLimits
+ (*AWSNodeClassSpec)(nil), // 325: api.v1.AWSNodeClassSpec
+ (*GetInstanceFamiliesRequest)(nil), // 326: api.v1.GetInstanceFamiliesRequest
+ (*GetInstanceFamiliesResponse)(nil), // 327: api.v1.GetInstanceFamiliesResponse
+ (*GetInstanceSizesRequest)(nil), // 328: api.v1.GetInstanceSizesRequest
+ (*GetInstanceSizesResponse)(nil), // 329: api.v1.GetInstanceSizesResponse
+ (*GetInstanceShapesRequest)(nil), // 330: api.v1.GetInstanceShapesRequest
+ (*GetInstanceShapesResponse)(nil), // 331: api.v1.GetInstanceShapesResponse
+ (*InstanceFamily)(nil), // 332: api.v1.InstanceFamily
+ (*InstanceShape)(nil), // 333: api.v1.InstanceShape
+ (*InstanceSize)(nil), // 334: api.v1.InstanceSize
+ (*InstanceCategory)(nil), // 335: api.v1.InstanceCategory
+ (*InstanceCPU)(nil), // 336: api.v1.InstanceCPU
+ (*InstanceTypeName)(nil), // 337: api.v1.InstanceTypeName
+ (*GetInstanceCategoriesRequest)(nil), // 338: api.v1.GetInstanceCategoriesRequest
+ (*GetInstanceCategoriesResponse)(nil), // 339: api.v1.GetInstanceCategoriesResponse
+ (*GetInstanceCPUsRequest)(nil), // 340: api.v1.GetInstanceCPUsRequest
+ (*GetInstanceCPUsResponse)(nil), // 341: api.v1.GetInstanceCPUsResponse
+ (*GetInstanceTypeNamesRequest)(nil), // 342: api.v1.GetInstanceTypeNamesRequest
+ (*GetInstanceTypeNamesResponse)(nil), // 343: api.v1.GetInstanceTypeNamesResponse
+ (*SubnetSelectorTerm)(nil), // 344: api.v1.SubnetSelectorTerm
+ (*SecurityGroupSelectorTerm)(nil), // 345: api.v1.SecurityGroupSelectorTerm
+ (*CapacityReservationSelectorTerm)(nil), // 346: api.v1.CapacityReservationSelectorTerm
+ (*AMISelectorTerm)(nil), // 347: api.v1.AMISelectorTerm
+ (*KubeletConfiguration)(nil), // 348: api.v1.KubeletConfiguration
+ (*BlockDeviceMapping)(nil), // 349: api.v1.BlockDeviceMapping
+ (*BlockDevice)(nil), // 350: api.v1.BlockDevice
+ (*MetadataOptions)(nil), // 351: api.v1.MetadataOptions
+ (*GCPNodeClassSpec)(nil), // 352: api.v1.GCPNodeClassSpec
+ (*GCPImageSelectorTerm)(nil), // 353: api.v1.GCPImageSelectorTerm
+ (*GCPDisk)(nil), // 354: api.v1.GCPDisk
+ (*AzureNodeClassSpec)(nil), // 355: api.v1.AzureNodeClassSpec
+ (*AzureKubeletConfiguration)(nil), // 356: api.v1.AzureKubeletConfiguration
+ (*OCIImageSelectorTerm)(nil), // 357: api.v1.OCIImageSelectorTerm
+ (*OCISubnetSelectorTerm)(nil), // 358: api.v1.OCISubnetSelectorTerm
+ (*OCISecurityGroupSelectorTerm)(nil), // 359: api.v1.OCISecurityGroupSelectorTerm
+ (*OCIBootConfig)(nil), // 360: api.v1.OCIBootConfig
+ (*OCILaunchOptions)(nil), // 361: api.v1.OCILaunchOptions
+ (*OCIVolumeAttributes)(nil), // 362: api.v1.OCIVolumeAttributes
+ (*OCINodeClassSpec)(nil), // 363: api.v1.OCINodeClassSpec
+ (*KarpenterSettingsRecommendation)(nil), // 364: api.v1.KarpenterSettingsRecommendation
+ (*RawKarpenterSpec)(nil), // 365: api.v1.RawKarpenterSpec
+ (*SnapshotRecommendation)(nil), // 366: api.v1.SnapshotRecommendation
+ (*ForensicSnapshotRecommendation)(nil), // 367: api.v1.ForensicSnapshotRecommendation
+ (*SnapshotCRStatusReport)(nil), // 368: api.v1.SnapshotCRStatusReport
+ (*SnapshotCRStatus)(nil), // 369: api.v1.SnapshotCRStatus
+ (*SnapshotCRRuntimeStatus)(nil), // 370: api.v1.SnapshotCRRuntimeStatus
+ (*SnapshotPolicyTargetStatus)(nil), // 371: api.v1.SnapshotPolicyTargetStatus
+ (*SnapshotPrereqs)(nil), // 372: api.v1.SnapshotPrereqs
+ (*NodeRecommendation)(nil), // 373: api.v1.NodeRecommendation
+ (*AWSKarpenterSpec)(nil), // 374: api.v1.AWSKarpenterSpec
+ (*AKSKarpenterSpec)(nil), // 375: api.v1.AKSKarpenterSpec
+ (*NodePool)(nil), // 376: api.v1.NodePool
+ (*EC2NodeClass)(nil), // 377: api.v1.EC2NodeClass
+ (*AKSNodeClass)(nil), // 378: api.v1.AKSNodeClass
+ (*GCPKarpenterSpec)(nil), // 379: api.v1.GCPKarpenterSpec
+ (*GCENodeClass)(nil), // 380: api.v1.GCENodeClass
+ (*OCIKarpenterSpec)(nil), // 381: api.v1.OCIKarpenterSpec
+ (*OCINodeClass)(nil), // 382: api.v1.OCINodeClass
+ (*StorageRecommendationPolicy)(nil), // 383: api.v1.StorageRecommendationPolicy
+ (*CreateStorageRecommendationPolicyRequest)(nil), // 384: api.v1.CreateStorageRecommendationPolicyRequest
+ (*CreateStorageRecommendationPolicyResponse)(nil), // 385: api.v1.CreateStorageRecommendationPolicyResponse
+ (*GetStorageRecommendationPolicyRequest)(nil), // 386: api.v1.GetStorageRecommendationPolicyRequest
+ (*GetStorageRecommendationPolicyResponse)(nil), // 387: api.v1.GetStorageRecommendationPolicyResponse
+ (*ListStorageRecommendationPoliciesRequest)(nil), // 388: api.v1.ListStorageRecommendationPoliciesRequest
+ (*ListStorageRecommendationPoliciesResponse)(nil), // 389: api.v1.ListStorageRecommendationPoliciesResponse
+ (*UpdateStorageRecommendationPolicyRequest)(nil), // 390: api.v1.UpdateStorageRecommendationPolicyRequest
+ (*UpdateStorageRecommendationPolicyResponse)(nil), // 391: api.v1.UpdateStorageRecommendationPolicyResponse
+ (*DeleteStorageRecommendationPolicyRequest)(nil), // 392: api.v1.DeleteStorageRecommendationPolicyRequest
+ (*DeleteStorageRecommendationPolicyResponse)(nil), // 393: api.v1.DeleteStorageRecommendationPolicyResponse
+ (*StoragePolicyTarget)(nil), // 394: api.v1.StoragePolicyTarget
+ (*CreateStoragePolicyTargetRequest)(nil), // 395: api.v1.CreateStoragePolicyTargetRequest
+ (*CreateStoragePolicyTargetResponse)(nil), // 396: api.v1.CreateStoragePolicyTargetResponse
+ (*ListStoragePolicyTargetsRequest)(nil), // 397: api.v1.ListStoragePolicyTargetsRequest
+ (*ListStoragePolicyTargetsResponse)(nil), // 398: api.v1.ListStoragePolicyTargetsResponse
+ (*UpdateStoragePolicyTargetRequest)(nil), // 399: api.v1.UpdateStoragePolicyTargetRequest
+ (*UpdateStoragePolicyTargetResponse)(nil), // 400: api.v1.UpdateStoragePolicyTargetResponse
+ (*DeleteStoragePolicyTargetRequest)(nil), // 401: api.v1.DeleteStoragePolicyTargetRequest
+ (*DeleteStoragePolicyTargetResponse)(nil), // 402: api.v1.DeleteStoragePolicyTargetResponse
+ (*PvcStorageRecommendation)(nil), // 403: api.v1.PvcStorageRecommendation
+ (*GetPvcStorageRecommendationRequest)(nil), // 404: api.v1.GetPvcStorageRecommendationRequest
+ (*GetPvcStorageRecommendationResponse)(nil), // 405: api.v1.GetPvcStorageRecommendationResponse
+ (*ListPvcStorageRecommendationsRequest)(nil), // 406: api.v1.ListPvcStorageRecommendationsRequest
+ (*ListPvcStorageRecommendationsResponse)(nil), // 407: api.v1.ListPvcStorageRecommendationsResponse
+ (*GeneratePvcStorageRecommendationRequest)(nil), // 408: api.v1.GeneratePvcStorageRecommendationRequest
+ (*GeneratePvcStorageRecommendationResponse)(nil), // 409: api.v1.GeneratePvcStorageRecommendationResponse
+ (*PreviewPvcStorageRecommendationRequest)(nil), // 410: api.v1.PreviewPvcStorageRecommendationRequest
+ (*PreviewPvcStorageRecommendationResponse)(nil), // 411: api.v1.PreviewPvcStorageRecommendationResponse
+ (*WorkloadRuleOOMEvent)(nil), // 412: api.v1.WorkloadRuleOOMEvent
+ (*ListWorkloadRuleOOMEventsRequest)(nil), // 413: api.v1.ListWorkloadRuleOOMEventsRequest
+ (*ListWorkloadRuleOOMEventsResponse)(nil), // 414: api.v1.ListWorkloadRuleOOMEventsResponse
+ (*ListWorkloadOOMEventsRequest)(nil), // 415: api.v1.ListWorkloadOOMEventsRequest
+ (*ListWorkloadOOMEventsResponse)(nil), // 416: api.v1.ListWorkloadOOMEventsResponse
+ (*WorkloadRuleCPUThrottleEvent)(nil), // 417: api.v1.WorkloadRuleCPUThrottleEvent
+ (*ListWorkloadRuleCPUThrottleEventsRequest)(nil), // 418: api.v1.ListWorkloadRuleCPUThrottleEventsRequest
+ (*ListWorkloadRuleCPUThrottleEventsResponse)(nil), // 419: api.v1.ListWorkloadRuleCPUThrottleEventsResponse
+ (*ListWorkloadCPUThrottleEventsRequest)(nil), // 420: api.v1.ListWorkloadCPUThrottleEventsRequest
+ (*ListWorkloadCPUThrottleEventsResponse)(nil), // 421: api.v1.ListWorkloadCPUThrottleEventsResponse
+ (*StringSetSelector)(nil), // 422: api.v1.StringSetSelector
+ (*WorkloadOptimizationPolicyProto)(nil), // 423: api.v1.WorkloadOptimizationPolicyProto
+ (*GenericOptimizationSettings)(nil), // 424: api.v1.GenericOptimizationSettings
+ (*CreateWorkloadOptimizationPolicyRequest)(nil), // 425: api.v1.CreateWorkloadOptimizationPolicyRequest
+ (*CreateWorkloadOptimizationPolicyResponse)(nil), // 426: api.v1.CreateWorkloadOptimizationPolicyResponse
+ (*ListWorkloadOptimizationPoliciesRequest)(nil), // 427: api.v1.ListWorkloadOptimizationPoliciesRequest
+ (*ListWorkloadOptimizationPoliciesResponse)(nil), // 428: api.v1.ListWorkloadOptimizationPoliciesResponse
+ (*GetWorkloadOptimizationPolicyRequest)(nil), // 429: api.v1.GetWorkloadOptimizationPolicyRequest
+ (*GetWorkloadOptimizationPolicyResponse)(nil), // 430: api.v1.GetWorkloadOptimizationPolicyResponse
+ (*GetWorkloadOptimizationPolicyByWorkloadRequest)(nil), // 431: api.v1.GetWorkloadOptimizationPolicyByWorkloadRequest
+ (*GetWorkloadOptimizationPolicyByWorkloadResponse)(nil), // 432: api.v1.GetWorkloadOptimizationPolicyByWorkloadResponse
+ (*UpdateWorkloadOptimizationPolicyRequest)(nil), // 433: api.v1.UpdateWorkloadOptimizationPolicyRequest
+ (*ToggleWorkloadOptimizationPolicyDisabledRequest)(nil), // 434: api.v1.ToggleWorkloadOptimizationPolicyDisabledRequest
+ (*ToggleWorkloadOptimizationPolicyDisabledResponse)(nil), // 435: api.v1.ToggleWorkloadOptimizationPolicyDisabledResponse
+ (*UpdateWorkloadOptimizationPolicyResponse)(nil), // 436: api.v1.UpdateWorkloadOptimizationPolicyResponse
+ (*DeleteWorkloadOptimizationPolicyRequest)(nil), // 437: api.v1.DeleteWorkloadOptimizationPolicyRequest
+ (*DeleteWorkloadOptimizationPolicyResponse)(nil), // 438: api.v1.DeleteWorkloadOptimizationPolicyResponse
+ (*PreviewWorkloadOptimizationPolicyMatchesRequest)(nil), // 439: api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest
+ (*WorkloadOptimizationPolicyMatch)(nil), // 440: api.v1.WorkloadOptimizationPolicyMatch
+ (*PreviewWorkloadOptimizationPolicyMatchesResponse)(nil), // 441: api.v1.PreviewWorkloadOptimizationPolicyMatchesResponse
+ (*SchedulerPolicyTargetProto)(nil), // 442: api.v1.SchedulerPolicyTargetProto
+ (*SchedulerPolicyProto)(nil), // 443: api.v1.SchedulerPolicyProto
+ (*CreateSchedulerPolicyRequest)(nil), // 444: api.v1.CreateSchedulerPolicyRequest
+ (*CreateSchedulerPolicyResponse)(nil), // 445: api.v1.CreateSchedulerPolicyResponse
+ (*ListSchedulerPoliciesRequest)(nil), // 446: api.v1.ListSchedulerPoliciesRequest
+ (*ListSchedulerPoliciesResponse)(nil), // 447: api.v1.ListSchedulerPoliciesResponse
+ (*UpdateSchedulerPolicyRequest)(nil), // 448: api.v1.UpdateSchedulerPolicyRequest
+ (*UpdateSchedulerPolicyResponse)(nil), // 449: api.v1.UpdateSchedulerPolicyResponse
+ (*ToggleSchedulerPolicyDisabledRequest)(nil), // 450: api.v1.ToggleSchedulerPolicyDisabledRequest
+ (*ToggleSchedulerPolicyDisabledResponse)(nil), // 451: api.v1.ToggleSchedulerPolicyDisabledResponse
+ (*DeleteSchedulerPolicyRequest)(nil), // 452: api.v1.DeleteSchedulerPolicyRequest
+ (*DeleteSchedulerPolicyResponse)(nil), // 453: api.v1.DeleteSchedulerPolicyResponse
+ (*PreviewSchedulerPolicyTargetsRequest)(nil), // 454: api.v1.PreviewSchedulerPolicyTargetsRequest
+ (*SchedulerPolicyTargetMatch)(nil), // 455: api.v1.SchedulerPolicyTargetMatch
+ (*PreviewSchedulerPolicyTargetsResponse)(nil), // 456: api.v1.PreviewSchedulerPolicyTargetsResponse
+ (*ListSchedulerPolicyEnrollmentsRequest)(nil), // 457: api.v1.ListSchedulerPolicyEnrollmentsRequest
+ (*SchedulerPolicyEnrollment)(nil), // 458: api.v1.SchedulerPolicyEnrollment
+ (*ListSchedulerPolicyEnrollmentsResponse)(nil), // 459: api.v1.ListSchedulerPolicyEnrollmentsResponse
+ (*SchedulerPolicySync)(nil), // 460: api.v1.SchedulerPolicySync
+ (*SchedulerConfigPayload)(nil), // 461: api.v1.SchedulerConfigPayload
+ (*SchedulerRevertInstruction)(nil), // 462: api.v1.SchedulerRevertInstruction
+ (*SchedulerEnrollmentReport)(nil), // 463: api.v1.SchedulerEnrollmentReport
+ (*SchedulerRevertEventReport)(nil), // 464: api.v1.SchedulerRevertEventReport
+ (*GetWorkloadRulesByPolicyRequest)(nil), // 465: api.v1.GetWorkloadRulesByPolicyRequest
+ (*GetWorkloadRulesByPolicyResponse)(nil), // 466: api.v1.GetWorkloadRulesByPolicyResponse
+ (*ListWorkloadRulesRequest)(nil), // 467: api.v1.ListWorkloadRulesRequest
+ (*ListWorkloadRulesResponse)(nil), // 468: api.v1.ListWorkloadRulesResponse
+ (*GetWorkloadRuleByIDRequest)(nil), // 469: api.v1.GetWorkloadRuleByIDRequest
+ (*GetWorkloadRuleByIDResponse)(nil), // 470: api.v1.GetWorkloadRuleByIDResponse
+ (*GetWorkloadRuleByWorkloadRequest)(nil), // 471: api.v1.GetWorkloadRuleByWorkloadRequest
+ (*GetWorkloadRuleByWorkloadResponse)(nil), // 472: api.v1.GetWorkloadRuleByWorkloadResponse
+ (*GetWorkloadByWorkloadRuleRequest)(nil), // 473: api.v1.GetWorkloadByWorkloadRuleRequest
+ (*GetWorkloadByWorkloadRuleResponse)(nil), // 474: api.v1.GetWorkloadByWorkloadRuleResponse
+ (*DeleteWorkloadRuleRequest)(nil), // 475: api.v1.DeleteWorkloadRuleRequest
+ (*DeleteWorkloadRuleResponse)(nil), // 476: api.v1.DeleteWorkloadRuleResponse
+ (*DeleteAllWorkloadRulesRequest)(nil), // 477: api.v1.DeleteAllWorkloadRulesRequest
+ (*DeleteAllWorkloadRulesResponse)(nil), // 478: api.v1.DeleteAllWorkloadRulesResponse
+ (*BulkDeleteWorkloadRulesRequest)(nil), // 479: api.v1.BulkDeleteWorkloadRulesRequest
+ (*BulkDeleteWorkloadRulesResponse)(nil), // 480: api.v1.BulkDeleteWorkloadRulesResponse
+ (*BulkToggleWorkloadRulesDisabledRequest)(nil), // 481: api.v1.BulkToggleWorkloadRulesDisabledRequest
+ (*BulkToggleWorkloadRulesDisabledResponse)(nil), // 482: api.v1.BulkToggleWorkloadRulesDisabledResponse
+ (*DeleteRuleAndApplyRecommendationRequest)(nil), // 483: api.v1.DeleteRuleAndApplyRecommendationRequest
+ (*DeleteRuleAndApplyRecommendationResponse)(nil), // 484: api.v1.DeleteRuleAndApplyRecommendationResponse
+ (*ManualRuleFields)(nil), // 485: api.v1.ManualRuleFields
+ (*UpsertManualWorkloadRuleRequest)(nil), // 486: api.v1.UpsertManualWorkloadRuleRequest
+ (*UpsertManualWorkloadRuleResponse)(nil), // 487: api.v1.UpsertManualWorkloadRuleResponse
+ (*ToggleWorkloadRuleDisabledRequest)(nil), // 488: api.v1.ToggleWorkloadRuleDisabledRequest
+ (*ToggleWorkloadRuleDisabledResponse)(nil), // 489: api.v1.ToggleWorkloadRuleDisabledResponse
+ (*PreviewWorkloadRuleRequest)(nil), // 490: api.v1.PreviewWorkloadRuleRequest
+ (*PreviewWorkloadRuleResponse)(nil), // 491: api.v1.PreviewWorkloadRuleResponse
+ (*GetWorkloadContainerNamesRequest)(nil), // 492: api.v1.GetWorkloadContainerNamesRequest
+ (*GetWorkloadContainerNamesResponse)(nil), // 493: api.v1.GetWorkloadContainerNamesResponse
+ (*BatchAutoOptimizeWorkload)(nil), // 494: api.v1.BatchAutoOptimizeWorkload
+ (*BatchAutoOptimizeWorkloadsRequest)(nil), // 495: api.v1.BatchAutoOptimizeWorkloadsRequest
+ (*BatchAutoOptimizeWorkloadResult)(nil), // 496: api.v1.BatchAutoOptimizeWorkloadResult
+ (*BatchAutoOptimizeWorkloadsResponse)(nil), // 497: api.v1.BatchAutoOptimizeWorkloadsResponse
+ (*BatchWorkloadEntry)(nil), // 498: api.v1.BatchWorkloadEntry
+ (*BatchUpsertManualWorkloadRulesRequest)(nil), // 499: api.v1.BatchUpsertManualWorkloadRulesRequest
+ (*BatchUpsertManualWorkloadRuleResult)(nil), // 500: api.v1.BatchUpsertManualWorkloadRuleResult
+ (*BatchUpsertManualWorkloadRulesResponse)(nil), // 501: api.v1.BatchUpsertManualWorkloadRulesResponse
+ (*BatchPreviewWorkloadRulesRequest)(nil), // 502: api.v1.BatchPreviewWorkloadRulesRequest
+ (*BatchPreviewWorkloadRuleResult)(nil), // 503: api.v1.BatchPreviewWorkloadRuleResult
+ (*BatchPreviewWorkloadRulesResponse)(nil), // 504: api.v1.BatchPreviewWorkloadRulesResponse
+ (*ApplyOneTimeOptimizationRequest)(nil), // 505: api.v1.ApplyOneTimeOptimizationRequest
+ (*ApplyOneTimeOptimizationResponse)(nil), // 506: api.v1.ApplyOneTimeOptimizationResponse
+ (*WorkloadProfileManifest)(nil), // 507: api.v1.WorkloadProfileManifest
+ (*BatchWorkloadProfiles)(nil), // 508: api.v1.BatchWorkloadProfiles
+ (*NodeConfigApplyEvent)(nil), // 509: api.v1.NodeConfigApplyEvent
+ (*GetNodeRecommendationStatusRequest)(nil), // 510: api.v1.GetNodeRecommendationStatusRequest
+ (*GetNodeRecommendationStatusResponse)(nil), // 511: api.v1.GetNodeRecommendationStatusResponse
+ (*EnableCheckpointForPolicyRequest)(nil), // 512: api.v1.EnableCheckpointForPolicyRequest
+ (*EnableCheckpointForPolicyResponse)(nil), // 513: api.v1.EnableCheckpointForPolicyResponse
+ (*GetCheckpointApplyStatusRequest)(nil), // 514: api.v1.GetCheckpointApplyStatusRequest
+ (*GetCheckpointApplyStatusResponse)(nil), // 515: api.v1.GetCheckpointApplyStatusResponse
+ (*NodeApplyFailure)(nil), // 516: api.v1.NodeApplyFailure
+ (*GetClusterCheckpointLabelCoverageRequest)(nil), // 517: api.v1.GetClusterCheckpointLabelCoverageRequest
+ (*NodeGroupCheckpointLabelCoverage)(nil), // 518: api.v1.NodeGroupCheckpointLabelCoverage
+ (*GetClusterCheckpointLabelCoverageResponse)(nil), // 519: api.v1.GetClusterCheckpointLabelCoverageResponse
+ (*ListNodeGroupCheckpointLabelStateRequest)(nil), // 520: api.v1.ListNodeGroupCheckpointLabelStateRequest
+ (*NodeCheckpointLabelEntry)(nil), // 521: api.v1.NodeCheckpointLabelEntry
+ (*ListNodeGroupCheckpointLabelStateResponse)(nil), // 522: api.v1.ListNodeGroupCheckpointLabelStateResponse
+ (*SnapshotPercentBounds)(nil), // 523: api.v1.SnapshotPercentBounds
+ (*SnapshotResourceThreshold)(nil), // 524: api.v1.SnapshotResourceThreshold
+ (*SnapshotSchedulePolicySpec)(nil), // 525: api.v1.SnapshotSchedulePolicySpec
+ (*SnapshotGlobalRetention)(nil), // 526: api.v1.SnapshotGlobalRetention
+ (*SnapshotContainerRetentionPolicy)(nil), // 527: api.v1.SnapshotContainerRetentionPolicy
+ (*SnapshotPodRetentionPolicy)(nil), // 528: api.v1.SnapshotPodRetentionPolicy
+ (*SnapshotNamespaceRetentionPolicy)(nil), // 529: api.v1.SnapshotNamespaceRetentionPolicy
+ (*SnapshotRetentionPolicySpec)(nil), // 530: api.v1.SnapshotRetentionPolicySpec
+ (*SnapshotPolicy)(nil), // 531: api.v1.SnapshotPolicy
+ (*ForensicSnapshotPolicy)(nil), // 532: api.v1.ForensicSnapshotPolicy
+ (*SnapshotTargetScope)(nil), // 533: api.v1.SnapshotTargetScope
+ (*SnapshotPolicyTarget)(nil), // 534: api.v1.SnapshotPolicyTarget
+ (*ForensicSnapshotPolicyTarget)(nil), // 535: api.v1.ForensicSnapshotPolicyTarget
+ (*CreateSnapshotPoliciesRequest)(nil), // 536: api.v1.CreateSnapshotPoliciesRequest
+ (*CreateSnapshotPoliciesResponse)(nil), // 537: api.v1.CreateSnapshotPoliciesResponse
+ (*ListSnapshotPoliciesRequest)(nil), // 538: api.v1.ListSnapshotPoliciesRequest
+ (*ListSnapshotPoliciesResponse)(nil), // 539: api.v1.ListSnapshotPoliciesResponse
+ (*UpdateSnapshotPolicyRequest)(nil), // 540: api.v1.UpdateSnapshotPolicyRequest
+ (*UpdateSnapshotPolicyResponse)(nil), // 541: api.v1.UpdateSnapshotPolicyResponse
+ (*DeleteSnapshotPolicyRequest)(nil), // 542: api.v1.DeleteSnapshotPolicyRequest
+ (*DeleteSnapshotPolicyResponse)(nil), // 543: api.v1.DeleteSnapshotPolicyResponse
+ (*CreateSnapshotPolicyTargetsRequest)(nil), // 544: api.v1.CreateSnapshotPolicyTargetsRequest
+ (*CreateSnapshotPolicyTargetsResponse)(nil), // 545: api.v1.CreateSnapshotPolicyTargetsResponse
+ (*ListSnapshotPolicyTargetsRequest)(nil), // 546: api.v1.ListSnapshotPolicyTargetsRequest
+ (*ListSnapshotPolicyTargetsResponse)(nil), // 547: api.v1.ListSnapshotPolicyTargetsResponse
+ (*UpdateSnapshotPolicyTargetRequest)(nil), // 548: api.v1.UpdateSnapshotPolicyTargetRequest
+ (*UpdateSnapshotPolicyTargetResponse)(nil), // 549: api.v1.UpdateSnapshotPolicyTargetResponse
+ (*DeleteSnapshotPolicyTargetRequest)(nil), // 550: api.v1.DeleteSnapshotPolicyTargetRequest
+ (*DeleteSnapshotPolicyTargetResponse)(nil), // 551: api.v1.DeleteSnapshotPolicyTargetResponse
+ (*CreateForensicSnapshotPoliciesRequest)(nil), // 552: api.v1.CreateForensicSnapshotPoliciesRequest
+ (*CreateForensicSnapshotPoliciesResponse)(nil), // 553: api.v1.CreateForensicSnapshotPoliciesResponse
+ (*ListForensicSnapshotPoliciesRequest)(nil), // 554: api.v1.ListForensicSnapshotPoliciesRequest
+ (*ListForensicSnapshotPoliciesResponse)(nil), // 555: api.v1.ListForensicSnapshotPoliciesResponse
+ (*UpdateForensicSnapshotPolicyRequest)(nil), // 556: api.v1.UpdateForensicSnapshotPolicyRequest
+ (*UpdateForensicSnapshotPolicyResponse)(nil), // 557: api.v1.UpdateForensicSnapshotPolicyResponse
+ (*DeleteForensicSnapshotPolicyRequest)(nil), // 558: api.v1.DeleteForensicSnapshotPolicyRequest
+ (*DeleteForensicSnapshotPolicyResponse)(nil), // 559: api.v1.DeleteForensicSnapshotPolicyResponse
+ (*CreateForensicSnapshotPolicyTargetsRequest)(nil), // 560: api.v1.CreateForensicSnapshotPolicyTargetsRequest
+ (*CreateForensicSnapshotPolicyTargetsResponse)(nil), // 561: api.v1.CreateForensicSnapshotPolicyTargetsResponse
+ (*ListForensicSnapshotPolicyTargetsRequest)(nil), // 562: api.v1.ListForensicSnapshotPolicyTargetsRequest
+ (*ListForensicSnapshotPolicyTargetsResponse)(nil), // 563: api.v1.ListForensicSnapshotPolicyTargetsResponse
+ (*UpdateForensicSnapshotPolicyTargetRequest)(nil), // 564: api.v1.UpdateForensicSnapshotPolicyTargetRequest
+ (*UpdateForensicSnapshotPolicyTargetResponse)(nil), // 565: api.v1.UpdateForensicSnapshotPolicyTargetResponse
+ (*DeleteForensicSnapshotPolicyTargetRequest)(nil), // 566: api.v1.DeleteForensicSnapshotPolicyTargetRequest
+ (*DeleteForensicSnapshotPolicyTargetResponse)(nil), // 567: api.v1.DeleteForensicSnapshotPolicyTargetResponse
+ (*TriggerForensicSnapshotRunRequest)(nil), // 568: api.v1.TriggerForensicSnapshotRunRequest
+ (*TriggerForensicSnapshotRunResponse)(nil), // 569: api.v1.TriggerForensicSnapshotRunResponse
+ (*SnapshotResolvedWorkload)(nil), // 570: api.v1.SnapshotResolvedWorkload
+ (*SnapshotResolvedNamespace)(nil), // 571: api.v1.SnapshotResolvedNamespace
+ (*SnapshotClusterScopePreview)(nil), // 572: api.v1.SnapshotClusterScopePreview
+ (*PreviewSnapshotPolicyTargetMatchesRequest)(nil), // 573: api.v1.PreviewSnapshotPolicyTargetMatchesRequest
+ (*PreviewSnapshotPolicyTargetMatchesResponse)(nil), // 574: api.v1.PreviewSnapshotPolicyTargetMatchesResponse
+ (*ForensicTargetOverlap)(nil), // 575: api.v1.ForensicTargetOverlap
+ (*PreviewForensicSnapshotPolicyTargetMatchesRequest)(nil), // 576: api.v1.PreviewForensicSnapshotPolicyTargetMatchesRequest
+ (*PreviewForensicSnapshotPolicyTargetMatchesResponse)(nil), // 577: api.v1.PreviewForensicSnapshotPolicyTargetMatchesResponse
+ (*SnapshotRenderedScopeRow)(nil), // 578: api.v1.SnapshotRenderedScopeRow
+ (*GetSnapshotPolicyTargetRenderedScopeRequest)(nil), // 579: api.v1.GetSnapshotPolicyTargetRenderedScopeRequest
+ (*GetSnapshotPolicyTargetRenderedScopeResponse)(nil), // 580: api.v1.GetSnapshotPolicyTargetRenderedScopeResponse
+ (*GetForensicSnapshotPolicyTargetRenderedScopeRequest)(nil), // 581: api.v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest
+ (*GetForensicSnapshotPolicyTargetRenderedScopeResponse)(nil), // 582: api.v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse
+ (*SnapshotConfigInfo)(nil), // 583: api.v1.SnapshotConfigInfo
+ (*SnapshotConfigApplyEventInfo)(nil), // 584: api.v1.SnapshotConfigApplyEventInfo
+ (*GetSnapshotRecommendationStatusRequest)(nil), // 585: api.v1.GetSnapshotRecommendationStatusRequest
+ (*GetSnapshotRecommendationStatusResponse)(nil), // 586: api.v1.GetSnapshotRecommendationStatusResponse
+ (*GetForensicSnapshotRecommendationStatusRequest)(nil), // 587: api.v1.GetForensicSnapshotRecommendationStatusRequest
+ (*GetForensicSnapshotRecommendationStatusResponse)(nil), // 588: api.v1.GetForensicSnapshotRecommendationStatusResponse
+ (*PreviewSnapshotRecommendationConfigRequest)(nil), // 589: api.v1.PreviewSnapshotRecommendationConfigRequest
+ (*PreviewSnapshotRecommendationConfigResponse)(nil), // 590: api.v1.PreviewSnapshotRecommendationConfigResponse
+ (*PreviewForensicSnapshotRecommendationConfigRequest)(nil), // 591: api.v1.PreviewForensicSnapshotRecommendationConfigRequest
+ (*PreviewForensicSnapshotRecommendationConfigResponse)(nil), // 592: api.v1.PreviewForensicSnapshotRecommendationConfigResponse
+ (*ListReferencedAuthenticationsRequest)(nil), // 593: api.v1.ListReferencedAuthenticationsRequest
+ (*ReferencedAuthentication)(nil), // 594: api.v1.ReferencedAuthentication
+ (*ListReferencedAuthenticationsResponse)(nil), // 595: api.v1.ListReferencedAuthenticationsResponse
+ nil, // 596: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.WorkloadTargetMapEntry
+ nil, // 597: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.WorkloadPercentilesEntry
+ nil, // 598: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.CollisionsByWorkloadUidEntry
+ nil, // 599: api.v1.HPAMetricTrigger.MetadataEntry
+ nil, // 600: api.v1.KEDATrigger.MetadataEntry
+ nil, // 601: api.v1.AgentHealth.NodeNameToAgentEntry
+ nil, // 602: api.v1.WorkloadRecommendation.SourceImagesEntry
+ nil, // 603: api.v1.GetAttachedWorkloadPoliciesResponse.PolicyIdToMatchedTargetsEntry
+ nil, // 604: api.v1.ListAttachedWorkloadPoliciesResponse.PolicyMapEntry
+ nil, // 605: api.v1.ListAttachedWorkloadPoliciesResponse.WorkloadMapEntry
+ nil, // 606: api.v1.ListAttachedNodeGroupPoliciesResponse.PolicyMapEntry
+ nil, // 607: api.v1.ListAttachedNodeGroupPoliciesResponse.NodeGroupMapEntry
+ nil, // 608: api.v1.GetNodeGroupsCheckpointStatusResponse.ByNodeGroupEntry
+ nil, // 609: api.v1.NodePolicy.LabelsEntry
+ nil, // 610: api.v1.SuggestedKarpenterConfigResponse.NgToOriginalEntry
+ nil, // 611: api.v1.SuggestedKarpenterConfigResponse.NgToSuggestedEntry
+ nil, // 612: api.v1.AWSNodeClassSpec.TagsEntry
+ nil, // 613: api.v1.SubnetSelectorTerm.TagsEntry
+ nil, // 614: api.v1.SecurityGroupSelectorTerm.TagsEntry
+ nil, // 615: api.v1.CapacityReservationSelectorTerm.TagsEntry
+ nil, // 616: api.v1.AMISelectorTerm.TagsEntry
+ nil, // 617: api.v1.KubeletConfiguration.SystemReservedEntry
+ nil, // 618: api.v1.KubeletConfiguration.KubeReservedEntry
+ nil, // 619: api.v1.KubeletConfiguration.EvictionHardEntry
+ nil, // 620: api.v1.KubeletConfiguration.EvictionSoftEntry
+ nil, // 621: api.v1.KubeletConfiguration.EvictionSoftGracePeriodEntry
+ nil, // 622: api.v1.GCPNodeClassSpec.LabelsEntry
+ nil, // 623: api.v1.GCPNodeClassSpec.MetadataEntry
+ nil, // 624: api.v1.AzureNodeClassSpec.TagsEntry
+ nil, // 625: api.v1.OCINodeClassSpec.MetaDataEntry
+ nil, // 626: api.v1.OCINodeClassSpec.TagsEntry
+ nil, // 627: api.v1.OCINodeClassSpec.FreeFormTagsEntry
+ nil, // 628: api.v1.SnapshotCRStatus.AnnotationsEntry
+ nil, // 629: api.v1.WorkloadOptimizationPolicyProto.ClusterNamesEntry
+ nil, // 630: api.v1.SchedulerPolicyProto.ClusterNamesEntry
+ nil, // 631: api.v1.ListSchedulerPolicyEnrollmentsResponse.ClusterNamesEntry
+ (*SchedulerEnrollmentReport_Observation)(nil), // 632: api.v1.SchedulerEnrollmentReport.Observation
+ (*SchedulerRevertEventReport_Event)(nil), // 633: api.v1.SchedulerRevertEventReport.Event
+ nil, // 634: api.v1.GetWorkloadRulesByPolicyResponse.ClusterNamesEntry
+ nil, // 635: api.v1.ListWorkloadRulesResponse.ClusterNamesEntry
+ nil, // 636: api.v1.ListWorkloadRulesResponse.PolicyNamesEntry
+ (*timestamppb.Timestamp)(nil), // 637: google.protobuf.Timestamp
+ (*WorkloadFilters)(nil), // 638: api.v1.WorkloadFilters
+ (*Pagination)(nil), // 639: api.v1.Pagination
+ (K8SObjectKind)(0), // 640: api.v1.K8sObjectKind
+ (*LabelSelector)(nil), // 641: api.v1.LabelSelector
+ (*RegexPattern)(nil), // 642: api.v1.RegexPattern
+ (*WorkloadItem)(nil), // 643: api.v1.WorkloadItem
+ (*MetricPercentiles)(nil), // 644: api.v1.MetricPercentiles
+ (*NodeGroup)(nil), // 645: api.v1.NodeGroup
+ (*HPABehavior)(nil), // 646: api.v1.HPABehavior
+ (*HPAConnector)(nil), // 647: api.v1.HPAConnector
+ (*money.Money)(nil), // 648: google.type.Money
+ (*SavingsTimeSeries)(nil), // 649: api.v1.SavingsTimeSeries
+ (*GetWorkloadResponse)(nil), // 650: api.v1.GetWorkloadResponse
+ (*CloudProvider)(nil), // 651: api.v1.CloudProvider
+ (ProfileWindow)(0), // 652: api.v1.ProfileWindow
+ (*WorkloadProfileResult)(nil), // 653: api.v1.WorkloadProfileResult
+ (*ProfileKey)(nil), // 654: api.v1.ProfileKey
+ (*WorkloadProfileSnapshot)(nil), // 655: api.v1.WorkloadProfileSnapshot
}
var file_api_v1_recommendation_proto_depIdxs = []int32{
- 419, // 0: api.v1.GetRecommendationsRequest.start_time:type_name -> google.protobuf.Timestamp
- 419, // 1: api.v1.GetRecommendationsRequest.end_time:type_name -> google.protobuf.Timestamp
- 420, // 2: api.v1.GetRecommendationsRequest.filters:type_name -> api.v1.WorkloadFilters
- 421, // 3: api.v1.GetRecommendationsRequest.pagination:type_name -> api.v1.Pagination
- 172, // 4: api.v1.GetRecommendationsResponse.recommendations:type_name -> api.v1.WorkloadRecommendation
- 421, // 5: api.v1.GetRecommendationsResponse.pagination:type_name -> api.v1.Pagination
- 419, // 6: api.v1.GetRecommendationsForWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
- 419, // 7: api.v1.GetRecommendationsForWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
- 172, // 8: api.v1.GetRecommendationsForWorkloadResponse.recommendations:type_name -> api.v1.WorkloadRecommendation
- 419, // 9: api.v1.GetNodeGroupStatsRequest.start_time:type_name -> google.protobuf.Timestamp
- 419, // 10: api.v1.GetNodeGroupStatsRequest.end_time:type_name -> google.protobuf.Timestamp
- 148, // 11: api.v1.GetNodeGroupStatsResponse.node_stats:type_name -> api.v1.NodeStats
- 419, // 12: api.v1.GetOptimalInstanceTypeForNodeGroupRequest.start_time:type_name -> google.protobuf.Timestamp
- 419, // 13: api.v1.GetOptimalInstanceTypeForNodeGroupRequest.end_time:type_name -> google.protobuf.Timestamp
- 12, // 14: api.v1.GetOptimalInstanceTypeForNodeGroupRequest.mode:type_name -> api.v1.RecommendationMode
- 422, // 15: api.v1.GetLatestWorkloadRecommendationRequest.kind:type_name -> api.v1.K8sObjectKind
- 422, // 16: api.v1.GetLatestWorkloadRecommendationResponse.kind:type_name -> api.v1.K8sObjectKind
- 154, // 17: api.v1.GetLatestWorkloadRecommendationResponse.container_recommendations:type_name -> api.v1.ContainerRecommendation
- 157, // 18: api.v1.GetLatestWorkloadRecommendationResponse.current_tolerations:type_name -> api.v1.Toleration
- 157, // 19: api.v1.GetLatestWorkloadRecommendationResponse.recommended_tolerations:type_name -> api.v1.Toleration
- 422, // 20: api.v1.GetPreviewWorkloadRecommendationRequest.kind:type_name -> api.v1.K8sObjectKind
- 419, // 21: api.v1.GetPreviewWorkloadRecommendationRequest.timestamp:type_name -> google.protobuf.Timestamp
- 423, // 22: api.v1.GetPreviewWorkloadRecommendationRequest.vpa_lookback:type_name -> google.protobuf.Duration
- 423, // 23: api.v1.GetPreviewWorkloadRecommendationRequest.hpa_lookback:type_name -> google.protobuf.Duration
- 172, // 24: api.v1.GetPreviewWorkloadRecommendationResponse.rec:type_name -> api.v1.WorkloadRecommendation
- 32, // 25: api.v1.GetPreviewWorkloadRecommendationsRequest.workloads:type_name -> api.v1.WorkloadIdentifier
- 419, // 26: api.v1.GetPreviewWorkloadRecommendationsRequest.timestamp:type_name -> google.protobuf.Timestamp
- 423, // 27: api.v1.GetPreviewWorkloadRecommendationsRequest.vpa_lookback:type_name -> google.protobuf.Duration
- 423, // 28: api.v1.GetPreviewWorkloadRecommendationsRequest.hpa_lookback:type_name -> google.protobuf.Duration
- 422, // 29: api.v1.WorkloadIdentifier.kind:type_name -> api.v1.K8sObjectKind
- 30, // 30: api.v1.GetPreviewWorkloadRecommendationsResponse.recommendations:type_name -> api.v1.GetPreviewWorkloadRecommendationResponse
- 12, // 31: api.v1.CreateClusterRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
- 8, // 32: api.v1.CreateClusterRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 158, // 33: api.v1.CreateClusterRecommendationPolicyResponse.policy:type_name -> api.v1.ClusterRecommendationPolicy
- 158, // 34: api.v1.GetClusterRecommendationPolicyResponse.policy:type_name -> api.v1.ClusterRecommendationPolicy
- 158, // 35: api.v1.ListClusterRecommendationPoliciesResponse.policies:type_name -> api.v1.ClusterRecommendationPolicy
- 12, // 36: api.v1.UpdateClusterRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
- 8, // 37: api.v1.UpdateClusterRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 158, // 38: api.v1.UpdateClusterRecommendationPolicyResponse.policy:type_name -> api.v1.ClusterRecommendationPolicy
- 419, // 39: api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest.start_time:type_name -> google.protobuf.Timestamp
- 419, // 40: api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest.end_time:type_name -> google.protobuf.Timestamp
- 32, // 41: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.workloads:type_name -> api.v1.WorkloadIdentifier
- 386, // 42: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.workload_target_map:type_name -> api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.WorkloadTargetMapEntry
- 10, // 43: api.v1.CreateNodeGroupRecommendationPolicyRequest.detection_triggers:type_name -> api.v1.NodeGroupDetectionTrigger
- 12, // 44: api.v1.CreateNodeGroupRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
- 11, // 45: api.v1.CreateNodeGroupRecommendationPolicyRequest.actions:type_name -> api.v1.NodeGroupActionsAllowed
- 8, // 46: api.v1.CreateNodeGroupRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 159, // 47: api.v1.CreateNodeGroupRecommendationPolicyResponse.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
- 159, // 48: api.v1.GetNodeGroupRecommendationPolicyResponse.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
- 159, // 49: api.v1.ListNodeGroupRecommendationPoliciesResponse.policies:type_name -> api.v1.NodeGroupRecommendationPolicy
- 10, // 50: api.v1.UpdateNodeGroupRecommendationPolicyRequest.detection_triggers:type_name -> api.v1.NodeGroupDetectionTrigger
- 12, // 51: api.v1.UpdateNodeGroupRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
- 11, // 52: api.v1.UpdateNodeGroupRecommendationPolicyRequest.actions:type_name -> api.v1.NodeGroupActionsAllowed
- 8, // 53: api.v1.UpdateNodeGroupRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 159, // 54: api.v1.UpdateNodeGroupRecommendationPolicyResponse.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
- 162, // 55: api.v1.CreateWorkloadRecommendationPolicyRequest.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 162, // 56: api.v1.CreateWorkloadRecommendationPolicyResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 162, // 57: api.v1.GetWorkloadRecommendationPolicyResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 162, // 58: api.v1.ListWorkloadRecommendationPoliciesResponse.policies:type_name -> api.v1.WorkloadRecommendationPolicy
- 162, // 59: api.v1.UpdateWorkloadRecommendationPolicyRequest.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 162, // 60: api.v1.UpdateWorkloadRecommendationPolicyResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 422, // 61: api.v1.AttachWorkloadRecommendationPolicyRequest.kind:type_name -> api.v1.K8sObjectKind
- 32, // 62: api.v1.AttachWorkloadRecommendationPoliciesRequest.workloads:type_name -> api.v1.WorkloadIdentifier
- 75, // 63: api.v1.AttachWorkloadRecommendationPoliciesResponse.attachments:type_name -> api.v1.WorkloadPolicyAttachment
- 422, // 64: api.v1.WorkloadPolicyAttachment.kind:type_name -> api.v1.K8sObjectKind
- 419, // 65: api.v1.WorkloadPolicyAttachment.created_at:type_name -> google.protobuf.Timestamp
- 419, // 66: api.v1.WorkloadPolicyAttachment.updated_at:type_name -> google.protobuf.Timestamp
- 424, // 67: api.v1.WorkloadPolicyTarget.namespace_selector:type_name -> api.v1.LabelSelector
- 424, // 68: api.v1.WorkloadPolicyTarget.workload_selector:type_name -> api.v1.LabelSelector
- 422, // 69: api.v1.WorkloadPolicyTarget.kind_filter:type_name -> api.v1.K8sObjectKind
- 425, // 70: api.v1.WorkloadPolicyTarget.name_pattern:type_name -> api.v1.RegexPattern
- 424, // 71: api.v1.WorkloadPolicyTarget.annotation_selector:type_name -> api.v1.LabelSelector
- 425, // 72: api.v1.WorkloadPolicyTarget.namespace_pattern:type_name -> api.v1.RegexPattern
- 419, // 73: api.v1.WorkloadPolicyTarget.created_at:type_name -> google.protobuf.Timestamp
- 419, // 74: api.v1.WorkloadPolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
- 424, // 75: api.v1.CreateWorkloadPolicyTargetRequest.namespace_selector:type_name -> api.v1.LabelSelector
- 424, // 76: api.v1.CreateWorkloadPolicyTargetRequest.workload_selector:type_name -> api.v1.LabelSelector
- 422, // 77: api.v1.CreateWorkloadPolicyTargetRequest.kind_filter:type_name -> api.v1.K8sObjectKind
- 425, // 78: api.v1.CreateWorkloadPolicyTargetRequest.name_pattern:type_name -> api.v1.RegexPattern
- 424, // 79: api.v1.CreateWorkloadPolicyTargetRequest.annotation_selector:type_name -> api.v1.LabelSelector
- 425, // 80: api.v1.CreateWorkloadPolicyTargetRequest.namespace_pattern:type_name -> api.v1.RegexPattern
- 76, // 81: api.v1.CreateWorkloadPolicyTargetResponse.target:type_name -> api.v1.WorkloadPolicyTarget
- 76, // 82: api.v1.GetWorkloadPolicyTargetResponse.target:type_name -> api.v1.WorkloadPolicyTarget
- 76, // 83: api.v1.ListWorkloadPolicyTargetsResponse.targets:type_name -> api.v1.WorkloadPolicyTarget
- 424, // 84: api.v1.UpdateWorkloadPolicyTargetRequest.namespace_selector:type_name -> api.v1.LabelSelector
- 424, // 85: api.v1.UpdateWorkloadPolicyTargetRequest.workload_selector:type_name -> api.v1.LabelSelector
- 422, // 86: api.v1.UpdateWorkloadPolicyTargetRequest.kind_filter:type_name -> api.v1.K8sObjectKind
- 425, // 87: api.v1.UpdateWorkloadPolicyTargetRequest.name_pattern:type_name -> api.v1.RegexPattern
- 424, // 88: api.v1.UpdateWorkloadPolicyTargetRequest.annotation_selector:type_name -> api.v1.LabelSelector
- 425, // 89: api.v1.UpdateWorkloadPolicyTargetRequest.namespace_pattern:type_name -> api.v1.RegexPattern
- 76, // 90: api.v1.UpdateWorkloadPolicyTargetResponse.target:type_name -> api.v1.WorkloadPolicyTarget
- 424, // 91: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.namespace_selector:type_name -> api.v1.LabelSelector
- 424, // 92: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.workload_selector:type_name -> api.v1.LabelSelector
- 422, // 93: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.kind_filter:type_name -> api.v1.K8sObjectKind
- 425, // 94: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.name_pattern:type_name -> api.v1.RegexPattern
- 424, // 95: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.annotation_selector:type_name -> api.v1.LabelSelector
- 425, // 96: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.namespace_pattern:type_name -> api.v1.RegexPattern
- 426, // 97: api.v1.PreviewWorkloadPolicyTargetMatchesResponse.matched_workloads:type_name -> api.v1.WorkloadItem
- 424, // 98: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.namespace_selector:type_name -> api.v1.LabelSelector
- 424, // 99: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.workload_selector:type_name -> api.v1.LabelSelector
- 422, // 100: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.kind_filter:type_name -> api.v1.K8sObjectKind
- 425, // 101: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.name_pattern:type_name -> api.v1.RegexPattern
- 424, // 102: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.annotation_selector:type_name -> api.v1.LabelSelector
- 425, // 103: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.namespace_pattern:type_name -> api.v1.RegexPattern
- 172, // 104: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.recommendations:type_name -> api.v1.WorkloadRecommendation
- 426, // 105: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.workload_items:type_name -> api.v1.WorkloadItem
- 387, // 106: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.workload_percentiles:type_name -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.WorkloadPercentilesEntry
- 427, // 107: api.v1.WorkloadPercentileSummary.cpu_usage:type_name -> api.v1.MetricPercentiles
- 427, // 108: api.v1.WorkloadPercentileSummary.memory_usage:type_name -> api.v1.MetricPercentiles
- 427, // 109: api.v1.WorkloadPercentileSummary.gpu_usage:type_name -> api.v1.MetricPercentiles
- 427, // 110: api.v1.WorkloadPercentileSummary.cpu_request:type_name -> api.v1.MetricPercentiles
- 427, // 111: api.v1.WorkloadPercentileSummary.memory_request:type_name -> api.v1.MetricPercentiles
- 419, // 112: api.v1.NodeGroupPolicyTarget.created_at:type_name -> google.protobuf.Timestamp
- 419, // 113: api.v1.NodeGroupPolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
- 96, // 114: api.v1.CreateNodeGroupPolicyTargetResponse.target:type_name -> api.v1.NodeGroupPolicyTarget
- 96, // 115: api.v1.GetNodeGroupPolicyTargetResponse.target:type_name -> api.v1.NodeGroupPolicyTarget
- 96, // 116: api.v1.ListNodeGroupPolicyTargetsResponse.targets:type_name -> api.v1.NodeGroupPolicyTarget
- 96, // 117: api.v1.UpdateNodeGroupPolicyTargetResponse.target:type_name -> api.v1.NodeGroupPolicyTarget
- 428, // 118: api.v1.PreviewNodeGroupPolicyTargetMatchesResponse.matched_node_groups:type_name -> api.v1.NodeGroup
- 170, // 119: api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsResponse.recommendations:type_name -> api.v1.NodeGroupRecommendation
- 165, // 120: api.v1.BalanceGetRecommendationsRequest.register:type_name -> api.v1.BalanceRegisterRequest
- 167, // 121: api.v1.BalanceGetRecommendationsRequest.apply:type_name -> api.v1.BalanceApplyRecommendationResponse
- 142, // 122: api.v1.BalanceGetRecommendationsRequest.workload_meta:type_name -> api.v1.ReconcileWorkload
- 172, // 123: api.v1.BalanceGetRecommendationsRequest.in_cluster_recommendation:type_name -> api.v1.WorkloadRecommendation
- 144, // 124: api.v1.BalanceGetRecommendationsRequest.operator_health:type_name -> api.v1.OperatorHealth
- 145, // 125: api.v1.BalanceGetRecommendationsRequest.agent_health:type_name -> api.v1.AgentHealth
- 170, // 126: api.v1.BalanceGetRecommendationsResponse.node_group_recommendation:type_name -> api.v1.NodeGroupRecommendation
- 172, // 127: api.v1.BalanceGetRecommendationsResponse.workload_recommendation:type_name -> api.v1.WorkloadRecommendation
- 293, // 128: api.v1.BalanceGetRecommendationsResponse.node_recommendation:type_name -> api.v1.NodeRecommendation
- 115, // 129: api.v1.BalanceGetRecommendationsResponse.batch_node_group_recommendations:type_name -> api.v1.BatchNodeGroupRecommendations
- 116, // 130: api.v1.BalanceGetRecommendationsResponse.batch_workload_recommendations:type_name -> api.v1.BatchWorkloadRecommendations
- 130, // 131: api.v1.BalanceGetRecommendationsResponse.kind_to_namespace_to_workloads:type_name -> api.v1.WorkloadWithActiveRecommendations
- 143, // 132: api.v1.BalanceGetRecommendationsResponse.workload_reconcile_response:type_name -> api.v1.ReconcileResponse
- 376, // 133: api.v1.BalanceGetRecommendationsResponse.workload_profile_manifest:type_name -> api.v1.WorkloadProfileManifest
- 377, // 134: api.v1.BalanceGetRecommendationsResponse.batch_workload_profiles:type_name -> api.v1.BatchWorkloadProfiles
- 147, // 135: api.v1.BalanceGetRecommendationsResponse.health_update_requested:type_name -> api.v1.HealthReport
- 132, // 136: api.v1.BalanceGetRecommendationsResponse.batch_generic_resource_recommendations:type_name -> api.v1.BatchGenericResourceRecommendations
- 133, // 137: api.v1.BalanceGetRecommendationsResponse.batch_pvc_storage_recommendations:type_name -> api.v1.BatchPvcStorageRecommendations
- 129, // 138: api.v1.BalanceGetRecommendationsResponse.batch_workload_rules:type_name -> api.v1.BatchWorkloadRules
- 291, // 139: api.v1.BalanceGetRecommendationsResponse.karpenter_settings:type_name -> api.v1.KarpenterSettingsRecommendation
- 170, // 140: api.v1.BatchNodeGroupRecommendations.recommendations:type_name -> api.v1.NodeGroupRecommendation
- 172, // 141: api.v1.BatchWorkloadRecommendations.recommendations:type_name -> api.v1.WorkloadRecommendation
- 118, // 142: api.v1.WorkloadRule.cpu_rule:type_name -> api.v1.ResourceRuleConfig
- 118, // 143: api.v1.WorkloadRule.memory_rule:type_name -> api.v1.ResourceRuleConfig
- 118, // 144: api.v1.WorkloadRule.gpu_rule:type_name -> api.v1.ResourceRuleConfig
- 123, // 145: api.v1.WorkloadRule.hpa_rule:type_name -> api.v1.HPARuleConfig
- 8, // 146: api.v1.WorkloadRule.action_triggers:type_name -> api.v1.ActionTrigger
- 9, // 147: api.v1.WorkloadRule.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
- 124, // 148: api.v1.WorkloadRule.emergency_response:type_name -> api.v1.EmergencyResponseConfig
- 126, // 149: api.v1.WorkloadRule.percentiles:type_name -> api.v1.ResourcePercentiles
- 128, // 150: api.v1.WorkloadRule.classification:type_name -> api.v1.WorkloadClassification
- 419, // 151: api.v1.WorkloadRule.created_at:type_name -> google.protobuf.Timestamp
- 419, // 152: api.v1.WorkloadRule.updated_at:type_name -> google.protobuf.Timestamp
- 122, // 153: api.v1.WorkloadRule.containers:type_name -> api.v1.ContainerResourceRuleConfig
- 388, // 154: api.v1.HPAMetricTrigger.metadata:type_name -> api.v1.HPAMetricTrigger.MetadataEntry
- 121, // 155: api.v1.ContainerResourceRuleConfig.cpu_rule:type_name -> api.v1.ContainerResourceConfig
- 121, // 156: api.v1.ContainerResourceRuleConfig.memory_rule:type_name -> api.v1.ContainerResourceConfig
- 121, // 157: api.v1.ContainerResourceRuleConfig.gpu_rule:type_name -> api.v1.ContainerResourceConfig
- 14, // 158: api.v1.HPARuleConfig.primary_metric:type_name -> api.v1.HPAMetricType
- 119, // 159: api.v1.HPARuleConfig.metrics:type_name -> api.v1.HPAMetricTrigger
- 429, // 160: api.v1.HPARuleConfig.behavior:type_name -> api.v1.HPABehavior
- 120, // 161: api.v1.HPARuleConfig.fallback:type_name -> api.v1.HPAFallback
- 125, // 162: api.v1.ResourcePercentiles.cpu:type_name -> api.v1.PercentileValues
- 125, // 163: api.v1.ResourcePercentiles.memory:type_name -> api.v1.PercentileValues
- 125, // 164: api.v1.ResourcePercentiles.network:type_name -> api.v1.PercentileValues
- 125, // 165: api.v1.ResourcePercentiles.disk:type_name -> api.v1.PercentileValues
- 127, // 166: api.v1.WorkloadClassification.burstiness:type_name -> api.v1.BurstinessRatios
- 117, // 167: api.v1.BatchWorkloadRules.rules:type_name -> api.v1.WorkloadRule
- 32, // 168: api.v1.WorkloadWithActiveRecommendations.workloads:type_name -> api.v1.WorkloadIdentifier
- 419, // 169: api.v1.GenericResourceRecommendation.timestamp:type_name -> google.protobuf.Timestamp
- 4, // 170: api.v1.GenericResourceRecommendation.status:type_name -> api.v1.RecommendationStatus
- 419, // 171: api.v1.GenericResourceRecommendation.created_at:type_name -> google.protobuf.Timestamp
- 419, // 172: api.v1.GenericResourceRecommendation.updated_at:type_name -> google.protobuf.Timestamp
- 131, // 173: api.v1.BatchGenericResourceRecommendations.recommendations:type_name -> api.v1.GenericResourceRecommendation
- 323, // 174: api.v1.BatchPvcStorageRecommendations.recommendations:type_name -> api.v1.PvcStorageRecommendation
- 32, // 175: api.v1.GeneratePodDisruptionBudgetRequest.workload:type_name -> api.v1.WorkloadIdentifier
- 131, // 176: api.v1.GeneratePodDisruptionBudgetResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
- 32, // 177: api.v1.GenerateAndCreatePodDisruptionBudgetRequest.workload:type_name -> api.v1.WorkloadIdentifier
- 131, // 178: api.v1.GenerateAndCreatePodDisruptionBudgetResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
- 131, // 179: api.v1.CreatePodDisruptionBudgetRequest.recommendation:type_name -> api.v1.GenericResourceRecommendation
- 131, // 180: api.v1.CreatePodDisruptionBudgetResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
- 32, // 181: api.v1.GetPDBRecommendationForWorkloadRequest.workload:type_name -> api.v1.WorkloadIdentifier
- 131, // 182: api.v1.GetPDBRecommendationForWorkloadResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
- 422, // 183: api.v1.ReconcileWorkload.kind:type_name -> api.v1.K8sObjectKind
- 0, // 184: api.v1.ReconcileResponse.status:type_name -> api.v1.ReconcileStatus
- 172, // 185: api.v1.ReconcileResponse.updated_recommendation:type_name -> api.v1.WorkloadRecommendation
- 389, // 186: api.v1.AgentHealth.node_name_to_agent:type_name -> api.v1.AgentHealth.NodeNameToAgentEntry
- 149, // 187: api.v1.NodeStats.metrics:type_name -> api.v1.NodeMetric
- 419, // 188: api.v1.NodeMetric.timestamp:type_name -> google.protobuf.Timestamp
- 422, // 189: api.v1.ContainerStats.kind:type_name -> api.v1.K8sObjectKind
- 151, // 190: api.v1.ContainerStats.metrics:type_name -> api.v1.ContainerMetric
- 152, // 191: api.v1.ContainerStats.summarized_metrics:type_name -> api.v1.ContainerSummarizedMetric
- 419, // 192: api.v1.ContainerMetric.timestamp:type_name -> google.protobuf.Timestamp
- 419, // 193: api.v1.ContainerSummarizedMetric.timestamp:type_name -> google.protobuf.Timestamp
- 153, // 194: api.v1.ContainerSummarizedMetric.cpu:type_name -> api.v1.Metric
- 153, // 195: api.v1.ContainerSummarizedMetric.memory:type_name -> api.v1.Metric
- 153, // 196: api.v1.ContainerSummarizedMetric.gpu:type_name -> api.v1.Metric
- 153, // 197: api.v1.ContainerSummarizedMetric.gpu_vram:type_name -> api.v1.Metric
- 156, // 198: api.v1.ContainerRecommendation.current_request:type_name -> api.v1.ResourceRecommendation
- 156, // 199: api.v1.ContainerRecommendation.recommended_request:type_name -> api.v1.ResourceRecommendation
- 156, // 200: api.v1.ContainerRecommendation.current_limit:type_name -> api.v1.ResourceRecommendation
- 156, // 201: api.v1.ContainerRecommendation.recommended_limit:type_name -> api.v1.ResourceRecommendation
- 1, // 202: api.v1.ResourceRecommendation.cpu_action:type_name -> api.v1.ActionToTake
- 1, // 203: api.v1.ResourceRecommendation.mem_action:type_name -> api.v1.ActionToTake
- 1, // 204: api.v1.ResourceRecommendation.gpu_action:type_name -> api.v1.ActionToTake
- 1, // 205: api.v1.ResourceRecommendation.gpu_vram_action:type_name -> api.v1.ActionToTake
- 8, // 206: api.v1.ClusterRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
- 12, // 207: api.v1.ClusterRecommendationPolicy.recommendation_mode:type_name -> api.v1.RecommendationMode
- 8, // 208: api.v1.ClusterRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
- 8, // 209: api.v1.NodeGroupRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
- 10, // 210: api.v1.NodeGroupRecommendationPolicy.detection_triggers:type_name -> api.v1.NodeGroupDetectionTrigger
- 12, // 211: api.v1.NodeGroupRecommendationPolicy.recommendation_mode:type_name -> api.v1.RecommendationMode
- 11, // 212: api.v1.NodeGroupRecommendationPolicy.actions:type_name -> api.v1.NodeGroupActionsAllowed
- 8, // 213: api.v1.NodeGroupRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
- 14, // 214: api.v1.HorizontalScalingOptimizationTarget.primary_metric:type_name -> api.v1.HPAMetricType
- 8, // 215: api.v1.WorkloadRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
- 9, // 216: api.v1.WorkloadRecommendationPolicy.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
- 12, // 217: api.v1.WorkloadRecommendationPolicy.recommendation_mode:type_name -> api.v1.RecommendationMode
- 160, // 218: api.v1.WorkloadRecommendationPolicy.cpu_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
- 160, // 219: api.v1.WorkloadRecommendationPolicy.memory_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
- 160, // 220: api.v1.WorkloadRecommendationPolicy.gpu_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
- 160, // 221: api.v1.WorkloadRecommendationPolicy.gpu_vram_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
- 161, // 222: api.v1.WorkloadRecommendationPolicy.horizontal_scaling:type_name -> api.v1.HorizontalScalingOptimizationTarget
- 8, // 223: api.v1.WorkloadRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
- 124, // 224: api.v1.WorkloadRecommendationPolicy.emergency_response:type_name -> api.v1.EmergencyResponseConfig
- 419, // 225: api.v1.WorkloadRecommendationPolicy.deleted_at:type_name -> google.protobuf.Timestamp
- 12, // 226: api.v1.GetPolicyRecommendedDefaultsRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
- 162, // 227: api.v1.GetPolicyRecommendedDefaultsResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 166, // 228: api.v1.BalanceRegisterRequest.features:type_name -> api.v1.BalanceFeatures
- 13, // 229: api.v1.BalanceApplyRecommendationResponse.type:type_name -> api.v1.RecommendationType
- 168, // 230: api.v1.BalanceApplyRecommendationResponse.live_migration_result:type_name -> api.v1.LiveMigrationResult
- 419, // 231: api.v1.NodeGroupRecommendation.timestamp:type_name -> google.protobuf.Timestamp
- 159, // 232: api.v1.NodeGroupRecommendation.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
- 430, // 233: api.v1.CostImpact.current_cost_per_month:type_name -> google.type.Money
- 430, // 234: api.v1.CostImpact.recommended_cost_per_month:type_name -> google.type.Money
- 430, // 235: api.v1.CostImpact.current_cpu_cost_per_month:type_name -> google.type.Money
- 430, // 236: api.v1.CostImpact.current_memory_cost_per_month:type_name -> google.type.Money
- 430, // 237: api.v1.CostImpact.recommended_cpu_cost_per_month:type_name -> google.type.Money
- 430, // 238: api.v1.CostImpact.recommended_memory_cost_per_month:type_name -> google.type.Money
- 430, // 239: api.v1.CostImpact.current_gpu_cost_per_month:type_name -> google.type.Money
- 430, // 240: api.v1.CostImpact.recommended_gpu_cost_per_month:type_name -> google.type.Money
- 2, // 241: api.v1.CostImpact.cost_period:type_name -> api.v1.CostPeriod
- 422, // 242: api.v1.WorkloadRecommendation.kind:type_name -> api.v1.K8sObjectKind
- 154, // 243: api.v1.WorkloadRecommendation.container_recommendations:type_name -> api.v1.ContainerRecommendation
- 419, // 244: api.v1.WorkloadRecommendation.timestamp:type_name -> google.protobuf.Timestamp
- 155, // 245: api.v1.WorkloadRecommendation.keda_scaled_object_recommendation:type_name -> api.v1.KedaScaledObjectRecommendation
- 424, // 246: api.v1.WorkloadRecommendation.label_selector:type_name -> api.v1.LabelSelector
- 3, // 247: api.v1.WorkloadRecommendation.del_prop:type_name -> api.v1.LiveMigDeletionPropagation
- 157, // 248: api.v1.WorkloadRecommendation.current_tolerations:type_name -> api.v1.Toleration
- 157, // 249: api.v1.WorkloadRecommendation.recommended_tolerations:type_name -> api.v1.Toleration
- 4, // 250: api.v1.WorkloadRecommendation.status:type_name -> api.v1.RecommendationStatus
- 162, // 251: api.v1.WorkloadRecommendation.policy:type_name -> api.v1.WorkloadRecommendationPolicy
- 76, // 252: api.v1.WorkloadRecommendation.policy_target:type_name -> api.v1.WorkloadPolicyTarget
- 1, // 253: api.v1.WorkloadRecommendation.replica_count_action:type_name -> api.v1.ActionToTake
- 168, // 254: api.v1.WorkloadRecommendation.live_migration_result:type_name -> api.v1.LiveMigrationResult
- 171, // 255: api.v1.WorkloadRecommendation.cost_impact:type_name -> api.v1.CostImpact
- 159, // 256: api.v1.GetAttachedNodeGroupPoliciesResponse.policies:type_name -> api.v1.NodeGroupRecommendationPolicy
- 422, // 257: api.v1.GetAttachedWorkloadPoliciesRequest.kind:type_name -> api.v1.K8sObjectKind
- 177, // 258: api.v1.GetAttachedWorkloadPoliciesResponse.relevant_policies:type_name -> api.v1.WorkloadRecommendationPolicyGroup
- 390, // 259: api.v1.GetAttachedWorkloadPoliciesResponse.policy_id_to_matched_targets:type_name -> api.v1.GetAttachedWorkloadPoliciesResponse.PolicyIdToMatchedTargetsEntry
- 162, // 260: api.v1.WorkloadRecommendationPolicyGroup.policies:type_name -> api.v1.WorkloadRecommendationPolicy
- 76, // 261: api.v1.WorkloadPolicyTargetGroup.targets:type_name -> api.v1.WorkloadPolicyTarget
- 32, // 262: api.v1.WorkloadIdentifiers.workloads:type_name -> api.v1.WorkloadIdentifier
- 32, // 263: api.v1.WorkloadPolicies.workload:type_name -> api.v1.WorkloadIdentifier
- 162, // 264: api.v1.WorkloadPolicies.policies:type_name -> api.v1.WorkloadRecommendationPolicy
- 391, // 265: api.v1.ListAttachedWorkloadPoliciesResponse.policy_map:type_name -> api.v1.ListAttachedWorkloadPoliciesResponse.PolicyMapEntry
- 392, // 266: api.v1.ListAttachedWorkloadPoliciesResponse.workload_map:type_name -> api.v1.ListAttachedWorkloadPoliciesResponse.WorkloadMapEntry
- 393, // 267: api.v1.ListAttachedNodeGroupPoliciesResponse.policy_map:type_name -> api.v1.ListAttachedNodeGroupPoliciesResponse.PolicyMapEntry
- 394, // 268: api.v1.ListAttachedNodeGroupPoliciesResponse.node_group_map:type_name -> api.v1.ListAttachedNodeGroupPoliciesResponse.NodeGroupMapEntry
- 422, // 269: api.v1.RecommendationAppliedRequest.kind:type_name -> api.v1.K8sObjectKind
- 422, // 270: api.v1.ApplyRecommendationRequest.kind:type_name -> api.v1.K8sObjectKind
- 172, // 271: api.v1.ApplyRecommendationRequest.workload_recommendation:type_name -> api.v1.WorkloadRecommendation
- 419, // 272: api.v1.RetrieveSavingsForWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
- 419, // 273: api.v1.RetrieveSavingsForWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
- 431, // 274: api.v1.RetrieveSavingsForWorkloadResponse.savings:type_name -> api.v1.SavingsTimeSeries
- 432, // 275: api.v1.RetrieveSavingsForWorkloadResponse.get_workload_resp:type_name -> api.v1.GetWorkloadResponse
- 226, // 276: api.v1.CreateNodePoliciesRequest.policies:type_name -> api.v1.NodePolicy
- 226, // 277: api.v1.CreateNodePoliciesResponse.policies:type_name -> api.v1.NodePolicy
- 226, // 278: api.v1.SuggestedNodePolicyResponse.policy:type_name -> api.v1.NodePolicy
- 226, // 279: api.v1.GenerateNodePoliciesFromKarpenterResponse.policies:type_name -> api.v1.NodePolicy
- 247, // 280: api.v1.GenerateNodePoliciesFromKarpenterResponse.targets:type_name -> api.v1.NodePolicyTarget
- 226, // 281: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.policies:type_name -> api.v1.NodePolicy
- 247, // 282: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.targets:type_name -> api.v1.NodePolicyTarget
- 214, // 283: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.warnings:type_name -> api.v1.WorkloadCompatibilityWarning
- 202, // 284: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.eligibility:type_name -> api.v1.NodeGroupMigrationEligibility
- 419, // 285: api.v1.GetMigrationStateResponse.created_at:type_name -> google.protobuf.Timestamp
- 419, // 286: api.v1.GetMigrationStateResponse.updated_at:type_name -> google.protobuf.Timestamp
- 419, // 287: api.v1.NodePoolValidationReport.reported_at:type_name -> google.protobuf.Timestamp
- 212, // 288: api.v1.GetNodePoolValidationsResponse.validations:type_name -> api.v1.NodePoolValidationReport
- 226, // 289: api.v1.ListNodePoliciesResponse.policies:type_name -> api.v1.NodePolicy
- 226, // 290: api.v1.UpdateNodePolicyRequest.policy:type_name -> api.v1.NodePolicy
- 226, // 291: api.v1.UpdateNodePolicyResponse.policy:type_name -> api.v1.NodePolicy
- 5, // 292: api.v1.NodeGroupCheckpointStatus.state:type_name -> api.v1.NodeGroupCheckpointState
- 395, // 293: api.v1.GetNodeGroupsCheckpointStatusResponse.by_node_group:type_name -> api.v1.GetNodeGroupsCheckpointStatusResponse.ByNodeGroupEntry
- 424, // 294: api.v1.NodePolicy.instance_categories:type_name -> api.v1.LabelSelector
- 424, // 295: api.v1.NodePolicy.instance_families:type_name -> api.v1.LabelSelector
- 424, // 296: api.v1.NodePolicy.instance_cpus:type_name -> api.v1.LabelSelector
- 424, // 297: api.v1.NodePolicy.instance_hypervisors:type_name -> api.v1.LabelSelector
- 424, // 298: api.v1.NodePolicy.instance_generations:type_name -> api.v1.LabelSelector
- 424, // 299: api.v1.NodePolicy.instance_sizes:type_name -> api.v1.LabelSelector
- 424, // 300: api.v1.NodePolicy.instance_types:type_name -> api.v1.LabelSelector
- 424, // 301: api.v1.NodePolicy.instance_local_nvme:type_name -> api.v1.LabelSelector
- 424, // 302: api.v1.NodePolicy.zones:type_name -> api.v1.LabelSelector
- 424, // 303: api.v1.NodePolicy.architectures:type_name -> api.v1.LabelSelector
- 424, // 304: api.v1.NodePolicy.capacity_types:type_name -> api.v1.LabelSelector
- 424, // 305: api.v1.NodePolicy.operating_systems:type_name -> api.v1.LabelSelector
- 396, // 306: api.v1.NodePolicy.labels:type_name -> api.v1.NodePolicy.LabelsEntry
- 251, // 307: api.v1.NodePolicy.taints:type_name -> api.v1.Taint
- 253, // 308: api.v1.NodePolicy.disruption:type_name -> api.v1.DisruptionPolicy
- 254, // 309: api.v1.NodePolicy.limits:type_name -> api.v1.ResourceLimits
- 251, // 310: api.v1.NodePolicy.startup_taints:type_name -> api.v1.Taint
- 255, // 311: api.v1.NodePolicy.aws:type_name -> api.v1.AWSNodeClassSpec
- 279, // 312: api.v1.NodePolicy.gcp:type_name -> api.v1.GCPNodeClassSpec
- 282, // 313: api.v1.NodePolicy.azure:type_name -> api.v1.AzureNodeClassSpec
- 290, // 314: api.v1.NodePolicy.oci:type_name -> api.v1.OCINodeClassSpec
- 433, // 315: api.v1.NodePolicy.cloud_provider:type_name -> api.v1.CloudProvider
- 250, // 316: api.v1.NodePolicy.zonal_shift:type_name -> api.v1.ZonalShiftConfig
- 292, // 317: api.v1.NodePolicy.raw:type_name -> api.v1.RawKarpenterSpec
- 419, // 318: api.v1.NodePolicy.created_at:type_name -> google.protobuf.Timestamp
- 419, // 319: api.v1.NodePolicy.updated_at:type_name -> google.protobuf.Timestamp
- 419, // 320: api.v1.NodePolicy.deleted_at:type_name -> google.protobuf.Timestamp
- 226, // 321: api.v1.PreviewNodeRecommendationConfigRequest.policies:type_name -> api.v1.NodePolicy
- 229, // 322: api.v1.PreviewNodeRecommendationConfigResponse.nrc:type_name -> api.v1.NodeRecommendationConfig
- 4, // 323: api.v1.NodeRecommendationConfig.status:type_name -> api.v1.RecommendationStatus
- 419, // 324: api.v1.NodeRecommendationConfig.created_at:type_name -> google.protobuf.Timestamp
- 419, // 325: api.v1.NodeRecommendationConfig.updated_at:type_name -> google.protobuf.Timestamp
- 419, // 326: api.v1.NodeRecommendationConfig.deleted_at:type_name -> google.protobuf.Timestamp
- 397, // 327: api.v1.SuggestedKarpenterConfigResponse.ng_to_original:type_name -> api.v1.SuggestedKarpenterConfigResponse.NgToOriginalEntry
- 398, // 328: api.v1.SuggestedKarpenterConfigResponse.ng_to_suggested:type_name -> api.v1.SuggestedKarpenterConfigResponse.NgToSuggestedEntry
- 234, // 329: api.v1.GetAvailableKindsByTargetingFiltersRequest.target_filters:type_name -> api.v1.TargetFilters
- 6, // 330: api.v1.SearchResourcesByTargetingFiltersRequest.target_filter_type:type_name -> api.v1.TargetFilterType
- 234, // 331: api.v1.SearchResourcesByTargetingFiltersRequest.target_filters:type_name -> api.v1.TargetFilters
- 422, // 332: api.v1.TargetFilters.kind_filter:type_name -> api.v1.K8sObjectKind
- 425, // 333: api.v1.TargetFilters.name_pattern:type_name -> api.v1.RegexPattern
- 425, // 334: api.v1.TargetFilters.namespace_pattern:type_name -> api.v1.RegexPattern
- 422, // 335: api.v1.GetAvailableKindsByTargetingFiltersResponse.kinds:type_name -> api.v1.K8sObjectKind
- 237, // 336: api.v1.SearchResourcesByTargetingFiltersResponse.namespaces:type_name -> api.v1.NamespaceSearchResult
- 238, // 337: api.v1.SearchResourcesByTargetingFiltersResponse.workloads:type_name -> api.v1.WorkloadSearchResult
- 239, // 338: api.v1.SearchResourcesByTargetingFiltersResponse.node_groups:type_name -> api.v1.NodeGroupSearchResult
- 240, // 339: api.v1.SearchResourcesByTargetingFiltersResponse.labels:type_name -> api.v1.LabelSearchResult
- 247, // 340: api.v1.CreateNodePolicyTargetsRequest.targets:type_name -> api.v1.NodePolicyTarget
- 247, // 341: api.v1.CreateNodePolicyTargetsResponse.targets:type_name -> api.v1.NodePolicyTarget
- 247, // 342: api.v1.ListNodePolicyTargetsResponse.targets:type_name -> api.v1.NodePolicyTarget
- 247, // 343: api.v1.UpdateNodePolicyTargetRequest.target:type_name -> api.v1.NodePolicyTarget
- 247, // 344: api.v1.UpdateNodePolicyTargetResponse.target:type_name -> api.v1.NodePolicyTarget
- 419, // 345: api.v1.NodePolicyTarget.created_at:type_name -> google.protobuf.Timestamp
- 419, // 346: api.v1.NodePolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
- 419, // 347: api.v1.NodePolicyTarget.deleted_at:type_name -> google.protobuf.Timestamp
- 249, // 348: api.v1.NodePolicyTarget.status:type_name -> api.v1.NodePolicyTargetStatus
- 419, // 349: api.v1.NodePolicyCondition.last_transition_time:type_name -> google.protobuf.Timestamp
- 248, // 350: api.v1.NodePolicyTargetStatus.conditions:type_name -> api.v1.NodePolicyCondition
- 252, // 351: api.v1.DisruptionPolicy.budgets:type_name -> api.v1.DisruptionBudget
- 271, // 352: api.v1.AWSNodeClassSpec.subnet_selector_terms:type_name -> api.v1.SubnetSelectorTerm
- 272, // 353: api.v1.AWSNodeClassSpec.security_group_selector_terms:type_name -> api.v1.SecurityGroupSelectorTerm
- 273, // 354: api.v1.AWSNodeClassSpec.capacity_reservation_selector_terms:type_name -> api.v1.CapacityReservationSelectorTerm
- 274, // 355: api.v1.AWSNodeClassSpec.ami_selector_terms:type_name -> api.v1.AMISelectorTerm
- 399, // 356: api.v1.AWSNodeClassSpec.tags:type_name -> api.v1.AWSNodeClassSpec.TagsEntry
- 275, // 357: api.v1.AWSNodeClassSpec.kubelet:type_name -> api.v1.KubeletConfiguration
- 276, // 358: api.v1.AWSNodeClassSpec.block_device_mappings:type_name -> api.v1.BlockDeviceMapping
- 7, // 359: api.v1.AWSNodeClassSpec.instance_store_policy:type_name -> api.v1.InstanceStorePolicy
- 278, // 360: api.v1.AWSNodeClassSpec.metadata_options:type_name -> api.v1.MetadataOptions
- 260, // 361: api.v1.GetInstanceFamiliesResponse.instance_families:type_name -> api.v1.InstanceFamily
- 261, // 362: api.v1.GetInstanceSizesResponse.instance_sizes:type_name -> api.v1.InstanceSize
- 262, // 363: api.v1.GetInstanceCategoriesResponse.instance_categories:type_name -> api.v1.InstanceCategory
- 263, // 364: api.v1.GetInstanceCPUsResponse.instance_cpus:type_name -> api.v1.InstanceCPU
- 264, // 365: api.v1.GetInstanceTypeNamesResponse.instance_types:type_name -> api.v1.InstanceTypeName
- 400, // 366: api.v1.SubnetSelectorTerm.tags:type_name -> api.v1.SubnetSelectorTerm.TagsEntry
- 401, // 367: api.v1.SecurityGroupSelectorTerm.tags:type_name -> api.v1.SecurityGroupSelectorTerm.TagsEntry
- 402, // 368: api.v1.CapacityReservationSelectorTerm.tags:type_name -> api.v1.CapacityReservationSelectorTerm.TagsEntry
- 403, // 369: api.v1.AMISelectorTerm.tags:type_name -> api.v1.AMISelectorTerm.TagsEntry
- 404, // 370: api.v1.KubeletConfiguration.system_reserved:type_name -> api.v1.KubeletConfiguration.SystemReservedEntry
- 405, // 371: api.v1.KubeletConfiguration.kube_reserved:type_name -> api.v1.KubeletConfiguration.KubeReservedEntry
- 406, // 372: api.v1.KubeletConfiguration.eviction_hard:type_name -> api.v1.KubeletConfiguration.EvictionHardEntry
- 407, // 373: api.v1.KubeletConfiguration.eviction_soft:type_name -> api.v1.KubeletConfiguration.EvictionSoftEntry
- 408, // 374: api.v1.KubeletConfiguration.eviction_soft_grace_period:type_name -> api.v1.KubeletConfiguration.EvictionSoftGracePeriodEntry
- 277, // 375: api.v1.BlockDeviceMapping.ebs:type_name -> api.v1.BlockDevice
- 280, // 376: api.v1.GCPNodeClassSpec.image_selector_terms:type_name -> api.v1.GCPImageSelectorTerm
- 275, // 377: api.v1.GCPNodeClassSpec.kubelet_configuration:type_name -> api.v1.KubeletConfiguration
- 409, // 378: api.v1.GCPNodeClassSpec.labels:type_name -> api.v1.GCPNodeClassSpec.LabelsEntry
- 410, // 379: api.v1.GCPNodeClassSpec.metadata:type_name -> api.v1.GCPNodeClassSpec.MetadataEntry
- 281, // 380: api.v1.GCPNodeClassSpec.disks:type_name -> api.v1.GCPDisk
- 411, // 381: api.v1.AzureNodeClassSpec.tags:type_name -> api.v1.AzureNodeClassSpec.TagsEntry
- 283, // 382: api.v1.AzureNodeClassSpec.kubelet:type_name -> api.v1.AzureKubeletConfiguration
- 284, // 383: api.v1.OCINodeClassSpec.image_selector:type_name -> api.v1.OCIImageSelectorTerm
- 285, // 384: api.v1.OCINodeClassSpec.subnet_selector:type_name -> api.v1.OCISubnetSelectorTerm
- 286, // 385: api.v1.OCINodeClassSpec.security_group_selector:type_name -> api.v1.OCISecurityGroupSelectorTerm
- 412, // 386: api.v1.OCINodeClassSpec.meta_data:type_name -> api.v1.OCINodeClassSpec.MetaDataEntry
- 413, // 387: api.v1.OCINodeClassSpec.tags:type_name -> api.v1.OCINodeClassSpec.TagsEntry
- 414, // 388: api.v1.OCINodeClassSpec.free_form_tags:type_name -> api.v1.OCINodeClassSpec.FreeFormTagsEntry
- 287, // 389: api.v1.OCINodeClassSpec.boot_config:type_name -> api.v1.OCIBootConfig
- 288, // 390: api.v1.OCINodeClassSpec.launch_options:type_name -> api.v1.OCILaunchOptions
- 289, // 391: api.v1.OCINodeClassSpec.block_devices:type_name -> api.v1.OCIVolumeAttributes
- 294, // 392: api.v1.NodeRecommendation.aws:type_name -> api.v1.AWSKarpenterSpec
- 295, // 393: api.v1.NodeRecommendation.aks:type_name -> api.v1.AKSKarpenterSpec
- 299, // 394: api.v1.NodeRecommendation.gcp:type_name -> api.v1.GCPKarpenterSpec
- 301, // 395: api.v1.NodeRecommendation.oci:type_name -> api.v1.OCIKarpenterSpec
- 296, // 396: api.v1.AWSKarpenterSpec.np:type_name -> api.v1.NodePool
- 297, // 397: api.v1.AWSKarpenterSpec.ec2nc:type_name -> api.v1.EC2NodeClass
- 296, // 398: api.v1.AKSKarpenterSpec.np:type_name -> api.v1.NodePool
- 298, // 399: api.v1.AKSKarpenterSpec.aksnc:type_name -> api.v1.AKSNodeClass
- 296, // 400: api.v1.GCPKarpenterSpec.np:type_name -> api.v1.NodePool
- 300, // 401: api.v1.GCPKarpenterSpec.node_classes:type_name -> api.v1.GCENodeClass
- 296, // 402: api.v1.OCIKarpenterSpec.np:type_name -> api.v1.NodePool
- 302, // 403: api.v1.OCIKarpenterSpec.node_classes:type_name -> api.v1.OCINodeClass
- 8, // 404: api.v1.StorageRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
- 8, // 405: api.v1.StorageRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
- 419, // 406: api.v1.StorageRecommendationPolicy.created_at:type_name -> google.protobuf.Timestamp
- 419, // 407: api.v1.StorageRecommendationPolicy.updated_at:type_name -> google.protobuf.Timestamp
- 8, // 408: api.v1.CreateStorageRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 303, // 409: api.v1.CreateStorageRecommendationPolicyResponse.policy:type_name -> api.v1.StorageRecommendationPolicy
- 303, // 410: api.v1.GetStorageRecommendationPolicyResponse.policy:type_name -> api.v1.StorageRecommendationPolicy
- 303, // 411: api.v1.ListStorageRecommendationPoliciesResponse.policies:type_name -> api.v1.StorageRecommendationPolicy
- 8, // 412: api.v1.UpdateStorageRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 303, // 413: api.v1.UpdateStorageRecommendationPolicyResponse.policy:type_name -> api.v1.StorageRecommendationPolicy
- 424, // 414: api.v1.StoragePolicyTarget.namespace_selector:type_name -> api.v1.LabelSelector
- 419, // 415: api.v1.StoragePolicyTarget.created_at:type_name -> google.protobuf.Timestamp
- 419, // 416: api.v1.StoragePolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
- 424, // 417: api.v1.CreateStoragePolicyTargetRequest.namespace_selector:type_name -> api.v1.LabelSelector
- 314, // 418: api.v1.CreateStoragePolicyTargetResponse.target:type_name -> api.v1.StoragePolicyTarget
- 314, // 419: api.v1.ListStoragePolicyTargetsResponse.targets:type_name -> api.v1.StoragePolicyTarget
- 314, // 420: api.v1.UpdateStoragePolicyTargetRequest.target:type_name -> api.v1.StoragePolicyTarget
- 314, // 421: api.v1.UpdateStoragePolicyTargetResponse.target:type_name -> api.v1.StoragePolicyTarget
- 4, // 422: api.v1.PvcStorageRecommendation.status:type_name -> api.v1.RecommendationStatus
- 419, // 423: api.v1.PvcStorageRecommendation.timestamp:type_name -> google.protobuf.Timestamp
- 419, // 424: api.v1.PvcStorageRecommendation.applied_at:type_name -> google.protobuf.Timestamp
- 419, // 425: api.v1.PvcStorageRecommendation.created_at:type_name -> google.protobuf.Timestamp
- 419, // 426: api.v1.PvcStorageRecommendation.updated_at:type_name -> google.protobuf.Timestamp
- 15, // 427: api.v1.PvcStorageRecommendation.operation_type:type_name -> api.v1.PvcOperationType
- 323, // 428: api.v1.GetPvcStorageRecommendationResponse.recommendation:type_name -> api.v1.PvcStorageRecommendation
- 421, // 429: api.v1.ListPvcStorageRecommendationsRequest.pagination:type_name -> api.v1.Pagination
- 323, // 430: api.v1.ListPvcStorageRecommendationsResponse.recommendations:type_name -> api.v1.PvcStorageRecommendation
- 421, // 431: api.v1.ListPvcStorageRecommendationsResponse.pagination:type_name -> api.v1.Pagination
- 323, // 432: api.v1.GeneratePvcStorageRecommendationResponse.recommendation:type_name -> api.v1.PvcStorageRecommendation
- 323, // 433: api.v1.PreviewPvcStorageRecommendationResponse.recommendation:type_name -> api.v1.PvcStorageRecommendation
- 419, // 434: api.v1.WorkloadRuleOOMEvent.timestamp:type_name -> google.protobuf.Timestamp
- 419, // 435: api.v1.WorkloadRuleOOMEvent.created_at:type_name -> google.protobuf.Timestamp
- 332, // 436: api.v1.ListWorkloadRuleOOMEventsResponse.events:type_name -> api.v1.WorkloadRuleOOMEvent
- 332, // 437: api.v1.ListWorkloadOOMEventsResponse.events:type_name -> api.v1.WorkloadRuleOOMEvent
- 419, // 438: api.v1.WorkloadRuleCPUThrottleEvent.timestamp:type_name -> google.protobuf.Timestamp
- 419, // 439: api.v1.WorkloadRuleCPUThrottleEvent.created_at:type_name -> google.protobuf.Timestamp
- 337, // 440: api.v1.ListWorkloadRuleCPUThrottleEventsResponse.events:type_name -> api.v1.WorkloadRuleCPUThrottleEvent
- 337, // 441: api.v1.ListWorkloadCPUThrottleEventsResponse.events:type_name -> api.v1.WorkloadRuleCPUThrottleEvent
- 419, // 442: api.v1.WorkloadOptimizationPolicyProto.created_at:type_name -> google.protobuf.Timestamp
- 419, // 443: api.v1.WorkloadOptimizationPolicyProto.updated_at:type_name -> google.protobuf.Timestamp
- 415, // 444: api.v1.WorkloadOptimizationPolicyProto.cluster_names:type_name -> api.v1.WorkloadOptimizationPolicyProto.ClusterNamesEntry
- 8, // 445: api.v1.WorkloadOptimizationPolicyProto.action_triggers:type_name -> api.v1.ActionTrigger
- 9, // 446: api.v1.WorkloadOptimizationPolicyProto.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
- 8, // 447: api.v1.CreateWorkloadOptimizationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 9, // 448: api.v1.CreateWorkloadOptimizationPolicyRequest.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
- 342, // 449: api.v1.CreateWorkloadOptimizationPolicyResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
- 342, // 450: api.v1.ListWorkloadOptimizationPoliciesResponse.policies:type_name -> api.v1.WorkloadOptimizationPolicyProto
- 342, // 451: api.v1.GetWorkloadOptimizationPolicyResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
- 8, // 452: api.v1.UpdateWorkloadOptimizationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
- 9, // 453: api.v1.UpdateWorkloadOptimizationPolicyRequest.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
- 342, // 454: api.v1.UpdateWorkloadOptimizationPolicyResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
- 117, // 455: api.v1.GetWorkloadRulesByPolicyResponse.managed_rules:type_name -> api.v1.WorkloadRule
- 117, // 456: api.v1.GetWorkloadRulesByPolicyResponse.excluded_rules:type_name -> api.v1.WorkloadRule
- 416, // 457: api.v1.GetWorkloadRulesByPolicyResponse.cluster_names:type_name -> api.v1.GetWorkloadRulesByPolicyResponse.ClusterNamesEntry
- 117, // 458: api.v1.ListWorkloadRulesResponse.rules:type_name -> api.v1.WorkloadRule
- 417, // 459: api.v1.ListWorkloadRulesResponse.cluster_names:type_name -> api.v1.ListWorkloadRulesResponse.ClusterNamesEntry
- 418, // 460: api.v1.ListWorkloadRulesResponse.policy_names:type_name -> api.v1.ListWorkloadRulesResponse.PolicyNamesEntry
- 117, // 461: api.v1.GetWorkloadRuleByIDResponse.rule:type_name -> api.v1.WorkloadRule
- 117, // 462: api.v1.GetWorkloadRuleByWorkloadResponse.rule:type_name -> api.v1.WorkloadRule
- 118, // 463: api.v1.ManualRuleFields.cpu_rule:type_name -> api.v1.ResourceRuleConfig
- 118, // 464: api.v1.ManualRuleFields.memory_rule:type_name -> api.v1.ResourceRuleConfig
- 118, // 465: api.v1.ManualRuleFields.gpu_rule:type_name -> api.v1.ResourceRuleConfig
- 123, // 466: api.v1.ManualRuleFields.hpa_rule:type_name -> api.v1.HPARuleConfig
- 124, // 467: api.v1.ManualRuleFields.emergency_response:type_name -> api.v1.EmergencyResponseConfig
- 8, // 468: api.v1.ManualRuleFields.action_triggers:type_name -> api.v1.ActionTrigger
- 9, // 469: api.v1.ManualRuleFields.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
- 122, // 470: api.v1.ManualRuleFields.containers:type_name -> api.v1.ContainerResourceRuleConfig
- 365, // 471: api.v1.UpsertManualWorkloadRuleRequest.fields:type_name -> api.v1.ManualRuleFields
- 16, // 472: api.v1.UpsertManualWorkloadRuleRequest.source:type_name -> api.v1.WorkloadRuleSource
- 117, // 473: api.v1.UpsertManualWorkloadRuleResponse.rule:type_name -> api.v1.WorkloadRule
- 365, // 474: api.v1.PreviewWorkloadRuleRequest.fields:type_name -> api.v1.ManualRuleFields
- 117, // 475: api.v1.PreviewWorkloadRuleResponse.materialized_rule:type_name -> api.v1.WorkloadRule
- 117, // 476: api.v1.PreviewWorkloadRuleResponse.engine_projection:type_name -> api.v1.WorkloadRule
- 434, // 477: api.v1.PreviewWorkloadRuleResponse.profile:type_name -> api.v1.WorkloadProfileResult
- 372, // 478: api.v1.BatchAutoOptimizeWorkloadsRequest.workloads:type_name -> api.v1.BatchAutoOptimizeWorkload
- 117, // 479: api.v1.BatchAutoOptimizeWorkloadResult.rule:type_name -> api.v1.WorkloadRule
- 374, // 480: api.v1.BatchAutoOptimizeWorkloadsResponse.results:type_name -> api.v1.BatchAutoOptimizeWorkloadResult
- 435, // 481: api.v1.WorkloadProfileManifest.window:type_name -> api.v1.ProfileWindow
- 436, // 482: api.v1.WorkloadProfileManifest.keys:type_name -> api.v1.ProfileKey
- 419, // 483: api.v1.WorkloadProfileManifest.issued_at:type_name -> google.protobuf.Timestamp
- 435, // 484: api.v1.BatchWorkloadProfiles.window:type_name -> api.v1.ProfileWindow
- 437, // 485: api.v1.BatchWorkloadProfiles.profiles:type_name -> api.v1.WorkloadProfileSnapshot
- 419, // 486: api.v1.NodeConfigApplyEvent.applied_at:type_name -> google.protobuf.Timestamp
- 229, // 487: api.v1.GetNodeRecommendationStatusResponse.current_config:type_name -> api.v1.NodeRecommendationConfig
- 378, // 488: api.v1.GetNodeRecommendationStatusResponse.history:type_name -> api.v1.NodeConfigApplyEvent
- 385, // 489: api.v1.GetCheckpointApplyStatusResponse.failures:type_name -> api.v1.NodeApplyFailure
- 48, // 490: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.WorkloadTargetMapEntry.value:type_name -> api.v1.TargetIdList
- 95, // 491: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.WorkloadPercentilesEntry.value:type_name -> api.v1.WorkloadPercentileSummary
- 146, // 492: api.v1.AgentHealth.NodeNameToAgentEntry.value:type_name -> api.v1.AgentHealthMeta
- 178, // 493: api.v1.GetAttachedWorkloadPoliciesResponse.PolicyIdToMatchedTargetsEntry.value:type_name -> api.v1.WorkloadPolicyTargetGroup
- 162, // 494: api.v1.ListAttachedWorkloadPoliciesResponse.PolicyMapEntry.value:type_name -> api.v1.WorkloadRecommendationPolicy
- 426, // 495: api.v1.ListAttachedWorkloadPoliciesResponse.WorkloadMapEntry.value:type_name -> api.v1.WorkloadItem
- 159, // 496: api.v1.ListAttachedNodeGroupPoliciesResponse.PolicyMapEntry.value:type_name -> api.v1.NodeGroupRecommendationPolicy
- 185, // 497: api.v1.ListAttachedNodeGroupPoliciesResponse.NodeGroupMapEntry.value:type_name -> api.v1.NodeGroupItem
- 219, // 498: api.v1.GetNodeGroupsCheckpointStatusResponse.ByNodeGroupEntry.value:type_name -> api.v1.NodeGroupCheckpointStatus
- 229, // 499: api.v1.SuggestedKarpenterConfigResponse.NgToOriginalEntry.value:type_name -> api.v1.NodeRecommendationConfig
- 229, // 500: api.v1.SuggestedKarpenterConfigResponse.NgToSuggestedEntry.value:type_name -> api.v1.NodeRecommendationConfig
- 21, // 501: api.v1.K8sRecommendationService.GetNodeGroupStats:input_type -> api.v1.GetNodeGroupStatsRequest
- 25, // 502: api.v1.K8sRecommendationService.GetLatestNodeGroupRecommendation:input_type -> api.v1.GetLatestNodeGroupRecommendationRequest
- 27, // 503: api.v1.K8sRecommendationService.GetLatestWorkloadRecommendation:input_type -> api.v1.GetLatestWorkloadRecommendationRequest
- 29, // 504: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendation:input_type -> api.v1.GetPreviewWorkloadRecommendationRequest
- 31, // 505: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendations:input_type -> api.v1.GetPreviewWorkloadRecommendationsRequest
- 19, // 506: api.v1.K8sRecommendationService.GetRecommendationsForWorkload:input_type -> api.v1.GetRecommendationsForWorkloadRequest
- 17, // 507: api.v1.K8sRecommendationService.GetRecommendations:input_type -> api.v1.GetRecommendationsRequest
- 49, // 508: api.v1.K8sRecommendationService.CreateNodeGroupRecommendationPolicy:input_type -> api.v1.CreateNodeGroupRecommendationPolicyRequest
- 51, // 509: api.v1.K8sRecommendationService.GetNodeGroupRecommendationPolicy:input_type -> api.v1.GetNodeGroupRecommendationPolicyRequest
- 53, // 510: api.v1.K8sRecommendationService.ListNodeGroupRecommendationPolicies:input_type -> api.v1.ListNodeGroupRecommendationPoliciesRequest
- 55, // 511: api.v1.K8sRecommendationService.UpdateNodeGroupRecommendationPolicy:input_type -> api.v1.UpdateNodeGroupRecommendationPolicyRequest
- 57, // 512: api.v1.K8sRecommendationService.DeleteNodeGroupRecommendationPolicy:input_type -> api.v1.DeleteNodeGroupRecommendationPolicyRequest
- 59, // 513: api.v1.K8sRecommendationService.AttachNodeGroupRecommendationPolicy:input_type -> api.v1.AttachNodeGroupRecommendationPolicyRequest
- 61, // 514: api.v1.K8sRecommendationService.CreateWorkloadRecommendationPolicy:input_type -> api.v1.CreateWorkloadRecommendationPolicyRequest
- 63, // 515: api.v1.K8sRecommendationService.GetWorkloadRecommendationPolicy:input_type -> api.v1.GetWorkloadRecommendationPolicyRequest
- 163, // 516: api.v1.K8sRecommendationService.GetPolicyRecommendedDefaults:input_type -> api.v1.GetPolicyRecommendedDefaultsRequest
- 65, // 517: api.v1.K8sRecommendationService.ListWorkloadRecommendationPolicies:input_type -> api.v1.ListWorkloadRecommendationPoliciesRequest
- 67, // 518: api.v1.K8sRecommendationService.UpdateWorkloadRecommendationPolicy:input_type -> api.v1.UpdateWorkloadRecommendationPolicyRequest
- 69, // 519: api.v1.K8sRecommendationService.DeleteWorkloadRecommendationPolicy:input_type -> api.v1.DeleteWorkloadRecommendationPolicyRequest
- 71, // 520: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicy:input_type -> api.v1.AttachWorkloadRecommendationPolicyRequest
- 73, // 521: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicies:input_type -> api.v1.AttachWorkloadRecommendationPoliciesRequest
- 77, // 522: api.v1.K8sRecommendationService.CreateWorkloadPolicyTarget:input_type -> api.v1.CreateWorkloadPolicyTargetRequest
- 79, // 523: api.v1.K8sRecommendationService.GetWorkloadPolicyTarget:input_type -> api.v1.GetWorkloadPolicyTargetRequest
- 81, // 524: api.v1.K8sRecommendationService.ListWorkloadPolicyTargets:input_type -> api.v1.ListWorkloadPolicyTargetsRequest
- 83, // 525: api.v1.K8sRecommendationService.UpdateWorkloadPolicyTarget:input_type -> api.v1.UpdateWorkloadPolicyTargetRequest
- 85, // 526: api.v1.K8sRecommendationService.DeleteWorkloadPolicyTarget:input_type -> api.v1.DeleteWorkloadPolicyTargetRequest
- 86, // 527: api.v1.K8sRecommendationService.ToggleWorkloadPolicyTargets:input_type -> api.v1.ToggleWorkloadPolicyTargetsRequest
- 91, // 528: api.v1.K8sRecommendationService.PreviewWorkloadPolicyTargetMatches:input_type -> api.v1.PreviewWorkloadPolicyTargetMatchesRequest
- 93, // 529: api.v1.K8sRecommendationService.GetPreviewWorkloadPolicyTargetRecommendations:input_type -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest
- 46, // 530: api.v1.K8sRecommendationService.GetWorkloadsWithAttachedPolicyTargets:input_type -> api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest
- 97, // 531: api.v1.K8sRecommendationService.CreateNodeGroupPolicyTarget:input_type -> api.v1.CreateNodeGroupPolicyTargetRequest
- 99, // 532: api.v1.K8sRecommendationService.GetNodeGroupPolicyTarget:input_type -> api.v1.GetNodeGroupPolicyTargetRequest
- 101, // 533: api.v1.K8sRecommendationService.ListNodeGroupPolicyTargets:input_type -> api.v1.ListNodeGroupPolicyTargetsRequest
- 103, // 534: api.v1.K8sRecommendationService.UpdateNodeGroupPolicyTarget:input_type -> api.v1.UpdateNodeGroupPolicyTargetRequest
- 105, // 535: api.v1.K8sRecommendationService.DeleteNodeGroupPolicyTarget:input_type -> api.v1.DeleteNodeGroupPolicyTargetRequest
- 106, // 536: api.v1.K8sRecommendationService.ToggleNodeGroupPolicyTargets:input_type -> api.v1.ToggleNodeGroupPolicyTargetsRequest
- 109, // 537: api.v1.K8sRecommendationService.PreviewNodeGroupPolicyTargetMatches:input_type -> api.v1.PreviewNodeGroupPolicyTargetMatchesRequest
- 111, // 538: api.v1.K8sRecommendationService.GetPreviewNodeGroupPolicyTargetRecommendations:input_type -> api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsRequest
- 113, // 539: api.v1.K8sRecommendationService.BalanceGetRecommendations:input_type -> api.v1.BalanceGetRecommendationsRequest
- 23, // 540: api.v1.K8sRecommendationService.GetOptimalInstanceTypeForNodeGroup:input_type -> api.v1.GetOptimalInstanceTypeForNodeGroupRequest
- 173, // 541: api.v1.K8sRecommendationService.GetAttachedNodeGroupPolicies:input_type -> api.v1.GetAttachedNodeGroupPoliciesRequest
- 175, // 542: api.v1.K8sRecommendationService.GetAttachedWorkloadPolicies:input_type -> api.v1.GetAttachedWorkloadPoliciesRequest
- 233, // 543: api.v1.K8sRecommendationService.SearchResourcesByTargetingFilters:input_type -> api.v1.SearchResourcesByTargetingFiltersRequest
- 232, // 544: api.v1.K8sRecommendationService.GetAvailableKindsByTargetingFilters:input_type -> api.v1.GetAvailableKindsByTargetingFiltersRequest
- 181, // 545: api.v1.K8sRecommendationService.ListAttachedWorkloadPolicies:input_type -> api.v1.ListAttachedWorkloadPoliciesRequest
- 183, // 546: api.v1.K8sRecommendationService.ListAttachedNodeGroupPolicies:input_type -> api.v1.ListAttachedNodeGroupPoliciesRequest
- 190, // 547: api.v1.K8sRecommendationService.RecommendationEvents:input_type -> api.v1.RecommendationEventsRequest
- 188, // 548: api.v1.K8sRecommendationService.ApplyRecommendation:input_type -> api.v1.ApplyRecommendationRequest
- 186, // 549: api.v1.K8sRecommendationService.RecommendationApplied:input_type -> api.v1.RecommendationAppliedRequest
- 192, // 550: api.v1.K8sRecommendationService.RetrieveSavingsForWorkload:input_type -> api.v1.RetrieveSavingsForWorkloadRequest
- 194, // 551: api.v1.K8sRecommendationService.CreateNodePolicies:input_type -> api.v1.CreateNodePoliciesRequest
- 215, // 552: api.v1.K8sRecommendationService.ListNodePolicies:input_type -> api.v1.ListNodePoliciesRequest
- 217, // 553: api.v1.K8sRecommendationService.UpdateNodePolicy:input_type -> api.v1.UpdateNodePolicyRequest
- 224, // 554: api.v1.K8sRecommendationService.DeleteNodePolicy:input_type -> api.v1.DeleteNodePolicyRequest
- 196, // 555: api.v1.K8sRecommendationService.SuggestedNodePolicy:input_type -> api.v1.SuggestedNodePolicyRequest
- 230, // 556: api.v1.K8sRecommendationService.SuggestedKarpenterConfig:input_type -> api.v1.SuggestedKarpenterConfigRequest
- 198, // 557: api.v1.K8sRecommendationService.GenerateNodePoliciesFromKarpenter:input_type -> api.v1.GenerateNodePoliciesFromKarpenterRequest
- 200, // 558: api.v1.K8sRecommendationService.GenerateNodePoliciesFromNodeGroups:input_type -> api.v1.GenerateNodePoliciesFromNodeGroupsRequest
- 220, // 559: api.v1.K8sRecommendationService.GetNodeGroupsCheckpointStatus:input_type -> api.v1.GetNodeGroupsCheckpointStatusRequest
- 222, // 560: api.v1.K8sRecommendationService.SetNodePolicyCheckpointLabel:input_type -> api.v1.SetNodePolicyCheckpointLabelRequest
- 381, // 561: api.v1.K8sRecommendationService.EnableCheckpointForPolicy:input_type -> api.v1.EnableCheckpointForPolicyRequest
- 383, // 562: api.v1.K8sRecommendationService.GetCheckpointApplyStatus:input_type -> api.v1.GetCheckpointApplyStatusRequest
- 203, // 563: api.v1.K8sRecommendationService.GetNodeAnnotationReadiness:input_type -> api.v1.GetNodeAnnotationReadinessRequest
- 205, // 564: api.v1.K8sRecommendationService.GetMigrationState:input_type -> api.v1.GetMigrationStateRequest
- 207, // 565: api.v1.K8sRecommendationService.UpdateMigrationState:input_type -> api.v1.UpdateMigrationStateRequest
- 209, // 566: api.v1.K8sRecommendationService.ReportNodePoolValidation:input_type -> api.v1.ReportNodePoolValidationRequest
- 211, // 567: api.v1.K8sRecommendationService.GetNodePoolValidations:input_type -> api.v1.GetNodePoolValidationsRequest
- 241, // 568: api.v1.K8sRecommendationService.CreateNodePolicyTargets:input_type -> api.v1.CreateNodePolicyTargetsRequest
- 243, // 569: api.v1.K8sRecommendationService.ListNodePolicyTargets:input_type -> api.v1.ListNodePolicyTargetsRequest
- 245, // 570: api.v1.K8sRecommendationService.UpdateNodePolicyTarget:input_type -> api.v1.UpdateNodePolicyTargetRequest
- 227, // 571: api.v1.K8sRecommendationService.PreviewNodeRecommendationConfig:input_type -> api.v1.PreviewNodeRecommendationConfigRequest
- 256, // 572: api.v1.K8sRecommendationService.GetInstanceFamilies:input_type -> api.v1.GetInstanceFamiliesRequest
- 258, // 573: api.v1.K8sRecommendationService.GetInstanceSizes:input_type -> api.v1.GetInstanceSizesRequest
- 265, // 574: api.v1.K8sRecommendationService.GetInstanceCategories:input_type -> api.v1.GetInstanceCategoriesRequest
- 267, // 575: api.v1.K8sRecommendationService.GetInstanceCPUs:input_type -> api.v1.GetInstanceCPUsRequest
- 269, // 576: api.v1.K8sRecommendationService.GetInstanceTypeNames:input_type -> api.v1.GetInstanceTypeNamesRequest
- 134, // 577: api.v1.K8sRecommendationService.GeneratePodDisruptionBudget:input_type -> api.v1.GeneratePodDisruptionBudgetRequest
- 136, // 578: api.v1.K8sRecommendationService.GenerateAndCreatePodDisruptionBudget:input_type -> api.v1.GenerateAndCreatePodDisruptionBudgetRequest
- 138, // 579: api.v1.K8sRecommendationService.CreatePodDisruptionBudget:input_type -> api.v1.CreatePodDisruptionBudgetRequest
- 140, // 580: api.v1.K8sRecommendationService.GetPDBRecommendationForWorkload:input_type -> api.v1.GetPDBRecommendationForWorkloadRequest
- 304, // 581: api.v1.K8sRecommendationService.CreateStorageRecommendationPolicy:input_type -> api.v1.CreateStorageRecommendationPolicyRequest
- 306, // 582: api.v1.K8sRecommendationService.GetStorageRecommendationPolicy:input_type -> api.v1.GetStorageRecommendationPolicyRequest
- 308, // 583: api.v1.K8sRecommendationService.ListStorageRecommendationPolicies:input_type -> api.v1.ListStorageRecommendationPoliciesRequest
- 310, // 584: api.v1.K8sRecommendationService.UpdateStorageRecommendationPolicy:input_type -> api.v1.UpdateStorageRecommendationPolicyRequest
- 312, // 585: api.v1.K8sRecommendationService.DeleteStorageRecommendationPolicy:input_type -> api.v1.DeleteStorageRecommendationPolicyRequest
- 315, // 586: api.v1.K8sRecommendationService.CreateStoragePolicyTarget:input_type -> api.v1.CreateStoragePolicyTargetRequest
- 317, // 587: api.v1.K8sRecommendationService.ListStoragePolicyTargets:input_type -> api.v1.ListStoragePolicyTargetsRequest
- 319, // 588: api.v1.K8sRecommendationService.UpdateStoragePolicyTarget:input_type -> api.v1.UpdateStoragePolicyTargetRequest
- 321, // 589: api.v1.K8sRecommendationService.DeleteStoragePolicyTarget:input_type -> api.v1.DeleteStoragePolicyTargetRequest
- 324, // 590: api.v1.K8sRecommendationService.GetPvcStorageRecommendation:input_type -> api.v1.GetPvcStorageRecommendationRequest
- 326, // 591: api.v1.K8sRecommendationService.ListPvcStorageRecommendations:input_type -> api.v1.ListPvcStorageRecommendationsRequest
- 328, // 592: api.v1.K8sRecommendationService.GeneratePvcStorageRecommendation:input_type -> api.v1.GeneratePvcStorageRecommendationRequest
- 330, // 593: api.v1.K8sRecommendationService.PreviewPvcStorageRecommendation:input_type -> api.v1.PreviewPvcStorageRecommendationRequest
- 333, // 594: api.v1.K8sRecommendationService.ListWorkloadRuleOOMEvents:input_type -> api.v1.ListWorkloadRuleOOMEventsRequest
- 335, // 595: api.v1.K8sRecommendationService.ListWorkloadOOMEvents:input_type -> api.v1.ListWorkloadOOMEventsRequest
- 338, // 596: api.v1.K8sRecommendationService.ListWorkloadRuleCPUThrottleEvents:input_type -> api.v1.ListWorkloadRuleCPUThrottleEventsRequest
- 340, // 597: api.v1.K8sRecommendationService.ListWorkloadCPUThrottleEvents:input_type -> api.v1.ListWorkloadCPUThrottleEventsRequest
- 89, // 598: api.v1.K8sRecommendationService.RemoveClusterOptimizations:input_type -> api.v1.RemoveClusterOptimizationsRequest
- 343, // 599: api.v1.K8sRecommendationService.CreateWorkloadOptimizationPolicy:input_type -> api.v1.CreateWorkloadOptimizationPolicyRequest
- 345, // 600: api.v1.K8sRecommendationService.ListWorkloadOptimizationPolicies:input_type -> api.v1.ListWorkloadOptimizationPoliciesRequest
- 347, // 601: api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicy:input_type -> api.v1.GetWorkloadOptimizationPolicyRequest
- 349, // 602: api.v1.K8sRecommendationService.UpdateWorkloadOptimizationPolicy:input_type -> api.v1.UpdateWorkloadOptimizationPolicyRequest
- 351, // 603: api.v1.K8sRecommendationService.DeleteWorkloadOptimizationPolicy:input_type -> api.v1.DeleteWorkloadOptimizationPolicyRequest
- 366, // 604: api.v1.K8sRecommendationService.UpsertManualWorkloadRule:input_type -> api.v1.UpsertManualWorkloadRuleRequest
- 368, // 605: api.v1.K8sRecommendationService.PreviewWorkloadRule:input_type -> api.v1.PreviewWorkloadRuleRequest
- 353, // 606: api.v1.K8sRecommendationService.GetWorkloadRulesByPolicy:input_type -> api.v1.GetWorkloadRulesByPolicyRequest
- 355, // 607: api.v1.K8sRecommendationService.ListWorkloadRules:input_type -> api.v1.ListWorkloadRulesRequest
- 357, // 608: api.v1.K8sRecommendationService.GetWorkloadRuleByID:input_type -> api.v1.GetWorkloadRuleByIDRequest
- 359, // 609: api.v1.K8sRecommendationService.GetWorkloadRuleByWorkload:input_type -> api.v1.GetWorkloadRuleByWorkloadRequest
- 361, // 610: api.v1.K8sRecommendationService.GetWorkloadByWorkloadRule:input_type -> api.v1.GetWorkloadByWorkloadRuleRequest
- 363, // 611: api.v1.K8sRecommendationService.DeleteWorkloadRule:input_type -> api.v1.DeleteWorkloadRuleRequest
- 370, // 612: api.v1.K8sRecommendationService.GetWorkloadContainerNames:input_type -> api.v1.GetWorkloadContainerNamesRequest
- 373, // 613: api.v1.K8sRecommendationService.BatchAutoOptimizeWorkloads:input_type -> api.v1.BatchAutoOptimizeWorkloadsRequest
- 379, // 614: api.v1.K8sRecommendationService.GetNodeRecommendationStatus:input_type -> api.v1.GetNodeRecommendationStatusRequest
- 22, // 615: api.v1.K8sRecommendationService.GetNodeGroupStats:output_type -> api.v1.GetNodeGroupStatsResponse
- 26, // 616: api.v1.K8sRecommendationService.GetLatestNodeGroupRecommendation:output_type -> api.v1.GetLatestNodeGroupRecommendationResponse
- 28, // 617: api.v1.K8sRecommendationService.GetLatestWorkloadRecommendation:output_type -> api.v1.GetLatestWorkloadRecommendationResponse
- 30, // 618: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendation:output_type -> api.v1.GetPreviewWorkloadRecommendationResponse
- 33, // 619: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendations:output_type -> api.v1.GetPreviewWorkloadRecommendationsResponse
- 20, // 620: api.v1.K8sRecommendationService.GetRecommendationsForWorkload:output_type -> api.v1.GetRecommendationsForWorkloadResponse
- 18, // 621: api.v1.K8sRecommendationService.GetRecommendations:output_type -> api.v1.GetRecommendationsResponse
- 50, // 622: api.v1.K8sRecommendationService.CreateNodeGroupRecommendationPolicy:output_type -> api.v1.CreateNodeGroupRecommendationPolicyResponse
- 52, // 623: api.v1.K8sRecommendationService.GetNodeGroupRecommendationPolicy:output_type -> api.v1.GetNodeGroupRecommendationPolicyResponse
- 54, // 624: api.v1.K8sRecommendationService.ListNodeGroupRecommendationPolicies:output_type -> api.v1.ListNodeGroupRecommendationPoliciesResponse
- 56, // 625: api.v1.K8sRecommendationService.UpdateNodeGroupRecommendationPolicy:output_type -> api.v1.UpdateNodeGroupRecommendationPolicyResponse
- 58, // 626: api.v1.K8sRecommendationService.DeleteNodeGroupRecommendationPolicy:output_type -> api.v1.DeleteNodeGroupRecommendationPolicyResponse
- 60, // 627: api.v1.K8sRecommendationService.AttachNodeGroupRecommendationPolicy:output_type -> api.v1.AttachNodeGroupRecommendationPolicyResponse
- 62, // 628: api.v1.K8sRecommendationService.CreateWorkloadRecommendationPolicy:output_type -> api.v1.CreateWorkloadRecommendationPolicyResponse
- 64, // 629: api.v1.K8sRecommendationService.GetWorkloadRecommendationPolicy:output_type -> api.v1.GetWorkloadRecommendationPolicyResponse
- 164, // 630: api.v1.K8sRecommendationService.GetPolicyRecommendedDefaults:output_type -> api.v1.GetPolicyRecommendedDefaultsResponse
- 66, // 631: api.v1.K8sRecommendationService.ListWorkloadRecommendationPolicies:output_type -> api.v1.ListWorkloadRecommendationPoliciesResponse
- 68, // 632: api.v1.K8sRecommendationService.UpdateWorkloadRecommendationPolicy:output_type -> api.v1.UpdateWorkloadRecommendationPolicyResponse
- 70, // 633: api.v1.K8sRecommendationService.DeleteWorkloadRecommendationPolicy:output_type -> api.v1.DeleteWorkloadRecommendationPolicyResponse
- 72, // 634: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicy:output_type -> api.v1.AttachWorkloadRecommendationPolicyResponse
- 74, // 635: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicies:output_type -> api.v1.AttachWorkloadRecommendationPoliciesResponse
- 78, // 636: api.v1.K8sRecommendationService.CreateWorkloadPolicyTarget:output_type -> api.v1.CreateWorkloadPolicyTargetResponse
- 80, // 637: api.v1.K8sRecommendationService.GetWorkloadPolicyTarget:output_type -> api.v1.GetWorkloadPolicyTargetResponse
- 82, // 638: api.v1.K8sRecommendationService.ListWorkloadPolicyTargets:output_type -> api.v1.ListWorkloadPolicyTargetsResponse
- 84, // 639: api.v1.K8sRecommendationService.UpdateWorkloadPolicyTarget:output_type -> api.v1.UpdateWorkloadPolicyTargetResponse
- 88, // 640: api.v1.K8sRecommendationService.DeleteWorkloadPolicyTarget:output_type -> api.v1.DeleteWorkloadPolicyTargetResponse
- 87, // 641: api.v1.K8sRecommendationService.ToggleWorkloadPolicyTargets:output_type -> api.v1.ToggleWorkloadPolicyTargetsResponse
- 92, // 642: api.v1.K8sRecommendationService.PreviewWorkloadPolicyTargetMatches:output_type -> api.v1.PreviewWorkloadPolicyTargetMatchesResponse
- 94, // 643: api.v1.K8sRecommendationService.GetPreviewWorkloadPolicyTargetRecommendations:output_type -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse
- 47, // 644: api.v1.K8sRecommendationService.GetWorkloadsWithAttachedPolicyTargets:output_type -> api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse
- 98, // 645: api.v1.K8sRecommendationService.CreateNodeGroupPolicyTarget:output_type -> api.v1.CreateNodeGroupPolicyTargetResponse
- 100, // 646: api.v1.K8sRecommendationService.GetNodeGroupPolicyTarget:output_type -> api.v1.GetNodeGroupPolicyTargetResponse
- 102, // 647: api.v1.K8sRecommendationService.ListNodeGroupPolicyTargets:output_type -> api.v1.ListNodeGroupPolicyTargetsResponse
- 104, // 648: api.v1.K8sRecommendationService.UpdateNodeGroupPolicyTarget:output_type -> api.v1.UpdateNodeGroupPolicyTargetResponse
- 108, // 649: api.v1.K8sRecommendationService.DeleteNodeGroupPolicyTarget:output_type -> api.v1.DeleteNodeGroupPolicyTargetResponse
- 107, // 650: api.v1.K8sRecommendationService.ToggleNodeGroupPolicyTargets:output_type -> api.v1.ToggleNodeGroupPolicyTargetsResponse
- 110, // 651: api.v1.K8sRecommendationService.PreviewNodeGroupPolicyTargetMatches:output_type -> api.v1.PreviewNodeGroupPolicyTargetMatchesResponse
- 112, // 652: api.v1.K8sRecommendationService.GetPreviewNodeGroupPolicyTargetRecommendations:output_type -> api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsResponse
- 114, // 653: api.v1.K8sRecommendationService.BalanceGetRecommendations:output_type -> api.v1.BalanceGetRecommendationsResponse
- 24, // 654: api.v1.K8sRecommendationService.GetOptimalInstanceTypeForNodeGroup:output_type -> api.v1.GetOptimalInstanceTypeForNodeGroupResponse
- 174, // 655: api.v1.K8sRecommendationService.GetAttachedNodeGroupPolicies:output_type -> api.v1.GetAttachedNodeGroupPoliciesResponse
- 176, // 656: api.v1.K8sRecommendationService.GetAttachedWorkloadPolicies:output_type -> api.v1.GetAttachedWorkloadPoliciesResponse
- 236, // 657: api.v1.K8sRecommendationService.SearchResourcesByTargetingFilters:output_type -> api.v1.SearchResourcesByTargetingFiltersResponse
- 235, // 658: api.v1.K8sRecommendationService.GetAvailableKindsByTargetingFilters:output_type -> api.v1.GetAvailableKindsByTargetingFiltersResponse
- 182, // 659: api.v1.K8sRecommendationService.ListAttachedWorkloadPolicies:output_type -> api.v1.ListAttachedWorkloadPoliciesResponse
- 184, // 660: api.v1.K8sRecommendationService.ListAttachedNodeGroupPolicies:output_type -> api.v1.ListAttachedNodeGroupPoliciesResponse
- 191, // 661: api.v1.K8sRecommendationService.RecommendationEvents:output_type -> api.v1.RecommendationEventsResponse
- 189, // 662: api.v1.K8sRecommendationService.ApplyRecommendation:output_type -> api.v1.ApplyRecommendationResponse
- 187, // 663: api.v1.K8sRecommendationService.RecommendationApplied:output_type -> api.v1.RecommendationAppliedResponse
- 193, // 664: api.v1.K8sRecommendationService.RetrieveSavingsForWorkload:output_type -> api.v1.RetrieveSavingsForWorkloadResponse
- 195, // 665: api.v1.K8sRecommendationService.CreateNodePolicies:output_type -> api.v1.CreateNodePoliciesResponse
- 216, // 666: api.v1.K8sRecommendationService.ListNodePolicies:output_type -> api.v1.ListNodePoliciesResponse
- 218, // 667: api.v1.K8sRecommendationService.UpdateNodePolicy:output_type -> api.v1.UpdateNodePolicyResponse
- 225, // 668: api.v1.K8sRecommendationService.DeleteNodePolicy:output_type -> api.v1.DeleteNodePolicyResponse
- 197, // 669: api.v1.K8sRecommendationService.SuggestedNodePolicy:output_type -> api.v1.SuggestedNodePolicyResponse
- 231, // 670: api.v1.K8sRecommendationService.SuggestedKarpenterConfig:output_type -> api.v1.SuggestedKarpenterConfigResponse
- 199, // 671: api.v1.K8sRecommendationService.GenerateNodePoliciesFromKarpenter:output_type -> api.v1.GenerateNodePoliciesFromKarpenterResponse
- 201, // 672: api.v1.K8sRecommendationService.GenerateNodePoliciesFromNodeGroups:output_type -> api.v1.GenerateNodePoliciesFromNodeGroupsResponse
- 221, // 673: api.v1.K8sRecommendationService.GetNodeGroupsCheckpointStatus:output_type -> api.v1.GetNodeGroupsCheckpointStatusResponse
- 223, // 674: api.v1.K8sRecommendationService.SetNodePolicyCheckpointLabel:output_type -> api.v1.SetNodePolicyCheckpointLabelResponse
- 382, // 675: api.v1.K8sRecommendationService.EnableCheckpointForPolicy:output_type -> api.v1.EnableCheckpointForPolicyResponse
- 384, // 676: api.v1.K8sRecommendationService.GetCheckpointApplyStatus:output_type -> api.v1.GetCheckpointApplyStatusResponse
- 204, // 677: api.v1.K8sRecommendationService.GetNodeAnnotationReadiness:output_type -> api.v1.GetNodeAnnotationReadinessResponse
- 206, // 678: api.v1.K8sRecommendationService.GetMigrationState:output_type -> api.v1.GetMigrationStateResponse
- 208, // 679: api.v1.K8sRecommendationService.UpdateMigrationState:output_type -> api.v1.UpdateMigrationStateResponse
- 210, // 680: api.v1.K8sRecommendationService.ReportNodePoolValidation:output_type -> api.v1.ReportNodePoolValidationResponse
- 213, // 681: api.v1.K8sRecommendationService.GetNodePoolValidations:output_type -> api.v1.GetNodePoolValidationsResponse
- 242, // 682: api.v1.K8sRecommendationService.CreateNodePolicyTargets:output_type -> api.v1.CreateNodePolicyTargetsResponse
- 244, // 683: api.v1.K8sRecommendationService.ListNodePolicyTargets:output_type -> api.v1.ListNodePolicyTargetsResponse
- 246, // 684: api.v1.K8sRecommendationService.UpdateNodePolicyTarget:output_type -> api.v1.UpdateNodePolicyTargetResponse
- 228, // 685: api.v1.K8sRecommendationService.PreviewNodeRecommendationConfig:output_type -> api.v1.PreviewNodeRecommendationConfigResponse
- 257, // 686: api.v1.K8sRecommendationService.GetInstanceFamilies:output_type -> api.v1.GetInstanceFamiliesResponse
- 259, // 687: api.v1.K8sRecommendationService.GetInstanceSizes:output_type -> api.v1.GetInstanceSizesResponse
- 266, // 688: api.v1.K8sRecommendationService.GetInstanceCategories:output_type -> api.v1.GetInstanceCategoriesResponse
- 268, // 689: api.v1.K8sRecommendationService.GetInstanceCPUs:output_type -> api.v1.GetInstanceCPUsResponse
- 270, // 690: api.v1.K8sRecommendationService.GetInstanceTypeNames:output_type -> api.v1.GetInstanceTypeNamesResponse
- 135, // 691: api.v1.K8sRecommendationService.GeneratePodDisruptionBudget:output_type -> api.v1.GeneratePodDisruptionBudgetResponse
- 137, // 692: api.v1.K8sRecommendationService.GenerateAndCreatePodDisruptionBudget:output_type -> api.v1.GenerateAndCreatePodDisruptionBudgetResponse
- 139, // 693: api.v1.K8sRecommendationService.CreatePodDisruptionBudget:output_type -> api.v1.CreatePodDisruptionBudgetResponse
- 141, // 694: api.v1.K8sRecommendationService.GetPDBRecommendationForWorkload:output_type -> api.v1.GetPDBRecommendationForWorkloadResponse
- 305, // 695: api.v1.K8sRecommendationService.CreateStorageRecommendationPolicy:output_type -> api.v1.CreateStorageRecommendationPolicyResponse
- 307, // 696: api.v1.K8sRecommendationService.GetStorageRecommendationPolicy:output_type -> api.v1.GetStorageRecommendationPolicyResponse
- 309, // 697: api.v1.K8sRecommendationService.ListStorageRecommendationPolicies:output_type -> api.v1.ListStorageRecommendationPoliciesResponse
- 311, // 698: api.v1.K8sRecommendationService.UpdateStorageRecommendationPolicy:output_type -> api.v1.UpdateStorageRecommendationPolicyResponse
- 313, // 699: api.v1.K8sRecommendationService.DeleteStorageRecommendationPolicy:output_type -> api.v1.DeleteStorageRecommendationPolicyResponse
- 316, // 700: api.v1.K8sRecommendationService.CreateStoragePolicyTarget:output_type -> api.v1.CreateStoragePolicyTargetResponse
- 318, // 701: api.v1.K8sRecommendationService.ListStoragePolicyTargets:output_type -> api.v1.ListStoragePolicyTargetsResponse
- 320, // 702: api.v1.K8sRecommendationService.UpdateStoragePolicyTarget:output_type -> api.v1.UpdateStoragePolicyTargetResponse
- 322, // 703: api.v1.K8sRecommendationService.DeleteStoragePolicyTarget:output_type -> api.v1.DeleteStoragePolicyTargetResponse
- 325, // 704: api.v1.K8sRecommendationService.GetPvcStorageRecommendation:output_type -> api.v1.GetPvcStorageRecommendationResponse
- 327, // 705: api.v1.K8sRecommendationService.ListPvcStorageRecommendations:output_type -> api.v1.ListPvcStorageRecommendationsResponse
- 329, // 706: api.v1.K8sRecommendationService.GeneratePvcStorageRecommendation:output_type -> api.v1.GeneratePvcStorageRecommendationResponse
- 331, // 707: api.v1.K8sRecommendationService.PreviewPvcStorageRecommendation:output_type -> api.v1.PreviewPvcStorageRecommendationResponse
- 334, // 708: api.v1.K8sRecommendationService.ListWorkloadRuleOOMEvents:output_type -> api.v1.ListWorkloadRuleOOMEventsResponse
- 336, // 709: api.v1.K8sRecommendationService.ListWorkloadOOMEvents:output_type -> api.v1.ListWorkloadOOMEventsResponse
- 339, // 710: api.v1.K8sRecommendationService.ListWorkloadRuleCPUThrottleEvents:output_type -> api.v1.ListWorkloadRuleCPUThrottleEventsResponse
- 341, // 711: api.v1.K8sRecommendationService.ListWorkloadCPUThrottleEvents:output_type -> api.v1.ListWorkloadCPUThrottleEventsResponse
- 90, // 712: api.v1.K8sRecommendationService.RemoveClusterOptimizations:output_type -> api.v1.RemoveClusterOptimizationsResponse
- 344, // 713: api.v1.K8sRecommendationService.CreateWorkloadOptimizationPolicy:output_type -> api.v1.CreateWorkloadOptimizationPolicyResponse
- 346, // 714: api.v1.K8sRecommendationService.ListWorkloadOptimizationPolicies:output_type -> api.v1.ListWorkloadOptimizationPoliciesResponse
- 348, // 715: api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicy:output_type -> api.v1.GetWorkloadOptimizationPolicyResponse
- 350, // 716: api.v1.K8sRecommendationService.UpdateWorkloadOptimizationPolicy:output_type -> api.v1.UpdateWorkloadOptimizationPolicyResponse
- 352, // 717: api.v1.K8sRecommendationService.DeleteWorkloadOptimizationPolicy:output_type -> api.v1.DeleteWorkloadOptimizationPolicyResponse
- 367, // 718: api.v1.K8sRecommendationService.UpsertManualWorkloadRule:output_type -> api.v1.UpsertManualWorkloadRuleResponse
- 369, // 719: api.v1.K8sRecommendationService.PreviewWorkloadRule:output_type -> api.v1.PreviewWorkloadRuleResponse
- 354, // 720: api.v1.K8sRecommendationService.GetWorkloadRulesByPolicy:output_type -> api.v1.GetWorkloadRulesByPolicyResponse
- 356, // 721: api.v1.K8sRecommendationService.ListWorkloadRules:output_type -> api.v1.ListWorkloadRulesResponse
- 358, // 722: api.v1.K8sRecommendationService.GetWorkloadRuleByID:output_type -> api.v1.GetWorkloadRuleByIDResponse
- 360, // 723: api.v1.K8sRecommendationService.GetWorkloadRuleByWorkload:output_type -> api.v1.GetWorkloadRuleByWorkloadResponse
- 362, // 724: api.v1.K8sRecommendationService.GetWorkloadByWorkloadRule:output_type -> api.v1.GetWorkloadByWorkloadRuleResponse
- 364, // 725: api.v1.K8sRecommendationService.DeleteWorkloadRule:output_type -> api.v1.DeleteWorkloadRuleResponse
- 371, // 726: api.v1.K8sRecommendationService.GetWorkloadContainerNames:output_type -> api.v1.GetWorkloadContainerNamesResponse
- 375, // 727: api.v1.K8sRecommendationService.BatchAutoOptimizeWorkloads:output_type -> api.v1.BatchAutoOptimizeWorkloadsResponse
- 380, // 728: api.v1.K8sRecommendationService.GetNodeRecommendationStatus:output_type -> api.v1.GetNodeRecommendationStatusResponse
- 615, // [615:729] is the sub-list for method output_type
- 501, // [501:615] is the sub-list for method input_type
- 501, // [501:501] is the sub-list for extension type_name
- 501, // [501:501] is the sub-list for extension extendee
- 0, // [0:501] is the sub-list for field type_name
+ 637, // 0: api.v1.GetRecommendationsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 1: api.v1.GetRecommendationsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 638, // 2: api.v1.GetRecommendationsRequest.filters:type_name -> api.v1.WorkloadFilters
+ 639, // 3: api.v1.GetRecommendationsRequest.pagination:type_name -> api.v1.Pagination
+ 206, // 4: api.v1.GetRecommendationsResponse.recommendations:type_name -> api.v1.WorkloadRecommendation
+ 639, // 5: api.v1.GetRecommendationsResponse.pagination:type_name -> api.v1.Pagination
+ 637, // 6: api.v1.GetRecommendationsForWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 7: api.v1.GetRecommendationsForWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
+ 206, // 8: api.v1.GetRecommendationsForWorkloadResponse.recommendations:type_name -> api.v1.WorkloadRecommendation
+ 637, // 9: api.v1.GetNodeGroupStatsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 10: api.v1.GetNodeGroupStatsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 178, // 11: api.v1.GetNodeGroupStatsResponse.node_stats:type_name -> api.v1.NodeStats
+ 637, // 12: api.v1.GetOptimalInstanceTypeForNodeGroupRequest.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 13: api.v1.GetOptimalInstanceTypeForNodeGroupRequest.end_time:type_name -> google.protobuf.Timestamp
+ 22, // 14: api.v1.GetOptimalInstanceTypeForNodeGroupRequest.mode:type_name -> api.v1.RecommendationMode
+ 640, // 15: api.v1.GetLatestWorkloadRecommendationRequest.kind:type_name -> api.v1.K8sObjectKind
+ 640, // 16: api.v1.GetLatestWorkloadRecommendationResponse.kind:type_name -> api.v1.K8sObjectKind
+ 184, // 17: api.v1.GetLatestWorkloadRecommendationResponse.container_recommendations:type_name -> api.v1.ContainerRecommendation
+ 191, // 18: api.v1.GetLatestWorkloadRecommendationResponse.current_tolerations:type_name -> api.v1.Toleration
+ 191, // 19: api.v1.GetLatestWorkloadRecommendationResponse.recommended_tolerations:type_name -> api.v1.Toleration
+ 640, // 20: api.v1.GetPreviewWorkloadRecommendationRequest.kind:type_name -> api.v1.K8sObjectKind
+ 637, // 21: api.v1.GetPreviewWorkloadRecommendationRequest.timestamp:type_name -> google.protobuf.Timestamp
+ 206, // 22: api.v1.GetPreviewWorkloadRecommendationResponse.rec:type_name -> api.v1.WorkloadRecommendation
+ 50, // 23: api.v1.GetPreviewWorkloadRecommendationsRequest.workloads:type_name -> api.v1.WorkloadIdentifier
+ 637, // 24: api.v1.GetPreviewWorkloadRecommendationsRequest.timestamp:type_name -> google.protobuf.Timestamp
+ 640, // 25: api.v1.WorkloadIdentifier.kind:type_name -> api.v1.K8sObjectKind
+ 48, // 26: api.v1.GetPreviewWorkloadRecommendationsResponse.recommendations:type_name -> api.v1.GetPreviewWorkloadRecommendationResponse
+ 22, // 27: api.v1.CreateClusterRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 18, // 28: api.v1.CreateClusterRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 192, // 29: api.v1.CreateClusterRecommendationPolicyResponse.policy:type_name -> api.v1.ClusterRecommendationPolicy
+ 192, // 30: api.v1.GetClusterRecommendationPolicyResponse.policy:type_name -> api.v1.ClusterRecommendationPolicy
+ 192, // 31: api.v1.ListClusterRecommendationPoliciesResponse.policies:type_name -> api.v1.ClusterRecommendationPolicy
+ 22, // 32: api.v1.UpdateClusterRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 18, // 33: api.v1.UpdateClusterRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 192, // 34: api.v1.UpdateClusterRecommendationPolicyResponse.policy:type_name -> api.v1.ClusterRecommendationPolicy
+ 637, // 35: api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 36: api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest.end_time:type_name -> google.protobuf.Timestamp
+ 50, // 37: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.workloads:type_name -> api.v1.WorkloadIdentifier
+ 596, // 38: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.workload_target_map:type_name -> api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.WorkloadTargetMapEntry
+ 20, // 39: api.v1.CreateNodeGroupRecommendationPolicyRequest.detection_triggers:type_name -> api.v1.NodeGroupDetectionTrigger
+ 22, // 40: api.v1.CreateNodeGroupRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 21, // 41: api.v1.CreateNodeGroupRecommendationPolicyRequest.actions:type_name -> api.v1.NodeGroupActionsAllowed
+ 18, // 42: api.v1.CreateNodeGroupRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 193, // 43: api.v1.CreateNodeGroupRecommendationPolicyResponse.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 193, // 44: api.v1.GetNodeGroupRecommendationPolicyResponse.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 193, // 45: api.v1.ListNodeGroupRecommendationPoliciesResponse.policies:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 20, // 46: api.v1.UpdateNodeGroupRecommendationPolicyRequest.detection_triggers:type_name -> api.v1.NodeGroupDetectionTrigger
+ 22, // 47: api.v1.UpdateNodeGroupRecommendationPolicyRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 21, // 48: api.v1.UpdateNodeGroupRecommendationPolicyRequest.actions:type_name -> api.v1.NodeGroupActionsAllowed
+ 18, // 49: api.v1.UpdateNodeGroupRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 193, // 50: api.v1.UpdateNodeGroupRecommendationPolicyResponse.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 196, // 51: api.v1.CreateWorkloadRecommendationPolicyRequest.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 196, // 52: api.v1.CreateWorkloadRecommendationPolicyResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 196, // 53: api.v1.GetWorkloadRecommendationPolicyResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 196, // 54: api.v1.ListWorkloadRecommendationPoliciesResponse.policies:type_name -> api.v1.WorkloadRecommendationPolicy
+ 196, // 55: api.v1.UpdateWorkloadRecommendationPolicyRequest.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 196, // 56: api.v1.UpdateWorkloadRecommendationPolicyResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 640, // 57: api.v1.AttachWorkloadRecommendationPolicyRequest.kind:type_name -> api.v1.K8sObjectKind
+ 50, // 58: api.v1.AttachWorkloadRecommendationPoliciesRequest.workloads:type_name -> api.v1.WorkloadIdentifier
+ 93, // 59: api.v1.AttachWorkloadRecommendationPoliciesResponse.attachments:type_name -> api.v1.WorkloadPolicyAttachment
+ 640, // 60: api.v1.WorkloadPolicyAttachment.kind:type_name -> api.v1.K8sObjectKind
+ 637, // 61: api.v1.WorkloadPolicyAttachment.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 62: api.v1.WorkloadPolicyAttachment.updated_at:type_name -> google.protobuf.Timestamp
+ 641, // 63: api.v1.WorkloadPolicyTarget.namespace_selector:type_name -> api.v1.LabelSelector
+ 641, // 64: api.v1.WorkloadPolicyTarget.workload_selector:type_name -> api.v1.LabelSelector
+ 640, // 65: api.v1.WorkloadPolicyTarget.kind_filter:type_name -> api.v1.K8sObjectKind
+ 642, // 66: api.v1.WorkloadPolicyTarget.name_pattern:type_name -> api.v1.RegexPattern
+ 641, // 67: api.v1.WorkloadPolicyTarget.annotation_selector:type_name -> api.v1.LabelSelector
+ 642, // 68: api.v1.WorkloadPolicyTarget.namespace_pattern:type_name -> api.v1.RegexPattern
+ 640, // 69: api.v1.WorkloadPolicyTarget.kind_filter_not_in:type_name -> api.v1.K8sObjectKind
+ 637, // 70: api.v1.WorkloadPolicyTarget.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 71: api.v1.WorkloadPolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
+ 641, // 72: api.v1.CreateWorkloadPolicyTargetRequest.namespace_selector:type_name -> api.v1.LabelSelector
+ 641, // 73: api.v1.CreateWorkloadPolicyTargetRequest.workload_selector:type_name -> api.v1.LabelSelector
+ 640, // 74: api.v1.CreateWorkloadPolicyTargetRequest.kind_filter:type_name -> api.v1.K8sObjectKind
+ 642, // 75: api.v1.CreateWorkloadPolicyTargetRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 641, // 76: api.v1.CreateWorkloadPolicyTargetRequest.annotation_selector:type_name -> api.v1.LabelSelector
+ 642, // 77: api.v1.CreateWorkloadPolicyTargetRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 640, // 78: api.v1.CreateWorkloadPolicyTargetRequest.kind_filter_not_in:type_name -> api.v1.K8sObjectKind
+ 94, // 79: api.v1.CreateWorkloadPolicyTargetResponse.target:type_name -> api.v1.WorkloadPolicyTarget
+ 94, // 80: api.v1.GetWorkloadPolicyTargetResponse.target:type_name -> api.v1.WorkloadPolicyTarget
+ 94, // 81: api.v1.ListWorkloadPolicyTargetsResponse.targets:type_name -> api.v1.WorkloadPolicyTarget
+ 641, // 82: api.v1.UpdateWorkloadPolicyTargetRequest.namespace_selector:type_name -> api.v1.LabelSelector
+ 641, // 83: api.v1.UpdateWorkloadPolicyTargetRequest.workload_selector:type_name -> api.v1.LabelSelector
+ 640, // 84: api.v1.UpdateWorkloadPolicyTargetRequest.kind_filter:type_name -> api.v1.K8sObjectKind
+ 642, // 85: api.v1.UpdateWorkloadPolicyTargetRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 641, // 86: api.v1.UpdateWorkloadPolicyTargetRequest.annotation_selector:type_name -> api.v1.LabelSelector
+ 642, // 87: api.v1.UpdateWorkloadPolicyTargetRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 640, // 88: api.v1.UpdateWorkloadPolicyTargetRequest.kind_filter_not_in:type_name -> api.v1.K8sObjectKind
+ 94, // 89: api.v1.UpdateWorkloadPolicyTargetResponse.target:type_name -> api.v1.WorkloadPolicyTarget
+ 641, // 90: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.namespace_selector:type_name -> api.v1.LabelSelector
+ 641, // 91: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.workload_selector:type_name -> api.v1.LabelSelector
+ 640, // 92: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.kind_filter:type_name -> api.v1.K8sObjectKind
+ 642, // 93: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 641, // 94: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.annotation_selector:type_name -> api.v1.LabelSelector
+ 642, // 95: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 640, // 96: api.v1.PreviewWorkloadPolicyTargetMatchesRequest.kind_filter_not_in:type_name -> api.v1.K8sObjectKind
+ 643, // 97: api.v1.PreviewWorkloadPolicyTargetMatchesResponse.matched_workloads:type_name -> api.v1.WorkloadItem
+ 641, // 98: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.namespace_selector:type_name -> api.v1.LabelSelector
+ 641, // 99: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.workload_selector:type_name -> api.v1.LabelSelector
+ 640, // 100: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.kind_filter:type_name -> api.v1.K8sObjectKind
+ 642, // 101: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 641, // 102: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.annotation_selector:type_name -> api.v1.LabelSelector
+ 642, // 103: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 640, // 104: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest.kind_filter_not_in:type_name -> api.v1.K8sObjectKind
+ 206, // 105: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.recommendations:type_name -> api.v1.WorkloadRecommendation
+ 643, // 106: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.workload_items:type_name -> api.v1.WorkloadItem
+ 597, // 107: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.workload_percentiles:type_name -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.WorkloadPercentilesEntry
+ 598, // 108: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.collisions_by_workload_uid:type_name -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.CollisionsByWorkloadUidEntry
+ 644, // 109: api.v1.WorkloadPercentileSummary.cpu_usage:type_name -> api.v1.MetricPercentiles
+ 644, // 110: api.v1.WorkloadPercentileSummary.memory_usage:type_name -> api.v1.MetricPercentiles
+ 644, // 111: api.v1.WorkloadPercentileSummary.gpu_usage:type_name -> api.v1.MetricPercentiles
+ 644, // 112: api.v1.WorkloadPercentileSummary.cpu_request:type_name -> api.v1.MetricPercentiles
+ 644, // 113: api.v1.WorkloadPercentileSummary.memory_request:type_name -> api.v1.MetricPercentiles
+ 637, // 114: api.v1.NodeGroupPolicyTarget.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 115: api.v1.NodeGroupPolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
+ 115, // 116: api.v1.CreateNodeGroupPolicyTargetResponse.target:type_name -> api.v1.NodeGroupPolicyTarget
+ 115, // 117: api.v1.GetNodeGroupPolicyTargetResponse.target:type_name -> api.v1.NodeGroupPolicyTarget
+ 115, // 118: api.v1.ListNodeGroupPolicyTargetsResponse.targets:type_name -> api.v1.NodeGroupPolicyTarget
+ 115, // 119: api.v1.UpdateNodeGroupPolicyTargetResponse.target:type_name -> api.v1.NodeGroupPolicyTarget
+ 645, // 120: api.v1.PreviewNodeGroupPolicyTargetMatchesResponse.matched_node_groups:type_name -> api.v1.NodeGroup
+ 204, // 121: api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsResponse.recommendations:type_name -> api.v1.NodeGroupRecommendation
+ 199, // 122: api.v1.BalanceGetRecommendationsRequest.register:type_name -> api.v1.BalanceRegisterRequest
+ 201, // 123: api.v1.BalanceGetRecommendationsRequest.apply:type_name -> api.v1.BalanceApplyRecommendationResponse
+ 172, // 124: api.v1.BalanceGetRecommendationsRequest.workload_meta:type_name -> api.v1.ReconcileWorkload
+ 206, // 125: api.v1.BalanceGetRecommendationsRequest.in_cluster_recommendation:type_name -> api.v1.WorkloadRecommendation
+ 368, // 126: api.v1.BalanceGetRecommendationsRequest.snapshot_cr_status_report:type_name -> api.v1.SnapshotCRStatusReport
+ 463, // 127: api.v1.BalanceGetRecommendationsRequest.scheduler_enrollment_report:type_name -> api.v1.SchedulerEnrollmentReport
+ 464, // 128: api.v1.BalanceGetRecommendationsRequest.scheduler_revert_event_report:type_name -> api.v1.SchedulerRevertEventReport
+ 174, // 129: api.v1.BalanceGetRecommendationsRequest.operator_health:type_name -> api.v1.OperatorHealth
+ 175, // 130: api.v1.BalanceGetRecommendationsRequest.agent_health:type_name -> api.v1.AgentHealth
+ 204, // 131: api.v1.BalanceGetRecommendationsResponse.node_group_recommendation:type_name -> api.v1.NodeGroupRecommendation
+ 206, // 132: api.v1.BalanceGetRecommendationsResponse.workload_recommendation:type_name -> api.v1.WorkloadRecommendation
+ 373, // 133: api.v1.BalanceGetRecommendationsResponse.node_recommendation:type_name -> api.v1.NodeRecommendation
+ 134, // 134: api.v1.BalanceGetRecommendationsResponse.batch_node_group_recommendations:type_name -> api.v1.BatchNodeGroupRecommendations
+ 135, // 135: api.v1.BalanceGetRecommendationsResponse.batch_workload_recommendations:type_name -> api.v1.BatchWorkloadRecommendations
+ 156, // 136: api.v1.BalanceGetRecommendationsResponse.kind_to_namespace_to_workloads:type_name -> api.v1.WorkloadWithActiveRecommendations
+ 173, // 137: api.v1.BalanceGetRecommendationsResponse.workload_reconcile_response:type_name -> api.v1.ReconcileResponse
+ 507, // 138: api.v1.BalanceGetRecommendationsResponse.workload_profile_manifest:type_name -> api.v1.WorkloadProfileManifest
+ 508, // 139: api.v1.BalanceGetRecommendationsResponse.batch_workload_profiles:type_name -> api.v1.BatchWorkloadProfiles
+ 177, // 140: api.v1.BalanceGetRecommendationsResponse.health_update_requested:type_name -> api.v1.HealthReport
+ 158, // 141: api.v1.BalanceGetRecommendationsResponse.batch_generic_resource_recommendations:type_name -> api.v1.BatchGenericResourceRecommendations
+ 159, // 142: api.v1.BalanceGetRecommendationsResponse.batch_pvc_storage_recommendations:type_name -> api.v1.BatchPvcStorageRecommendations
+ 154, // 143: api.v1.BalanceGetRecommendationsResponse.batch_workload_rules:type_name -> api.v1.BatchWorkloadRules
+ 364, // 144: api.v1.BalanceGetRecommendationsResponse.karpenter_settings:type_name -> api.v1.KarpenterSettingsRecommendation
+ 366, // 145: api.v1.BalanceGetRecommendationsResponse.snapshot_recommendation:type_name -> api.v1.SnapshotRecommendation
+ 367, // 146: api.v1.BalanceGetRecommendationsResponse.forensic_snapshot_recommendation:type_name -> api.v1.ForensicSnapshotRecommendation
+ 155, // 147: api.v1.BalanceGetRecommendationsResponse.batch_hpa_connectors:type_name -> api.v1.BatchHPAConnectors
+ 460, // 148: api.v1.BalanceGetRecommendationsResponse.scheduler_policy_sync:type_name -> api.v1.SchedulerPolicySync
+ 204, // 149: api.v1.BatchNodeGroupRecommendations.recommendations:type_name -> api.v1.NodeGroupRecommendation
+ 206, // 150: api.v1.BatchWorkloadRecommendations.recommendations:type_name -> api.v1.WorkloadRecommendation
+ 137, // 151: api.v1.WorkloadRule.cpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 152: api.v1.WorkloadRule.memory_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 153: api.v1.WorkloadRule.gpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 143, // 154: api.v1.WorkloadRule.hpa_rule:type_name -> api.v1.HPARuleConfig
+ 18, // 155: api.v1.WorkloadRule.action_triggers:type_name -> api.v1.ActionTrigger
+ 19, // 156: api.v1.WorkloadRule.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
+ 144, // 157: api.v1.WorkloadRule.emergency_response:type_name -> api.v1.EmergencyResponseConfig
+ 151, // 158: api.v1.WorkloadRule.percentiles:type_name -> api.v1.ResourcePercentiles
+ 153, // 159: api.v1.WorkloadRule.classification:type_name -> api.v1.WorkloadClassification
+ 637, // 160: api.v1.WorkloadRule.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 161: api.v1.WorkloadRule.updated_at:type_name -> google.protobuf.Timestamp
+ 141, // 162: api.v1.WorkloadRule.containers:type_name -> api.v1.ContainerResourceRuleConfig
+ 142, // 163: api.v1.WorkloadRule.jvm_heap_rule:type_name -> api.v1.JVMHeapRuleConfig
+ 145, // 164: api.v1.WorkloadRule.keda_scaled_object:type_name -> api.v1.KEDAScaledObjectTemplate
+ 599, // 165: api.v1.HPAMetricTrigger.metadata:type_name -> api.v1.HPAMetricTrigger.MetadataEntry
+ 140, // 166: api.v1.ContainerResourceRuleConfig.cpu_rule:type_name -> api.v1.ContainerResourceConfig
+ 140, // 167: api.v1.ContainerResourceRuleConfig.memory_rule:type_name -> api.v1.ContainerResourceConfig
+ 140, // 168: api.v1.ContainerResourceRuleConfig.gpu_rule:type_name -> api.v1.ContainerResourceConfig
+ 138, // 169: api.v1.HPARuleConfig.metrics:type_name -> api.v1.HPAMetricTrigger
+ 646, // 170: api.v1.HPARuleConfig.behavior:type_name -> api.v1.HPABehavior
+ 139, // 171: api.v1.HPARuleConfig.fallback:type_name -> api.v1.HPAFallback
+ 146, // 172: api.v1.KEDAScaledObjectTemplate.triggers:type_name -> api.v1.KEDATrigger
+ 148, // 173: api.v1.KEDAScaledObjectTemplate.fallback:type_name -> api.v1.KEDAFallback
+ 149, // 174: api.v1.KEDAScaledObjectTemplate.advanced:type_name -> api.v1.KEDAAdvanced
+ 600, // 175: api.v1.KEDATrigger.metadata:type_name -> api.v1.KEDATrigger.MetadataEntry
+ 147, // 176: api.v1.KEDATrigger.authentication_ref:type_name -> api.v1.KEDAAuthenticationRef
+ 150, // 177: api.v1.ResourcePercentiles.cpu:type_name -> api.v1.PercentileValues
+ 150, // 178: api.v1.ResourcePercentiles.memory:type_name -> api.v1.PercentileValues
+ 150, // 179: api.v1.ResourcePercentiles.network:type_name -> api.v1.PercentileValues
+ 150, // 180: api.v1.ResourcePercentiles.disk:type_name -> api.v1.PercentileValues
+ 152, // 181: api.v1.WorkloadClassification.burstiness:type_name -> api.v1.BurstinessRatios
+ 136, // 182: api.v1.BatchWorkloadRules.rules:type_name -> api.v1.WorkloadRule
+ 647, // 183: api.v1.BatchHPAConnectors.connectors:type_name -> api.v1.HPAConnector
+ 50, // 184: api.v1.WorkloadWithActiveRecommendations.workloads:type_name -> api.v1.WorkloadIdentifier
+ 637, // 185: api.v1.GenericResourceRecommendation.timestamp:type_name -> google.protobuf.Timestamp
+ 9, // 186: api.v1.GenericResourceRecommendation.status:type_name -> api.v1.RecommendationStatus
+ 637, // 187: api.v1.GenericResourceRecommendation.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 188: api.v1.GenericResourceRecommendation.updated_at:type_name -> google.protobuf.Timestamp
+ 157, // 189: api.v1.BatchGenericResourceRecommendations.recommendations:type_name -> api.v1.GenericResourceRecommendation
+ 403, // 190: api.v1.BatchPvcStorageRecommendations.recommendations:type_name -> api.v1.PvcStorageRecommendation
+ 50, // 191: api.v1.GeneratePodDisruptionBudgetRequest.workload:type_name -> api.v1.WorkloadIdentifier
+ 157, // 192: api.v1.GeneratePodDisruptionBudgetResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
+ 50, // 193: api.v1.GenerateAndCreatePodDisruptionBudgetRequest.workload:type_name -> api.v1.WorkloadIdentifier
+ 157, // 194: api.v1.GenerateAndCreatePodDisruptionBudgetResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
+ 157, // 195: api.v1.CreatePodDisruptionBudgetRequest.recommendation:type_name -> api.v1.GenericResourceRecommendation
+ 157, // 196: api.v1.CreatePodDisruptionBudgetResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
+ 50, // 197: api.v1.GetPDBRecommendationForWorkloadRequest.workload:type_name -> api.v1.WorkloadIdentifier
+ 157, // 198: api.v1.GetPDBRecommendationForWorkloadResponse.recommendation:type_name -> api.v1.GenericResourceRecommendation
+ 637, // 199: api.v1.StructuralHealthFinding.first_seen_at:type_name -> google.protobuf.Timestamp
+ 168, // 200: api.v1.WorkloadStructuralHealth.findings:type_name -> api.v1.StructuralHealthFinding
+ 169, // 201: api.v1.ListWorkloadStructuralHealthResponse.workloads:type_name -> api.v1.WorkloadStructuralHealth
+ 640, // 202: api.v1.ReconcileWorkload.kind:type_name -> api.v1.K8sObjectKind
+ 0, // 203: api.v1.ReconcileResponse.status:type_name -> api.v1.ReconcileStatus
+ 206, // 204: api.v1.ReconcileResponse.updated_recommendation:type_name -> api.v1.WorkloadRecommendation
+ 601, // 205: api.v1.AgentHealth.node_name_to_agent:type_name -> api.v1.AgentHealth.NodeNameToAgentEntry
+ 179, // 206: api.v1.NodeStats.metrics:type_name -> api.v1.NodeMetric
+ 637, // 207: api.v1.NodeMetric.timestamp:type_name -> google.protobuf.Timestamp
+ 640, // 208: api.v1.ContainerStats.kind:type_name -> api.v1.K8sObjectKind
+ 181, // 209: api.v1.ContainerStats.metrics:type_name -> api.v1.ContainerMetric
+ 182, // 210: api.v1.ContainerStats.summarized_metrics:type_name -> api.v1.ContainerSummarizedMetric
+ 637, // 211: api.v1.ContainerMetric.timestamp:type_name -> google.protobuf.Timestamp
+ 637, // 212: api.v1.ContainerSummarizedMetric.timestamp:type_name -> google.protobuf.Timestamp
+ 183, // 213: api.v1.ContainerSummarizedMetric.cpu:type_name -> api.v1.Metric
+ 183, // 214: api.v1.ContainerSummarizedMetric.memory:type_name -> api.v1.Metric
+ 183, // 215: api.v1.ContainerSummarizedMetric.gpu:type_name -> api.v1.Metric
+ 183, // 216: api.v1.ContainerSummarizedMetric.gpu_vram:type_name -> api.v1.Metric
+ 186, // 217: api.v1.ContainerRecommendation.current_request:type_name -> api.v1.ResourceRecommendation
+ 186, // 218: api.v1.ContainerRecommendation.recommended_request:type_name -> api.v1.ResourceRecommendation
+ 186, // 219: api.v1.ContainerRecommendation.current_limit:type_name -> api.v1.ResourceRecommendation
+ 186, // 220: api.v1.ContainerRecommendation.recommended_limit:type_name -> api.v1.ResourceRecommendation
+ 187, // 221: api.v1.ContainerRecommendation.env_mutations:type_name -> api.v1.EnvVarMutation
+ 188, // 222: api.v1.ContainerRecommendation.command_arg_mutations:type_name -> api.v1.CommandArgMutation
+ 1, // 223: api.v1.ResourceRecommendation.cpu_action:type_name -> api.v1.ActionToTake
+ 1, // 224: api.v1.ResourceRecommendation.mem_action:type_name -> api.v1.ActionToTake
+ 1, // 225: api.v1.ResourceRecommendation.gpu_action:type_name -> api.v1.ActionToTake
+ 1, // 226: api.v1.ResourceRecommendation.gpu_vram_action:type_name -> api.v1.ActionToTake
+ 2, // 227: api.v1.EnvVarMutation.action:type_name -> api.v1.MutationAction
+ 2, // 228: api.v1.CommandArgMutation.action:type_name -> api.v1.MutationAction
+ 3, // 229: api.v1.CommandArgMutation.target:type_name -> api.v1.ArgTarget
+ 2, // 230: api.v1.NodeSelectorMutation.action:type_name -> api.v1.MutationAction
+ 2, // 231: api.v1.TolerationMutation.action:type_name -> api.v1.MutationAction
+ 191, // 232: api.v1.TolerationMutation.toleration:type_name -> api.v1.Toleration
+ 18, // 233: api.v1.ClusterRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
+ 22, // 234: api.v1.ClusterRecommendationPolicy.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 18, // 235: api.v1.ClusterRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
+ 18, // 236: api.v1.NodeGroupRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
+ 20, // 237: api.v1.NodeGroupRecommendationPolicy.detection_triggers:type_name -> api.v1.NodeGroupDetectionTrigger
+ 22, // 238: api.v1.NodeGroupRecommendationPolicy.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 21, // 239: api.v1.NodeGroupRecommendationPolicy.actions:type_name -> api.v1.NodeGroupActionsAllowed
+ 18, // 240: api.v1.NodeGroupRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
+ 24, // 241: api.v1.HorizontalScalingOptimizationTarget.primary_metric:type_name -> api.v1.HPAMetricType
+ 18, // 242: api.v1.WorkloadRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
+ 19, // 243: api.v1.WorkloadRecommendationPolicy.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
+ 22, // 244: api.v1.WorkloadRecommendationPolicy.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 194, // 245: api.v1.WorkloadRecommendationPolicy.cpu_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
+ 194, // 246: api.v1.WorkloadRecommendationPolicy.memory_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
+ 194, // 247: api.v1.WorkloadRecommendationPolicy.gpu_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
+ 194, // 248: api.v1.WorkloadRecommendationPolicy.gpu_vram_vertical_scaling:type_name -> api.v1.VerticalScalingOptimizationTarget
+ 195, // 249: api.v1.WorkloadRecommendationPolicy.horizontal_scaling:type_name -> api.v1.HorizontalScalingOptimizationTarget
+ 18, // 250: api.v1.WorkloadRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
+ 144, // 251: api.v1.WorkloadRecommendationPolicy.emergency_response:type_name -> api.v1.EmergencyResponseConfig
+ 637, // 252: api.v1.WorkloadRecommendationPolicy.deleted_at:type_name -> google.protobuf.Timestamp
+ 22, // 253: api.v1.GetPolicyRecommendedDefaultsRequest.recommendation_mode:type_name -> api.v1.RecommendationMode
+ 196, // 254: api.v1.GetPolicyRecommendedDefaultsResponse.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 200, // 255: api.v1.BalanceRegisterRequest.features:type_name -> api.v1.BalanceFeatures
+ 23, // 256: api.v1.BalanceApplyRecommendationResponse.type:type_name -> api.v1.RecommendationType
+ 202, // 257: api.v1.BalanceApplyRecommendationResponse.live_migration_result:type_name -> api.v1.LiveMigrationResult
+ 637, // 258: api.v1.BalanceApplyRecommendationResponse.applied_at:type_name -> google.protobuf.Timestamp
+ 637, // 259: api.v1.NodeGroupRecommendation.timestamp:type_name -> google.protobuf.Timestamp
+ 193, // 260: api.v1.NodeGroupRecommendation.policy:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 648, // 261: api.v1.CostImpact.current_cost_per_month:type_name -> google.type.Money
+ 648, // 262: api.v1.CostImpact.recommended_cost_per_month:type_name -> google.type.Money
+ 648, // 263: api.v1.CostImpact.current_cpu_cost_per_month:type_name -> google.type.Money
+ 648, // 264: api.v1.CostImpact.current_memory_cost_per_month:type_name -> google.type.Money
+ 648, // 265: api.v1.CostImpact.recommended_cpu_cost_per_month:type_name -> google.type.Money
+ 648, // 266: api.v1.CostImpact.recommended_memory_cost_per_month:type_name -> google.type.Money
+ 648, // 267: api.v1.CostImpact.current_gpu_cost_per_month:type_name -> google.type.Money
+ 648, // 268: api.v1.CostImpact.recommended_gpu_cost_per_month:type_name -> google.type.Money
+ 4, // 269: api.v1.CostImpact.cost_period:type_name -> api.v1.CostPeriod
+ 640, // 270: api.v1.WorkloadRecommendation.kind:type_name -> api.v1.K8sObjectKind
+ 184, // 271: api.v1.WorkloadRecommendation.container_recommendations:type_name -> api.v1.ContainerRecommendation
+ 637, // 272: api.v1.WorkloadRecommendation.timestamp:type_name -> google.protobuf.Timestamp
+ 185, // 273: api.v1.WorkloadRecommendation.keda_scaled_object_recommendation:type_name -> api.v1.KedaScaledObjectRecommendation
+ 641, // 274: api.v1.WorkloadRecommendation.label_selector:type_name -> api.v1.LabelSelector
+ 8, // 275: api.v1.WorkloadRecommendation.del_prop:type_name -> api.v1.LiveMigDeletionPropagation
+ 191, // 276: api.v1.WorkloadRecommendation.current_tolerations:type_name -> api.v1.Toleration
+ 191, // 277: api.v1.WorkloadRecommendation.recommended_tolerations:type_name -> api.v1.Toleration
+ 9, // 278: api.v1.WorkloadRecommendation.status:type_name -> api.v1.RecommendationStatus
+ 196, // 279: api.v1.WorkloadRecommendation.policy:type_name -> api.v1.WorkloadRecommendationPolicy
+ 94, // 280: api.v1.WorkloadRecommendation.policy_target:type_name -> api.v1.WorkloadPolicyTarget
+ 1, // 281: api.v1.WorkloadRecommendation.replica_count_action:type_name -> api.v1.ActionToTake
+ 202, // 282: api.v1.WorkloadRecommendation.live_migration_result:type_name -> api.v1.LiveMigrationResult
+ 205, // 283: api.v1.WorkloadRecommendation.cost_impact:type_name -> api.v1.CostImpact
+ 189, // 284: api.v1.WorkloadRecommendation.node_selector_mutations:type_name -> api.v1.NodeSelectorMutation
+ 190, // 285: api.v1.WorkloadRecommendation.toleration_mutations:type_name -> api.v1.TolerationMutation
+ 602, // 286: api.v1.WorkloadRecommendation.source_images:type_name -> api.v1.WorkloadRecommendation.SourceImagesEntry
+ 1, // 287: api.v1.WorkloadRecommendation.restart_action_to_take:type_name -> api.v1.ActionToTake
+ 207, // 288: api.v1.WorkloadRecommendation.reasoning_details:type_name -> api.v1.ReasoningDetails
+ 209, // 289: api.v1.ReasoningDetails.insights:type_name -> api.v1.ReasoningInsight
+ 211, // 290: api.v1.ReasoningDetails.container_changes:type_name -> api.v1.ReasoningContainerChange
+ 214, // 291: api.v1.ReasoningDetails.replicas:type_name -> api.v1.ReasoningReplicas
+ 215, // 292: api.v1.ReasoningDetails.decisions:type_name -> api.v1.ReasoningDecision
+ 6, // 293: api.v1.ReasoningInsight.type:type_name -> api.v1.ReasoningInsightType
+ 5, // 294: api.v1.ReasoningInsight.severity:type_name -> api.v1.ReasoningInsightSeverity
+ 208, // 295: api.v1.ReasoningInsight.evidence:type_name -> api.v1.ReasoningEvidence
+ 210, // 296: api.v1.ReasoningContainerChange.cpu:type_name -> api.v1.ReasoningResourceEdge
+ 210, // 297: api.v1.ReasoningContainerChange.memory:type_name -> api.v1.ReasoningResourceEdge
+ 210, // 298: api.v1.ReasoningContainerChange.gpu:type_name -> api.v1.ReasoningResourceEdge
+ 212, // 299: api.v1.ReasoningReplicas.utilization:type_name -> api.v1.ReasoningUtilization
+ 213, // 300: api.v1.ReasoningReplicas.historical_pattern:type_name -> api.v1.ReasoningHistoricalPattern
+ 7, // 301: api.v1.ReasoningDecision.kind:type_name -> api.v1.ReasoningDecisionKind
+ 193, // 302: api.v1.GetAttachedNodeGroupPoliciesResponse.policies:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 640, // 303: api.v1.GetAttachedWorkloadPoliciesRequest.kind:type_name -> api.v1.K8sObjectKind
+ 220, // 304: api.v1.GetAttachedWorkloadPoliciesResponse.relevant_policies:type_name -> api.v1.WorkloadRecommendationPolicyGroup
+ 603, // 305: api.v1.GetAttachedWorkloadPoliciesResponse.policy_id_to_matched_targets:type_name -> api.v1.GetAttachedWorkloadPoliciesResponse.PolicyIdToMatchedTargetsEntry
+ 196, // 306: api.v1.WorkloadRecommendationPolicyGroup.policies:type_name -> api.v1.WorkloadRecommendationPolicy
+ 94, // 307: api.v1.WorkloadPolicyTargetGroup.targets:type_name -> api.v1.WorkloadPolicyTarget
+ 50, // 308: api.v1.WorkloadIdentifiers.workloads:type_name -> api.v1.WorkloadIdentifier
+ 50, // 309: api.v1.WorkloadPolicies.workload:type_name -> api.v1.WorkloadIdentifier
+ 196, // 310: api.v1.WorkloadPolicies.policies:type_name -> api.v1.WorkloadRecommendationPolicy
+ 604, // 311: api.v1.ListAttachedWorkloadPoliciesResponse.policy_map:type_name -> api.v1.ListAttachedWorkloadPoliciesResponse.PolicyMapEntry
+ 605, // 312: api.v1.ListAttachedWorkloadPoliciesResponse.workload_map:type_name -> api.v1.ListAttachedWorkloadPoliciesResponse.WorkloadMapEntry
+ 606, // 313: api.v1.ListAttachedNodeGroupPoliciesResponse.policy_map:type_name -> api.v1.ListAttachedNodeGroupPoliciesResponse.PolicyMapEntry
+ 607, // 314: api.v1.ListAttachedNodeGroupPoliciesResponse.node_group_map:type_name -> api.v1.ListAttachedNodeGroupPoliciesResponse.NodeGroupMapEntry
+ 640, // 315: api.v1.RecommendationAppliedRequest.kind:type_name -> api.v1.K8sObjectKind
+ 640, // 316: api.v1.ApplyRecommendationRequest.kind:type_name -> api.v1.K8sObjectKind
+ 206, // 317: api.v1.ApplyRecommendationRequest.workload_recommendation:type_name -> api.v1.WorkloadRecommendation
+ 637, // 318: api.v1.RetrieveSavingsForWorkloadRequest.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 319: api.v1.RetrieveSavingsForWorkloadRequest.end_time:type_name -> google.protobuf.Timestamp
+ 649, // 320: api.v1.RetrieveSavingsForWorkloadResponse.savings:type_name -> api.v1.SavingsTimeSeries
+ 650, // 321: api.v1.RetrieveSavingsForWorkloadResponse.get_workload_resp:type_name -> api.v1.GetWorkloadResponse
+ 286, // 322: api.v1.CreateNodePoliciesRequest.policies:type_name -> api.v1.NodePolicy
+ 286, // 323: api.v1.CreateNodePoliciesResponse.policies:type_name -> api.v1.NodePolicy
+ 286, // 324: api.v1.SuggestedNodePolicyResponse.policy:type_name -> api.v1.NodePolicy
+ 286, // 325: api.v1.GenerateNodePoliciesFromKarpenterResponse.policies:type_name -> api.v1.NodePolicy
+ 317, // 326: api.v1.GenerateNodePoliciesFromKarpenterResponse.targets:type_name -> api.v1.NodePolicyTarget
+ 286, // 327: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.policies:type_name -> api.v1.NodePolicy
+ 317, // 328: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.targets:type_name -> api.v1.NodePolicyTarget
+ 274, // 329: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.warnings:type_name -> api.v1.WorkloadCompatibilityWarning
+ 245, // 330: api.v1.GenerateNodePoliciesFromNodeGroupsResponse.eligibility:type_name -> api.v1.NodeGroupMigrationEligibility
+ 637, // 331: api.v1.GetMigrationStateResponse.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 332: api.v1.GetMigrationStateResponse.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 333: api.v1.GetKarpenterMigrationStateResponse.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 334: api.v1.GetKarpenterMigrationStateResponse.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 335: api.v1.KarpenterOwnershipConflict.detected_at:type_name -> google.protobuf.Timestamp
+ 637, // 336: api.v1.KarpenterOwnershipConflict.acknowledged_at:type_name -> google.protobuf.Timestamp
+ 258, // 337: api.v1.DetectKarpenterOwnershipConflictsResponse.conflicts:type_name -> api.v1.KarpenterOwnershipConflict
+ 263, // 338: api.v1.GetKarpenterSourceResourcesResponse.resources:type_name -> api.v1.KarpenterSourceResource
+ 266, // 339: api.v1.GetKarpenterAdoptionStatusResponse.statuses:type_name -> api.v1.NodePoolAdoptionStatus
+ 637, // 340: api.v1.NodePoolValidationReport.reported_at:type_name -> google.protobuf.Timestamp
+ 272, // 341: api.v1.GetNodePoolValidationsResponse.validations:type_name -> api.v1.NodePoolValidationReport
+ 286, // 342: api.v1.ListNodePoliciesResponse.policies:type_name -> api.v1.NodePolicy
+ 286, // 343: api.v1.UpdateNodePolicyRequest.policy:type_name -> api.v1.NodePolicy
+ 286, // 344: api.v1.UpdateNodePolicyResponse.policy:type_name -> api.v1.NodePolicy
+ 10, // 345: api.v1.NodeGroupCheckpointStatus.state:type_name -> api.v1.NodeGroupCheckpointState
+ 11, // 346: api.v1.NodeGroupCheckpointStatus.reason:type_name -> api.v1.CheckpointReason
+ 608, // 347: api.v1.GetNodeGroupsCheckpointStatusResponse.by_node_group:type_name -> api.v1.GetNodeGroupsCheckpointStatusResponse.ByNodeGroupEntry
+ 641, // 348: api.v1.NodePolicy.instance_categories:type_name -> api.v1.LabelSelector
+ 641, // 349: api.v1.NodePolicy.instance_families:type_name -> api.v1.LabelSelector
+ 641, // 350: api.v1.NodePolicy.instance_cpus:type_name -> api.v1.LabelSelector
+ 641, // 351: api.v1.NodePolicy.instance_hypervisors:type_name -> api.v1.LabelSelector
+ 641, // 352: api.v1.NodePolicy.instance_generations:type_name -> api.v1.LabelSelector
+ 641, // 353: api.v1.NodePolicy.instance_sizes:type_name -> api.v1.LabelSelector
+ 641, // 354: api.v1.NodePolicy.instance_shapes:type_name -> api.v1.LabelSelector
+ 641, // 355: api.v1.NodePolicy.instance_types:type_name -> api.v1.LabelSelector
+ 641, // 356: api.v1.NodePolicy.instance_local_nvme:type_name -> api.v1.LabelSelector
+ 641, // 357: api.v1.NodePolicy.zones:type_name -> api.v1.LabelSelector
+ 641, // 358: api.v1.NodePolicy.architectures:type_name -> api.v1.LabelSelector
+ 641, // 359: api.v1.NodePolicy.capacity_types:type_name -> api.v1.LabelSelector
+ 641, // 360: api.v1.NodePolicy.operating_systems:type_name -> api.v1.LabelSelector
+ 609, // 361: api.v1.NodePolicy.labels:type_name -> api.v1.NodePolicy.LabelsEntry
+ 321, // 362: api.v1.NodePolicy.taints:type_name -> api.v1.Taint
+ 323, // 363: api.v1.NodePolicy.disruption:type_name -> api.v1.DisruptionPolicy
+ 324, // 364: api.v1.NodePolicy.limits:type_name -> api.v1.ResourceLimits
+ 321, // 365: api.v1.NodePolicy.startup_taints:type_name -> api.v1.Taint
+ 325, // 366: api.v1.NodePolicy.aws:type_name -> api.v1.AWSNodeClassSpec
+ 352, // 367: api.v1.NodePolicy.gcp:type_name -> api.v1.GCPNodeClassSpec
+ 355, // 368: api.v1.NodePolicy.azure:type_name -> api.v1.AzureNodeClassSpec
+ 363, // 369: api.v1.NodePolicy.oci:type_name -> api.v1.OCINodeClassSpec
+ 651, // 370: api.v1.NodePolicy.cloud_provider:type_name -> api.v1.CloudProvider
+ 320, // 371: api.v1.NodePolicy.zonal_shift:type_name -> api.v1.ZonalShiftConfig
+ 365, // 372: api.v1.NodePolicy.raw:type_name -> api.v1.RawKarpenterSpec
+ 637, // 373: api.v1.NodePolicy.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 374: api.v1.NodePolicy.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 375: api.v1.NodePolicy.deleted_at:type_name -> google.protobuf.Timestamp
+ 286, // 376: api.v1.PreviewNodeRecommendationConfigRequest.policies:type_name -> api.v1.NodePolicy
+ 289, // 377: api.v1.PreviewNodeRecommendationConfigResponse.nrc:type_name -> api.v1.NodeRecommendationConfig
+ 9, // 378: api.v1.NodeRecommendationConfig.status:type_name -> api.v1.RecommendationStatus
+ 637, // 379: api.v1.NodeRecommendationConfig.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 380: api.v1.NodeRecommendationConfig.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 381: api.v1.NodeRecommendationConfig.deleted_at:type_name -> google.protobuf.Timestamp
+ 610, // 382: api.v1.SuggestedKarpenterConfigResponse.ng_to_original:type_name -> api.v1.SuggestedKarpenterConfigResponse.NgToOriginalEntry
+ 611, // 383: api.v1.SuggestedKarpenterConfigResponse.ng_to_suggested:type_name -> api.v1.SuggestedKarpenterConfigResponse.NgToSuggestedEntry
+ 286, // 384: api.v1.SuggestNodePolicyImprovementsRequest.policy:type_name -> api.v1.NodePolicy
+ 652, // 385: api.v1.SuggestNodePolicyImprovementsRequest.window:type_name -> api.v1.ProfileWindow
+ 286, // 386: api.v1.SuggestNodePolicyImprovementsResponse.original:type_name -> api.v1.NodePolicy
+ 286, // 387: api.v1.SuggestNodePolicyImprovementsResponse.suggested:type_name -> api.v1.NodePolicy
+ 297, // 388: api.v1.SuggestNodePolicyImprovementsResponse.suggestions:type_name -> api.v1.NodePolicySuggestion
+ 301, // 389: api.v1.SuggestNodePolicyImprovementsResponse.context:type_name -> api.v1.SuggestionContext
+ 637, // 390: api.v1.SuggestNodePolicyImprovementsResponse.computed_at:type_name -> google.protobuf.Timestamp
+ 652, // 391: api.v1.ListClusterNodePolicySuggestionsRequest.window:type_name -> api.v1.ProfileWindow
+ 296, // 392: api.v1.ListClusterNodePolicySuggestionsResponse.policies:type_name -> api.v1.NodePolicySuggestionsForPolicy
+ 637, // 393: api.v1.ListClusterNodePolicySuggestionsResponse.computed_at:type_name -> google.protobuf.Timestamp
+ 297, // 394: api.v1.NodePolicySuggestionsForPolicy.suggestions:type_name -> api.v1.NodePolicySuggestion
+ 301, // 395: api.v1.NodePolicySuggestionsForPolicy.context:type_name -> api.v1.SuggestionContext
+ 637, // 396: api.v1.NodePolicySuggestionsForPolicy.computed_at:type_name -> google.protobuf.Timestamp
+ 12, // 397: api.v1.NodePolicySuggestion.group:type_name -> api.v1.SuggestionGroup
+ 13, // 398: api.v1.NodePolicySuggestion.flavor:type_name -> api.v1.SuggestionFlavor
+ 14, // 399: api.v1.NodePolicySuggestion.severity:type_name -> api.v1.SuggestionSeverity
+ 299, // 400: api.v1.NodePolicySuggestion.evidence:type_name -> api.v1.SuggestionEvidence
+ 298, // 401: api.v1.NodePolicySuggestion.additional_field_changes:type_name -> api.v1.SuggestionFieldChange
+ 15, // 402: api.v1.SuggestionEvidence.scope:type_name -> api.v1.EvidenceScope
+ 300, // 403: api.v1.SuggestionEvidence.workloads:type_name -> api.v1.SuggestionWorkloadRef
+ 652, // 404: api.v1.SuggestionContext.window:type_name -> api.v1.ProfileWindow
+ 15, // 405: api.v1.SuggestionContext.evidence_scope:type_name -> api.v1.EvidenceScope
+ 304, // 406: api.v1.GetAvailableKindsByTargetingFiltersRequest.target_filters:type_name -> api.v1.TargetFilters
+ 16, // 407: api.v1.SearchResourcesByTargetingFiltersRequest.target_filter_type:type_name -> api.v1.TargetFilterType
+ 304, // 408: api.v1.SearchResourcesByTargetingFiltersRequest.target_filters:type_name -> api.v1.TargetFilters
+ 640, // 409: api.v1.TargetFilters.kind_filter:type_name -> api.v1.K8sObjectKind
+ 642, // 410: api.v1.TargetFilters.name_pattern:type_name -> api.v1.RegexPattern
+ 642, // 411: api.v1.TargetFilters.namespace_pattern:type_name -> api.v1.RegexPattern
+ 640, // 412: api.v1.GetAvailableKindsByTargetingFiltersResponse.kinds:type_name -> api.v1.K8sObjectKind
+ 307, // 413: api.v1.SearchResourcesByTargetingFiltersResponse.namespaces:type_name -> api.v1.NamespaceSearchResult
+ 308, // 414: api.v1.SearchResourcesByTargetingFiltersResponse.workloads:type_name -> api.v1.WorkloadSearchResult
+ 309, // 415: api.v1.SearchResourcesByTargetingFiltersResponse.node_groups:type_name -> api.v1.NodeGroupSearchResult
+ 310, // 416: api.v1.SearchResourcesByTargetingFiltersResponse.labels:type_name -> api.v1.LabelSearchResult
+ 317, // 417: api.v1.CreateNodePolicyTargetsRequest.targets:type_name -> api.v1.NodePolicyTarget
+ 317, // 418: api.v1.CreateNodePolicyTargetsResponse.targets:type_name -> api.v1.NodePolicyTarget
+ 317, // 419: api.v1.ListNodePolicyTargetsResponse.targets:type_name -> api.v1.NodePolicyTarget
+ 317, // 420: api.v1.UpdateNodePolicyTargetRequest.target:type_name -> api.v1.NodePolicyTarget
+ 317, // 421: api.v1.UpdateNodePolicyTargetResponse.target:type_name -> api.v1.NodePolicyTarget
+ 637, // 422: api.v1.NodePolicyTarget.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 423: api.v1.NodePolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 424: api.v1.NodePolicyTarget.deleted_at:type_name -> google.protobuf.Timestamp
+ 319, // 425: api.v1.NodePolicyTarget.status:type_name -> api.v1.NodePolicyTargetStatus
+ 637, // 426: api.v1.NodePolicyCondition.last_transition_time:type_name -> google.protobuf.Timestamp
+ 318, // 427: api.v1.NodePolicyTargetStatus.conditions:type_name -> api.v1.NodePolicyCondition
+ 322, // 428: api.v1.DisruptionPolicy.budgets:type_name -> api.v1.DisruptionBudget
+ 344, // 429: api.v1.AWSNodeClassSpec.subnet_selector_terms:type_name -> api.v1.SubnetSelectorTerm
+ 345, // 430: api.v1.AWSNodeClassSpec.security_group_selector_terms:type_name -> api.v1.SecurityGroupSelectorTerm
+ 346, // 431: api.v1.AWSNodeClassSpec.capacity_reservation_selector_terms:type_name -> api.v1.CapacityReservationSelectorTerm
+ 347, // 432: api.v1.AWSNodeClassSpec.ami_selector_terms:type_name -> api.v1.AMISelectorTerm
+ 612, // 433: api.v1.AWSNodeClassSpec.tags:type_name -> api.v1.AWSNodeClassSpec.TagsEntry
+ 348, // 434: api.v1.AWSNodeClassSpec.kubelet:type_name -> api.v1.KubeletConfiguration
+ 349, // 435: api.v1.AWSNodeClassSpec.block_device_mappings:type_name -> api.v1.BlockDeviceMapping
+ 17, // 436: api.v1.AWSNodeClassSpec.instance_store_policy:type_name -> api.v1.InstanceStorePolicy
+ 351, // 437: api.v1.AWSNodeClassSpec.metadata_options:type_name -> api.v1.MetadataOptions
+ 332, // 438: api.v1.GetInstanceFamiliesResponse.instance_families:type_name -> api.v1.InstanceFamily
+ 334, // 439: api.v1.GetInstanceSizesResponse.instance_sizes:type_name -> api.v1.InstanceSize
+ 333, // 440: api.v1.GetInstanceShapesResponse.instance_shapes:type_name -> api.v1.InstanceShape
+ 335, // 441: api.v1.GetInstanceCategoriesResponse.instance_categories:type_name -> api.v1.InstanceCategory
+ 336, // 442: api.v1.GetInstanceCPUsResponse.instance_cpus:type_name -> api.v1.InstanceCPU
+ 337, // 443: api.v1.GetInstanceTypeNamesResponse.instance_types:type_name -> api.v1.InstanceTypeName
+ 613, // 444: api.v1.SubnetSelectorTerm.tags:type_name -> api.v1.SubnetSelectorTerm.TagsEntry
+ 614, // 445: api.v1.SecurityGroupSelectorTerm.tags:type_name -> api.v1.SecurityGroupSelectorTerm.TagsEntry
+ 615, // 446: api.v1.CapacityReservationSelectorTerm.tags:type_name -> api.v1.CapacityReservationSelectorTerm.TagsEntry
+ 616, // 447: api.v1.AMISelectorTerm.tags:type_name -> api.v1.AMISelectorTerm.TagsEntry
+ 617, // 448: api.v1.KubeletConfiguration.system_reserved:type_name -> api.v1.KubeletConfiguration.SystemReservedEntry
+ 618, // 449: api.v1.KubeletConfiguration.kube_reserved:type_name -> api.v1.KubeletConfiguration.KubeReservedEntry
+ 619, // 450: api.v1.KubeletConfiguration.eviction_hard:type_name -> api.v1.KubeletConfiguration.EvictionHardEntry
+ 620, // 451: api.v1.KubeletConfiguration.eviction_soft:type_name -> api.v1.KubeletConfiguration.EvictionSoftEntry
+ 621, // 452: api.v1.KubeletConfiguration.eviction_soft_grace_period:type_name -> api.v1.KubeletConfiguration.EvictionSoftGracePeriodEntry
+ 350, // 453: api.v1.BlockDeviceMapping.ebs:type_name -> api.v1.BlockDevice
+ 353, // 454: api.v1.GCPNodeClassSpec.image_selector_terms:type_name -> api.v1.GCPImageSelectorTerm
+ 348, // 455: api.v1.GCPNodeClassSpec.kubelet_configuration:type_name -> api.v1.KubeletConfiguration
+ 622, // 456: api.v1.GCPNodeClassSpec.labels:type_name -> api.v1.GCPNodeClassSpec.LabelsEntry
+ 623, // 457: api.v1.GCPNodeClassSpec.metadata:type_name -> api.v1.GCPNodeClassSpec.MetadataEntry
+ 354, // 458: api.v1.GCPNodeClassSpec.disks:type_name -> api.v1.GCPDisk
+ 624, // 459: api.v1.AzureNodeClassSpec.tags:type_name -> api.v1.AzureNodeClassSpec.TagsEntry
+ 356, // 460: api.v1.AzureNodeClassSpec.kubelet:type_name -> api.v1.AzureKubeletConfiguration
+ 357, // 461: api.v1.OCINodeClassSpec.image_selector:type_name -> api.v1.OCIImageSelectorTerm
+ 358, // 462: api.v1.OCINodeClassSpec.subnet_selector:type_name -> api.v1.OCISubnetSelectorTerm
+ 359, // 463: api.v1.OCINodeClassSpec.security_group_selector:type_name -> api.v1.OCISecurityGroupSelectorTerm
+ 625, // 464: api.v1.OCINodeClassSpec.meta_data:type_name -> api.v1.OCINodeClassSpec.MetaDataEntry
+ 626, // 465: api.v1.OCINodeClassSpec.tags:type_name -> api.v1.OCINodeClassSpec.TagsEntry
+ 627, // 466: api.v1.OCINodeClassSpec.free_form_tags:type_name -> api.v1.OCINodeClassSpec.FreeFormTagsEntry
+ 360, // 467: api.v1.OCINodeClassSpec.boot_config:type_name -> api.v1.OCIBootConfig
+ 361, // 468: api.v1.OCINodeClassSpec.launch_options:type_name -> api.v1.OCILaunchOptions
+ 362, // 469: api.v1.OCINodeClassSpec.block_devices:type_name -> api.v1.OCIVolumeAttributes
+ 369, // 470: api.v1.SnapshotCRStatusReport.resources:type_name -> api.v1.SnapshotCRStatus
+ 628, // 471: api.v1.SnapshotCRStatus.annotations:type_name -> api.v1.SnapshotCRStatus.AnnotationsEntry
+ 637, // 472: api.v1.SnapshotCRRuntimeStatus.last_activity_time:type_name -> google.protobuf.Timestamp
+ 637, // 473: api.v1.SnapshotCRRuntimeStatus.start_time:type_name -> google.protobuf.Timestamp
+ 637, // 474: api.v1.SnapshotCRRuntimeStatus.completion_time:type_name -> google.protobuf.Timestamp
+ 637, // 475: api.v1.SnapshotCRRuntimeStatus.observed_at:type_name -> google.protobuf.Timestamp
+ 370, // 476: api.v1.SnapshotPolicyTargetStatus.resources:type_name -> api.v1.SnapshotCRRuntimeStatus
+ 374, // 477: api.v1.NodeRecommendation.aws:type_name -> api.v1.AWSKarpenterSpec
+ 375, // 478: api.v1.NodeRecommendation.aks:type_name -> api.v1.AKSKarpenterSpec
+ 379, // 479: api.v1.NodeRecommendation.gcp:type_name -> api.v1.GCPKarpenterSpec
+ 381, // 480: api.v1.NodeRecommendation.oci:type_name -> api.v1.OCIKarpenterSpec
+ 376, // 481: api.v1.AWSKarpenterSpec.np:type_name -> api.v1.NodePool
+ 377, // 482: api.v1.AWSKarpenterSpec.ec2nc:type_name -> api.v1.EC2NodeClass
+ 376, // 483: api.v1.AKSKarpenterSpec.np:type_name -> api.v1.NodePool
+ 378, // 484: api.v1.AKSKarpenterSpec.aksnc:type_name -> api.v1.AKSNodeClass
+ 376, // 485: api.v1.GCPKarpenterSpec.np:type_name -> api.v1.NodePool
+ 380, // 486: api.v1.GCPKarpenterSpec.node_classes:type_name -> api.v1.GCENodeClass
+ 376, // 487: api.v1.OCIKarpenterSpec.np:type_name -> api.v1.NodePool
+ 382, // 488: api.v1.OCIKarpenterSpec.node_classes:type_name -> api.v1.OCINodeClass
+ 18, // 489: api.v1.StorageRecommendationPolicy.action_trigger:type_name -> api.v1.ActionTrigger
+ 18, // 490: api.v1.StorageRecommendationPolicy.action_triggers:type_name -> api.v1.ActionTrigger
+ 637, // 491: api.v1.StorageRecommendationPolicy.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 492: api.v1.StorageRecommendationPolicy.updated_at:type_name -> google.protobuf.Timestamp
+ 18, // 493: api.v1.CreateStorageRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 383, // 494: api.v1.CreateStorageRecommendationPolicyResponse.policy:type_name -> api.v1.StorageRecommendationPolicy
+ 383, // 495: api.v1.GetStorageRecommendationPolicyResponse.policy:type_name -> api.v1.StorageRecommendationPolicy
+ 383, // 496: api.v1.ListStorageRecommendationPoliciesResponse.policies:type_name -> api.v1.StorageRecommendationPolicy
+ 18, // 497: api.v1.UpdateStorageRecommendationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 383, // 498: api.v1.UpdateStorageRecommendationPolicyResponse.policy:type_name -> api.v1.StorageRecommendationPolicy
+ 641, // 499: api.v1.StoragePolicyTarget.namespace_selector:type_name -> api.v1.LabelSelector
+ 637, // 500: api.v1.StoragePolicyTarget.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 501: api.v1.StoragePolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
+ 641, // 502: api.v1.CreateStoragePolicyTargetRequest.namespace_selector:type_name -> api.v1.LabelSelector
+ 394, // 503: api.v1.CreateStoragePolicyTargetResponse.target:type_name -> api.v1.StoragePolicyTarget
+ 394, // 504: api.v1.ListStoragePolicyTargetsResponse.targets:type_name -> api.v1.StoragePolicyTarget
+ 394, // 505: api.v1.UpdateStoragePolicyTargetRequest.target:type_name -> api.v1.StoragePolicyTarget
+ 394, // 506: api.v1.UpdateStoragePolicyTargetResponse.target:type_name -> api.v1.StoragePolicyTarget
+ 9, // 507: api.v1.PvcStorageRecommendation.status:type_name -> api.v1.RecommendationStatus
+ 637, // 508: api.v1.PvcStorageRecommendation.timestamp:type_name -> google.protobuf.Timestamp
+ 637, // 509: api.v1.PvcStorageRecommendation.applied_at:type_name -> google.protobuf.Timestamp
+ 637, // 510: api.v1.PvcStorageRecommendation.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 511: api.v1.PvcStorageRecommendation.updated_at:type_name -> google.protobuf.Timestamp
+ 25, // 512: api.v1.PvcStorageRecommendation.operation_type:type_name -> api.v1.PvcOperationType
+ 403, // 513: api.v1.GetPvcStorageRecommendationResponse.recommendation:type_name -> api.v1.PvcStorageRecommendation
+ 639, // 514: api.v1.ListPvcStorageRecommendationsRequest.pagination:type_name -> api.v1.Pagination
+ 403, // 515: api.v1.ListPvcStorageRecommendationsResponse.recommendations:type_name -> api.v1.PvcStorageRecommendation
+ 639, // 516: api.v1.ListPvcStorageRecommendationsResponse.pagination:type_name -> api.v1.Pagination
+ 403, // 517: api.v1.GeneratePvcStorageRecommendationResponse.recommendation:type_name -> api.v1.PvcStorageRecommendation
+ 403, // 518: api.v1.PreviewPvcStorageRecommendationResponse.recommendation:type_name -> api.v1.PvcStorageRecommendation
+ 637, // 519: api.v1.WorkloadRuleOOMEvent.timestamp:type_name -> google.protobuf.Timestamp
+ 637, // 520: api.v1.WorkloadRuleOOMEvent.created_at:type_name -> google.protobuf.Timestamp
+ 412, // 521: api.v1.ListWorkloadRuleOOMEventsResponse.events:type_name -> api.v1.WorkloadRuleOOMEvent
+ 412, // 522: api.v1.ListWorkloadOOMEventsResponse.events:type_name -> api.v1.WorkloadRuleOOMEvent
+ 637, // 523: api.v1.WorkloadRuleCPUThrottleEvent.timestamp:type_name -> google.protobuf.Timestamp
+ 637, // 524: api.v1.WorkloadRuleCPUThrottleEvent.created_at:type_name -> google.protobuf.Timestamp
+ 417, // 525: api.v1.ListWorkloadRuleCPUThrottleEventsResponse.events:type_name -> api.v1.WorkloadRuleCPUThrottleEvent
+ 417, // 526: api.v1.ListWorkloadCPUThrottleEventsResponse.events:type_name -> api.v1.WorkloadRuleCPUThrottleEvent
+ 422, // 527: api.v1.WorkloadOptimizationPolicyProto.namespace_selector:type_name -> api.v1.StringSetSelector
+ 637, // 528: api.v1.WorkloadOptimizationPolicyProto.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 529: api.v1.WorkloadOptimizationPolicyProto.updated_at:type_name -> google.protobuf.Timestamp
+ 629, // 530: api.v1.WorkloadOptimizationPolicyProto.cluster_names:type_name -> api.v1.WorkloadOptimizationPolicyProto.ClusterNamesEntry
+ 18, // 531: api.v1.WorkloadOptimizationPolicyProto.action_triggers:type_name -> api.v1.ActionTrigger
+ 19, // 532: api.v1.WorkloadOptimizationPolicyProto.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
+ 422, // 533: api.v1.WorkloadOptimizationPolicyProto.kind_selector:type_name -> api.v1.StringSetSelector
+ 641, // 534: api.v1.WorkloadOptimizationPolicyProto.label_selector:type_name -> api.v1.LabelSelector
+ 642, // 535: api.v1.WorkloadOptimizationPolicyProto.name_pattern:type_name -> api.v1.RegexPattern
+ 642, // 536: api.v1.WorkloadOptimizationPolicyProto.namespace_pattern:type_name -> api.v1.RegexPattern
+ 137, // 537: api.v1.WorkloadOptimizationPolicyProto.cpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 538: api.v1.WorkloadOptimizationPolicyProto.memory_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 539: api.v1.WorkloadOptimizationPolicyProto.gpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 143, // 540: api.v1.WorkloadOptimizationPolicyProto.hpa_rule:type_name -> api.v1.HPARuleConfig
+ 142, // 541: api.v1.WorkloadOptimizationPolicyProto.jvm_heap_rule:type_name -> api.v1.JVMHeapRuleConfig
+ 144, // 542: api.v1.WorkloadOptimizationPolicyProto.emergency_response:type_name -> api.v1.EmergencyResponseConfig
+ 137, // 543: api.v1.GenericOptimizationSettings.cpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 544: api.v1.GenericOptimizationSettings.memory_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 545: api.v1.GenericOptimizationSettings.gpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 143, // 546: api.v1.GenericOptimizationSettings.hpa_rule:type_name -> api.v1.HPARuleConfig
+ 142, // 547: api.v1.GenericOptimizationSettings.jvm_heap_rule:type_name -> api.v1.JVMHeapRuleConfig
+ 144, // 548: api.v1.GenericOptimizationSettings.emergency_response:type_name -> api.v1.EmergencyResponseConfig
+ 422, // 549: api.v1.CreateWorkloadOptimizationPolicyRequest.namespace_selector:type_name -> api.v1.StringSetSelector
+ 18, // 550: api.v1.CreateWorkloadOptimizationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 19, // 551: api.v1.CreateWorkloadOptimizationPolicyRequest.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
+ 422, // 552: api.v1.CreateWorkloadOptimizationPolicyRequest.kind_selector:type_name -> api.v1.StringSetSelector
+ 641, // 553: api.v1.CreateWorkloadOptimizationPolicyRequest.label_selector:type_name -> api.v1.LabelSelector
+ 642, // 554: api.v1.CreateWorkloadOptimizationPolicyRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 642, // 555: api.v1.CreateWorkloadOptimizationPolicyRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 424, // 556: api.v1.CreateWorkloadOptimizationPolicyRequest.settings:type_name -> api.v1.GenericOptimizationSettings
+ 423, // 557: api.v1.CreateWorkloadOptimizationPolicyResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
+ 423, // 558: api.v1.ListWorkloadOptimizationPoliciesResponse.policies:type_name -> api.v1.WorkloadOptimizationPolicyProto
+ 423, // 559: api.v1.GetWorkloadOptimizationPolicyResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
+ 423, // 560: api.v1.GetWorkloadOptimizationPolicyByWorkloadResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
+ 422, // 561: api.v1.UpdateWorkloadOptimizationPolicyRequest.namespace_selector:type_name -> api.v1.StringSetSelector
+ 18, // 562: api.v1.UpdateWorkloadOptimizationPolicyRequest.action_triggers:type_name -> api.v1.ActionTrigger
+ 19, // 563: api.v1.UpdateWorkloadOptimizationPolicyRequest.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
+ 422, // 564: api.v1.UpdateWorkloadOptimizationPolicyRequest.kind_selector:type_name -> api.v1.StringSetSelector
+ 641, // 565: api.v1.UpdateWorkloadOptimizationPolicyRequest.label_selector:type_name -> api.v1.LabelSelector
+ 642, // 566: api.v1.UpdateWorkloadOptimizationPolicyRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 642, // 567: api.v1.UpdateWorkloadOptimizationPolicyRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 424, // 568: api.v1.UpdateWorkloadOptimizationPolicyRequest.settings:type_name -> api.v1.GenericOptimizationSettings
+ 26, // 569: api.v1.ToggleWorkloadOptimizationPolicyDisabledRequest.rule_action:type_name -> api.v1.WorkloadRuleAction
+ 423, // 570: api.v1.ToggleWorkloadOptimizationPolicyDisabledResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
+ 423, // 571: api.v1.UpdateWorkloadOptimizationPolicyResponse.policy:type_name -> api.v1.WorkloadOptimizationPolicyProto
+ 26, // 572: api.v1.DeleteWorkloadOptimizationPolicyRequest.rule_action:type_name -> api.v1.WorkloadRuleAction
+ 422, // 573: api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest.namespace_selector:type_name -> api.v1.StringSetSelector
+ 422, // 574: api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest.kind_selector:type_name -> api.v1.StringSetSelector
+ 641, // 575: api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest.label_selector:type_name -> api.v1.LabelSelector
+ 642, // 576: api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest.name_pattern:type_name -> api.v1.RegexPattern
+ 642, // 577: api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest.namespace_pattern:type_name -> api.v1.RegexPattern
+ 27, // 578: api.v1.WorkloadOptimizationPolicyMatch.status:type_name -> api.v1.WorkloadOptimizationPolicyMatchStatus
+ 440, // 579: api.v1.PreviewWorkloadOptimizationPolicyMatchesResponse.matched_workloads:type_name -> api.v1.WorkloadOptimizationPolicyMatch
+ 422, // 580: api.v1.SchedulerPolicyTargetProto.namespace_selector:type_name -> api.v1.StringSetSelector
+ 422, // 581: api.v1.SchedulerPolicyTargetProto.kind_selector:type_name -> api.v1.StringSetSelector
+ 641, // 582: api.v1.SchedulerPolicyTargetProto.label_selector:type_name -> api.v1.LabelSelector
+ 642, // 583: api.v1.SchedulerPolicyTargetProto.name_pattern:type_name -> api.v1.RegexPattern
+ 642, // 584: api.v1.SchedulerPolicyTargetProto.namespace_pattern:type_name -> api.v1.RegexPattern
+ 442, // 585: api.v1.SchedulerPolicyProto.targets:type_name -> api.v1.SchedulerPolicyTargetProto
+ 637, // 586: api.v1.SchedulerPolicyProto.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 587: api.v1.SchedulerPolicyProto.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 588: api.v1.SchedulerPolicyProto.delete_requested_at:type_name -> google.protobuf.Timestamp
+ 630, // 589: api.v1.SchedulerPolicyProto.cluster_names:type_name -> api.v1.SchedulerPolicyProto.ClusterNamesEntry
+ 442, // 590: api.v1.CreateSchedulerPolicyRequest.targets:type_name -> api.v1.SchedulerPolicyTargetProto
+ 443, // 591: api.v1.CreateSchedulerPolicyResponse.policy:type_name -> api.v1.SchedulerPolicyProto
+ 443, // 592: api.v1.ListSchedulerPoliciesResponse.policies:type_name -> api.v1.SchedulerPolicyProto
+ 442, // 593: api.v1.UpdateSchedulerPolicyRequest.targets:type_name -> api.v1.SchedulerPolicyTargetProto
+ 443, // 594: api.v1.UpdateSchedulerPolicyResponse.policy:type_name -> api.v1.SchedulerPolicyProto
+ 443, // 595: api.v1.ToggleSchedulerPolicyDisabledResponse.policy:type_name -> api.v1.SchedulerPolicyProto
+ 32, // 596: api.v1.DeleteSchedulerPolicyResponse.outcome:type_name -> api.v1.DeleteSchedulerPolicyResponse.Outcome
+ 442, // 597: api.v1.PreviewSchedulerPolicyTargetsRequest.targets:type_name -> api.v1.SchedulerPolicyTargetProto
+ 33, // 598: api.v1.SchedulerPolicyTargetMatch.status:type_name -> api.v1.SchedulerPolicyTargetMatch.Status
+ 455, // 599: api.v1.PreviewSchedulerPolicyTargetsResponse.matched_workloads:type_name -> api.v1.SchedulerPolicyTargetMatch
+ 34, // 600: api.v1.SchedulerPolicyEnrollment.state:type_name -> api.v1.SchedulerPolicyEnrollment.State
+ 637, // 601: api.v1.SchedulerPolicyEnrollment.enrolled_at:type_name -> google.protobuf.Timestamp
+ 637, // 602: api.v1.SchedulerPolicyEnrollment.unenrolled_at:type_name -> google.protobuf.Timestamp
+ 458, // 603: api.v1.ListSchedulerPolicyEnrollmentsResponse.enrollments:type_name -> api.v1.SchedulerPolicyEnrollment
+ 631, // 604: api.v1.ListSchedulerPolicyEnrollmentsResponse.cluster_names:type_name -> api.v1.ListSchedulerPolicyEnrollmentsResponse.ClusterNamesEntry
+ 443, // 605: api.v1.SchedulerPolicySync.policies:type_name -> api.v1.SchedulerPolicyProto
+ 462, // 606: api.v1.SchedulerPolicySync.reverts:type_name -> api.v1.SchedulerRevertInstruction
+ 461, // 607: api.v1.SchedulerPolicySync.scheduler_settings:type_name -> api.v1.SchedulerConfigPayload
+ 637, // 608: api.v1.SchedulerConfigPayload.updated_at:type_name -> google.protobuf.Timestamp
+ 632, // 609: api.v1.SchedulerEnrollmentReport.observations:type_name -> api.v1.SchedulerEnrollmentReport.Observation
+ 633, // 610: api.v1.SchedulerRevertEventReport.events:type_name -> api.v1.SchedulerRevertEventReport.Event
+ 136, // 611: api.v1.GetWorkloadRulesByPolicyResponse.managed_rules:type_name -> api.v1.WorkloadRule
+ 136, // 612: api.v1.GetWorkloadRulesByPolicyResponse.excluded_rules:type_name -> api.v1.WorkloadRule
+ 634, // 613: api.v1.GetWorkloadRulesByPolicyResponse.cluster_names:type_name -> api.v1.GetWorkloadRulesByPolicyResponse.ClusterNamesEntry
+ 136, // 614: api.v1.ListWorkloadRulesResponse.rules:type_name -> api.v1.WorkloadRule
+ 635, // 615: api.v1.ListWorkloadRulesResponse.cluster_names:type_name -> api.v1.ListWorkloadRulesResponse.ClusterNamesEntry
+ 636, // 616: api.v1.ListWorkloadRulesResponse.policy_names:type_name -> api.v1.ListWorkloadRulesResponse.PolicyNamesEntry
+ 136, // 617: api.v1.GetWorkloadRuleByIDResponse.rule:type_name -> api.v1.WorkloadRule
+ 136, // 618: api.v1.GetWorkloadRuleByWorkloadResponse.rule:type_name -> api.v1.WorkloadRule
+ 206, // 619: api.v1.DeleteRuleAndApplyRecommendationRequest.workload_recommendation:type_name -> api.v1.WorkloadRecommendation
+ 137, // 620: api.v1.ManualRuleFields.cpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 621: api.v1.ManualRuleFields.memory_rule:type_name -> api.v1.ResourceRuleConfig
+ 137, // 622: api.v1.ManualRuleFields.gpu_rule:type_name -> api.v1.ResourceRuleConfig
+ 143, // 623: api.v1.ManualRuleFields.hpa_rule:type_name -> api.v1.HPARuleConfig
+ 144, // 624: api.v1.ManualRuleFields.emergency_response:type_name -> api.v1.EmergencyResponseConfig
+ 18, // 625: api.v1.ManualRuleFields.action_triggers:type_name -> api.v1.ActionTrigger
+ 19, // 626: api.v1.ManualRuleFields.detection_triggers:type_name -> api.v1.WorkloadDetectionTrigger
+ 141, // 627: api.v1.ManualRuleFields.containers:type_name -> api.v1.ContainerResourceRuleConfig
+ 142, // 628: api.v1.ManualRuleFields.jvm_heap_rule:type_name -> api.v1.JVMHeapRuleConfig
+ 145, // 629: api.v1.ManualRuleFields.keda_scaled_object:type_name -> api.v1.KEDAScaledObjectTemplate
+ 485, // 630: api.v1.UpsertManualWorkloadRuleRequest.fields:type_name -> api.v1.ManualRuleFields
+ 29, // 631: api.v1.UpsertManualWorkloadRuleRequest.source:type_name -> api.v1.WorkloadRuleSource
+ 136, // 632: api.v1.UpsertManualWorkloadRuleResponse.rule:type_name -> api.v1.WorkloadRule
+ 136, // 633: api.v1.ToggleWorkloadRuleDisabledResponse.rule:type_name -> api.v1.WorkloadRule
+ 485, // 634: api.v1.PreviewWorkloadRuleRequest.fields:type_name -> api.v1.ManualRuleFields
+ 136, // 635: api.v1.PreviewWorkloadRuleResponse.materialized_rule:type_name -> api.v1.WorkloadRule
+ 136, // 636: api.v1.PreviewWorkloadRuleResponse.engine_projection:type_name -> api.v1.WorkloadRule
+ 653, // 637: api.v1.PreviewWorkloadRuleResponse.profile:type_name -> api.v1.WorkloadProfileResult
+ 136, // 638: api.v1.PreviewWorkloadRuleResponse.db_rule:type_name -> api.v1.WorkloadRule
+ 494, // 639: api.v1.BatchAutoOptimizeWorkloadsRequest.workloads:type_name -> api.v1.BatchAutoOptimizeWorkload
+ 136, // 640: api.v1.BatchAutoOptimizeWorkloadResult.rule:type_name -> api.v1.WorkloadRule
+ 496, // 641: api.v1.BatchAutoOptimizeWorkloadsResponse.results:type_name -> api.v1.BatchAutoOptimizeWorkloadResult
+ 498, // 642: api.v1.BatchUpsertManualWorkloadRulesRequest.workloads:type_name -> api.v1.BatchWorkloadEntry
+ 485, // 643: api.v1.BatchUpsertManualWorkloadRulesRequest.fields:type_name -> api.v1.ManualRuleFields
+ 29, // 644: api.v1.BatchUpsertManualWorkloadRulesRequest.source:type_name -> api.v1.WorkloadRuleSource
+ 136, // 645: api.v1.BatchUpsertManualWorkloadRuleResult.rule:type_name -> api.v1.WorkloadRule
+ 500, // 646: api.v1.BatchUpsertManualWorkloadRulesResponse.results:type_name -> api.v1.BatchUpsertManualWorkloadRuleResult
+ 498, // 647: api.v1.BatchPreviewWorkloadRulesRequest.workloads:type_name -> api.v1.BatchWorkloadEntry
+ 485, // 648: api.v1.BatchPreviewWorkloadRulesRequest.fields:type_name -> api.v1.ManualRuleFields
+ 136, // 649: api.v1.BatchPreviewWorkloadRuleResult.materialized_rule:type_name -> api.v1.WorkloadRule
+ 136, // 650: api.v1.BatchPreviewWorkloadRuleResult.engine_projection:type_name -> api.v1.WorkloadRule
+ 653, // 651: api.v1.BatchPreviewWorkloadRuleResult.profile:type_name -> api.v1.WorkloadProfileResult
+ 503, // 652: api.v1.BatchPreviewWorkloadRulesResponse.results:type_name -> api.v1.BatchPreviewWorkloadRuleResult
+ 652, // 653: api.v1.WorkloadProfileManifest.window:type_name -> api.v1.ProfileWindow
+ 654, // 654: api.v1.WorkloadProfileManifest.keys:type_name -> api.v1.ProfileKey
+ 637, // 655: api.v1.WorkloadProfileManifest.issued_at:type_name -> google.protobuf.Timestamp
+ 652, // 656: api.v1.BatchWorkloadProfiles.window:type_name -> api.v1.ProfileWindow
+ 655, // 657: api.v1.BatchWorkloadProfiles.profiles:type_name -> api.v1.WorkloadProfileSnapshot
+ 637, // 658: api.v1.NodeConfigApplyEvent.applied_at:type_name -> google.protobuf.Timestamp
+ 289, // 659: api.v1.GetNodeRecommendationStatusResponse.current_config:type_name -> api.v1.NodeRecommendationConfig
+ 509, // 660: api.v1.GetNodeRecommendationStatusResponse.history:type_name -> api.v1.NodeConfigApplyEvent
+ 516, // 661: api.v1.GetCheckpointApplyStatusResponse.failures:type_name -> api.v1.NodeApplyFailure
+ 518, // 662: api.v1.GetClusterCheckpointLabelCoverageResponse.groups:type_name -> api.v1.NodeGroupCheckpointLabelCoverage
+ 30, // 663: api.v1.NodeCheckpointLabelEntry.last_apply_state:type_name -> api.v1.NodeCheckpointLabelState
+ 521, // 664: api.v1.ListNodeGroupCheckpointLabelStateResponse.nodes:type_name -> api.v1.NodeCheckpointLabelEntry
+ 523, // 665: api.v1.SnapshotResourceThreshold.cpu_percent:type_name -> api.v1.SnapshotPercentBounds
+ 523, // 666: api.v1.SnapshotResourceThreshold.memory_percent:type_name -> api.v1.SnapshotPercentBounds
+ 524, // 667: api.v1.SnapshotSchedulePolicySpec.resource_threshold:type_name -> api.v1.SnapshotResourceThreshold
+ 526, // 668: api.v1.SnapshotRetentionPolicySpec.global_retention:type_name -> api.v1.SnapshotGlobalRetention
+ 527, // 669: api.v1.SnapshotRetentionPolicySpec.container_policies:type_name -> api.v1.SnapshotContainerRetentionPolicy
+ 528, // 670: api.v1.SnapshotRetentionPolicySpec.pod_policies:type_name -> api.v1.SnapshotPodRetentionPolicy
+ 529, // 671: api.v1.SnapshotRetentionPolicySpec.namespace_policies:type_name -> api.v1.SnapshotNamespaceRetentionPolicy
+ 525, // 672: api.v1.SnapshotPolicy.schedule:type_name -> api.v1.SnapshotSchedulePolicySpec
+ 530, // 673: api.v1.SnapshotPolicy.retention:type_name -> api.v1.SnapshotRetentionPolicySpec
+ 637, // 674: api.v1.SnapshotPolicy.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 675: api.v1.SnapshotPolicy.updated_at:type_name -> google.protobuf.Timestamp
+ 31, // 676: api.v1.ForensicSnapshotPolicy.post_snapshot_action:type_name -> api.v1.ForensicPostSnapshotAction
+ 637, // 677: api.v1.ForensicSnapshotPolicy.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 678: api.v1.ForensicSnapshotPolicy.updated_at:type_name -> google.protobuf.Timestamp
+ 641, // 679: api.v1.SnapshotTargetScope.namespace_selector:type_name -> api.v1.LabelSelector
+ 642, // 680: api.v1.SnapshotTargetScope.namespace_pattern:type_name -> api.v1.RegexPattern
+ 641, // 681: api.v1.SnapshotTargetScope.workload_selector:type_name -> api.v1.LabelSelector
+ 641, // 682: api.v1.SnapshotTargetScope.annotation_selector:type_name -> api.v1.LabelSelector
+ 642, // 683: api.v1.SnapshotTargetScope.name_pattern:type_name -> api.v1.RegexPattern
+ 640, // 684: api.v1.SnapshotTargetScope.kind_filter:type_name -> api.v1.K8sObjectKind
+ 641, // 685: api.v1.SnapshotTargetScope.pod_selector:type_name -> api.v1.LabelSelector
+ 533, // 686: api.v1.SnapshotPolicyTarget.scope:type_name -> api.v1.SnapshotTargetScope
+ 637, // 687: api.v1.SnapshotPolicyTarget.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 688: api.v1.SnapshotPolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
+ 371, // 689: api.v1.SnapshotPolicyTarget.status:type_name -> api.v1.SnapshotPolicyTargetStatus
+ 533, // 690: api.v1.ForensicSnapshotPolicyTarget.scope:type_name -> api.v1.SnapshotTargetScope
+ 637, // 691: api.v1.ForensicSnapshotPolicyTarget.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 692: api.v1.ForensicSnapshotPolicyTarget.updated_at:type_name -> google.protobuf.Timestamp
+ 371, // 693: api.v1.ForensicSnapshotPolicyTarget.status:type_name -> api.v1.SnapshotPolicyTargetStatus
+ 531, // 694: api.v1.CreateSnapshotPoliciesRequest.policies:type_name -> api.v1.SnapshotPolicy
+ 531, // 695: api.v1.CreateSnapshotPoliciesResponse.policies:type_name -> api.v1.SnapshotPolicy
+ 531, // 696: api.v1.ListSnapshotPoliciesResponse.policies:type_name -> api.v1.SnapshotPolicy
+ 531, // 697: api.v1.UpdateSnapshotPolicyRequest.policy:type_name -> api.v1.SnapshotPolicy
+ 531, // 698: api.v1.UpdateSnapshotPolicyResponse.policy:type_name -> api.v1.SnapshotPolicy
+ 534, // 699: api.v1.CreateSnapshotPolicyTargetsRequest.targets:type_name -> api.v1.SnapshotPolicyTarget
+ 534, // 700: api.v1.CreateSnapshotPolicyTargetsResponse.targets:type_name -> api.v1.SnapshotPolicyTarget
+ 534, // 701: api.v1.ListSnapshotPolicyTargetsResponse.targets:type_name -> api.v1.SnapshotPolicyTarget
+ 534, // 702: api.v1.UpdateSnapshotPolicyTargetRequest.target:type_name -> api.v1.SnapshotPolicyTarget
+ 534, // 703: api.v1.UpdateSnapshotPolicyTargetResponse.target:type_name -> api.v1.SnapshotPolicyTarget
+ 532, // 704: api.v1.CreateForensicSnapshotPoliciesRequest.policies:type_name -> api.v1.ForensicSnapshotPolicy
+ 532, // 705: api.v1.CreateForensicSnapshotPoliciesResponse.policies:type_name -> api.v1.ForensicSnapshotPolicy
+ 532, // 706: api.v1.ListForensicSnapshotPoliciesResponse.policies:type_name -> api.v1.ForensicSnapshotPolicy
+ 532, // 707: api.v1.UpdateForensicSnapshotPolicyRequest.policy:type_name -> api.v1.ForensicSnapshotPolicy
+ 532, // 708: api.v1.UpdateForensicSnapshotPolicyResponse.policy:type_name -> api.v1.ForensicSnapshotPolicy
+ 535, // 709: api.v1.CreateForensicSnapshotPolicyTargetsRequest.targets:type_name -> api.v1.ForensicSnapshotPolicyTarget
+ 535, // 710: api.v1.CreateForensicSnapshotPolicyTargetsResponse.targets:type_name -> api.v1.ForensicSnapshotPolicyTarget
+ 535, // 711: api.v1.ListForensicSnapshotPolicyTargetsResponse.targets:type_name -> api.v1.ForensicSnapshotPolicyTarget
+ 535, // 712: api.v1.UpdateForensicSnapshotPolicyTargetRequest.target:type_name -> api.v1.ForensicSnapshotPolicyTarget
+ 535, // 713: api.v1.UpdateForensicSnapshotPolicyTargetResponse.target:type_name -> api.v1.ForensicSnapshotPolicyTarget
+ 640, // 714: api.v1.SnapshotResolvedWorkload.kind:type_name -> api.v1.K8sObjectKind
+ 641, // 715: api.v1.SnapshotResolvedWorkload.pod_selector:type_name -> api.v1.LabelSelector
+ 570, // 716: api.v1.SnapshotResolvedNamespace.workloads:type_name -> api.v1.SnapshotResolvedWorkload
+ 571, // 717: api.v1.SnapshotClusterScopePreview.namespaces:type_name -> api.v1.SnapshotResolvedNamespace
+ 533, // 718: api.v1.PreviewSnapshotPolicyTargetMatchesRequest.scope:type_name -> api.v1.SnapshotTargetScope
+ 572, // 719: api.v1.PreviewSnapshotPolicyTargetMatchesResponse.clusters:type_name -> api.v1.SnapshotClusterScopePreview
+ 533, // 720: api.v1.PreviewForensicSnapshotPolicyTargetMatchesRequest.scope:type_name -> api.v1.SnapshotTargetScope
+ 572, // 721: api.v1.PreviewForensicSnapshotPolicyTargetMatchesResponse.clusters:type_name -> api.v1.SnapshotClusterScopePreview
+ 575, // 722: api.v1.PreviewForensicSnapshotPolicyTargetMatchesResponse.overlaps:type_name -> api.v1.ForensicTargetOverlap
+ 641, // 723: api.v1.SnapshotRenderedScopeRow.pod_selector:type_name -> api.v1.LabelSelector
+ 570, // 724: api.v1.SnapshotRenderedScopeRow.workloads:type_name -> api.v1.SnapshotResolvedWorkload
+ 637, // 725: api.v1.SnapshotRenderedScopeRow.updated_at:type_name -> google.protobuf.Timestamp
+ 578, // 726: api.v1.GetSnapshotPolicyTargetRenderedScopeResponse.rows:type_name -> api.v1.SnapshotRenderedScopeRow
+ 578, // 727: api.v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse.rows:type_name -> api.v1.SnapshotRenderedScopeRow
+ 637, // 728: api.v1.SnapshotConfigInfo.created_at:type_name -> google.protobuf.Timestamp
+ 637, // 729: api.v1.SnapshotConfigInfo.updated_at:type_name -> google.protobuf.Timestamp
+ 637, // 730: api.v1.SnapshotConfigApplyEventInfo.applied_at:type_name -> google.protobuf.Timestamp
+ 637, // 731: api.v1.SnapshotConfigApplyEventInfo.created_at:type_name -> google.protobuf.Timestamp
+ 583, // 732: api.v1.GetSnapshotRecommendationStatusResponse.current_config:type_name -> api.v1.SnapshotConfigInfo
+ 584, // 733: api.v1.GetSnapshotRecommendationStatusResponse.events:type_name -> api.v1.SnapshotConfigApplyEventInfo
+ 370, // 734: api.v1.GetSnapshotRecommendationStatusResponse.runtime:type_name -> api.v1.SnapshotCRRuntimeStatus
+ 372, // 735: api.v1.GetSnapshotRecommendationStatusResponse.prereqs:type_name -> api.v1.SnapshotPrereqs
+ 583, // 736: api.v1.GetForensicSnapshotRecommendationStatusResponse.current_config:type_name -> api.v1.SnapshotConfigInfo
+ 584, // 737: api.v1.GetForensicSnapshotRecommendationStatusResponse.events:type_name -> api.v1.SnapshotConfigApplyEventInfo
+ 370, // 738: api.v1.GetForensicSnapshotRecommendationStatusResponse.runtime:type_name -> api.v1.SnapshotCRRuntimeStatus
+ 594, // 739: api.v1.ListReferencedAuthenticationsResponse.authentications:type_name -> api.v1.ReferencedAuthentication
+ 66, // 740: api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse.WorkloadTargetMapEntry.value:type_name -> api.v1.TargetIdList
+ 114, // 741: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.WorkloadPercentilesEntry.value:type_name -> api.v1.WorkloadPercentileSummary
+ 112, // 742: api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse.CollisionsByWorkloadUidEntry.value:type_name -> api.v1.WorkloadCollisionInfo
+ 176, // 743: api.v1.AgentHealth.NodeNameToAgentEntry.value:type_name -> api.v1.AgentHealthMeta
+ 221, // 744: api.v1.GetAttachedWorkloadPoliciesResponse.PolicyIdToMatchedTargetsEntry.value:type_name -> api.v1.WorkloadPolicyTargetGroup
+ 196, // 745: api.v1.ListAttachedWorkloadPoliciesResponse.PolicyMapEntry.value:type_name -> api.v1.WorkloadRecommendationPolicy
+ 643, // 746: api.v1.ListAttachedWorkloadPoliciesResponse.WorkloadMapEntry.value:type_name -> api.v1.WorkloadItem
+ 193, // 747: api.v1.ListAttachedNodeGroupPoliciesResponse.PolicyMapEntry.value:type_name -> api.v1.NodeGroupRecommendationPolicy
+ 228, // 748: api.v1.ListAttachedNodeGroupPoliciesResponse.NodeGroupMapEntry.value:type_name -> api.v1.NodeGroupItem
+ 279, // 749: api.v1.GetNodeGroupsCheckpointStatusResponse.ByNodeGroupEntry.value:type_name -> api.v1.NodeGroupCheckpointStatus
+ 289, // 750: api.v1.SuggestedKarpenterConfigResponse.NgToOriginalEntry.value:type_name -> api.v1.NodeRecommendationConfig
+ 289, // 751: api.v1.SuggestedKarpenterConfigResponse.NgToSuggestedEntry.value:type_name -> api.v1.NodeRecommendationConfig
+ 28, // 752: api.v1.SchedulerRevertEventReport.Event.reason:type_name -> api.v1.SchedulerUnhealthyReason
+ 637, // 753: api.v1.SchedulerRevertEventReport.Event.occurred_at:type_name -> google.protobuf.Timestamp
+ 39, // 754: api.v1.K8sRecommendationService.GetNodeGroupStats:input_type -> api.v1.GetNodeGroupStatsRequest
+ 43, // 755: api.v1.K8sRecommendationService.GetLatestNodeGroupRecommendation:input_type -> api.v1.GetLatestNodeGroupRecommendationRequest
+ 45, // 756: api.v1.K8sRecommendationService.GetLatestWorkloadRecommendation:input_type -> api.v1.GetLatestWorkloadRecommendationRequest
+ 47, // 757: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendation:input_type -> api.v1.GetPreviewWorkloadRecommendationRequest
+ 49, // 758: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendations:input_type -> api.v1.GetPreviewWorkloadRecommendationsRequest
+ 37, // 759: api.v1.K8sRecommendationService.GetRecommendationsForWorkload:input_type -> api.v1.GetRecommendationsForWorkloadRequest
+ 35, // 760: api.v1.K8sRecommendationService.GetRecommendations:input_type -> api.v1.GetRecommendationsRequest
+ 67, // 761: api.v1.K8sRecommendationService.CreateNodeGroupRecommendationPolicy:input_type -> api.v1.CreateNodeGroupRecommendationPolicyRequest
+ 69, // 762: api.v1.K8sRecommendationService.GetNodeGroupRecommendationPolicy:input_type -> api.v1.GetNodeGroupRecommendationPolicyRequest
+ 71, // 763: api.v1.K8sRecommendationService.ListNodeGroupRecommendationPolicies:input_type -> api.v1.ListNodeGroupRecommendationPoliciesRequest
+ 73, // 764: api.v1.K8sRecommendationService.UpdateNodeGroupRecommendationPolicy:input_type -> api.v1.UpdateNodeGroupRecommendationPolicyRequest
+ 75, // 765: api.v1.K8sRecommendationService.DeleteNodeGroupRecommendationPolicy:input_type -> api.v1.DeleteNodeGroupRecommendationPolicyRequest
+ 77, // 766: api.v1.K8sRecommendationService.AttachNodeGroupRecommendationPolicy:input_type -> api.v1.AttachNodeGroupRecommendationPolicyRequest
+ 79, // 767: api.v1.K8sRecommendationService.CreateWorkloadRecommendationPolicy:input_type -> api.v1.CreateWorkloadRecommendationPolicyRequest
+ 81, // 768: api.v1.K8sRecommendationService.GetWorkloadRecommendationPolicy:input_type -> api.v1.GetWorkloadRecommendationPolicyRequest
+ 197, // 769: api.v1.K8sRecommendationService.GetPolicyRecommendedDefaults:input_type -> api.v1.GetPolicyRecommendedDefaultsRequest
+ 83, // 770: api.v1.K8sRecommendationService.ListWorkloadRecommendationPolicies:input_type -> api.v1.ListWorkloadRecommendationPoliciesRequest
+ 85, // 771: api.v1.K8sRecommendationService.UpdateWorkloadRecommendationPolicy:input_type -> api.v1.UpdateWorkloadRecommendationPolicyRequest
+ 87, // 772: api.v1.K8sRecommendationService.DeleteWorkloadRecommendationPolicy:input_type -> api.v1.DeleteWorkloadRecommendationPolicyRequest
+ 89, // 773: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicy:input_type -> api.v1.AttachWorkloadRecommendationPolicyRequest
+ 91, // 774: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicies:input_type -> api.v1.AttachWorkloadRecommendationPoliciesRequest
+ 95, // 775: api.v1.K8sRecommendationService.CreateWorkloadPolicyTarget:input_type -> api.v1.CreateWorkloadPolicyTargetRequest
+ 97, // 776: api.v1.K8sRecommendationService.GetWorkloadPolicyTarget:input_type -> api.v1.GetWorkloadPolicyTargetRequest
+ 99, // 777: api.v1.K8sRecommendationService.ListWorkloadPolicyTargets:input_type -> api.v1.ListWorkloadPolicyTargetsRequest
+ 101, // 778: api.v1.K8sRecommendationService.UpdateWorkloadPolicyTarget:input_type -> api.v1.UpdateWorkloadPolicyTargetRequest
+ 103, // 779: api.v1.K8sRecommendationService.DeleteWorkloadPolicyTarget:input_type -> api.v1.DeleteWorkloadPolicyTargetRequest
+ 104, // 780: api.v1.K8sRecommendationService.ToggleWorkloadPolicyTargets:input_type -> api.v1.ToggleWorkloadPolicyTargetsRequest
+ 109, // 781: api.v1.K8sRecommendationService.PreviewWorkloadPolicyTargetMatches:input_type -> api.v1.PreviewWorkloadPolicyTargetMatchesRequest
+ 111, // 782: api.v1.K8sRecommendationService.GetPreviewWorkloadPolicyTargetRecommendations:input_type -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsRequest
+ 64, // 783: api.v1.K8sRecommendationService.GetWorkloadsWithAttachedPolicyTargets:input_type -> api.v1.GetWorkloadsWithAttachedPolicyTargetsRequest
+ 116, // 784: api.v1.K8sRecommendationService.CreateNodeGroupPolicyTarget:input_type -> api.v1.CreateNodeGroupPolicyTargetRequest
+ 118, // 785: api.v1.K8sRecommendationService.GetNodeGroupPolicyTarget:input_type -> api.v1.GetNodeGroupPolicyTargetRequest
+ 120, // 786: api.v1.K8sRecommendationService.ListNodeGroupPolicyTargets:input_type -> api.v1.ListNodeGroupPolicyTargetsRequest
+ 122, // 787: api.v1.K8sRecommendationService.UpdateNodeGroupPolicyTarget:input_type -> api.v1.UpdateNodeGroupPolicyTargetRequest
+ 124, // 788: api.v1.K8sRecommendationService.DeleteNodeGroupPolicyTarget:input_type -> api.v1.DeleteNodeGroupPolicyTargetRequest
+ 125, // 789: api.v1.K8sRecommendationService.ToggleNodeGroupPolicyTargets:input_type -> api.v1.ToggleNodeGroupPolicyTargetsRequest
+ 128, // 790: api.v1.K8sRecommendationService.PreviewNodeGroupPolicyTargetMatches:input_type -> api.v1.PreviewNodeGroupPolicyTargetMatchesRequest
+ 130, // 791: api.v1.K8sRecommendationService.GetPreviewNodeGroupPolicyTargetRecommendations:input_type -> api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsRequest
+ 132, // 792: api.v1.K8sRecommendationService.BalanceGetRecommendations:input_type -> api.v1.BalanceGetRecommendationsRequest
+ 41, // 793: api.v1.K8sRecommendationService.GetOptimalInstanceTypeForNodeGroup:input_type -> api.v1.GetOptimalInstanceTypeForNodeGroupRequest
+ 216, // 794: api.v1.K8sRecommendationService.GetAttachedNodeGroupPolicies:input_type -> api.v1.GetAttachedNodeGroupPoliciesRequest
+ 218, // 795: api.v1.K8sRecommendationService.GetAttachedWorkloadPolicies:input_type -> api.v1.GetAttachedWorkloadPoliciesRequest
+ 303, // 796: api.v1.K8sRecommendationService.SearchResourcesByTargetingFilters:input_type -> api.v1.SearchResourcesByTargetingFiltersRequest
+ 302, // 797: api.v1.K8sRecommendationService.GetAvailableKindsByTargetingFilters:input_type -> api.v1.GetAvailableKindsByTargetingFiltersRequest
+ 224, // 798: api.v1.K8sRecommendationService.ListAttachedWorkloadPolicies:input_type -> api.v1.ListAttachedWorkloadPoliciesRequest
+ 226, // 799: api.v1.K8sRecommendationService.ListAttachedNodeGroupPolicies:input_type -> api.v1.ListAttachedNodeGroupPoliciesRequest
+ 233, // 800: api.v1.K8sRecommendationService.RecommendationEvents:input_type -> api.v1.RecommendationEventsRequest
+ 231, // 801: api.v1.K8sRecommendationService.ApplyRecommendation:input_type -> api.v1.ApplyRecommendationRequest
+ 229, // 802: api.v1.K8sRecommendationService.RecommendationApplied:input_type -> api.v1.RecommendationAppliedRequest
+ 235, // 803: api.v1.K8sRecommendationService.RetrieveSavingsForWorkload:input_type -> api.v1.RetrieveSavingsForWorkloadRequest
+ 237, // 804: api.v1.K8sRecommendationService.CreateNodePolicies:input_type -> api.v1.CreateNodePoliciesRequest
+ 275, // 805: api.v1.K8sRecommendationService.ListNodePolicies:input_type -> api.v1.ListNodePoliciesRequest
+ 277, // 806: api.v1.K8sRecommendationService.UpdateNodePolicy:input_type -> api.v1.UpdateNodePolicyRequest
+ 284, // 807: api.v1.K8sRecommendationService.DeleteNodePolicy:input_type -> api.v1.DeleteNodePolicyRequest
+ 239, // 808: api.v1.K8sRecommendationService.SuggestedNodePolicy:input_type -> api.v1.SuggestedNodePolicyRequest
+ 290, // 809: api.v1.K8sRecommendationService.SuggestedKarpenterConfig:input_type -> api.v1.SuggestedKarpenterConfigRequest
+ 292, // 810: api.v1.K8sRecommendationService.SuggestNodePolicyImprovements:input_type -> api.v1.SuggestNodePolicyImprovementsRequest
+ 294, // 811: api.v1.K8sRecommendationService.ListClusterNodePolicySuggestions:input_type -> api.v1.ListClusterNodePolicySuggestionsRequest
+ 241, // 812: api.v1.K8sRecommendationService.GenerateNodePoliciesFromKarpenter:input_type -> api.v1.GenerateNodePoliciesFromKarpenterRequest
+ 243, // 813: api.v1.K8sRecommendationService.GenerateNodePoliciesFromNodeGroups:input_type -> api.v1.GenerateNodePoliciesFromNodeGroupsRequest
+ 280, // 814: api.v1.K8sRecommendationService.GetNodeGroupsCheckpointStatus:input_type -> api.v1.GetNodeGroupsCheckpointStatusRequest
+ 282, // 815: api.v1.K8sRecommendationService.SetNodePolicyCheckpointLabel:input_type -> api.v1.SetNodePolicyCheckpointLabelRequest
+ 512, // 816: api.v1.K8sRecommendationService.EnableCheckpointForPolicy:input_type -> api.v1.EnableCheckpointForPolicyRequest
+ 514, // 817: api.v1.K8sRecommendationService.GetCheckpointApplyStatus:input_type -> api.v1.GetCheckpointApplyStatusRequest
+ 517, // 818: api.v1.K8sRecommendationService.GetClusterCheckpointLabelCoverage:input_type -> api.v1.GetClusterCheckpointLabelCoverageRequest
+ 520, // 819: api.v1.K8sRecommendationService.ListNodeGroupCheckpointLabelState:input_type -> api.v1.ListNodeGroupCheckpointLabelStateRequest
+ 246, // 820: api.v1.K8sRecommendationService.GetNodeAnnotationReadiness:input_type -> api.v1.GetNodeAnnotationReadinessRequest
+ 248, // 821: api.v1.K8sRecommendationService.DetectClusterAutoscaler:input_type -> api.v1.DetectClusterAutoscalerRequest
+ 250, // 822: api.v1.K8sRecommendationService.GetMigrationState:input_type -> api.v1.GetMigrationStateRequest
+ 252, // 823: api.v1.K8sRecommendationService.UpdateMigrationState:input_type -> api.v1.UpdateMigrationStateRequest
+ 254, // 824: api.v1.K8sRecommendationService.GetKarpenterMigrationState:input_type -> api.v1.GetKarpenterMigrationStateRequest
+ 256, // 825: api.v1.K8sRecommendationService.UpdateKarpenterMigrationState:input_type -> api.v1.UpdateKarpenterMigrationStateRequest
+ 259, // 826: api.v1.K8sRecommendationService.DetectKarpenterOwnershipConflicts:input_type -> api.v1.DetectKarpenterOwnershipConflictsRequest
+ 261, // 827: api.v1.K8sRecommendationService.AcknowledgeKarpenterOwnershipConflict:input_type -> api.v1.AcknowledgeKarpenterOwnershipConflictRequest
+ 264, // 828: api.v1.K8sRecommendationService.GetKarpenterSourceResources:input_type -> api.v1.GetKarpenterSourceResourcesRequest
+ 267, // 829: api.v1.K8sRecommendationService.GetKarpenterAdoptionStatus:input_type -> api.v1.GetKarpenterAdoptionStatusRequest
+ 269, // 830: api.v1.K8sRecommendationService.ReportNodePoolValidation:input_type -> api.v1.ReportNodePoolValidationRequest
+ 271, // 831: api.v1.K8sRecommendationService.GetNodePoolValidations:input_type -> api.v1.GetNodePoolValidationsRequest
+ 311, // 832: api.v1.K8sRecommendationService.CreateNodePolicyTargets:input_type -> api.v1.CreateNodePolicyTargetsRequest
+ 313, // 833: api.v1.K8sRecommendationService.ListNodePolicyTargets:input_type -> api.v1.ListNodePolicyTargetsRequest
+ 315, // 834: api.v1.K8sRecommendationService.UpdateNodePolicyTarget:input_type -> api.v1.UpdateNodePolicyTargetRequest
+ 287, // 835: api.v1.K8sRecommendationService.PreviewNodeRecommendationConfig:input_type -> api.v1.PreviewNodeRecommendationConfigRequest
+ 326, // 836: api.v1.K8sRecommendationService.GetInstanceFamilies:input_type -> api.v1.GetInstanceFamiliesRequest
+ 328, // 837: api.v1.K8sRecommendationService.GetInstanceSizes:input_type -> api.v1.GetInstanceSizesRequest
+ 338, // 838: api.v1.K8sRecommendationService.GetInstanceCategories:input_type -> api.v1.GetInstanceCategoriesRequest
+ 330, // 839: api.v1.K8sRecommendationService.GetInstanceShapes:input_type -> api.v1.GetInstanceShapesRequest
+ 340, // 840: api.v1.K8sRecommendationService.GetInstanceCPUs:input_type -> api.v1.GetInstanceCPUsRequest
+ 342, // 841: api.v1.K8sRecommendationService.GetInstanceTypeNames:input_type -> api.v1.GetInstanceTypeNamesRequest
+ 160, // 842: api.v1.K8sRecommendationService.GeneratePodDisruptionBudget:input_type -> api.v1.GeneratePodDisruptionBudgetRequest
+ 162, // 843: api.v1.K8sRecommendationService.GenerateAndCreatePodDisruptionBudget:input_type -> api.v1.GenerateAndCreatePodDisruptionBudgetRequest
+ 164, // 844: api.v1.K8sRecommendationService.CreatePodDisruptionBudget:input_type -> api.v1.CreatePodDisruptionBudgetRequest
+ 166, // 845: api.v1.K8sRecommendationService.GetPDBRecommendationForWorkload:input_type -> api.v1.GetPDBRecommendationForWorkloadRequest
+ 170, // 846: api.v1.K8sRecommendationService.ListWorkloadStructuralHealth:input_type -> api.v1.ListWorkloadStructuralHealthRequest
+ 384, // 847: api.v1.K8sRecommendationService.CreateStorageRecommendationPolicy:input_type -> api.v1.CreateStorageRecommendationPolicyRequest
+ 386, // 848: api.v1.K8sRecommendationService.GetStorageRecommendationPolicy:input_type -> api.v1.GetStorageRecommendationPolicyRequest
+ 388, // 849: api.v1.K8sRecommendationService.ListStorageRecommendationPolicies:input_type -> api.v1.ListStorageRecommendationPoliciesRequest
+ 390, // 850: api.v1.K8sRecommendationService.UpdateStorageRecommendationPolicy:input_type -> api.v1.UpdateStorageRecommendationPolicyRequest
+ 392, // 851: api.v1.K8sRecommendationService.DeleteStorageRecommendationPolicy:input_type -> api.v1.DeleteStorageRecommendationPolicyRequest
+ 395, // 852: api.v1.K8sRecommendationService.CreateStoragePolicyTarget:input_type -> api.v1.CreateStoragePolicyTargetRequest
+ 397, // 853: api.v1.K8sRecommendationService.ListStoragePolicyTargets:input_type -> api.v1.ListStoragePolicyTargetsRequest
+ 399, // 854: api.v1.K8sRecommendationService.UpdateStoragePolicyTarget:input_type -> api.v1.UpdateStoragePolicyTargetRequest
+ 401, // 855: api.v1.K8sRecommendationService.DeleteStoragePolicyTarget:input_type -> api.v1.DeleteStoragePolicyTargetRequest
+ 404, // 856: api.v1.K8sRecommendationService.GetPvcStorageRecommendation:input_type -> api.v1.GetPvcStorageRecommendationRequest
+ 406, // 857: api.v1.K8sRecommendationService.ListPvcStorageRecommendations:input_type -> api.v1.ListPvcStorageRecommendationsRequest
+ 408, // 858: api.v1.K8sRecommendationService.GeneratePvcStorageRecommendation:input_type -> api.v1.GeneratePvcStorageRecommendationRequest
+ 410, // 859: api.v1.K8sRecommendationService.PreviewPvcStorageRecommendation:input_type -> api.v1.PreviewPvcStorageRecommendationRequest
+ 413, // 860: api.v1.K8sRecommendationService.ListWorkloadRuleOOMEvents:input_type -> api.v1.ListWorkloadRuleOOMEventsRequest
+ 415, // 861: api.v1.K8sRecommendationService.ListWorkloadOOMEvents:input_type -> api.v1.ListWorkloadOOMEventsRequest
+ 418, // 862: api.v1.K8sRecommendationService.ListWorkloadRuleCPUThrottleEvents:input_type -> api.v1.ListWorkloadRuleCPUThrottleEventsRequest
+ 420, // 863: api.v1.K8sRecommendationService.ListWorkloadCPUThrottleEvents:input_type -> api.v1.ListWorkloadCPUThrottleEventsRequest
+ 107, // 864: api.v1.K8sRecommendationService.RemoveClusterOptimizations:input_type -> api.v1.RemoveClusterOptimizationsRequest
+ 425, // 865: api.v1.K8sRecommendationService.CreateWorkloadOptimizationPolicy:input_type -> api.v1.CreateWorkloadOptimizationPolicyRequest
+ 427, // 866: api.v1.K8sRecommendationService.ListWorkloadOptimizationPolicies:input_type -> api.v1.ListWorkloadOptimizationPoliciesRequest
+ 429, // 867: api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicy:input_type -> api.v1.GetWorkloadOptimizationPolicyRequest
+ 431, // 868: api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicyByWorkload:input_type -> api.v1.GetWorkloadOptimizationPolicyByWorkloadRequest
+ 433, // 869: api.v1.K8sRecommendationService.UpdateWorkloadOptimizationPolicy:input_type -> api.v1.UpdateWorkloadOptimizationPolicyRequest
+ 434, // 870: api.v1.K8sRecommendationService.ToggleWorkloadOptimizationPolicyDisabled:input_type -> api.v1.ToggleWorkloadOptimizationPolicyDisabledRequest
+ 437, // 871: api.v1.K8sRecommendationService.DeleteWorkloadOptimizationPolicy:input_type -> api.v1.DeleteWorkloadOptimizationPolicyRequest
+ 439, // 872: api.v1.K8sRecommendationService.PreviewWorkloadOptimizationPolicyMatches:input_type -> api.v1.PreviewWorkloadOptimizationPolicyMatchesRequest
+ 444, // 873: api.v1.K8sRecommendationService.CreateSchedulerPolicy:input_type -> api.v1.CreateSchedulerPolicyRequest
+ 446, // 874: api.v1.K8sRecommendationService.ListSchedulerPolicies:input_type -> api.v1.ListSchedulerPoliciesRequest
+ 448, // 875: api.v1.K8sRecommendationService.UpdateSchedulerPolicy:input_type -> api.v1.UpdateSchedulerPolicyRequest
+ 450, // 876: api.v1.K8sRecommendationService.ToggleSchedulerPolicyDisabled:input_type -> api.v1.ToggleSchedulerPolicyDisabledRequest
+ 452, // 877: api.v1.K8sRecommendationService.DeleteSchedulerPolicy:input_type -> api.v1.DeleteSchedulerPolicyRequest
+ 454, // 878: api.v1.K8sRecommendationService.PreviewSchedulerPolicyTargets:input_type -> api.v1.PreviewSchedulerPolicyTargetsRequest
+ 457, // 879: api.v1.K8sRecommendationService.ListSchedulerPolicyEnrollments:input_type -> api.v1.ListSchedulerPolicyEnrollmentsRequest
+ 486, // 880: api.v1.K8sRecommendationService.UpsertManualWorkloadRule:input_type -> api.v1.UpsertManualWorkloadRuleRequest
+ 488, // 881: api.v1.K8sRecommendationService.ToggleWorkloadRuleDisabled:input_type -> api.v1.ToggleWorkloadRuleDisabledRequest
+ 490, // 882: api.v1.K8sRecommendationService.PreviewWorkloadRule:input_type -> api.v1.PreviewWorkloadRuleRequest
+ 465, // 883: api.v1.K8sRecommendationService.GetWorkloadRulesByPolicy:input_type -> api.v1.GetWorkloadRulesByPolicyRequest
+ 467, // 884: api.v1.K8sRecommendationService.ListWorkloadRules:input_type -> api.v1.ListWorkloadRulesRequest
+ 469, // 885: api.v1.K8sRecommendationService.GetWorkloadRuleByID:input_type -> api.v1.GetWorkloadRuleByIDRequest
+ 471, // 886: api.v1.K8sRecommendationService.GetWorkloadRuleByWorkload:input_type -> api.v1.GetWorkloadRuleByWorkloadRequest
+ 473, // 887: api.v1.K8sRecommendationService.GetWorkloadByWorkloadRule:input_type -> api.v1.GetWorkloadByWorkloadRuleRequest
+ 475, // 888: api.v1.K8sRecommendationService.DeleteWorkloadRule:input_type -> api.v1.DeleteWorkloadRuleRequest
+ 477, // 889: api.v1.K8sRecommendationService.DeleteAllWorkloadRules:input_type -> api.v1.DeleteAllWorkloadRulesRequest
+ 479, // 890: api.v1.K8sRecommendationService.BulkDeleteWorkloadRules:input_type -> api.v1.BulkDeleteWorkloadRulesRequest
+ 481, // 891: api.v1.K8sRecommendationService.BulkToggleWorkloadRulesDisabled:input_type -> api.v1.BulkToggleWorkloadRulesDisabledRequest
+ 492, // 892: api.v1.K8sRecommendationService.GetWorkloadContainerNames:input_type -> api.v1.GetWorkloadContainerNamesRequest
+ 495, // 893: api.v1.K8sRecommendationService.BatchAutoOptimizeWorkloads:input_type -> api.v1.BatchAutoOptimizeWorkloadsRequest
+ 499, // 894: api.v1.K8sRecommendationService.BatchUpsertManualWorkloadRules:input_type -> api.v1.BatchUpsertManualWorkloadRulesRequest
+ 502, // 895: api.v1.K8sRecommendationService.BatchPreviewWorkloadRules:input_type -> api.v1.BatchPreviewWorkloadRulesRequest
+ 505, // 896: api.v1.K8sRecommendationService.ApplyOneTimeOptimization:input_type -> api.v1.ApplyOneTimeOptimizationRequest
+ 483, // 897: api.v1.K8sRecommendationService.DeleteRuleAndApplyRecommendation:input_type -> api.v1.DeleteRuleAndApplyRecommendationRequest
+ 510, // 898: api.v1.K8sRecommendationService.GetNodeRecommendationStatus:input_type -> api.v1.GetNodeRecommendationStatusRequest
+ 536, // 899: api.v1.K8sRecommendationService.CreateSnapshotPolicies:input_type -> api.v1.CreateSnapshotPoliciesRequest
+ 538, // 900: api.v1.K8sRecommendationService.ListSnapshotPolicies:input_type -> api.v1.ListSnapshotPoliciesRequest
+ 540, // 901: api.v1.K8sRecommendationService.UpdateSnapshotPolicy:input_type -> api.v1.UpdateSnapshotPolicyRequest
+ 542, // 902: api.v1.K8sRecommendationService.DeleteSnapshotPolicy:input_type -> api.v1.DeleteSnapshotPolicyRequest
+ 544, // 903: api.v1.K8sRecommendationService.CreateSnapshotPolicyTargets:input_type -> api.v1.CreateSnapshotPolicyTargetsRequest
+ 546, // 904: api.v1.K8sRecommendationService.ListSnapshotPolicyTargets:input_type -> api.v1.ListSnapshotPolicyTargetsRequest
+ 548, // 905: api.v1.K8sRecommendationService.UpdateSnapshotPolicyTarget:input_type -> api.v1.UpdateSnapshotPolicyTargetRequest
+ 550, // 906: api.v1.K8sRecommendationService.DeleteSnapshotPolicyTarget:input_type -> api.v1.DeleteSnapshotPolicyTargetRequest
+ 552, // 907: api.v1.K8sRecommendationService.CreateForensicSnapshotPolicies:input_type -> api.v1.CreateForensicSnapshotPoliciesRequest
+ 554, // 908: api.v1.K8sRecommendationService.ListForensicSnapshotPolicies:input_type -> api.v1.ListForensicSnapshotPoliciesRequest
+ 556, // 909: api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicy:input_type -> api.v1.UpdateForensicSnapshotPolicyRequest
+ 558, // 910: api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicy:input_type -> api.v1.DeleteForensicSnapshotPolicyRequest
+ 560, // 911: api.v1.K8sRecommendationService.CreateForensicSnapshotPolicyTargets:input_type -> api.v1.CreateForensicSnapshotPolicyTargetsRequest
+ 562, // 912: api.v1.K8sRecommendationService.ListForensicSnapshotPolicyTargets:input_type -> api.v1.ListForensicSnapshotPolicyTargetsRequest
+ 564, // 913: api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicyTarget:input_type -> api.v1.UpdateForensicSnapshotPolicyTargetRequest
+ 566, // 914: api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicyTarget:input_type -> api.v1.DeleteForensicSnapshotPolicyTargetRequest
+ 568, // 915: api.v1.K8sRecommendationService.TriggerForensicSnapshotRun:input_type -> api.v1.TriggerForensicSnapshotRunRequest
+ 593, // 916: api.v1.K8sRecommendationService.ListReferencedAuthentications:input_type -> api.v1.ListReferencedAuthenticationsRequest
+ 573, // 917: api.v1.K8sRecommendationService.PreviewSnapshotPolicyTargetMatches:input_type -> api.v1.PreviewSnapshotPolicyTargetMatchesRequest
+ 576, // 918: api.v1.K8sRecommendationService.PreviewForensicSnapshotPolicyTargetMatches:input_type -> api.v1.PreviewForensicSnapshotPolicyTargetMatchesRequest
+ 579, // 919: api.v1.K8sRecommendationService.GetSnapshotPolicyTargetRenderedScope:input_type -> api.v1.GetSnapshotPolicyTargetRenderedScopeRequest
+ 581, // 920: api.v1.K8sRecommendationService.GetForensicSnapshotPolicyTargetRenderedScope:input_type -> api.v1.GetForensicSnapshotPolicyTargetRenderedScopeRequest
+ 585, // 921: api.v1.K8sRecommendationService.GetSnapshotRecommendationStatus:input_type -> api.v1.GetSnapshotRecommendationStatusRequest
+ 587, // 922: api.v1.K8sRecommendationService.GetForensicSnapshotRecommendationStatus:input_type -> api.v1.GetForensicSnapshotRecommendationStatusRequest
+ 589, // 923: api.v1.K8sRecommendationService.PreviewSnapshotRecommendationConfig:input_type -> api.v1.PreviewSnapshotRecommendationConfigRequest
+ 591, // 924: api.v1.K8sRecommendationService.PreviewForensicSnapshotRecommendationConfig:input_type -> api.v1.PreviewForensicSnapshotRecommendationConfigRequest
+ 40, // 925: api.v1.K8sRecommendationService.GetNodeGroupStats:output_type -> api.v1.GetNodeGroupStatsResponse
+ 44, // 926: api.v1.K8sRecommendationService.GetLatestNodeGroupRecommendation:output_type -> api.v1.GetLatestNodeGroupRecommendationResponse
+ 46, // 927: api.v1.K8sRecommendationService.GetLatestWorkloadRecommendation:output_type -> api.v1.GetLatestWorkloadRecommendationResponse
+ 48, // 928: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendation:output_type -> api.v1.GetPreviewWorkloadRecommendationResponse
+ 51, // 929: api.v1.K8sRecommendationService.GetPreviewWorkloadRecommendations:output_type -> api.v1.GetPreviewWorkloadRecommendationsResponse
+ 38, // 930: api.v1.K8sRecommendationService.GetRecommendationsForWorkload:output_type -> api.v1.GetRecommendationsForWorkloadResponse
+ 36, // 931: api.v1.K8sRecommendationService.GetRecommendations:output_type -> api.v1.GetRecommendationsResponse
+ 68, // 932: api.v1.K8sRecommendationService.CreateNodeGroupRecommendationPolicy:output_type -> api.v1.CreateNodeGroupRecommendationPolicyResponse
+ 70, // 933: api.v1.K8sRecommendationService.GetNodeGroupRecommendationPolicy:output_type -> api.v1.GetNodeGroupRecommendationPolicyResponse
+ 72, // 934: api.v1.K8sRecommendationService.ListNodeGroupRecommendationPolicies:output_type -> api.v1.ListNodeGroupRecommendationPoliciesResponse
+ 74, // 935: api.v1.K8sRecommendationService.UpdateNodeGroupRecommendationPolicy:output_type -> api.v1.UpdateNodeGroupRecommendationPolicyResponse
+ 76, // 936: api.v1.K8sRecommendationService.DeleteNodeGroupRecommendationPolicy:output_type -> api.v1.DeleteNodeGroupRecommendationPolicyResponse
+ 78, // 937: api.v1.K8sRecommendationService.AttachNodeGroupRecommendationPolicy:output_type -> api.v1.AttachNodeGroupRecommendationPolicyResponse
+ 80, // 938: api.v1.K8sRecommendationService.CreateWorkloadRecommendationPolicy:output_type -> api.v1.CreateWorkloadRecommendationPolicyResponse
+ 82, // 939: api.v1.K8sRecommendationService.GetWorkloadRecommendationPolicy:output_type -> api.v1.GetWorkloadRecommendationPolicyResponse
+ 198, // 940: api.v1.K8sRecommendationService.GetPolicyRecommendedDefaults:output_type -> api.v1.GetPolicyRecommendedDefaultsResponse
+ 84, // 941: api.v1.K8sRecommendationService.ListWorkloadRecommendationPolicies:output_type -> api.v1.ListWorkloadRecommendationPoliciesResponse
+ 86, // 942: api.v1.K8sRecommendationService.UpdateWorkloadRecommendationPolicy:output_type -> api.v1.UpdateWorkloadRecommendationPolicyResponse
+ 88, // 943: api.v1.K8sRecommendationService.DeleteWorkloadRecommendationPolicy:output_type -> api.v1.DeleteWorkloadRecommendationPolicyResponse
+ 90, // 944: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicy:output_type -> api.v1.AttachWorkloadRecommendationPolicyResponse
+ 92, // 945: api.v1.K8sRecommendationService.AttachWorkloadRecommendationPolicies:output_type -> api.v1.AttachWorkloadRecommendationPoliciesResponse
+ 96, // 946: api.v1.K8sRecommendationService.CreateWorkloadPolicyTarget:output_type -> api.v1.CreateWorkloadPolicyTargetResponse
+ 98, // 947: api.v1.K8sRecommendationService.GetWorkloadPolicyTarget:output_type -> api.v1.GetWorkloadPolicyTargetResponse
+ 100, // 948: api.v1.K8sRecommendationService.ListWorkloadPolicyTargets:output_type -> api.v1.ListWorkloadPolicyTargetsResponse
+ 102, // 949: api.v1.K8sRecommendationService.UpdateWorkloadPolicyTarget:output_type -> api.v1.UpdateWorkloadPolicyTargetResponse
+ 106, // 950: api.v1.K8sRecommendationService.DeleteWorkloadPolicyTarget:output_type -> api.v1.DeleteWorkloadPolicyTargetResponse
+ 105, // 951: api.v1.K8sRecommendationService.ToggleWorkloadPolicyTargets:output_type -> api.v1.ToggleWorkloadPolicyTargetsResponse
+ 110, // 952: api.v1.K8sRecommendationService.PreviewWorkloadPolicyTargetMatches:output_type -> api.v1.PreviewWorkloadPolicyTargetMatchesResponse
+ 113, // 953: api.v1.K8sRecommendationService.GetPreviewWorkloadPolicyTargetRecommendations:output_type -> api.v1.GetPreviewWorkloadPolicyTargetRecommendationsResponse
+ 65, // 954: api.v1.K8sRecommendationService.GetWorkloadsWithAttachedPolicyTargets:output_type -> api.v1.GetWorkloadsWithAttachedPolicyTargetsResponse
+ 117, // 955: api.v1.K8sRecommendationService.CreateNodeGroupPolicyTarget:output_type -> api.v1.CreateNodeGroupPolicyTargetResponse
+ 119, // 956: api.v1.K8sRecommendationService.GetNodeGroupPolicyTarget:output_type -> api.v1.GetNodeGroupPolicyTargetResponse
+ 121, // 957: api.v1.K8sRecommendationService.ListNodeGroupPolicyTargets:output_type -> api.v1.ListNodeGroupPolicyTargetsResponse
+ 123, // 958: api.v1.K8sRecommendationService.UpdateNodeGroupPolicyTarget:output_type -> api.v1.UpdateNodeGroupPolicyTargetResponse
+ 127, // 959: api.v1.K8sRecommendationService.DeleteNodeGroupPolicyTarget:output_type -> api.v1.DeleteNodeGroupPolicyTargetResponse
+ 126, // 960: api.v1.K8sRecommendationService.ToggleNodeGroupPolicyTargets:output_type -> api.v1.ToggleNodeGroupPolicyTargetsResponse
+ 129, // 961: api.v1.K8sRecommendationService.PreviewNodeGroupPolicyTargetMatches:output_type -> api.v1.PreviewNodeGroupPolicyTargetMatchesResponse
+ 131, // 962: api.v1.K8sRecommendationService.GetPreviewNodeGroupPolicyTargetRecommendations:output_type -> api.v1.GetPreviewNodeGroupPolicyTargetRecommendationsResponse
+ 133, // 963: api.v1.K8sRecommendationService.BalanceGetRecommendations:output_type -> api.v1.BalanceGetRecommendationsResponse
+ 42, // 964: api.v1.K8sRecommendationService.GetOptimalInstanceTypeForNodeGroup:output_type -> api.v1.GetOptimalInstanceTypeForNodeGroupResponse
+ 217, // 965: api.v1.K8sRecommendationService.GetAttachedNodeGroupPolicies:output_type -> api.v1.GetAttachedNodeGroupPoliciesResponse
+ 219, // 966: api.v1.K8sRecommendationService.GetAttachedWorkloadPolicies:output_type -> api.v1.GetAttachedWorkloadPoliciesResponse
+ 306, // 967: api.v1.K8sRecommendationService.SearchResourcesByTargetingFilters:output_type -> api.v1.SearchResourcesByTargetingFiltersResponse
+ 305, // 968: api.v1.K8sRecommendationService.GetAvailableKindsByTargetingFilters:output_type -> api.v1.GetAvailableKindsByTargetingFiltersResponse
+ 225, // 969: api.v1.K8sRecommendationService.ListAttachedWorkloadPolicies:output_type -> api.v1.ListAttachedWorkloadPoliciesResponse
+ 227, // 970: api.v1.K8sRecommendationService.ListAttachedNodeGroupPolicies:output_type -> api.v1.ListAttachedNodeGroupPoliciesResponse
+ 234, // 971: api.v1.K8sRecommendationService.RecommendationEvents:output_type -> api.v1.RecommendationEventsResponse
+ 232, // 972: api.v1.K8sRecommendationService.ApplyRecommendation:output_type -> api.v1.ApplyRecommendationResponse
+ 230, // 973: api.v1.K8sRecommendationService.RecommendationApplied:output_type -> api.v1.RecommendationAppliedResponse
+ 236, // 974: api.v1.K8sRecommendationService.RetrieveSavingsForWorkload:output_type -> api.v1.RetrieveSavingsForWorkloadResponse
+ 238, // 975: api.v1.K8sRecommendationService.CreateNodePolicies:output_type -> api.v1.CreateNodePoliciesResponse
+ 276, // 976: api.v1.K8sRecommendationService.ListNodePolicies:output_type -> api.v1.ListNodePoliciesResponse
+ 278, // 977: api.v1.K8sRecommendationService.UpdateNodePolicy:output_type -> api.v1.UpdateNodePolicyResponse
+ 285, // 978: api.v1.K8sRecommendationService.DeleteNodePolicy:output_type -> api.v1.DeleteNodePolicyResponse
+ 240, // 979: api.v1.K8sRecommendationService.SuggestedNodePolicy:output_type -> api.v1.SuggestedNodePolicyResponse
+ 291, // 980: api.v1.K8sRecommendationService.SuggestedKarpenterConfig:output_type -> api.v1.SuggestedKarpenterConfigResponse
+ 293, // 981: api.v1.K8sRecommendationService.SuggestNodePolicyImprovements:output_type -> api.v1.SuggestNodePolicyImprovementsResponse
+ 295, // 982: api.v1.K8sRecommendationService.ListClusterNodePolicySuggestions:output_type -> api.v1.ListClusterNodePolicySuggestionsResponse
+ 242, // 983: api.v1.K8sRecommendationService.GenerateNodePoliciesFromKarpenter:output_type -> api.v1.GenerateNodePoliciesFromKarpenterResponse
+ 244, // 984: api.v1.K8sRecommendationService.GenerateNodePoliciesFromNodeGroups:output_type -> api.v1.GenerateNodePoliciesFromNodeGroupsResponse
+ 281, // 985: api.v1.K8sRecommendationService.GetNodeGroupsCheckpointStatus:output_type -> api.v1.GetNodeGroupsCheckpointStatusResponse
+ 283, // 986: api.v1.K8sRecommendationService.SetNodePolicyCheckpointLabel:output_type -> api.v1.SetNodePolicyCheckpointLabelResponse
+ 513, // 987: api.v1.K8sRecommendationService.EnableCheckpointForPolicy:output_type -> api.v1.EnableCheckpointForPolicyResponse
+ 515, // 988: api.v1.K8sRecommendationService.GetCheckpointApplyStatus:output_type -> api.v1.GetCheckpointApplyStatusResponse
+ 519, // 989: api.v1.K8sRecommendationService.GetClusterCheckpointLabelCoverage:output_type -> api.v1.GetClusterCheckpointLabelCoverageResponse
+ 522, // 990: api.v1.K8sRecommendationService.ListNodeGroupCheckpointLabelState:output_type -> api.v1.ListNodeGroupCheckpointLabelStateResponse
+ 247, // 991: api.v1.K8sRecommendationService.GetNodeAnnotationReadiness:output_type -> api.v1.GetNodeAnnotationReadinessResponse
+ 249, // 992: api.v1.K8sRecommendationService.DetectClusterAutoscaler:output_type -> api.v1.DetectClusterAutoscalerResponse
+ 251, // 993: api.v1.K8sRecommendationService.GetMigrationState:output_type -> api.v1.GetMigrationStateResponse
+ 253, // 994: api.v1.K8sRecommendationService.UpdateMigrationState:output_type -> api.v1.UpdateMigrationStateResponse
+ 255, // 995: api.v1.K8sRecommendationService.GetKarpenterMigrationState:output_type -> api.v1.GetKarpenterMigrationStateResponse
+ 257, // 996: api.v1.K8sRecommendationService.UpdateKarpenterMigrationState:output_type -> api.v1.UpdateKarpenterMigrationStateResponse
+ 260, // 997: api.v1.K8sRecommendationService.DetectKarpenterOwnershipConflicts:output_type -> api.v1.DetectKarpenterOwnershipConflictsResponse
+ 262, // 998: api.v1.K8sRecommendationService.AcknowledgeKarpenterOwnershipConflict:output_type -> api.v1.AcknowledgeKarpenterOwnershipConflictResponse
+ 265, // 999: api.v1.K8sRecommendationService.GetKarpenterSourceResources:output_type -> api.v1.GetKarpenterSourceResourcesResponse
+ 268, // 1000: api.v1.K8sRecommendationService.GetKarpenterAdoptionStatus:output_type -> api.v1.GetKarpenterAdoptionStatusResponse
+ 270, // 1001: api.v1.K8sRecommendationService.ReportNodePoolValidation:output_type -> api.v1.ReportNodePoolValidationResponse
+ 273, // 1002: api.v1.K8sRecommendationService.GetNodePoolValidations:output_type -> api.v1.GetNodePoolValidationsResponse
+ 312, // 1003: api.v1.K8sRecommendationService.CreateNodePolicyTargets:output_type -> api.v1.CreateNodePolicyTargetsResponse
+ 314, // 1004: api.v1.K8sRecommendationService.ListNodePolicyTargets:output_type -> api.v1.ListNodePolicyTargetsResponse
+ 316, // 1005: api.v1.K8sRecommendationService.UpdateNodePolicyTarget:output_type -> api.v1.UpdateNodePolicyTargetResponse
+ 288, // 1006: api.v1.K8sRecommendationService.PreviewNodeRecommendationConfig:output_type -> api.v1.PreviewNodeRecommendationConfigResponse
+ 327, // 1007: api.v1.K8sRecommendationService.GetInstanceFamilies:output_type -> api.v1.GetInstanceFamiliesResponse
+ 329, // 1008: api.v1.K8sRecommendationService.GetInstanceSizes:output_type -> api.v1.GetInstanceSizesResponse
+ 339, // 1009: api.v1.K8sRecommendationService.GetInstanceCategories:output_type -> api.v1.GetInstanceCategoriesResponse
+ 331, // 1010: api.v1.K8sRecommendationService.GetInstanceShapes:output_type -> api.v1.GetInstanceShapesResponse
+ 341, // 1011: api.v1.K8sRecommendationService.GetInstanceCPUs:output_type -> api.v1.GetInstanceCPUsResponse
+ 343, // 1012: api.v1.K8sRecommendationService.GetInstanceTypeNames:output_type -> api.v1.GetInstanceTypeNamesResponse
+ 161, // 1013: api.v1.K8sRecommendationService.GeneratePodDisruptionBudget:output_type -> api.v1.GeneratePodDisruptionBudgetResponse
+ 163, // 1014: api.v1.K8sRecommendationService.GenerateAndCreatePodDisruptionBudget:output_type -> api.v1.GenerateAndCreatePodDisruptionBudgetResponse
+ 165, // 1015: api.v1.K8sRecommendationService.CreatePodDisruptionBudget:output_type -> api.v1.CreatePodDisruptionBudgetResponse
+ 167, // 1016: api.v1.K8sRecommendationService.GetPDBRecommendationForWorkload:output_type -> api.v1.GetPDBRecommendationForWorkloadResponse
+ 171, // 1017: api.v1.K8sRecommendationService.ListWorkloadStructuralHealth:output_type -> api.v1.ListWorkloadStructuralHealthResponse
+ 385, // 1018: api.v1.K8sRecommendationService.CreateStorageRecommendationPolicy:output_type -> api.v1.CreateStorageRecommendationPolicyResponse
+ 387, // 1019: api.v1.K8sRecommendationService.GetStorageRecommendationPolicy:output_type -> api.v1.GetStorageRecommendationPolicyResponse
+ 389, // 1020: api.v1.K8sRecommendationService.ListStorageRecommendationPolicies:output_type -> api.v1.ListStorageRecommendationPoliciesResponse
+ 391, // 1021: api.v1.K8sRecommendationService.UpdateStorageRecommendationPolicy:output_type -> api.v1.UpdateStorageRecommendationPolicyResponse
+ 393, // 1022: api.v1.K8sRecommendationService.DeleteStorageRecommendationPolicy:output_type -> api.v1.DeleteStorageRecommendationPolicyResponse
+ 396, // 1023: api.v1.K8sRecommendationService.CreateStoragePolicyTarget:output_type -> api.v1.CreateStoragePolicyTargetResponse
+ 398, // 1024: api.v1.K8sRecommendationService.ListStoragePolicyTargets:output_type -> api.v1.ListStoragePolicyTargetsResponse
+ 400, // 1025: api.v1.K8sRecommendationService.UpdateStoragePolicyTarget:output_type -> api.v1.UpdateStoragePolicyTargetResponse
+ 402, // 1026: api.v1.K8sRecommendationService.DeleteStoragePolicyTarget:output_type -> api.v1.DeleteStoragePolicyTargetResponse
+ 405, // 1027: api.v1.K8sRecommendationService.GetPvcStorageRecommendation:output_type -> api.v1.GetPvcStorageRecommendationResponse
+ 407, // 1028: api.v1.K8sRecommendationService.ListPvcStorageRecommendations:output_type -> api.v1.ListPvcStorageRecommendationsResponse
+ 409, // 1029: api.v1.K8sRecommendationService.GeneratePvcStorageRecommendation:output_type -> api.v1.GeneratePvcStorageRecommendationResponse
+ 411, // 1030: api.v1.K8sRecommendationService.PreviewPvcStorageRecommendation:output_type -> api.v1.PreviewPvcStorageRecommendationResponse
+ 414, // 1031: api.v1.K8sRecommendationService.ListWorkloadRuleOOMEvents:output_type -> api.v1.ListWorkloadRuleOOMEventsResponse
+ 416, // 1032: api.v1.K8sRecommendationService.ListWorkloadOOMEvents:output_type -> api.v1.ListWorkloadOOMEventsResponse
+ 419, // 1033: api.v1.K8sRecommendationService.ListWorkloadRuleCPUThrottleEvents:output_type -> api.v1.ListWorkloadRuleCPUThrottleEventsResponse
+ 421, // 1034: api.v1.K8sRecommendationService.ListWorkloadCPUThrottleEvents:output_type -> api.v1.ListWorkloadCPUThrottleEventsResponse
+ 108, // 1035: api.v1.K8sRecommendationService.RemoveClusterOptimizations:output_type -> api.v1.RemoveClusterOptimizationsResponse
+ 426, // 1036: api.v1.K8sRecommendationService.CreateWorkloadOptimizationPolicy:output_type -> api.v1.CreateWorkloadOptimizationPolicyResponse
+ 428, // 1037: api.v1.K8sRecommendationService.ListWorkloadOptimizationPolicies:output_type -> api.v1.ListWorkloadOptimizationPoliciesResponse
+ 430, // 1038: api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicy:output_type -> api.v1.GetWorkloadOptimizationPolicyResponse
+ 432, // 1039: api.v1.K8sRecommendationService.GetWorkloadOptimizationPolicyByWorkload:output_type -> api.v1.GetWorkloadOptimizationPolicyByWorkloadResponse
+ 436, // 1040: api.v1.K8sRecommendationService.UpdateWorkloadOptimizationPolicy:output_type -> api.v1.UpdateWorkloadOptimizationPolicyResponse
+ 435, // 1041: api.v1.K8sRecommendationService.ToggleWorkloadOptimizationPolicyDisabled:output_type -> api.v1.ToggleWorkloadOptimizationPolicyDisabledResponse
+ 438, // 1042: api.v1.K8sRecommendationService.DeleteWorkloadOptimizationPolicy:output_type -> api.v1.DeleteWorkloadOptimizationPolicyResponse
+ 441, // 1043: api.v1.K8sRecommendationService.PreviewWorkloadOptimizationPolicyMatches:output_type -> api.v1.PreviewWorkloadOptimizationPolicyMatchesResponse
+ 445, // 1044: api.v1.K8sRecommendationService.CreateSchedulerPolicy:output_type -> api.v1.CreateSchedulerPolicyResponse
+ 447, // 1045: api.v1.K8sRecommendationService.ListSchedulerPolicies:output_type -> api.v1.ListSchedulerPoliciesResponse
+ 449, // 1046: api.v1.K8sRecommendationService.UpdateSchedulerPolicy:output_type -> api.v1.UpdateSchedulerPolicyResponse
+ 451, // 1047: api.v1.K8sRecommendationService.ToggleSchedulerPolicyDisabled:output_type -> api.v1.ToggleSchedulerPolicyDisabledResponse
+ 453, // 1048: api.v1.K8sRecommendationService.DeleteSchedulerPolicy:output_type -> api.v1.DeleteSchedulerPolicyResponse
+ 456, // 1049: api.v1.K8sRecommendationService.PreviewSchedulerPolicyTargets:output_type -> api.v1.PreviewSchedulerPolicyTargetsResponse
+ 459, // 1050: api.v1.K8sRecommendationService.ListSchedulerPolicyEnrollments:output_type -> api.v1.ListSchedulerPolicyEnrollmentsResponse
+ 487, // 1051: api.v1.K8sRecommendationService.UpsertManualWorkloadRule:output_type -> api.v1.UpsertManualWorkloadRuleResponse
+ 489, // 1052: api.v1.K8sRecommendationService.ToggleWorkloadRuleDisabled:output_type -> api.v1.ToggleWorkloadRuleDisabledResponse
+ 491, // 1053: api.v1.K8sRecommendationService.PreviewWorkloadRule:output_type -> api.v1.PreviewWorkloadRuleResponse
+ 466, // 1054: api.v1.K8sRecommendationService.GetWorkloadRulesByPolicy:output_type -> api.v1.GetWorkloadRulesByPolicyResponse
+ 468, // 1055: api.v1.K8sRecommendationService.ListWorkloadRules:output_type -> api.v1.ListWorkloadRulesResponse
+ 470, // 1056: api.v1.K8sRecommendationService.GetWorkloadRuleByID:output_type -> api.v1.GetWorkloadRuleByIDResponse
+ 472, // 1057: api.v1.K8sRecommendationService.GetWorkloadRuleByWorkload:output_type -> api.v1.GetWorkloadRuleByWorkloadResponse
+ 474, // 1058: api.v1.K8sRecommendationService.GetWorkloadByWorkloadRule:output_type -> api.v1.GetWorkloadByWorkloadRuleResponse
+ 476, // 1059: api.v1.K8sRecommendationService.DeleteWorkloadRule:output_type -> api.v1.DeleteWorkloadRuleResponse
+ 478, // 1060: api.v1.K8sRecommendationService.DeleteAllWorkloadRules:output_type -> api.v1.DeleteAllWorkloadRulesResponse
+ 480, // 1061: api.v1.K8sRecommendationService.BulkDeleteWorkloadRules:output_type -> api.v1.BulkDeleteWorkloadRulesResponse
+ 482, // 1062: api.v1.K8sRecommendationService.BulkToggleWorkloadRulesDisabled:output_type -> api.v1.BulkToggleWorkloadRulesDisabledResponse
+ 493, // 1063: api.v1.K8sRecommendationService.GetWorkloadContainerNames:output_type -> api.v1.GetWorkloadContainerNamesResponse
+ 497, // 1064: api.v1.K8sRecommendationService.BatchAutoOptimizeWorkloads:output_type -> api.v1.BatchAutoOptimizeWorkloadsResponse
+ 501, // 1065: api.v1.K8sRecommendationService.BatchUpsertManualWorkloadRules:output_type -> api.v1.BatchUpsertManualWorkloadRulesResponse
+ 504, // 1066: api.v1.K8sRecommendationService.BatchPreviewWorkloadRules:output_type -> api.v1.BatchPreviewWorkloadRulesResponse
+ 506, // 1067: api.v1.K8sRecommendationService.ApplyOneTimeOptimization:output_type -> api.v1.ApplyOneTimeOptimizationResponse
+ 484, // 1068: api.v1.K8sRecommendationService.DeleteRuleAndApplyRecommendation:output_type -> api.v1.DeleteRuleAndApplyRecommendationResponse
+ 511, // 1069: api.v1.K8sRecommendationService.GetNodeRecommendationStatus:output_type -> api.v1.GetNodeRecommendationStatusResponse
+ 537, // 1070: api.v1.K8sRecommendationService.CreateSnapshotPolicies:output_type -> api.v1.CreateSnapshotPoliciesResponse
+ 539, // 1071: api.v1.K8sRecommendationService.ListSnapshotPolicies:output_type -> api.v1.ListSnapshotPoliciesResponse
+ 541, // 1072: api.v1.K8sRecommendationService.UpdateSnapshotPolicy:output_type -> api.v1.UpdateSnapshotPolicyResponse
+ 543, // 1073: api.v1.K8sRecommendationService.DeleteSnapshotPolicy:output_type -> api.v1.DeleteSnapshotPolicyResponse
+ 545, // 1074: api.v1.K8sRecommendationService.CreateSnapshotPolicyTargets:output_type -> api.v1.CreateSnapshotPolicyTargetsResponse
+ 547, // 1075: api.v1.K8sRecommendationService.ListSnapshotPolicyTargets:output_type -> api.v1.ListSnapshotPolicyTargetsResponse
+ 549, // 1076: api.v1.K8sRecommendationService.UpdateSnapshotPolicyTarget:output_type -> api.v1.UpdateSnapshotPolicyTargetResponse
+ 551, // 1077: api.v1.K8sRecommendationService.DeleteSnapshotPolicyTarget:output_type -> api.v1.DeleteSnapshotPolicyTargetResponse
+ 553, // 1078: api.v1.K8sRecommendationService.CreateForensicSnapshotPolicies:output_type -> api.v1.CreateForensicSnapshotPoliciesResponse
+ 555, // 1079: api.v1.K8sRecommendationService.ListForensicSnapshotPolicies:output_type -> api.v1.ListForensicSnapshotPoliciesResponse
+ 557, // 1080: api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicy:output_type -> api.v1.UpdateForensicSnapshotPolicyResponse
+ 559, // 1081: api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicy:output_type -> api.v1.DeleteForensicSnapshotPolicyResponse
+ 561, // 1082: api.v1.K8sRecommendationService.CreateForensicSnapshotPolicyTargets:output_type -> api.v1.CreateForensicSnapshotPolicyTargetsResponse
+ 563, // 1083: api.v1.K8sRecommendationService.ListForensicSnapshotPolicyTargets:output_type -> api.v1.ListForensicSnapshotPolicyTargetsResponse
+ 565, // 1084: api.v1.K8sRecommendationService.UpdateForensicSnapshotPolicyTarget:output_type -> api.v1.UpdateForensicSnapshotPolicyTargetResponse
+ 567, // 1085: api.v1.K8sRecommendationService.DeleteForensicSnapshotPolicyTarget:output_type -> api.v1.DeleteForensicSnapshotPolicyTargetResponse
+ 569, // 1086: api.v1.K8sRecommendationService.TriggerForensicSnapshotRun:output_type -> api.v1.TriggerForensicSnapshotRunResponse
+ 595, // 1087: api.v1.K8sRecommendationService.ListReferencedAuthentications:output_type -> api.v1.ListReferencedAuthenticationsResponse
+ 574, // 1088: api.v1.K8sRecommendationService.PreviewSnapshotPolicyTargetMatches:output_type -> api.v1.PreviewSnapshotPolicyTargetMatchesResponse
+ 577, // 1089: api.v1.K8sRecommendationService.PreviewForensicSnapshotPolicyTargetMatches:output_type -> api.v1.PreviewForensicSnapshotPolicyTargetMatchesResponse
+ 580, // 1090: api.v1.K8sRecommendationService.GetSnapshotPolicyTargetRenderedScope:output_type -> api.v1.GetSnapshotPolicyTargetRenderedScopeResponse
+ 582, // 1091: api.v1.K8sRecommendationService.GetForensicSnapshotPolicyTargetRenderedScope:output_type -> api.v1.GetForensicSnapshotPolicyTargetRenderedScopeResponse
+ 586, // 1092: api.v1.K8sRecommendationService.GetSnapshotRecommendationStatus:output_type -> api.v1.GetSnapshotRecommendationStatusResponse
+ 588, // 1093: api.v1.K8sRecommendationService.GetForensicSnapshotRecommendationStatus:output_type -> api.v1.GetForensicSnapshotRecommendationStatusResponse
+ 590, // 1094: api.v1.K8sRecommendationService.PreviewSnapshotRecommendationConfig:output_type -> api.v1.PreviewSnapshotRecommendationConfigResponse
+ 592, // 1095: api.v1.K8sRecommendationService.PreviewForensicSnapshotRecommendationConfig:output_type -> api.v1.PreviewForensicSnapshotRecommendationConfigResponse
+ 925, // [925:1096] is the sub-list for method output_type
+ 754, // [754:925] is the sub-list for method input_type
+ 754, // [754:754] is the sub-list for extension type_name
+ 754, // [754:754] is the sub-list for extension extendee
+ 0, // [0:754] is the sub-list for field type_name
}
func init() { file_api_v1_recommendation_proto_init() }
@@ -37000,6 +57276,7 @@ func file_api_v1_recommendation_proto_init() {
file_api_v1_common_proto_init()
file_api_v1_instance_proto_init()
file_api_v1_k8s_proto_init()
+ file_api_v1_hpa_connector_proto_init()
file_api_v1_profiling_proto_init()
if !protoimpl.UnsafeEnabled {
file_api_v1_recommendation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
@@ -37014,8 +57291,1904 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetRecommendationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetRecommendationsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetRecommendationsForWorkloadRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetRecommendationsForWorkloadResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupStatsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupStatsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetOptimalInstanceTypeForNodeGroupRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetOptimalInstanceTypeForNodeGroupResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetLatestNodeGroupRecommendationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetLatestNodeGroupRecommendationResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetLatestWorkloadRecommendationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetLatestWorkloadRecommendationResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewWorkloadRecommendationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewWorkloadRecommendationResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewWorkloadRecommendationsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadIdentifier); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewWorkloadRecommendationsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateClusterRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateClusterRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClusterRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClusterRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListClusterRecommendationPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListClusterRecommendationPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateClusterRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateClusterRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteClusterRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteClusterRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachClusterRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachClusterRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadsWithAttachedPolicyTargetsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadsWithAttachedPolicyTargetsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TargetIdList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodeGroupRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodeGroupRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodeGroupRecommendationPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodeGroupRecommendationPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodeGroupRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodeGroupRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteNodeGroupRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteNodeGroupRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachNodeGroupRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachNodeGroupRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateWorkloadRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateWorkloadRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRecommendationPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRecommendationPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkloadRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkloadRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachWorkloadRecommendationPolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachWorkloadRecommendationPolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachWorkloadRecommendationPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttachWorkloadRecommendationPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadPolicyAttachment); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadPolicyTarget); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateWorkloadPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateWorkloadPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadPolicyTargetsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadPolicyTargetsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkloadPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkloadPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleWorkloadPolicyTargetsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleWorkloadPolicyTargetsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RemoveClusterOptimizationsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RemoveClusterOptimizationsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewWorkloadPolicyTargetMatchesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewWorkloadPolicyTargetMatchesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewWorkloadPolicyTargetRecommendationsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadCollisionInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewWorkloadPolicyTargetRecommendationsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadPercentileSummary); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupPolicyTarget); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodeGroupPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodeGroupPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodeGroupPolicyTargetsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodeGroupPolicyTargetsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodeGroupPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodeGroupPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteNodeGroupPolicyTargetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleNodeGroupPolicyTargetsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleNodeGroupPolicyTargetsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteNodeGroupPolicyTargetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewNodeGroupPolicyTargetMatchesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewNodeGroupPolicyTargetMatchesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewNodeGroupPolicyTargetRecommendationsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPreviewNodeGroupPolicyTargetRecommendationsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BalanceGetRecommendationsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BalanceGetRecommendationsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchNodeGroupRecommendations); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchWorkloadRecommendations); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadRule); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResourceRuleConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HPAMetricTrigger); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HPAFallback); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerResourceConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerResourceRuleConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*JVMHeapRuleConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HPARuleConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EmergencyResponseConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KEDAScaledObjectTemplate); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KEDATrigger); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KEDAAuthenticationRef); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KEDAFallback); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KEDAAdvanced); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PercentileValues); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResourcePercentiles); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BurstinessRatios); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadClassification); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchWorkloadRules); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchHPAConnectors); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadWithActiveRecommendations); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenericResourceRecommendation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchGenericResourceRecommendations); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchPvcStorageRecommendations); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeneratePodDisruptionBudgetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeneratePodDisruptionBudgetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenerateAndCreatePodDisruptionBudgetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenerateAndCreatePodDisruptionBudgetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreatePodDisruptionBudgetRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreatePodDisruptionBudgetResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPDBRecommendationForWorkloadRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPDBRecommendationForWorkloadResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StructuralHealthFinding); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadStructuralHealth); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadStructuralHealthRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadStructuralHealthResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReconcileWorkload); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReconcileResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OperatorHealth); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AgentHealth); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AgentHealthMeta); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HealthReport); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeStats); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeMetric); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerStats); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerMetric); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerSummarizedMetric); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Metric); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ContainerRecommendation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KedaScaledObjectRecommendation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResourceRecommendation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EnvVarMutation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CommandArgMutation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeSelectorMutation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TolerationMutation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Toleration); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterRecommendationPolicy); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupRecommendationPolicy); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VerticalScalingOptimizationTarget); i {
case 0:
return &v.state
case 1:
@@ -37026,8 +59199,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetRecommendationsForWorkloadRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*HorizontalScalingOptimizationTarget); i {
case 0:
return &v.state
case 1:
@@ -37038,8 +59211,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetRecommendationsForWorkloadResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadRecommendationPolicy); i {
case 0:
return &v.state
case 1:
@@ -37050,8 +59223,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupStatsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPolicyRecommendedDefaultsRequest); i {
case 0:
return &v.state
case 1:
@@ -37062,8 +59235,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupStatsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPolicyRecommendedDefaultsResponse); i {
case 0:
return &v.state
case 1:
@@ -37074,8 +59247,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetOptimalInstanceTypeForNodeGroupRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BalanceRegisterRequest); i {
case 0:
return &v.state
case 1:
@@ -37086,8 +59259,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetOptimalInstanceTypeForNodeGroupResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BalanceFeatures); i {
case 0:
return &v.state
case 1:
@@ -37098,8 +59271,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetLatestNodeGroupRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BalanceApplyRecommendationResponse); i {
case 0:
return &v.state
case 1:
@@ -37110,8 +59283,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetLatestNodeGroupRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LiveMigrationResult); i {
case 0:
return &v.state
case 1:
@@ -37122,8 +59295,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetLatestWorkloadRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupReference); i {
case 0:
return &v.state
case 1:
@@ -37134,8 +59307,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetLatestWorkloadRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupRecommendation); i {
case 0:
return &v.state
case 1:
@@ -37146,8 +59319,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewWorkloadRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CostImpact); i {
case 0:
return &v.state
case 1:
@@ -37158,8 +59331,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewWorkloadRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadRecommendation); i {
case 0:
return &v.state
case 1:
@@ -37170,8 +59343,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewWorkloadRecommendationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningDetails); i {
case 0:
return &v.state
case 1:
@@ -37182,8 +59355,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadIdentifier); i {
+ file_api_v1_recommendation_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningEvidence); i {
case 0:
return &v.state
case 1:
@@ -37194,8 +59367,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewWorkloadRecommendationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningInsight); i {
case 0:
return &v.state
case 1:
@@ -37206,8 +59379,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateClusterRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningResourceEdge); i {
case 0:
return &v.state
case 1:
@@ -37218,8 +59391,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateClusterRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningContainerChange); i {
case 0:
return &v.state
case 1:
@@ -37230,8 +59403,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetClusterRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningUtilization); i {
case 0:
return &v.state
case 1:
@@ -37242,8 +59415,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetClusterRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningHistoricalPattern); i {
case 0:
return &v.state
case 1:
@@ -37254,8 +59427,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListClusterRecommendationPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningReplicas); i {
case 0:
return &v.state
case 1:
@@ -37266,8 +59439,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListClusterRecommendationPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReasoningDecision); i {
case 0:
return &v.state
case 1:
@@ -37278,8 +59451,440 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateClusterRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAttachedNodeGroupPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAttachedNodeGroupPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAttachedWorkloadPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAttachedWorkloadPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadRecommendationPolicyGroup); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadPolicyTargetGroup); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadIdentifiers); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadPolicies); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListAttachedWorkloadPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListAttachedWorkloadPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListAttachedNodeGroupPoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListAttachedNodeGroupPoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupItem); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecommendationAppliedRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecommendationAppliedResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ApplyRecommendationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ApplyRecommendationResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecommendationEventsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecommendationEventsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RetrieveSavingsForWorkloadRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RetrieveSavingsForWorkloadResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodePoliciesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodePoliciesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestedNodePolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestedNodePolicyResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenerateNodePoliciesFromKarpenterRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenerateNodePoliciesFromKarpenterResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenerateNodePoliciesFromNodeGroupsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenerateNodePoliciesFromNodeGroupsResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupMigrationEligibility); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeAnnotationReadinessRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeAnnotationReadinessResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DetectClusterAutoscalerRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DetectClusterAutoscalerResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetMigrationStateRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetMigrationStateResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_recommendation_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateMigrationStateRequest); i {
case 0:
return &v.state
case 1:
@@ -37290,8 +59895,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateClusterRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateMigrationStateResponse); i {
case 0:
return &v.state
case 1:
@@ -37302,8 +59907,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteClusterRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetKarpenterMigrationStateRequest); i {
case 0:
return &v.state
case 1:
@@ -37314,8 +59919,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteClusterRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetKarpenterMigrationStateResponse); i {
case 0:
return &v.state
case 1:
@@ -37326,8 +59931,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachClusterRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateKarpenterMigrationStateRequest); i {
case 0:
return &v.state
case 1:
@@ -37338,8 +59943,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachClusterRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateKarpenterMigrationStateResponse); i {
case 0:
return &v.state
case 1:
@@ -37350,8 +59955,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadsWithAttachedPolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KarpenterOwnershipConflict); i {
case 0:
return &v.state
case 1:
@@ -37362,8 +59967,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadsWithAttachedPolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DetectKarpenterOwnershipConflictsRequest); i {
case 0:
return &v.state
case 1:
@@ -37374,8 +59979,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TargetIdList); i {
+ file_api_v1_recommendation_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DetectKarpenterOwnershipConflictsResponse); i {
case 0:
return &v.state
case 1:
@@ -37386,8 +59991,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodeGroupRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AcknowledgeKarpenterOwnershipConflictRequest); i {
case 0:
return &v.state
case 1:
@@ -37398,8 +60003,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodeGroupRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AcknowledgeKarpenterOwnershipConflictResponse); i {
case 0:
return &v.state
case 1:
@@ -37410,8 +60015,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KarpenterSourceResource); i {
case 0:
return &v.state
case 1:
@@ -37422,8 +60027,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetKarpenterSourceResourcesRequest); i {
case 0:
return &v.state
case 1:
@@ -37434,8 +60039,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodeGroupRecommendationPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetKarpenterSourceResourcesResponse); i {
case 0:
return &v.state
case 1:
@@ -37446,8 +60051,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodeGroupRecommendationPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePoolAdoptionStatus); i {
case 0:
return &v.state
case 1:
@@ -37458,8 +60063,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodeGroupRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetKarpenterAdoptionStatusRequest); i {
case 0:
return &v.state
case 1:
@@ -37470,8 +60075,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodeGroupRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetKarpenterAdoptionStatusResponse); i {
case 0:
return &v.state
case 1:
@@ -37482,8 +60087,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteNodeGroupRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReportNodePoolValidationRequest); i {
case 0:
return &v.state
case 1:
@@ -37494,8 +60099,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteNodeGroupRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReportNodePoolValidationResponse); i {
case 0:
return &v.state
case 1:
@@ -37506,8 +60111,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachNodeGroupRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodePoolValidationsRequest); i {
case 0:
return &v.state
case 1:
@@ -37518,8 +60123,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachNodeGroupRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePoolValidationReport); i {
case 0:
return &v.state
case 1:
@@ -37530,8 +60135,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateWorkloadRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodePoolValidationsResponse); i {
case 0:
return &v.state
case 1:
@@ -37542,8 +60147,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateWorkloadRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadCompatibilityWarning); i {
case 0:
return &v.state
case 1:
@@ -37554,8 +60159,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodePoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -37566,8 +60171,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodePoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -37578,8 +60183,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRecommendationPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodePolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -37590,8 +60195,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRecommendationPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodePolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -37602,8 +60207,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateWorkloadRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupCheckpointStatus); i {
case 0:
return &v.state
case 1:
@@ -37614,8 +60219,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateWorkloadRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupsCheckpointStatusRequest); i {
case 0:
return &v.state
case 1:
@@ -37626,8 +60231,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeGroupsCheckpointStatusResponse); i {
case 0:
return &v.state
case 1:
@@ -37638,8 +60243,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SetNodePolicyCheckpointLabelRequest); i {
case 0:
return &v.state
case 1:
@@ -37650,8 +60255,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachWorkloadRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SetNodePolicyCheckpointLabelResponse); i {
case 0:
return &v.state
case 1:
@@ -37662,8 +60267,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachWorkloadRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteNodePolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -37674,8 +60279,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachWorkloadRecommendationPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteNodePolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -37686,8 +60291,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttachWorkloadRecommendationPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePolicy); i {
case 0:
return &v.state
case 1:
@@ -37698,8 +60303,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadPolicyAttachment); i {
+ file_api_v1_recommendation_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewNodeRecommendationConfigRequest); i {
case 0:
return &v.state
case 1:
@@ -37710,8 +60315,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadPolicyTarget); i {
+ file_api_v1_recommendation_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewNodeRecommendationConfigResponse); i {
case 0:
return &v.state
case 1:
@@ -37722,8 +60327,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateWorkloadPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeRecommendationConfig); i {
case 0:
return &v.state
case 1:
@@ -37734,8 +60339,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateWorkloadPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestedKarpenterConfigRequest); i {
case 0:
return &v.state
case 1:
@@ -37746,8 +60351,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestedKarpenterConfigResponse); i {
case 0:
return &v.state
case 1:
@@ -37758,8 +60363,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestNodePolicyImprovementsRequest); i {
case 0:
return &v.state
case 1:
@@ -37770,8 +60375,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadPolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestNodePolicyImprovementsResponse); i {
case 0:
return &v.state
case 1:
@@ -37782,8 +60387,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadPolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListClusterNodePolicySuggestionsRequest); i {
case 0:
return &v.state
case 1:
@@ -37794,8 +60399,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateWorkloadPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListClusterNodePolicySuggestionsResponse); i {
case 0:
return &v.state
case 1:
@@ -37806,8 +60411,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateWorkloadPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePolicySuggestionsForPolicy); i {
case 0:
return &v.state
case 1:
@@ -37818,8 +60423,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePolicySuggestion); i {
case 0:
return &v.state
case 1:
@@ -37830,8 +60435,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ToggleWorkloadPolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestionFieldChange); i {
case 0:
return &v.state
case 1:
@@ -37842,8 +60447,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ToggleWorkloadPolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestionEvidence); i {
case 0:
return &v.state
case 1:
@@ -37854,8 +60459,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestionWorkloadRef); i {
case 0:
return &v.state
case 1:
@@ -37866,8 +60471,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveClusterOptimizationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SuggestionContext); i {
case 0:
return &v.state
case 1:
@@ -37878,8 +60483,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveClusterOptimizationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAvailableKindsByTargetingFiltersRequest); i {
case 0:
return &v.state
case 1:
@@ -37890,8 +60495,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewWorkloadPolicyTargetMatchesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SearchResourcesByTargetingFiltersRequest); i {
case 0:
return &v.state
case 1:
@@ -37902,8 +60507,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewWorkloadPolicyTargetMatchesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TargetFilters); i {
case 0:
return &v.state
case 1:
@@ -37914,8 +60519,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewWorkloadPolicyTargetRecommendationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetAvailableKindsByTargetingFiltersResponse); i {
case 0:
return &v.state
case 1:
@@ -37926,8 +60531,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewWorkloadPolicyTargetRecommendationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SearchResourcesByTargetingFiltersResponse); i {
case 0:
return &v.state
case 1:
@@ -37938,8 +60543,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadPercentileSummary); i {
+ file_api_v1_recommendation_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NamespaceSearchResult); i {
case 0:
return &v.state
case 1:
@@ -37950,8 +60555,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupPolicyTarget); i {
+ file_api_v1_recommendation_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadSearchResult); i {
case 0:
return &v.state
case 1:
@@ -37962,8 +60567,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodeGroupPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupSearchResult); i {
case 0:
return &v.state
case 1:
@@ -37974,8 +60579,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodeGroupPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LabelSearchResult); i {
case 0:
return &v.state
case 1:
@@ -37986,8 +60591,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodePolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -37998,8 +60603,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateNodePolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -38010,8 +60615,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodeGroupPolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodePolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -38022,8 +60627,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodeGroupPolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodePolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -38034,8 +60639,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodeGroupPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodePolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -38046,8 +60651,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodeGroupPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateNodePolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -38058,8 +60663,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteNodeGroupPolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePolicyTarget); i {
case 0:
return &v.state
case 1:
@@ -38070,8 +60675,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ToggleNodeGroupPolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePolicyCondition); i {
case 0:
return &v.state
case 1:
@@ -38082,8 +60687,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ToggleNodeGroupPolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePolicyTargetStatus); i {
case 0:
return &v.state
case 1:
@@ -38094,8 +60699,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteNodeGroupPolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ZonalShiftConfig); i {
case 0:
return &v.state
case 1:
@@ -38106,8 +60711,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewNodeGroupPolicyTargetMatchesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Taint); i {
case 0:
return &v.state
case 1:
@@ -38118,8 +60723,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewNodeGroupPolicyTargetMatchesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DisruptionBudget); i {
case 0:
return &v.state
case 1:
@@ -38130,8 +60735,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewNodeGroupPolicyTargetRecommendationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DisruptionPolicy); i {
case 0:
return &v.state
case 1:
@@ -38142,8 +60747,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPreviewNodeGroupPolicyTargetRecommendationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ResourceLimits); i {
case 0:
return &v.state
case 1:
@@ -38154,8 +60759,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BalanceGetRecommendationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AWSNodeClassSpec); i {
case 0:
return &v.state
case 1:
@@ -38166,8 +60771,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BalanceGetRecommendationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceFamiliesRequest); i {
case 0:
return &v.state
case 1:
@@ -38178,8 +60783,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchNodeGroupRecommendations); i {
+ file_api_v1_recommendation_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceFamiliesResponse); i {
case 0:
return &v.state
case 1:
@@ -38190,8 +60795,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchWorkloadRecommendations); i {
+ file_api_v1_recommendation_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceSizesRequest); i {
case 0:
return &v.state
case 1:
@@ -38202,8 +60807,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadRule); i {
+ file_api_v1_recommendation_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceSizesResponse); i {
case 0:
return &v.state
case 1:
@@ -38214,8 +60819,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceRuleConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceShapesRequest); i {
case 0:
return &v.state
case 1:
@@ -38226,8 +60831,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HPAMetricTrigger); i {
+ file_api_v1_recommendation_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceShapesResponse); i {
case 0:
return &v.state
case 1:
@@ -38238,8 +60843,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HPAFallback); i {
+ file_api_v1_recommendation_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstanceFamily); i {
case 0:
return &v.state
case 1:
@@ -38250,8 +60855,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerResourceConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstanceShape); i {
case 0:
return &v.state
case 1:
@@ -38262,8 +60867,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerResourceRuleConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstanceSize); i {
case 0:
return &v.state
case 1:
@@ -38274,8 +60879,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HPARuleConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstanceCategory); i {
case 0:
return &v.state
case 1:
@@ -38286,8 +60891,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EmergencyResponseConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstanceCPU); i {
case 0:
return &v.state
case 1:
@@ -38298,8 +60903,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PercentileValues); i {
+ file_api_v1_recommendation_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*InstanceTypeName); i {
case 0:
return &v.state
case 1:
@@ -38310,8 +60915,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourcePercentiles); i {
+ file_api_v1_recommendation_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceCategoriesRequest); i {
case 0:
return &v.state
case 1:
@@ -38322,8 +60927,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BurstinessRatios); i {
+ file_api_v1_recommendation_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceCategoriesResponse); i {
case 0:
return &v.state
case 1:
@@ -38334,8 +60939,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadClassification); i {
+ file_api_v1_recommendation_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceCPUsRequest); i {
case 0:
return &v.state
case 1:
@@ -38346,8 +60951,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchWorkloadRules); i {
+ file_api_v1_recommendation_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceCPUsResponse); i {
case 0:
return &v.state
case 1:
@@ -38358,8 +60963,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadWithActiveRecommendations); i {
+ file_api_v1_recommendation_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceTypeNamesRequest); i {
case 0:
return &v.state
case 1:
@@ -38370,8 +60975,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenericResourceRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInstanceTypeNamesResponse); i {
case 0:
return &v.state
case 1:
@@ -38382,8 +60987,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchGenericResourceRecommendations); i {
+ file_api_v1_recommendation_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SubnetSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38394,8 +60999,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchPvcStorageRecommendations); i {
+ file_api_v1_recommendation_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SecurityGroupSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38406,8 +61011,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GeneratePodDisruptionBudgetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CapacityReservationSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38418,8 +61023,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GeneratePodDisruptionBudgetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AMISelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38430,8 +61035,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenerateAndCreatePodDisruptionBudgetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KubeletConfiguration); i {
case 0:
return &v.state
case 1:
@@ -38442,8 +61047,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenerateAndCreatePodDisruptionBudgetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BlockDeviceMapping); i {
case 0:
return &v.state
case 1:
@@ -38454,8 +61059,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreatePodDisruptionBudgetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BlockDevice); i {
case 0:
return &v.state
case 1:
@@ -38466,8 +61071,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreatePodDisruptionBudgetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MetadataOptions); i {
case 0:
return &v.state
case 1:
@@ -38478,8 +61083,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPDBRecommendationForWorkloadRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GCPNodeClassSpec); i {
case 0:
return &v.state
case 1:
@@ -38490,8 +61095,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPDBRecommendationForWorkloadResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GCPImageSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38502,8 +61107,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReconcileWorkload); i {
+ file_api_v1_recommendation_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GCPDisk); i {
case 0:
return &v.state
case 1:
@@ -38514,8 +61119,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReconcileResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AzureNodeClassSpec); i {
case 0:
return &v.state
case 1:
@@ -38526,8 +61131,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OperatorHealth); i {
+ file_api_v1_recommendation_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AzureKubeletConfiguration); i {
case 0:
return &v.state
case 1:
@@ -38538,8 +61143,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AgentHealth); i {
+ file_api_v1_recommendation_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCIImageSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38550,8 +61155,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AgentHealthMeta); i {
+ file_api_v1_recommendation_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCISubnetSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38562,8 +61167,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HealthReport); i {
+ file_api_v1_recommendation_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCISecurityGroupSelectorTerm); i {
case 0:
return &v.state
case 1:
@@ -38574,8 +61179,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeStats); i {
+ file_api_v1_recommendation_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCIBootConfig); i {
case 0:
return &v.state
case 1:
@@ -38586,8 +61191,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeMetric); i {
+ file_api_v1_recommendation_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCILaunchOptions); i {
case 0:
return &v.state
case 1:
@@ -38598,8 +61203,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerStats); i {
+ file_api_v1_recommendation_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCIVolumeAttributes); i {
case 0:
return &v.state
case 1:
@@ -38610,8 +61215,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerMetric); i {
+ file_api_v1_recommendation_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCINodeClassSpec); i {
case 0:
return &v.state
case 1:
@@ -38622,8 +61227,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerSummarizedMetric); i {
+ file_api_v1_recommendation_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KarpenterSettingsRecommendation); i {
case 0:
return &v.state
case 1:
@@ -38634,8 +61239,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metric); i {
+ file_api_v1_recommendation_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RawKarpenterSpec); i {
case 0:
return &v.state
case 1:
@@ -38646,8 +61251,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ContainerRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotRecommendation); i {
case 0:
return &v.state
case 1:
@@ -38658,8 +61263,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KedaScaledObjectRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ForensicSnapshotRecommendation); i {
case 0:
return &v.state
case 1:
@@ -38670,8 +61275,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotCRStatusReport); i {
case 0:
return &v.state
case 1:
@@ -38682,8 +61287,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Toleration); i {
+ file_api_v1_recommendation_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotCRStatus); i {
case 0:
return &v.state
case 1:
@@ -38694,8 +61299,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterRecommendationPolicy); i {
+ file_api_v1_recommendation_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotCRRuntimeStatus); i {
case 0:
return &v.state
case 1:
@@ -38706,8 +61311,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupRecommendationPolicy); i {
+ file_api_v1_recommendation_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotPolicyTargetStatus); i {
case 0:
return &v.state
case 1:
@@ -38718,8 +61323,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VerticalScalingOptimizationTarget); i {
+ file_api_v1_recommendation_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotPrereqs); i {
case 0:
return &v.state
case 1:
@@ -38730,8 +61335,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HorizontalScalingOptimizationTarget); i {
+ file_api_v1_recommendation_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeRecommendation); i {
case 0:
return &v.state
case 1:
@@ -38742,8 +61347,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadRecommendationPolicy); i {
+ file_api_v1_recommendation_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AWSKarpenterSpec); i {
case 0:
return &v.state
case 1:
@@ -38754,8 +61359,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPolicyRecommendedDefaultsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AKSKarpenterSpec); i {
case 0:
return &v.state
case 1:
@@ -38766,8 +61371,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPolicyRecommendedDefaultsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodePool); i {
case 0:
return &v.state
case 1:
@@ -38778,8 +61383,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BalanceRegisterRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EC2NodeClass); i {
case 0:
return &v.state
case 1:
@@ -38790,8 +61395,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BalanceFeatures); i {
+ file_api_v1_recommendation_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AKSNodeClass); i {
case 0:
return &v.state
case 1:
@@ -38802,8 +61407,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BalanceApplyRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GCPKarpenterSpec); i {
case 0:
return &v.state
case 1:
@@ -38814,8 +61419,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiveMigrationResult); i {
+ file_api_v1_recommendation_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GCENodeClass); i {
case 0:
return &v.state
case 1:
@@ -38826,8 +61431,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupReference); i {
+ file_api_v1_recommendation_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCIKarpenterSpec); i {
case 0:
return &v.state
case 1:
@@ -38838,8 +61443,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OCINodeClass); i {
case 0:
return &v.state
case 1:
@@ -38850,8 +61455,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CostImpact); i {
+ file_api_v1_recommendation_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StorageRecommendationPolicy); i {
case 0:
return &v.state
case 1:
@@ -38862,8 +61467,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateStorageRecommendationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -38874,8 +61479,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAttachedNodeGroupPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateStorageRecommendationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -38886,8 +61491,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAttachedNodeGroupPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetStorageRecommendationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -38898,8 +61503,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAttachedWorkloadPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetStorageRecommendationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -38910,8 +61515,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAttachedWorkloadPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListStorageRecommendationPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -38922,8 +61527,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadRecommendationPolicyGroup); i {
+ file_api_v1_recommendation_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListStorageRecommendationPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -38934,8 +61539,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadPolicyTargetGroup); i {
+ file_api_v1_recommendation_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateStorageRecommendationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -38946,8 +61551,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadIdentifiers); i {
+ file_api_v1_recommendation_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateStorageRecommendationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -38958,8 +61563,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadPolicies); i {
+ file_api_v1_recommendation_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteStorageRecommendationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -38970,8 +61575,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListAttachedWorkloadPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteStorageRecommendationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -38982,8 +61587,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListAttachedWorkloadPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StoragePolicyTarget); i {
case 0:
return &v.state
case 1:
@@ -38994,8 +61599,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListAttachedNodeGroupPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateStoragePolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -39006,8 +61611,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListAttachedNodeGroupPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateStoragePolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -39018,8 +61623,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupItem); i {
+ file_api_v1_recommendation_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListStoragePolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -39030,8 +61635,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecommendationAppliedRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListStoragePolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -39042,8 +61647,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecommendationAppliedResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateStoragePolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -39054,8 +61659,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ApplyRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateStoragePolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -39066,8 +61671,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ApplyRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteStoragePolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -39078,8 +61683,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecommendationEventsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteStoragePolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -39090,8 +61695,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecommendationEventsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PvcStorageRecommendation); i {
case 0:
return &v.state
case 1:
@@ -39102,8 +61707,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RetrieveSavingsForWorkloadRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPvcStorageRecommendationRequest); i {
case 0:
return &v.state
case 1:
@@ -39114,8 +61719,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RetrieveSavingsForWorkloadResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetPvcStorageRecommendationResponse); i {
case 0:
return &v.state
case 1:
@@ -39126,8 +61731,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodePoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListPvcStorageRecommendationsRequest); i {
case 0:
return &v.state
case 1:
@@ -39138,8 +61743,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodePoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListPvcStorageRecommendationsResponse); i {
case 0:
return &v.state
case 1:
@@ -39150,8 +61755,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SuggestedNodePolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeneratePvcStorageRecommendationRequest); i {
case 0:
return &v.state
case 1:
@@ -39162,8 +61767,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SuggestedNodePolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeneratePvcStorageRecommendationResponse); i {
case 0:
return &v.state
case 1:
@@ -39174,8 +61779,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenerateNodePoliciesFromKarpenterRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewPvcStorageRecommendationRequest); i {
case 0:
return &v.state
case 1:
@@ -39186,8 +61791,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenerateNodePoliciesFromKarpenterResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewPvcStorageRecommendationResponse); i {
case 0:
return &v.state
case 1:
@@ -39198,8 +61803,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenerateNodePoliciesFromNodeGroupsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadRuleOOMEvent); i {
case 0:
return &v.state
case 1:
@@ -39210,8 +61815,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GenerateNodePoliciesFromNodeGroupsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRuleOOMEventsRequest); i {
case 0:
return &v.state
case 1:
@@ -39222,8 +61827,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupMigrationEligibility); i {
+ file_api_v1_recommendation_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRuleOOMEventsResponse); i {
case 0:
return &v.state
case 1:
@@ -39234,8 +61839,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeAnnotationReadinessRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadOOMEventsRequest); i {
case 0:
return &v.state
case 1:
@@ -39246,8 +61851,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeAnnotationReadinessResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadOOMEventsResponse); i {
case 0:
return &v.state
case 1:
@@ -39258,8 +61863,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetMigrationStateRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadRuleCPUThrottleEvent); i {
case 0:
return &v.state
case 1:
@@ -39270,8 +61875,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetMigrationStateResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRuleCPUThrottleEventsRequest); i {
case 0:
return &v.state
case 1:
@@ -39282,8 +61887,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateMigrationStateRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRuleCPUThrottleEventsResponse); i {
case 0:
return &v.state
case 1:
@@ -39294,8 +61899,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateMigrationStateResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadCPUThrottleEventsRequest); i {
case 0:
return &v.state
case 1:
@@ -39306,8 +61911,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReportNodePoolValidationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadCPUThrottleEventsResponse); i {
case 0:
return &v.state
case 1:
@@ -39318,8 +61923,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReportNodePoolValidationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StringSetSelector); i {
case 0:
return &v.state
case 1:
@@ -39330,8 +61935,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodePoolValidationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadOptimizationPolicyProto); i {
case 0:
return &v.state
case 1:
@@ -39342,8 +61947,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodePoolValidationReport); i {
+ file_api_v1_recommendation_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GenericOptimizationSettings); i {
case 0:
return &v.state
case 1:
@@ -39354,8 +61959,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodePoolValidationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateWorkloadOptimizationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39366,8 +61971,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadCompatibilityWarning); i {
+ file_api_v1_recommendation_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateWorkloadOptimizationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39378,8 +61983,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodePoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadOptimizationPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -39390,8 +61995,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodePoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadOptimizationPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -39402,8 +62007,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodePolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadOptimizationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39414,8 +62019,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodePolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadOptimizationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39426,8 +62031,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupCheckpointStatus); i {
+ file_api_v1_recommendation_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadOptimizationPolicyByWorkloadRequest); i {
case 0:
return &v.state
case 1:
@@ -39438,8 +62043,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupsCheckpointStatusRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadOptimizationPolicyByWorkloadResponse); i {
case 0:
return &v.state
case 1:
@@ -39450,8 +62055,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeGroupsCheckpointStatusResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkloadOptimizationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39462,8 +62067,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SetNodePolicyCheckpointLabelRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[399].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleWorkloadOptimizationPolicyDisabledRequest); i {
case 0:
return &v.state
case 1:
@@ -39474,8 +62079,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SetNodePolicyCheckpointLabelResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[400].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleWorkloadOptimizationPolicyDisabledResponse); i {
case 0:
return &v.state
case 1:
@@ -39486,8 +62091,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteNodePolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[401].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkloadOptimizationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39498,8 +62103,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteNodePolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[402].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadOptimizationPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39510,8 +62115,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodePolicy); i {
+ file_api_v1_recommendation_proto_msgTypes[403].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadOptimizationPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39522,8 +62127,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewNodeRecommendationConfigRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[404].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewWorkloadOptimizationPolicyMatchesRequest); i {
case 0:
return &v.state
case 1:
@@ -39534,8 +62139,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewNodeRecommendationConfigResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[405].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadOptimizationPolicyMatch); i {
case 0:
return &v.state
case 1:
@@ -39546,8 +62151,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeRecommendationConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[406].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewWorkloadOptimizationPolicyMatchesResponse); i {
case 0:
return &v.state
case 1:
@@ -39558,8 +62163,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SuggestedKarpenterConfigRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[407].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerPolicyTargetProto); i {
case 0:
return &v.state
case 1:
@@ -39570,8 +62175,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SuggestedKarpenterConfigResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[408].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerPolicyProto); i {
case 0:
return &v.state
case 1:
@@ -39582,8 +62187,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAvailableKindsByTargetingFiltersRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[409].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSchedulerPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39594,8 +62199,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SearchResourcesByTargetingFiltersRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[410].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSchedulerPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39606,8 +62211,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TargetFilters); i {
+ file_api_v1_recommendation_proto_msgTypes[411].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSchedulerPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -39618,8 +62223,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetAvailableKindsByTargetingFiltersResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[412].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSchedulerPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -39630,8 +62235,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SearchResourcesByTargetingFiltersResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[413].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateSchedulerPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39642,8 +62247,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NamespaceSearchResult); i {
+ file_api_v1_recommendation_proto_msgTypes[414].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateSchedulerPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39654,8 +62259,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadSearchResult); i {
+ file_api_v1_recommendation_proto_msgTypes[415].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleSchedulerPolicyDisabledRequest); i {
case 0:
return &v.state
case 1:
@@ -39666,8 +62271,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeGroupSearchResult); i {
+ file_api_v1_recommendation_proto_msgTypes[416].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleSchedulerPolicyDisabledResponse); i {
case 0:
return &v.state
case 1:
@@ -39678,8 +62283,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LabelSearchResult); i {
+ file_api_v1_recommendation_proto_msgTypes[417].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSchedulerPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39690,8 +62295,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodePolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[418].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSchedulerPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39702,8 +62307,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateNodePolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[419].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewSchedulerPolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -39714,8 +62319,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodePolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[420].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerPolicyTargetMatch); i {
case 0:
return &v.state
case 1:
@@ -39726,8 +62331,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListNodePolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[421].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewSchedulerPolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -39738,8 +62343,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodePolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[422].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSchedulerPolicyEnrollmentsRequest); i {
case 0:
return &v.state
case 1:
@@ -39750,8 +62355,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateNodePolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[423].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerPolicyEnrollment); i {
case 0:
return &v.state
case 1:
@@ -39762,8 +62367,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodePolicyTarget); i {
+ file_api_v1_recommendation_proto_msgTypes[424].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSchedulerPolicyEnrollmentsResponse); i {
case 0:
return &v.state
case 1:
@@ -39774,8 +62379,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodePolicyCondition); i {
+ file_api_v1_recommendation_proto_msgTypes[425].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerPolicySync); i {
case 0:
return &v.state
case 1:
@@ -39786,8 +62391,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodePolicyTargetStatus); i {
+ file_api_v1_recommendation_proto_msgTypes[426].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerConfigPayload); i {
case 0:
return &v.state
case 1:
@@ -39798,8 +62403,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ZonalShiftConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[427].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerRevertInstruction); i {
case 0:
return &v.state
case 1:
@@ -39810,8 +62415,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Taint); i {
+ file_api_v1_recommendation_proto_msgTypes[428].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerEnrollmentReport); i {
case 0:
return &v.state
case 1:
@@ -39822,8 +62427,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DisruptionBudget); i {
+ file_api_v1_recommendation_proto_msgTypes[429].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerRevertEventReport); i {
case 0:
return &v.state
case 1:
@@ -39834,8 +62439,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DisruptionPolicy); i {
+ file_api_v1_recommendation_proto_msgTypes[430].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRulesByPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -39846,8 +62451,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceLimits); i {
+ file_api_v1_recommendation_proto_msgTypes[431].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRulesByPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -39858,8 +62463,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AWSNodeClassSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[432].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRulesRequest); i {
case 0:
return &v.state
case 1:
@@ -39870,8 +62475,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceFamiliesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[433].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListWorkloadRulesResponse); i {
case 0:
return &v.state
case 1:
@@ -39882,8 +62487,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceFamiliesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[434].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRuleByIDRequest); i {
case 0:
return &v.state
case 1:
@@ -39894,8 +62499,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceSizesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[435].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRuleByIDResponse); i {
case 0:
return &v.state
case 1:
@@ -39906,8 +62511,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceSizesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[436].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRuleByWorkloadRequest); i {
case 0:
return &v.state
case 1:
@@ -39918,8 +62523,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceFamily); i {
+ file_api_v1_recommendation_proto_msgTypes[437].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadRuleByWorkloadResponse); i {
case 0:
return &v.state
case 1:
@@ -39930,8 +62535,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceSize); i {
+ file_api_v1_recommendation_proto_msgTypes[438].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadByWorkloadRuleRequest); i {
case 0:
return &v.state
case 1:
@@ -39942,8 +62547,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceCategory); i {
+ file_api_v1_recommendation_proto_msgTypes[439].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadByWorkloadRuleResponse); i {
case 0:
return &v.state
case 1:
@@ -39954,8 +62559,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceCPU); i {
+ file_api_v1_recommendation_proto_msgTypes[440].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadRuleRequest); i {
case 0:
return &v.state
case 1:
@@ -39966,8 +62571,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceTypeName); i {
+ file_api_v1_recommendation_proto_msgTypes[441].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteWorkloadRuleResponse); i {
case 0:
return &v.state
case 1:
@@ -39978,8 +62583,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceCategoriesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[442].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteAllWorkloadRulesRequest); i {
case 0:
return &v.state
case 1:
@@ -39990,8 +62595,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceCategoriesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[443].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteAllWorkloadRulesResponse); i {
case 0:
return &v.state
case 1:
@@ -40002,8 +62607,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceCPUsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[444].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BulkDeleteWorkloadRulesRequest); i {
case 0:
return &v.state
case 1:
@@ -40014,8 +62619,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceCPUsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[445].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BulkDeleteWorkloadRulesResponse); i {
case 0:
return &v.state
case 1:
@@ -40026,8 +62631,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceTypeNamesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[446].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BulkToggleWorkloadRulesDisabledRequest); i {
case 0:
return &v.state
case 1:
@@ -40038,8 +62643,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInstanceTypeNamesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[447].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BulkToggleWorkloadRulesDisabledResponse); i {
case 0:
return &v.state
case 1:
@@ -40050,8 +62655,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubnetSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[448].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRuleAndApplyRecommendationRequest); i {
case 0:
return &v.state
case 1:
@@ -40062,8 +62667,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SecurityGroupSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[449].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRuleAndApplyRecommendationResponse); i {
case 0:
return &v.state
case 1:
@@ -40074,8 +62679,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CapacityReservationSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[450].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ManualRuleFields); i {
case 0:
return &v.state
case 1:
@@ -40086,8 +62691,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AMISelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[451].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpsertManualWorkloadRuleRequest); i {
case 0:
return &v.state
case 1:
@@ -40098,8 +62703,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KubeletConfiguration); i {
+ file_api_v1_recommendation_proto_msgTypes[452].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpsertManualWorkloadRuleResponse); i {
case 0:
return &v.state
case 1:
@@ -40110,8 +62715,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BlockDeviceMapping); i {
+ file_api_v1_recommendation_proto_msgTypes[453].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleWorkloadRuleDisabledRequest); i {
case 0:
return &v.state
case 1:
@@ -40122,8 +62727,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BlockDevice); i {
+ file_api_v1_recommendation_proto_msgTypes[454].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ToggleWorkloadRuleDisabledResponse); i {
case 0:
return &v.state
case 1:
@@ -40134,8 +62739,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MetadataOptions); i {
+ file_api_v1_recommendation_proto_msgTypes[455].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewWorkloadRuleRequest); i {
case 0:
return &v.state
case 1:
@@ -40146,8 +62751,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GCPNodeClassSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[456].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewWorkloadRuleResponse); i {
case 0:
return &v.state
case 1:
@@ -40158,8 +62763,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GCPImageSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[457].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadContainerNamesRequest); i {
case 0:
return &v.state
case 1:
@@ -40170,8 +62775,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GCPDisk); i {
+ file_api_v1_recommendation_proto_msgTypes[458].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetWorkloadContainerNamesResponse); i {
case 0:
return &v.state
case 1:
@@ -40182,8 +62787,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AzureNodeClassSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[459].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchAutoOptimizeWorkload); i {
case 0:
return &v.state
case 1:
@@ -40194,8 +62799,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AzureKubeletConfiguration); i {
+ file_api_v1_recommendation_proto_msgTypes[460].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchAutoOptimizeWorkloadsRequest); i {
case 0:
return &v.state
case 1:
@@ -40206,8 +62811,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCIImageSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[461].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchAutoOptimizeWorkloadResult); i {
case 0:
return &v.state
case 1:
@@ -40218,8 +62823,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCISubnetSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[462].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchAutoOptimizeWorkloadsResponse); i {
case 0:
return &v.state
case 1:
@@ -40230,8 +62835,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCISecurityGroupSelectorTerm); i {
+ file_api_v1_recommendation_proto_msgTypes[463].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchWorkloadEntry); i {
case 0:
return &v.state
case 1:
@@ -40242,8 +62847,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCIBootConfig); i {
+ file_api_v1_recommendation_proto_msgTypes[464].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchUpsertManualWorkloadRulesRequest); i {
case 0:
return &v.state
case 1:
@@ -40254,8 +62859,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCILaunchOptions); i {
+ file_api_v1_recommendation_proto_msgTypes[465].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchUpsertManualWorkloadRuleResult); i {
case 0:
return &v.state
case 1:
@@ -40266,8 +62871,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCIVolumeAttributes); i {
+ file_api_v1_recommendation_proto_msgTypes[466].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchUpsertManualWorkloadRulesResponse); i {
case 0:
return &v.state
case 1:
@@ -40278,8 +62883,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCINodeClassSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[467].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchPreviewWorkloadRulesRequest); i {
case 0:
return &v.state
case 1:
@@ -40290,8 +62895,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KarpenterSettingsRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[468].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchPreviewWorkloadRuleResult); i {
case 0:
return &v.state
case 1:
@@ -40302,8 +62907,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RawKarpenterSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[469].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchPreviewWorkloadRulesResponse); i {
case 0:
return &v.state
case 1:
@@ -40314,8 +62919,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[470].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ApplyOneTimeOptimizationRequest); i {
case 0:
return &v.state
case 1:
@@ -40326,8 +62931,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AWSKarpenterSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[471].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ApplyOneTimeOptimizationResponse); i {
case 0:
return &v.state
case 1:
@@ -40338,8 +62943,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AKSKarpenterSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[472].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadProfileManifest); i {
case 0:
return &v.state
case 1:
@@ -40350,8 +62955,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodePool); i {
+ file_api_v1_recommendation_proto_msgTypes[473].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BatchWorkloadProfiles); i {
case 0:
return &v.state
case 1:
@@ -40362,8 +62967,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EC2NodeClass); i {
+ file_api_v1_recommendation_proto_msgTypes[474].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeConfigApplyEvent); i {
case 0:
return &v.state
case 1:
@@ -40374,8 +62979,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AKSNodeClass); i {
+ file_api_v1_recommendation_proto_msgTypes[475].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeRecommendationStatusRequest); i {
case 0:
return &v.state
case 1:
@@ -40386,8 +62991,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GCPKarpenterSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[476].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetNodeRecommendationStatusResponse); i {
case 0:
return &v.state
case 1:
@@ -40398,8 +63003,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GCENodeClass); i {
+ file_api_v1_recommendation_proto_msgTypes[477].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EnableCheckpointForPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -40410,8 +63015,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCIKarpenterSpec); i {
+ file_api_v1_recommendation_proto_msgTypes[478].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EnableCheckpointForPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -40422,8 +63027,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OCINodeClass); i {
+ file_api_v1_recommendation_proto_msgTypes[479].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetCheckpointApplyStatusRequest); i {
case 0:
return &v.state
case 1:
@@ -40434,8 +63039,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StorageRecommendationPolicy); i {
+ file_api_v1_recommendation_proto_msgTypes[480].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetCheckpointApplyStatusResponse); i {
case 0:
return &v.state
case 1:
@@ -40446,8 +63051,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateStorageRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[481].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeApplyFailure); i {
case 0:
return &v.state
case 1:
@@ -40458,8 +63063,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateStorageRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[482].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClusterCheckpointLabelCoverageRequest); i {
case 0:
return &v.state
case 1:
@@ -40470,8 +63075,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetStorageRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[483].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeGroupCheckpointLabelCoverage); i {
case 0:
return &v.state
case 1:
@@ -40482,8 +63087,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetStorageRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[484].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetClusterCheckpointLabelCoverageResponse); i {
case 0:
return &v.state
case 1:
@@ -40494,8 +63099,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListStorageRecommendationPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[485].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodeGroupCheckpointLabelStateRequest); i {
case 0:
return &v.state
case 1:
@@ -40506,8 +63111,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListStorageRecommendationPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[486].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeCheckpointLabelEntry); i {
case 0:
return &v.state
case 1:
@@ -40518,8 +63123,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateStorageRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[487].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListNodeGroupCheckpointLabelStateResponse); i {
case 0:
return &v.state
case 1:
@@ -40530,8 +63135,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateStorageRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[488].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotPercentBounds); i {
case 0:
return &v.state
case 1:
@@ -40542,8 +63147,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteStorageRecommendationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[489].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotResourceThreshold); i {
case 0:
return &v.state
case 1:
@@ -40554,8 +63159,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteStorageRecommendationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[490].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotSchedulePolicySpec); i {
case 0:
return &v.state
case 1:
@@ -40566,8 +63171,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StoragePolicyTarget); i {
+ file_api_v1_recommendation_proto_msgTypes[491].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotGlobalRetention); i {
case 0:
return &v.state
case 1:
@@ -40578,8 +63183,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateStoragePolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[492].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotContainerRetentionPolicy); i {
case 0:
return &v.state
case 1:
@@ -40590,8 +63195,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateStoragePolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[493].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotPodRetentionPolicy); i {
case 0:
return &v.state
case 1:
@@ -40602,8 +63207,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListStoragePolicyTargetsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[494].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotNamespaceRetentionPolicy); i {
case 0:
return &v.state
case 1:
@@ -40614,8 +63219,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListStoragePolicyTargetsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[495].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotRetentionPolicySpec); i {
case 0:
return &v.state
case 1:
@@ -40626,8 +63231,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateStoragePolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[496].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotPolicy); i {
case 0:
return &v.state
case 1:
@@ -40638,8 +63243,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateStoragePolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[497].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ForensicSnapshotPolicy); i {
case 0:
return &v.state
case 1:
@@ -40650,8 +63255,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteStoragePolicyTargetRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[498].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotTargetScope); i {
case 0:
return &v.state
case 1:
@@ -40662,8 +63267,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteStoragePolicyTargetResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[499].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotPolicyTarget); i {
case 0:
return &v.state
case 1:
@@ -40674,8 +63279,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PvcStorageRecommendation); i {
+ file_api_v1_recommendation_proto_msgTypes[500].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ForensicSnapshotPolicyTarget); i {
case 0:
return &v.state
case 1:
@@ -40686,8 +63291,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPvcStorageRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[501].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSnapshotPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -40698,8 +63303,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPvcStorageRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[502].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSnapshotPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -40710,8 +63315,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListPvcStorageRecommendationsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[503].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSnapshotPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -40722,8 +63327,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListPvcStorageRecommendationsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[504].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSnapshotPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -40734,8 +63339,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GeneratePvcStorageRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[505].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateSnapshotPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -40746,8 +63351,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GeneratePvcStorageRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[506].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateSnapshotPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -40758,8 +63363,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewPvcStorageRecommendationRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[507].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSnapshotPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -40770,8 +63375,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewPvcStorageRecommendationResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[508].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSnapshotPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -40782,8 +63387,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadRuleOOMEvent); i {
+ file_api_v1_recommendation_proto_msgTypes[509].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSnapshotPolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -40794,8 +63399,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRuleOOMEventsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[510].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSnapshotPolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -40806,8 +63411,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRuleOOMEventsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[511].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSnapshotPolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -40818,8 +63423,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadOOMEventsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[512].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListSnapshotPolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -40830,8 +63435,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadOOMEventsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[513].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateSnapshotPolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -40842,8 +63447,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadRuleCPUThrottleEvent); i {
+ file_api_v1_recommendation_proto_msgTypes[514].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateSnapshotPolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -40854,8 +63459,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRuleCPUThrottleEventsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[515].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSnapshotPolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -40866,8 +63471,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRuleCPUThrottleEventsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[516].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSnapshotPolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -40878,8 +63483,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadCPUThrottleEventsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[517].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateForensicSnapshotPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -40890,8 +63495,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadCPUThrottleEventsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[518].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateForensicSnapshotPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -40902,8 +63507,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadOptimizationPolicyProto); i {
+ file_api_v1_recommendation_proto_msgTypes[519].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListForensicSnapshotPoliciesRequest); i {
case 0:
return &v.state
case 1:
@@ -40914,8 +63519,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateWorkloadOptimizationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[520].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListForensicSnapshotPoliciesResponse); i {
case 0:
return &v.state
case 1:
@@ -40926,8 +63531,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateWorkloadOptimizationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[521].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateForensicSnapshotPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -40938,8 +63543,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadOptimizationPoliciesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[522].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateForensicSnapshotPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -40950,8 +63555,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadOptimizationPoliciesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[523].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteForensicSnapshotPolicyRequest); i {
case 0:
return &v.state
case 1:
@@ -40962,8 +63567,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadOptimizationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[524].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteForensicSnapshotPolicyResponse); i {
case 0:
return &v.state
case 1:
@@ -40974,8 +63579,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadOptimizationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[525].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateForensicSnapshotPolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -40986,8 +63591,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateWorkloadOptimizationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[526].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateForensicSnapshotPolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -40998,8 +63603,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateWorkloadOptimizationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[527].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListForensicSnapshotPolicyTargetsRequest); i {
case 0:
return &v.state
case 1:
@@ -41010,8 +63615,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadOptimizationPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[528].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListForensicSnapshotPolicyTargetsResponse); i {
case 0:
return &v.state
case 1:
@@ -41022,8 +63627,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadOptimizationPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[529].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateForensicSnapshotPolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -41034,8 +63639,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRulesByPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[530].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateForensicSnapshotPolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -41046,8 +63651,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRulesByPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[531].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteForensicSnapshotPolicyTargetRequest); i {
case 0:
return &v.state
case 1:
@@ -41058,8 +63663,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRulesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[532].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteForensicSnapshotPolicyTargetResponse); i {
case 0:
return &v.state
case 1:
@@ -41070,8 +63675,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListWorkloadRulesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[533].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TriggerForensicSnapshotRunRequest); i {
case 0:
return &v.state
case 1:
@@ -41082,8 +63687,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRuleByIDRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[534].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TriggerForensicSnapshotRunResponse); i {
case 0:
return &v.state
case 1:
@@ -41094,8 +63699,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRuleByIDResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[535].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotResolvedWorkload); i {
case 0:
return &v.state
case 1:
@@ -41106,8 +63711,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRuleByWorkloadRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[536].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotResolvedNamespace); i {
case 0:
return &v.state
case 1:
@@ -41118,8 +63723,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadRuleByWorkloadResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[537].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotClusterScopePreview); i {
case 0:
return &v.state
case 1:
@@ -41130,8 +63735,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadByWorkloadRuleRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[538].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewSnapshotPolicyTargetMatchesRequest); i {
case 0:
return &v.state
case 1:
@@ -41142,8 +63747,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadByWorkloadRuleResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[539].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewSnapshotPolicyTargetMatchesResponse); i {
case 0:
return &v.state
case 1:
@@ -41154,8 +63759,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadRuleRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[540].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ForensicTargetOverlap); i {
case 0:
return &v.state
case 1:
@@ -41166,8 +63771,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteWorkloadRuleResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[541].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewForensicSnapshotPolicyTargetMatchesRequest); i {
case 0:
return &v.state
case 1:
@@ -41178,8 +63783,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManualRuleFields); i {
+ file_api_v1_recommendation_proto_msgTypes[542].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewForensicSnapshotPolicyTargetMatchesResponse); i {
case 0:
return &v.state
case 1:
@@ -41190,8 +63795,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpsertManualWorkloadRuleRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[543].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotRenderedScopeRow); i {
case 0:
return &v.state
case 1:
@@ -41202,8 +63807,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpsertManualWorkloadRuleResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[544].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetSnapshotPolicyTargetRenderedScopeRequest); i {
case 0:
return &v.state
case 1:
@@ -41214,8 +63819,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewWorkloadRuleRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[545].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetSnapshotPolicyTargetRenderedScopeResponse); i {
case 0:
return &v.state
case 1:
@@ -41226,8 +63831,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewWorkloadRuleResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[546].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetForensicSnapshotPolicyTargetRenderedScopeRequest); i {
case 0:
return &v.state
case 1:
@@ -41238,8 +63843,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadContainerNamesRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[547].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetForensicSnapshotPolicyTargetRenderedScopeResponse); i {
case 0:
return &v.state
case 1:
@@ -41250,8 +63855,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetWorkloadContainerNamesResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[548].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotConfigInfo); i {
case 0:
return &v.state
case 1:
@@ -41262,8 +63867,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchAutoOptimizeWorkload); i {
+ file_api_v1_recommendation_proto_msgTypes[549].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotConfigApplyEventInfo); i {
case 0:
return &v.state
case 1:
@@ -41274,8 +63879,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchAutoOptimizeWorkloadsRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[550].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetSnapshotRecommendationStatusRequest); i {
case 0:
return &v.state
case 1:
@@ -41286,8 +63891,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchAutoOptimizeWorkloadResult); i {
+ file_api_v1_recommendation_proto_msgTypes[551].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetSnapshotRecommendationStatusResponse); i {
case 0:
return &v.state
case 1:
@@ -41298,8 +63903,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchAutoOptimizeWorkloadsResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[552].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetForensicSnapshotRecommendationStatusRequest); i {
case 0:
return &v.state
case 1:
@@ -41310,8 +63915,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadProfileManifest); i {
+ file_api_v1_recommendation_proto_msgTypes[553].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetForensicSnapshotRecommendationStatusResponse); i {
case 0:
return &v.state
case 1:
@@ -41322,8 +63927,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchWorkloadProfiles); i {
+ file_api_v1_recommendation_proto_msgTypes[554].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewSnapshotRecommendationConfigRequest); i {
case 0:
return &v.state
case 1:
@@ -41334,8 +63939,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeConfigApplyEvent); i {
+ file_api_v1_recommendation_proto_msgTypes[555].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewSnapshotRecommendationConfigResponse); i {
case 0:
return &v.state
case 1:
@@ -41346,8 +63951,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeRecommendationStatusRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[556].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewForensicSnapshotRecommendationConfigRequest); i {
case 0:
return &v.state
case 1:
@@ -41358,8 +63963,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetNodeRecommendationStatusResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[557].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PreviewForensicSnapshotRecommendationConfigResponse); i {
case 0:
return &v.state
case 1:
@@ -41370,8 +63975,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EnableCheckpointForPolicyRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[558].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListReferencedAuthenticationsRequest); i {
case 0:
return &v.state
case 1:
@@ -41382,8 +63987,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EnableCheckpointForPolicyResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[559].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ReferencedAuthentication); i {
case 0:
return &v.state
case 1:
@@ -41394,8 +63999,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCheckpointApplyStatusRequest); i {
+ file_api_v1_recommendation_proto_msgTypes[560].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListReferencedAuthenticationsResponse); i {
case 0:
return &v.state
case 1:
@@ -41406,8 +64011,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCheckpointApplyStatusResponse); i {
+ file_api_v1_recommendation_proto_msgTypes[597].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerEnrollmentReport_Observation); i {
case 0:
return &v.state
case 1:
@@ -41418,8 +64023,8 @@ func file_api_v1_recommendation_proto_init() {
return nil
}
}
- file_api_v1_recommendation_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeApplyFailure); i {
+ file_api_v1_recommendation_proto_msgTypes[598].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SchedulerRevertEventReport_Event); i {
case 0:
return &v.state
case 1:
@@ -41447,19 +64052,22 @@ func file_api_v1_recommendation_proto_init() {
file_api_v1_recommendation_proto_msgTypes[66].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[74].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[76].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[79].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[80].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[84].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[86].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[96].OneofWrappers = []interface{}{
+ file_api_v1_recommendation_proto_msgTypes[81].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[85].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[87].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[97].OneofWrappers = []interface{}{
(*BalanceGetRecommendationsRequest_Register)(nil),
(*BalanceGetRecommendationsRequest_Apply)(nil),
(*BalanceGetRecommendationsRequest_WorkloadMeta)(nil),
(*BalanceGetRecommendationsRequest_InClusterRecommendation)(nil),
+ (*BalanceGetRecommendationsRequest_SnapshotCrStatusReport)(nil),
+ (*BalanceGetRecommendationsRequest_SchedulerEnrollmentReport)(nil),
+ (*BalanceGetRecommendationsRequest_SchedulerRevertEventReport)(nil),
(*BalanceGetRecommendationsRequest_OperatorHealth)(nil),
(*BalanceGetRecommendationsRequest_AgentHealth)(nil),
}
- file_api_v1_recommendation_proto_msgTypes[97].OneofWrappers = []interface{}{
+ file_api_v1_recommendation_proto_msgTypes[98].OneofWrappers = []interface{}{
(*BalanceGetRecommendationsResponse_NodeGroupRecommendation)(nil),
(*BalanceGetRecommendationsResponse_WorkloadRecommendation)(nil),
(*BalanceGetRecommendationsResponse_NodeRecommendation)(nil),
@@ -41474,71 +64082,128 @@ func file_api_v1_recommendation_proto_init() {
(*BalanceGetRecommendationsResponse_BatchPvcStorageRecommendations)(nil),
(*BalanceGetRecommendationsResponse_BatchWorkloadRules)(nil),
(*BalanceGetRecommendationsResponse_KarpenterSettings)(nil),
+ (*BalanceGetRecommendationsResponse_SnapshotRecommendation)(nil),
+ (*BalanceGetRecommendationsResponse_ForensicSnapshotRecommendation)(nil),
+ (*BalanceGetRecommendationsResponse_BatchHpaConnectors)(nil),
+ (*BalanceGetRecommendationsResponse_SchedulerPolicySync)(nil),
}
- file_api_v1_recommendation_proto_msgTypes[100].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[101].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[102].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[104].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[106].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[114].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[124].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[126].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[140].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[141].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[142].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[143].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[144].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[145].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[148].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[149].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[150].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[103].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[105].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[107].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[108].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[110].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[111].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[122].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[132].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[138].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[152].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[153].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[154].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[155].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[156].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[157].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[158].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[159].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[160].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[161].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[164].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[165].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[166].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[169].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[170].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[171].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[176].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[209].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[217].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[238].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[258].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[259].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[260].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[261].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[172].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[180].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[194].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[196].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[201].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[251].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[262].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[265].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[266].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[271].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[273].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[286].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[287].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[293].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[297].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[298].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[300].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[306].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[309].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[310].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[312].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[269].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[290].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[313].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[314].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[315].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[316].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[318].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[317].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[320].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[321].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[323].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[325].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[326].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[332].OneofWrappers = []interface{}{}
- file_api_v1_recommendation_proto_msgTypes[338].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[328].OneofWrappers = []interface{}{}
file_api_v1_recommendation_proto_msgTypes[348].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[349].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[355].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[359].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[360].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[362].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[368].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[371].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[372].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[374].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[376].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[377].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[378].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[380].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[382].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[383].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[385].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[388].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[389].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[390].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[398].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[399].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[402].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[404].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[405].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[408].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[409].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[411].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[413].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[419].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[420].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[423].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[432].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[450].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[455].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[463].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[488].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[489].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[490].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[491].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[492].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[493].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[494].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[495].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[496].OneofWrappers = []interface{}{
+ (*SnapshotPolicy_Schedule)(nil),
+ (*SnapshotPolicy_Retention)(nil),
+ }
+ file_api_v1_recommendation_proto_msgTypes[497].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[498].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[511].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[527].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[535].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[541].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[543].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[544].OneofWrappers = []interface{}{
+ (*GetSnapshotPolicyTargetRenderedScopeRequest_TargetId)(nil),
+ (*GetSnapshotPolicyTargetRenderedScopeRequest_PolicyId)(nil),
+ }
+ file_api_v1_recommendation_proto_msgTypes[546].OneofWrappers = []interface{}{
+ (*GetForensicSnapshotPolicyTargetRenderedScopeRequest_TargetId)(nil),
+ (*GetForensicSnapshotPolicyTargetRenderedScopeRequest_PolicyId)(nil),
+ }
+ file_api_v1_recommendation_proto_msgTypes[548].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[551].OneofWrappers = []interface{}{}
+ file_api_v1_recommendation_proto_msgTypes[553].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_recommendation_proto_rawDesc,
- NumEnums: 17,
- NumMessages: 402,
+ NumEnums: 35,
+ NumMessages: 602,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/internal/proto/api/v1/cluster.proto b/internal/proto/api/v1/cluster.proto
index 10d7462..e1eefbc 100644
--- a/internal/proto/api/v1/cluster.proto
+++ b/internal/proto/api/v1/cluster.proto
@@ -125,6 +125,8 @@ message GetNetworkDependenciesRequest {
google.protobuf.Timestamp end_time = 3;
repeated string src_namespaces = 4; // Filter by source namespaces (optional)
repeated string src_node_groups = 5; // Filter by source node groups (optional)
+ int32 limit = 6; // Max edges to return, ordered by rank_by (optional; 0/unset means no limit — all matching edges are returned)
+ string rank_by = 7; // Ordering dimension: "traffic" (default) or "cost" (optional; unset/unrecognized falls back to "traffic")
}
// A workload node in the dependency graph
diff --git a/internal/proto/api/v1/common.proto b/internal/proto/api/v1/common.proto
index d87e033..795fcf3 100644
--- a/internal/proto/api/v1/common.proto
+++ b/internal/proto/api/v1/common.proto
@@ -50,6 +50,14 @@ enum K8sObjectKind {
K8S_OBJECT_KIND_CNPG_CLUSTER = 35;
K8S_OBJECT_KIND_SPARK_APPLICATION = 36;
K8S_OBJECT_KIND_SCHEDULED_SPARK_APPLICATION = 37;
+ // Kyverno Policy and ClusterPolicy (kyverno.io/v1); one kind for both scopes.
+ K8S_OBJECT_KIND_KYVERNO_POLICY = 38;
+ // Kyverno PolicyReport and ClusterPolicyReport (wgpolicyk8s.io/v1alpha2).
+ K8S_OBJECT_KIND_KYVERNO_POLICY_REPORT = 39;
+ // Gatekeeper ConstraintTemplate (templates.gatekeeper.sh/v1).
+ K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT_TEMPLATE = 40;
+ // Gatekeeper constraint instances (constraints.gatekeeper.sh, dynamic kinds).
+ K8S_OBJECT_KIND_GATEKEEPER_CONSTRAINT = 41;
}
// Represents a single audit log entry
@@ -142,6 +150,7 @@ message CostInfo {
google.type.Money money_cpu_cost_for_time_period = 110;
google.type.Money money_memory_cost_for_time_period = 111;
google.type.Money money_total_cost_for_time_period = 112;
+ google.type.Money money_network_cost_for_time_period = 122;
google.type.Money money_optimized_cpu_cost_for_time_period = 113;
google.type.Money money_optimized_memory_cost_for_time_period = 114;
@@ -221,6 +230,40 @@ message ResourceMetrics {
// Pod count
int32 pod_count = 111; // Number of distinct pods observed in this time bucket.
+
+ // JVM heap metrics (0 for non-Java containers)
+ int64 jvm_heap_used_bytes = 121;
+ int64 jvm_heap_max_bytes = 122;
+
+ // Memory RSS (Resident Set Size) in bytes from kubelet stats/summary (0 for non-RSS-reporting nodes)
+ int64 container_memory_rss_bytes = 123;
+
+ // Memory breakdown components (bytes). Relationship:
+ // usage_bytes = anonymous + file cache + swap cache + kernel (container_memory_usage_bytes / memory.current)
+ // working_set = usage_bytes - inactive_file (what the kubelet/OOM-killer acts on; stored as container_memory_usage)
+ // cache = active_file + inactive_file (file-backed, reclaimable)
+ // inactive_cache = max(0, usage_bytes - working_set) (reclaimable file cache)
+ // active_cache = max(0, cache - inactive_cache) (recently-used file cache)
+ // swap = swapped-out (non-resident) pages; tracked separately, NOT part of usage/working_set
+ int64 container_memory_cache_bytes = 124;
+ int64 container_memory_swap_bytes = 125;
+ int64 container_memory_active_cache_bytes = 126;
+ int64 container_memory_inactive_cache_bytes = 127;
+
+ // Runtime-aware cgroup signals (Plane 0, ADR-0037). Read directly from
+ // /sys/fs/cgroup by zxporter-nodemon (v2 primary). All are cumulative kernel
+ // counters; consumers derive windowed rates as last-first.
+ // cfs_* CPU CFS throttling (cpu.stat): real throttle, not a usage/limit ratio
+ // memory_events_max memory.events:max — allocations pinned against memory.max, the
+ // Guaranteed-memory ceiling counter that fires before/without an OOM kill
+ // *_pressure_*_usec PSI stall time (cpu.pressure/memory.pressure "total="), microseconds
+ int64 container_cfs_periods = 128;
+ int64 container_cfs_throttled_periods = 129;
+ int64 container_cfs_throttled_usec = 130;
+ int64 container_memory_events_max = 131;
+ int64 container_cpu_pressure_some_usec = 132;
+ int64 container_memory_pressure_some_usec = 133;
+ int64 container_memory_pressure_full_usec = 134;
}
// MetricPercentiles contains percentile statistics for a single metric.
@@ -288,6 +331,90 @@ message ContainerRequestLimits {
double current_memory_request = 3;
double current_cpu_limit = 4;
double current_memory_limit = 5;
+
+ // JVM metadata (empty/zero for non-Java containers).
+ // Populated from k8s_containers table when JVM is detected via hsperfdata.
+ string jvm_java_version = 10;
+ string jvm_java_command = 11;
+
+ // Parsed JVM flags (typed fields instead of raw JSON for type-safe frontend access).
+ int64 jvm_xmx_bytes = 13; // -Xmx max heap size in bytes
+ int64 jvm_xms_bytes = 14; // -Xms initial heap size in bytes
+ double jvm_max_ram_percentage = 15; // -XX:MaxRAMPercentage
+ optional bool jvm_use_container_support = 16; // -XX:+/-UseContainerSupport
+
+ // Source the -Xmx flag was extracted from: "cmdline", "JAVA_TOOL_OPTIONS",
+ // "JDK_JAVA_OPTIONS", or "JAVA_OPTS". Empty when -Xmx is unset. Matters
+ // because the `java` launcher ignores JAVA_OPTS — an -Xmx set there is
+ // inert and the JVM falls back to ergonomic (container-limit) heap sizing.
+ string jvm_xmx_source = 17;
+
+ // Generic runtime detections (Node.js, .NET, Go, Rust, GraalVM native-image,
+ // Python, Ruby, Deno, Bun) from zxporter-nodemon: existence + best-effort
+ // version per runtime. Empty for containers with no detected runtime. JVM
+ // stays on the dedicated fields above (richer hsperfdata payload).
+ repeated RuntimeProcess runtime_processes = 18;
+}
+
+// GPUMigInstance captures per-instance identity and profiling metrics for a
+// single MIG partition. GPU utilization/SM fields are intentionally absent —
+// DCGM never populates them on MIG rows.
+message GPUMigInstance {
+ string device_uuid = 1;
+ string device_id = 2;
+ string mig_profile = 3;
+ string mig_instance_id = 4;
+ string model_name = 5;
+
+ double tensor_active = 6;
+ double dram_active = 7;
+ double graphics_engine_active = 8;
+ double framebuffer_used = 9;
+ double framebuffer_total = 10;
+}
+
+// IndividualGPUMetric captures point-in-time metrics for a single GPU used
+// by a container.
+message IndividualGPUMetric {
+ string uuid = 1;
+ string model_name = 2;
+ string device_index = 3;
+ string mig_profile = 4;
+ string mig_instance_id = 5;
+
+ double utilization = 6;
+ double memory_used = 7;
+ double memory_free = 8;
+ double total_memory = 9;
+ double memory_utilization_percentage = 10;
+ double power_usage = 11;
+ double temperature = 12;
+ double sm_clock = 13;
+ double mem_clock = 14;
+}
+
+// ContainerIndividualGPUMetrics is the most recent per-GPU breakdown for a
+// single container.
+message ContainerIndividualGPUMetrics {
+ string container_name = 1;
+ repeated IndividualGPUMetric instances = 2;
+ optional google.protobuf.Timestamp collected_at = 3;
+}
+
+// RuntimeProcess is one detected language runtime in a container.
+message RuntimeProcess {
+ // Runtime name: "nodejs" | "dotnet" | "go" | "rust" |
+ // "graalvm-native-image" | "python" | "ruby" | "deno" | "bun".
+ string runtime = 1;
+ // Best-effort version; may be empty (stripped/custom binaries) — the
+ // detection itself is still meaningful.
+ string version = 2;
+ // How the version was resolved: "env" | "maps" | "buildinfo" | "elf-comment"
+ // | "binary-scan" | "exe-path" | "comm".
+ string version_source = 3;
+ // Raw process cmdline (useful for future flag heuristics, e.g.
+ // --max-old-space-size).
+ string raw_cmdline = 4;
}
// ForecastResourceMetrics encapsulates Forecasted CPU and memory capacity, usage, and utilization for nodes and containers.
@@ -346,6 +473,27 @@ message ResourceSummary {
}
// WorkloadItem represents a Kubernetes resource and its hierarchical children.
+// LegacyPolicyRef identifies a legacy WorkloadPolicy whose target matches a workload.
+message LegacyPolicyRef {
+ string policy_id = 1;
+ string policy_name = 2;
+}
+
+// OptimizationStatus reports whether a workload is optimized under either the
+// legacy (WorkloadPolicy/WorkloadPolicyTarget) or MPA v2 (WorkloadRule) system.
+// Only populated on WorkloadItem when at least one of
+// GetWorkloadsRequest.include_legacy_optimization_status or
+// GetWorkloadsRequest.include_v2_optimization_status is true.
+message OptimizationStatus {
+ bool is_optimized = 1; // is_optimized_legacy || is_optimized_v2
+ bool is_optimized_legacy = 2;
+ bool is_optimized_v2 = 3;
+ repeated LegacyPolicyRef legacy_policies = 4; // legacy policies whose targets match this workload
+ string workload_rule_id = 5; // v2: empty if no active WorkloadRule
+ string workload_rule_policy_name = 6; // v2: display name of the policy behind the active rule, empty if unresolved
+ bool disabled = 7; // v2: whether the active WorkloadRule (workload_rule_id) is currently disabled. Always false when workload_rule_id is empty.
+}
+
message WorkloadItem {
string kind = 1; // Kind of the resource (e.g., Pod, Container, Deployment).
string name = 2; // Name of the resource.
@@ -377,6 +525,8 @@ message WorkloadItem {
string root_owner_kind = 91; // Kind of the root owning resource, if any.
string root_owner_uid = 92; // UID of the root owning resource, if any.
+
+ optional OptimizationStatus optimization_status = 93; // Populated only when GetWorkloadsRequest.include_legacy_optimization_status and/or GetWorkloadsRequest.include_v2_optimization_status is true
}
// ContainerRuntimeInfo containes information about container runtime info
@@ -534,13 +684,34 @@ message SavingsTimeSeries {
double total_cpu_cost_waste = 4;
}
-// Kubernetes-compatible Label Selector Types
-
-// LabelSelectorOperator is the set of operators that can be used in a selector requirement.
+// LabelSelectorOperator is the set of operators that can be used in a selector
+// requirement.
+//
+// The message shape mirrors Kubernetes metav1.LabelSelector, and matching
+// follows Kubernetes for the IN and NOT_IN operators. In particular, a
+// workload whose labels lack the key still matches NOT_IN, because a missing
+// key is not in the set. This agrees with Kubernetes: in
+// k8s.io/apimachinery/pkg/labels, Requirement.Matches returns true for NotIn
+// when the key is absent, so it is not a divergence.
+//
+// Two DevZero-specific caveats apply (PC-1452):
+//
+// First, the department and workload filter paths implement only IN and
+// NOT_IN. EXISTS, DOES_NOT_EXIST, GT, and LT are part of this proto for shape
+// compatibility but are not honored by those SQL filters.
+//
+// Second, a workload whose entire labels or annotations column is SQL NULL
+// (an unset column, distinct from an empty map) is EXCLUDED from a NOT_IN
+// match by the department query, which ANDs a column IS NOT NULL guard ahead
+// of the selector condition (dakr/repositories/departments.go). This is a
+// genuine divergence from Kubernetes, which matches a label-less object
+// against NotIn. It is also inconsistent with the workload-metrics filter
+// path, which matches a NULL column against NOT_IN
+// (dakr/repositories/workload_metrics_filters.go).
enum LabelSelectorOperator {
LABEL_SELECTOR_OPERATOR_UNSPECIFIED = 0;
LABEL_SELECTOR_OPERATOR_IN = 1; // In
- LABEL_SELECTOR_OPERATOR_NOT_IN = 2; // NotIn
+ LABEL_SELECTOR_OPERATOR_NOT_IN = 2; // NotIn (missing key matches; see caveats above and PC-1452)
LABEL_SELECTOR_OPERATOR_EXISTS = 3; // Exists
LABEL_SELECTOR_OPERATOR_DOES_NOT_EXIST = 4; // DoesNotExist
LABEL_SELECTOR_OPERATOR_GT = 5; // GreaterThan
@@ -553,7 +724,9 @@ message LabelSelectorRequirement {
// key is the label key that the selector applies to.
string key = 1;
// operator represents a key's relationship to a set of values.
- // Valid operators are In, NotIn, Exists and DoesNotExist.
+ // Valid operators are In, NotIn, Exists and DoesNotExist, but the DevZero
+ // department and workload filter paths honor only In and NotIn (see the
+ // LabelSelectorOperator caveats above, PC-1452).
LabelSelectorOperator operator = 2;
// values is an array of string values. If the operator is In or NotIn,
// the values array must be non-empty. If the operator is Exists or DoesNotExist,
@@ -647,6 +820,14 @@ message ResourceDetails {
SparkApplicationDetails spark_application_details = 242;
// ScheduledSparkApplication-specific fields
ScheduledSparkApplicationDetails scheduled_spark_application_details = 243;
+ // KyvernoPolicy-specific fields
+ KyvernoPolicyDetails kyverno_policy_details = 244;
+ // KyvernoPolicyReport-specific fields
+ KyvernoPolicyReportDetails kyverno_policy_report_details = 245;
+ // GatekeeperConstraintTemplate-specific fields
+ GatekeeperConstraintTemplateDetails gatekeeper_constraint_template_details = 246;
+ // GatekeeperConstraint-specific fields
+ GatekeeperConstraintDetails gatekeeper_constraint_details = 247;
}
// Common fields that can be flattened at this level for easier access
@@ -1118,6 +1299,12 @@ message NodeDetails {
map capacity = 4; // Resource capacity (cpu, memory, etc.)
map allocatable = 5; // Allocatable resources
repeated NodeImage images = 6; // Container images on the node
+ // Desired MIG partitioning profile from the nvidia.com/mig.config node
+ // label; empty on nodes without MIG management.
+ string mig_config_desired = 7;
+ // Applied MIG state from the nvidia.com/mig.config.state node label
+ // (e.g. success, pending, failed); empty on nodes without MIG management.
+ string mig_config_state = 8;
}
// NodeTaint represents a node taint that affects pod scheduling
@@ -1523,6 +1710,20 @@ enum WorkloadStatusFilter {
WORKLOAD_STATUS_FILTER_BOTH = 3; // Both active and deleted workloads
}
+// ResourceFieldFilter filters resources on a single field; values are OR'd together.
+message ResourceFieldFilter {
+ string field = 1; // e.g. "type", "class", "kind", "namespace"
+ repeated string values = 2; // OR'd together
+}
+
+// ResourceFilterFieldOptions describes the distinct values available for a filterable field.
+message ResourceFilterFieldOptions {
+ string field = 1;
+ string label = 2;
+ repeated string values = 3;
+ bool truncated = 4; // true when the value list was capped and is incomplete
+}
+
// WorkloadFilters provides optional filters for narrowing the GetWorkloads request.
// All fields are optional. When multiple fields are provided, they are ANDed together.
message WorkloadFilters {
@@ -1534,8 +1735,19 @@ message WorkloadFilters {
optional LabelSelector annotation_selector = 15; // Target workloads by annotations
repeated string workload_names = 16; // Target specific workload kinds
+ // Match workloads with at least one container detected as one of these
+ // languages (e.g. "python", "go", "java"). ANY container matching is
+ // sufficient — containers do not all need to match.
+ repeated string language_filter = 17;
+ // Exact detected version strings (e.g. "3.11.4"). Only meaningful when
+ // language_filter is also set; ignored otherwise.
+ repeated string language_version_filter = 18;
+
repeated string node_group_names = 21; // target workloads running on specific nodes
+ repeated string namespace_names = 22; // Target workloads in any of these namespaces by exact name (OR'd together; ANDed with other filter fields; no-op when empty)
+ optional RegexPattern namespace_pattern = 23; // Target namespaces by name pattern
+
// Lifecycle status filter (overrides legacy show_deleted when set)
WorkloadStatusFilter status = 30; // ACTIVE, DELETED, or BOTH
}
@@ -1678,6 +1890,146 @@ message ScheduledSparkApplicationDetails {
SparkApplicationDetails template_details = 14; // Details from the SparkApplication template
}
+// KyvernoPolicyDetails contains detailed Kyverno Policy/ClusterPolicy information for drill-down
+message KyvernoPolicyDetails {
+ string kind = 1; // Policy (namespaced) or ClusterPolicy
+ bool background = 2; // Whether background scanning is enabled
+ string validation_failure_action = 3; // Audit or Enforce (rule-level failureAction wins on kyverno 1.13+)
+ int32 rule_count = 4; // Number of rules in the policy
+ repeated string rule_names = 5; // Rule names
+ string spec_json = 6; // Full policy spec as JSON for raw inspection
+}
+
+// PolicyReportResult is one per-resource result inside a Kyverno policy report
+message PolicyReportResult {
+ string policy = 1; // Policy name
+ string rule = 2; // Rule name
+ string result = 3; // pass, fail, warn, error, skip
+ string severity = 4; // critical, high, medium, low, info
+ string message = 5; // Human readable message
+ string resource_kind = 6; // Kind of the evaluated resource
+ string resource_namespace = 7; // Namespace of the evaluated resource
+ string resource_name = 8; // Name of the evaluated resource
+}
+
+// KyvernoPolicyReportDetails contains detailed policy report information for drill-down.
+// The results list is capped at collection time (50); the counts always cover the full report.
+message KyvernoPolicyReportDetails {
+ string kind = 1; // PolicyReport (namespaced) or ClusterPolicyReport
+ string scope_kind = 2; // Kind of the resource the report applies to
+ string scope_name = 3; // Name of the resource the report applies to
+ string scope_namespace = 4; // Namespace of the resource the report applies to
+ int32 pass = 5; // Passing result count
+ int32 fail = 6; // Failing result count
+ int32 warn = 7; // Warning result count
+ int32 error = 8; // Error result count
+ int32 skip = 9; // Skipped result count
+ repeated PolicyReportResult results = 10; // Capped per-resource results
+ int32 total_results = 11; // Full result count before capping
+}
+
+// GatekeeperConstraintTemplateDetails contains detailed ConstraintTemplate information for drill-down
+message GatekeeperConstraintTemplateDetails {
+ string crd_kind = 1; // Constraint kind this template generates (e.g. K8sRequiredLabels)
+ repeated string targets = 2; // Enforcement targets (e.g. admission.k8s.gatekeeper.sh)
+ bool created = 3; // Whether the constraint CRD has been created
+ string spec_json = 4; // Full template spec as JSON for raw inspection
+}
+
+// ConstraintViolation is one audit violation on a Gatekeeper constraint status
+message ConstraintViolation {
+ string resource_kind = 1; // Kind of the violating resource
+ string resource_namespace = 2; // Namespace of the violating resource
+ string resource_name = 3; // Name of the violating resource
+ string message = 4; // Violation message
+ string enforcement_action = 5; // Action recorded on the violation
+}
+
+// GatekeeperConstraintDetails contains detailed constraint information for drill-down.
+// The violations list is capped by gatekeeper (default 20); total_violations covers the full audit.
+message GatekeeperConstraintDetails {
+ string kind = 1; // Template-generated constraint kind
+ string enforcement_action = 2; // deny, warn, or dryrun
+ string match_json = 3; // Match criteria as JSON
+ string parameters_json = 4; // Constraint parameters as JSON
+ int64 total_violations = 5; // Full audit violation count
+ google.protobuf.Timestamp audit_timestamp = 6; // When gatekeeper last audited
+ repeated ConstraintViolation violations = 7; // Capped audit violations
+}
+
+// DisruptionBlockReason is the structured classification of a consolidation / scale-down
+// block: why the autoscaler could not remove a node.
+//
+// Assigned by zxporter at ingest time, because only the collector has the inputs the
+// answer needs — the blocked pods' annotations, live PodDisruptionBudget status, the
+// NodeClaim's terminationGracePeriod deadline, and (on Cluster Autoscaler) the
+// `cluster-autoscaler-status` ConfigMap. dakr has none of those at read time, and the
+// event's own message is unversioned free text that has changed shape across releases.
+//
+// ONE ENUM FOR BOTH AUTOSCALERS. Karpenter's `DisruptionBlocked` events and Cluster
+// Autoscaler's synthesized `ScaleDownBlocked` observations share these buckets: two mean
+// the same thing under either autoscaler, the rest are specific to one. Which autoscaler
+// produced a row is answered by its `reporting_controller`, not by a second enum — that is
+// what lets one report cover a Karpenter cluster, a CAS cluster, and a cluster running
+// both mid-migration.
+//
+// The value names map 1:1 to models.DisruptionBlockReason and to the
+// k8s_events.disruption_block_reason ClickHouse column's string values. That column is
+// LowCardinality(String), not Enum8, so appending a value here costs no migration.
+enum DisruptionBlockReason {
+ // Not a disruption-block event, or an event ingested before classification existed.
+ // Deliberately distinct from OTHER: this means "never classified", where OTHER means
+ // "classified, and matched no known pattern".
+ DISRUPTION_BLOCK_REASON_UNSPECIFIED = 0;
+ // A PodDisruptionBudget selecting a pod on the node currently allows no disruptions.
+ // blocking_pdb_name carries which one. Both autoscalers (on Cluster Autoscaler this is
+ // the BlockedByPod unremovable reason with a NotEnoughPdb blocking pod).
+ DISRUPTION_BLOCK_REASON_PDB_VIOLATION = 1;
+ // A pod on the node, or the node itself, is annotated un-evictable. Both autoscalers:
+ // `karpenter.sh/do-not-disrupt: "true"` on a pod (Karpenter),
+ // `cluster-autoscaler.kubernetes.io/safe-to-evict: "false"` on a pod, or
+ // `cluster-autoscaler.kubernetes.io/scale-down-disabled: "true"` on a node (CAS).
+ DISRUPTION_BLOCK_REASON_DO_NOT_DISRUPT_ANNOTATION = 2;
+ // The NodeClaim's terminationGracePeriod deadline has already elapsed, so Karpenter
+ // will force-terminate past both PDBs and do-not-disrupt. Karpenter-only: Cluster
+ // Autoscaler has no equivalent override.
+ DISRUPTION_BLOCK_REASON_FORCE_DISRUPTED = 3;
+ // Classified, but the block matched none of the above — e.g. a node-level block
+ // (uninitialized, already deleting, missing its NodePool label), or any Cluster
+ // Autoscaler unremovable reason without its own bucket (NodeGroupMinSizeReached,
+ // NotUnderutilized, CurrentlyBeingDeleted, ...). The verbatim `message` is the only
+ // remaining detail, which is why it is never dropped. This is the REQUIRED fallback:
+ // dakr rejects an event carrying a value outside this enum.
+ DISRUPTION_BLOCK_REASON_OTHER = 4;
+ // Cluster Autoscaler considers the node underutilized but has not yet seen it stay that
+ // way for --scale-down-unneeded-time. A waiting state rather than a misconfiguration,
+ // and the most common thing a healthy CAS cluster reports — hence its own bucket rather
+ // than OTHER. Cluster-Autoscaler-only.
+ DISRUPTION_BLOCK_REASON_NOT_UNNEEDED_LONG_ENOUGH = 5;
+ // Cluster Autoscaler's scheduling simulation found nowhere to move the node's pods to,
+ // so the node cannot be drained. Actionable, unlike NOT_UNNEEDED_LONG_ENOUGH.
+ // Cluster-Autoscaler-only.
+ DISRUPTION_BLOCK_REASON_NO_PLACE_TO_MOVE_PODS = 6;
+ // The scheduler has provisionally assigned a pending pod to this node
+ // (pod.Status.NominatedNodeName). The autoscaler will not disrupt a node it is about to
+ // hand a pod, since that would just make the pod re-pend immediately — a self-resolving,
+ // expected-waiting state, not a misconfiguration. related_pod_name carries the pod.
+ // Derived structurally, not from the event message — reachable via the Karpenter path
+ // today.
+ DISRUPTION_BLOCK_REASON_POD_NOMINATED = 7;
+ // Karpenter's own `disruption.budgets` allowance for the NodePool is currently spent, so
+ // it throttled itself. Operationally the opposite of every other value here: a config
+ // choice the cluster's owner made, not an obstruction to go find, which is why it is not
+ // folded into OTHER. Reported against the NodePool rather than a node, so it counts as a
+ // blocking event and never as a blocked node. Karpenter-only.
+ DISRUPTION_BLOCK_REASON_DISRUPTION_BUDGET = 8;
+ // Karpenter's scheduling simulation found nowhere for the node's pods to go, so draining
+ // it would leave them pending. Same situation as NO_PLACE_TO_MOVE_PODS, which is spelled
+ // to match Cluster Autoscaler's own unremovable reason verbatim and is therefore kept
+ // CAS-only; the per-pod sub-reason stays readable in the verbatim `message`.
+ DISRUPTION_BLOCK_REASON_PODS_WOULD_NOT_SCHEDULE = 9;
+}
+
message Event {
string id = 1;
string kind = 2;
@@ -1704,6 +2056,13 @@ message Event {
map labels = 24;
string involved_object_uid = 25;
+ // Set only on Karpenter `DisruptionBlocked` events; UNSPECIFIED on every other event.
+ DisruptionBlockReason disruption_block_reason = 26;
+ // The PodDisruptionBudget that blocked eviction, as "namespace/name". Set only
+ // alongside DISRUPTION_BLOCK_REASON_PDB_VIOLATION; absent — not empty-string —
+ // otherwise, since "no PDB was involved" is not the same as "a PDB with no name".
+ optional string blocking_pdb_name = 27;
+
google.protobuf.Timestamp created_at = 41;
google.protobuf.Timestamp updated_at = 42;
google.protobuf.Timestamp last_seen = 43;
@@ -1711,6 +2070,11 @@ message Event {
string updated_at_age = 45;
string last_seen_age = 46;
google.protobuf.Timestamp deleted_at = 47;
+
+ // The pod behind a DISRUPTION_BLOCK_REASON_DO_NOT_DISRUPT_ANNOTATION or
+ // DISRUPTION_BLOCK_REASON_POD_NOMINATED classification, as "namespace/name". Same
+ // absent-means-not-applicable contract as blocking_pdb_name.
+ optional string related_pod_name = 48;
}
message EventDatapointInfo {
diff --git a/internal/proto/api/v1/hpa_connector.proto b/internal/proto/api/v1/hpa_connector.proto
new file mode 100644
index 0000000..ff0aaa2
--- /dev/null
+++ b/internal/proto/api/v1/hpa_connector.proto
@@ -0,0 +1,67 @@
+// dakr/proto/api/v1/hpa_connector.proto
+syntax = "proto3";
+
+package api.v1;
+
+option go_package = "github.com/devzero-inc/services/dakr/gen/api/v1;gen";
+
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+
+message HPAConnector {
+ string id = 1;
+ string cluster_id = 2;
+ string team_id = 3;
+ string name = 4;
+ string type = 5;
+ map config = 6;
+ optional string auth_secret_ref = 7;
+ string status = 8;
+ optional google.protobuf.Timestamp last_health_check = 9;
+ optional string health_error = 10;
+ google.protobuf.Timestamp created_at = 11;
+ google.protobuf.Timestamp updated_at = 12;
+ optional string auth_secret_namespace = 13;
+}
+
+message CreateHPAConnectorRequest {
+ string cluster_id = 1;
+ string name = 2;
+ string type = 3;
+ map config = 4;
+ optional string auth_secret_ref = 5;
+ optional string auth_secret_namespace = 6;
+}
+
+message UpdateHPAConnectorRequest {
+ string id = 1;
+ string name = 2;
+ map config = 3;
+ optional string auth_secret_ref = 4;
+ optional string auth_secret_namespace = 5;
+}
+
+message GetHPAConnectorRequest {
+ string id = 1;
+}
+
+message ListHPAConnectorsRequest {
+ string cluster_id = 1;
+ optional string type = 2;
+}
+
+message ListHPAConnectorsResponse {
+ repeated HPAConnector connectors = 1;
+}
+
+message DeleteHPAConnectorRequest {
+ string id = 1;
+}
+
+service HPAConnectorService {
+ rpc CreateHPAConnector(CreateHPAConnectorRequest) returns (HPAConnector);
+ rpc UpdateHPAConnector(UpdateHPAConnectorRequest) returns (HPAConnector);
+ rpc DeleteHPAConnector(DeleteHPAConnectorRequest) returns (google.protobuf.Empty);
+ rpc ListHPAConnectors(ListHPAConnectorsRequest) returns (ListHPAConnectorsResponse);
+ rpc GetHPAConnector(GetHPAConnectorRequest) returns (HPAConnector);
+}
diff --git a/internal/proto/api/v1/k8s.proto b/internal/proto/api/v1/k8s.proto
index 82886dc..e6e5557 100644
--- a/internal/proto/api/v1/k8s.proto
+++ b/internal/proto/api/v1/k8s.proto
@@ -68,6 +68,103 @@ message GetWorkloadsRequest {
repeated string node_group_names = 25 [deprecated = true]; // Prefer filters.status instead
optional WorkloadFilters filters = 31; // Optional advanced filters; when set, overrides show_deleted behavior via filters.status
+
+ // The two flags below independently control which half of
+ // WorkloadItem.optimization_status gets computed. Split because a team on
+ // MPA_V2 with is_enabled=false is permanently locked into exactly one
+ // system (is_active=true -> v2-only, is_active=false -> legacy-only) and
+ // the unused system should never be queried; only when is_enabled=true
+ // (team is in a self-service/transition state) does the caller request
+ // both. Adds batched lookups — leave both false unless the caller renders
+ // optimization status.
+ bool include_legacy_optimization_status = 32;
+ bool include_v2_optimization_status = 33;
+}
+
+// ListWorkloadsPaginatedRequest fetches a single keyset-paginated page of
+// top-level workloads for a cluster+timerange. Additive alternative to
+// GetWorkloads for large clusters; existing GetWorkloads callers are unaffected.
+message ListWorkloadsPaginatedRequest {
+ string team_id = 1; // Unique identifier for the team.
+ string cluster_id = 2; // Unique identifier for the cluster.
+ optional google.protobuf.Timestamp start_time = 3;
+ optional google.protobuf.Timestamp end_time = 4;
+ optional WorkloadFilters filters = 5; // Optional advanced filters (same message GetWorkloads uses).
+ bool include_legacy_optimization_status = 6;
+ bool include_v2_optimization_status = 7;
+ int32 page_size = 8; // Max items per page; server clamps to a sane range.
+ string page_token = 9; // Opaque cursor from a prior response; empty = first page.
+ string sort_order = 10; // "asc" | "desc" (default "desc": highest sort_field value first).
+ string sort_field = 11; // "cost" | "cpu" | "memory" | "gpu" (default "cost"). Selects which metric orders the page.
+}
+
+// GetWorkloadsSummaryRequest computes cluster-wide aggregate breakdowns (summary
+// cards, top-N lists, treemaps) over the FULL filtered workload set in a single
+// pass. Companion to ListWorkloadsPaginated: this pays the full-scan cost once
+// per page load, while ListWorkloadsPaginated serves the cheap table body per
+// scroll.
+message GetWorkloadsSummaryRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ optional google.protobuf.Timestamp start_time = 3;
+ optional google.protobuf.Timestamp end_time = 4;
+ optional WorkloadFilters filters = 5; // Same WorkloadFilters message as ListWorkloadsPaginatedRequest.
+}
+
+// WorkloadMetricEntry is a single workload's contribution to one metric. value
+// is whatever the enclosing breakdown is sorted by; requested/limit/usage carry
+// the full picture so the frontend can render tooltips and compute utilization
+// without a second round-trip. For the cost breakdown, requested is the
+// requested cost, usage is the usage cost, and limit is 0 (no limit-cost
+// concept).
+message WorkloadMetricEntry {
+ string uid = 1;
+ string name = 2;
+ string kind = 3;
+ string namespace = 4;
+ double value = 5; // The metric this breakdown is sorted by (usage for cpu/mem/gpu, requested cost for cost, overprovisioned amount for optimization_potential).
+ double requested = 6; // Cluster-wide requested amount for this workload (millicores / bytes / gpu-count / requested cost).
+ double limit = 7; // Configured limit for this workload (0 for the cost breakdown).
+ double usage = 8; // Observed usage for this workload (millicores / bytes / gpu-count / usage cost).
+ bool is_deleted = 9; // Whether this workload is soft-deleted. The frontend needs this to open the workload drawer correctly when a caller clicks a treemap/top-N node built from this entry, the same way it already does for table rows sourced from WorkloadItem.deleted_at.
+}
+
+// WorkloadMetricBreakdown is a top-N + "other" rollup of one metric across all
+// top-level workloads matching the filters.
+message WorkloadMetricBreakdown {
+ repeated WorkloadMetricEntry top_entries = 1; // Top N by this metric, descending.
+ double other_value = 2; // Sum of value across everything NOT in top_entries.
+ int32 other_count = 3; // How many workloads are folded into other_value.
+ double total = 4; // Sum of value across ALL workloads (top_entries + other).
+ double requested_total = 5; // Sum of requested across ALL workloads; pair with total (usage) for request-utilization %.
+ int32 positive_count = 6; // How many workloads (top_entries + other, combined) have value > 0 for this metric. Use this, not top_entries+other_count, as the denominator for "N% of workloads account for ~80%" style displays — other_count includes workloads with zero value for this metric (e.g. a workload with no CPU usage still gets folded into "other"), which understates the percentage.
+ int32 top80_count = 7; // How many workloads, ranked by this metric descending, are needed to reach ~80% of total. Computed server-side over the FULL dataset, not just top_entries (which is capped at 50) — use this instead of walking top_entries client-side, which silently caps at 50 and under-reports on flatter distributions where more than 50 workloads are needed to reach 80%.
+}
+
+// GetWorkloadsSummaryResponse carries one usage/cost breakdown per metric plus
+// the total matching top-level workload count. The optimization_potential_*
+// breakdowns re-rank the same workloads by the overprovisioned amount
+// (requested - usage) for that metric, feeding each treemap's "show
+// optimization potential" toggle without an approximation.
+message GetWorkloadsSummaryResponse {
+ WorkloadMetricBreakdown cost = 1;
+ WorkloadMetricBreakdown cpu_usage = 2;
+ WorkloadMetricBreakdown memory_usage = 3;
+ WorkloadMetricBreakdown gpu_usage = 4;
+ int32 total_workload_count = 5; // Total top-level workloads matching filters.
+ WorkloadMetricBreakdown optimization_potential_cost = 6; // Ranked by overprovisioned cost (requested cost - usage cost), descending.
+ WorkloadMetricBreakdown optimization_potential_cpu = 7; // Ranked by overprovisioned cpu (cpu request - cpu usage, millicores), descending.
+ WorkloadMetricBreakdown optimization_potential_memory = 8; // Ranked by overprovisioned memory (memory request - memory usage, bytes), descending.
+ WorkloadMetricBreakdown optimization_potential_gpu = 9; // Ranked by overprovisioned gpu (gpu request - gpu usage, gpu-count), descending.
+}
+
+// ListWorkloadsPaginatedResponse is one page of workloads plus the cursor for
+// the next page and the total matching count (before pagination).
+message ListWorkloadsPaginatedResponse {
+ repeated WorkloadItem workload_items = 1; // This page's workloads.
+ string next_page_token = 2; // Opaque cursor for the next page; empty = no more data.
+ int64 total_count = 3; // Total workloads matching the filters, before pagination.
+ int32 page_size = 4; // Effective page size applied after clamping; reflects the requested/clamped size, not len(workload_items).
}
// GetResourcesRequest is uset to fetch resources from db.
@@ -76,8 +173,10 @@ message GetResourcesRequest {
optional string cluster_id = 2; // Unique identifier for the cluster.
K8sObjectKind kind = 3; // Type of object to get.
optional string search = 4; // Search term to filter resources by name
-
+
Pagination pagination = 11; // Pagination parameters
+
+ repeated ResourceFieldFilter filters = 12; // Optional field-level filters; multiple filters AND together
}
// GetPodsRequest is used to fetch Pod resources from db.
@@ -182,6 +281,18 @@ message GetResourcesResponse {
Pagination pagination = 2; // Pagination information
}
+// GetResourceFilterOptionsRequest asks for the distinct filterable field values for a resource kind.
+message GetResourceFilterOptionsRequest {
+ string team_id = 1;
+ optional string cluster_id = 2;
+ K8sObjectKind kind = 3;
+}
+
+// GetResourceFilterOptionsResponse returns the available filter options per field.
+message GetResourceFilterOptionsResponse {
+ repeated ResourceFilterFieldOptions options = 1;
+}
+
// CreateClusterRequest is used to create a new cluster.
message CreateClusterRequest {
string team_id = 1; // Unique identifier for the team.
@@ -382,6 +493,90 @@ message GetLatestContainerRequestLimitsResponse {
repeated ContainerRequestLimits containers = 1;
}
+// GetNodeGPUMigInstancesRequest requests the most recent MIG-instance telemetry for a node.
+message GetNodeGPUMigInstancesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ optional string node_id = 3; // Unique identifier for the node.
+ optional string node_uid = 4; // alternatively -> Unique identifier for the node.
+}
+
+// GetNodeGPUMigInstancesResponse returns the node's most recent MIG-instance telemetry.
+message GetNodeGPUMigInstancesResponse {
+ repeated GPUMigInstance instances = 1;
+ optional google.protobuf.Timestamp collected_at = 2;
+}
+
+// GetNodeGPUMigInstanceTimeseriesRequest requests per-MIG-instance
+// utilization as a time series for a node over a time range.
+message GetNodeGPUMigInstanceTimeseriesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ optional string node_id = 3;
+ optional string node_uid = 4;
+ google.protobuf.Timestamp start_time = 5;
+ google.protobuf.Timestamp end_time = 6;
+}
+
+// GPUMigInstanceDataPoint is one timestamped sample of a single MIG
+// instance's utilization.
+message GPUMigInstanceDataPoint {
+ google.protobuf.Timestamp timestamp = 1;
+ double tensor_active = 2;
+ double dram_active = 3;
+ double graphics_engine_active = 4;
+ double framebuffer_used = 5;
+ double framebuffer_total = 6;
+}
+
+// GPUMigInstanceTimeseries is one MIG instance's identity plus its
+// utilization samples over the requested time range.
+message GPUMigInstanceTimeseries {
+ string mig_instance_id = 1;
+ string mig_profile = 2;
+ string device_uuid = 3;
+ string model_name = 4;
+ repeated GPUMigInstanceDataPoint points = 5;
+}
+
+// GetNodeGPUMigInstanceTimeseriesResponse returns one series per MIG
+// instance present on the node during the requested range.
+message GetNodeGPUMigInstanceTimeseriesResponse {
+ repeated GPUMigInstanceTimeseries instances = 1;
+}
+
+// GetContainerIndividualGPUMetricsRequest requests the most recent per-GPU breakdown per container.
+message GetContainerIndividualGPUMetricsRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ string uid = 3;
+}
+
+// GetContainerIndividualGPUMetricsResponse returns per-container per-GPU breakdowns.
+message GetContainerIndividualGPUMetricsResponse {
+ repeated ContainerIndividualGPUMetrics containers = 1;
+}
+
+// LanguageVersions holds every distinct version detected for one language
+// across a cluster's workloads.
+message LanguageVersions {
+ string language = 1;
+ repeated string versions = 2;
+}
+
+// GetWorkloadLanguagesRequest requests the distinct languages/versions
+// detected across a cluster's workloads (used to populate filter dropdowns).
+message GetWorkloadLanguagesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+// GetWorkloadLanguagesResponse returns every distinct language and its
+// detected versions for the requested cluster.
+message GetWorkloadLanguagesResponse {
+ repeated LanguageVersions languages = 1;
+}
+
// Request to get forecasted workloads
message GetForecastWorkloadsRequest {
string team_id = 1;
@@ -596,6 +791,10 @@ message GetLatestOperatorVersionResponse {
OperatorInfo trezr_info = 41;
OperatorInfo trezr_helm_info = 42;
+
+ // checkpoint-restore-operator helm chart (snapshot policies). Placeholder
+ // version until the DevZero-authored chart is published.
+ OperatorInfo snapshot_helm_info = 51;
}
message GalaxyGetWorkloadPerspectiveRequest {
@@ -1038,6 +1237,15 @@ service K8SService {
// GetWorkloads retrieves all workloads for a specific cluster.
rpc GetWorkloads(GetWorkloadsRequest) returns (GetWorkloadsResponse);
+ // ListWorkloadsPaginated retrieves a single keyset-paginated page of top-level
+ // workloads for a cluster. Additive alternative to GetWorkloads for large clusters.
+ rpc ListWorkloadsPaginated(ListWorkloadsPaginatedRequest) returns (ListWorkloadsPaginatedResponse);
+
+ // GetWorkloadsSummary computes cluster-wide aggregate breakdowns (cost/cpu/
+ // memory/gpu top-N + other) over the full filtered workload set in one pass.
+ // Companion to ListWorkloadsPaginated for summary cards, top-N lists, treemaps.
+ rpc GetWorkloadsSummary(GetWorkloadsSummaryRequest) returns (GetWorkloadsSummaryResponse);
+
// GetWorkload retrieves detailed information for a specific workload.
rpc GetWorkload(GetWorkloadRequest) returns (GetWorkloadResponse);
@@ -1053,6 +1261,22 @@ service K8SService {
// GetLatestContainerRequestLimits retrieves the most recent request/limit values per container for a workload.
rpc GetLatestContainerRequestLimits(GetLatestContainerRequestLimitsRequest) returns (GetLatestContainerRequestLimitsResponse);
+ // GetNodeGPUMigInstances retrieves the most recent MIG-instance telemetry for a node.
+ // Returns an empty instances list for nodes with no MIG-partitioned GPUs.
+ rpc GetNodeGPUMigInstances(GetNodeGPUMigInstancesRequest) returns (GetNodeGPUMigInstancesResponse);
+
+ // GetNodeGPUMigInstanceTimeseries retrieves per-MIG-instance utilization as
+ // a time series for a node over a time range. Returns an empty instances
+ // list for nodes with no MIG-partitioned GPUs.
+ rpc GetNodeGPUMigInstanceTimeseries(GetNodeGPUMigInstanceTimeseriesRequest) returns (GetNodeGPUMigInstanceTimeseriesResponse);
+
+ // GetContainerIndividualGPUMetrics retrieves the most recent per-GPU breakdown for every
+ // container in a workload that has GPU data.
+ rpc GetContainerIndividualGPUMetrics(GetContainerIndividualGPUMetricsRequest) returns (GetContainerIndividualGPUMetricsResponse);
+
+ // GetWorkloadLanguages retrieves the distinct detected languages/versions across a cluster's workloads.
+ rpc GetWorkloadLanguages(GetWorkloadLanguagesRequest) returns (GetWorkloadLanguagesResponse);
+
// GetForecastWorkloads retrieves all workloads for a specific cluster.
rpc GetForecastWorkloads(GetForecastWorkloadsRequest) returns (GetForecastWorkloadsResponse) {
option deprecated = true;
@@ -1067,6 +1291,9 @@ service K8SService {
// GetResources retrivers specific resource and their details from db, simulating informer.
rpc GetResources(GetResourcesRequest) returns (GetResourcesResponse);
+ // GetResourceFilterOptions returns the distinct filterable field values for a resource kind.
+ rpc GetResourceFilterOptions(GetResourceFilterOptionsRequest) returns (GetResourceFilterOptionsResponse);
+
// GetPods retrieves Pod resources and their details from db.
rpc GetPods(GetPodsRequest) returns (GetPodsResponse);
@@ -1108,6 +1335,32 @@ service K8SService {
// ListTags lists all tags for a team.
rpc ListTags(ListTagsRequest) returns (ListTagsResponse);
+
+ // GetMigPartedConfig retrieves the NVIDIA mig-parted ConfigMap collected
+ // from a cluster: the declared MIG partitioning profiles. Per-node applied
+ // state rides NodeDetails (mig_config_desired/mig_config_state).
+ rpc GetMigPartedConfig(GetMigPartedConfigRequest) returns (GetMigPartedConfigResponse);
+}
+
+message GetMigPartedConfigRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message GetMigPartedConfigResponse {
+ // Whether a mig-parted ConfigMap has been collected for this cluster.
+ bool found = 1;
+ string name = 2;
+ string namespace = 3;
+ // Config schema version (e.g. v1).
+ string version = 4;
+ // Parsed profile map from config.yaml as JSON:
+ // {profile-name: [{devices, mig-enabled, mig-devices}, ...]}.
+ string mig_configs_json = 5;
+ // Original config.yaml text; authoritative when parse_error is set.
+ string raw = 6;
+ string parse_error = 7;
+ google.protobuf.Timestamp last_seen = 8;
}
// ClusterMutationService manages mutating cluster resources.
diff --git a/internal/proto/api/v1/profiling.proto b/internal/proto/api/v1/profiling.proto
index 53489ef..86c530b 100644
--- a/internal/proto/api/v1/profiling.proto
+++ b/internal/proto/api/v1/profiling.proto
@@ -3,6 +3,7 @@ syntax = "proto3";
package api.v1;
import "google/protobuf/timestamp.proto";
+import "google/type/money.proto";
import "api/v1/common.proto";
option go_package = "github.com/devzero-inc/services/dakr/gen/api/v1;gen";
@@ -12,6 +13,13 @@ option java_package = "gen.api.v1";
service ProfilingService {
rpc GetWorkloadProfiles(GetWorkloadProfilesRequest)
returns (GetWorkloadProfilesResponse);
+
+ // GetWorkloadProfileAvailability is a lightweight check the frontend uses to
+ // decide whether the 1D/7D DB-snapshot tabs should be enabled (and default
+ // to) versus falling back to a live compute. It never reads snapshot payloads
+ // — only per-window row counts and the most recent computed_at.
+ rpc GetWorkloadProfileAvailability(GetWorkloadProfileAvailabilityRequest)
+ returns (GetWorkloadProfileAvailabilityResponse);
}
message ProfilingWorkloadKey {
@@ -26,12 +34,36 @@ message GetWorkloadProfilesRequest {
optional google.protobuf.Timestamp start_time = 11;
optional google.protobuf.Timestamp end_time = 12;
+
+ // When set to 1D or 7D, serve from the persisted workload_profile_cache
+ // snapshot for that window instead of computing live over start_time/end_time.
+ // UNSPECIFIED (default) preserves today's live-compute behavior.
+ ProfileWindow window = 13;
}
message GetWorkloadProfilesResponse {
repeated WorkloadProfileResult workload_profiles = 1;
}
+message GetWorkloadProfileAvailabilityRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+// ProfileWindowAvailability summarizes the cached-snapshot state for a single
+// profile window. available reflects both presence (workload_count > 0) and
+// freshness (latest_computed_at within the window's staleness threshold).
+message ProfileWindowAvailability {
+ bool available = 1;
+ google.protobuf.Timestamp latest_computed_at = 2;
+ int32 workload_count = 3;
+}
+
+message GetWorkloadProfileAvailabilityResponse {
+ ProfileWindowAvailability window_1d = 1;
+ ProfileWindowAvailability window_7d = 2;
+}
+
message WorkloadProfileResult {
string kind = 1;
string uid = 2;
@@ -39,6 +71,17 @@ message WorkloadProfileResult {
ProfilingClassification classification = 4;
double confidence = 5;
ProfileDataQuality data_quality = 6;
+
+ // The window over which this profile's distributions were computed.
+ google.protobuf.Timestamp window_start = 7;
+ google.protobuf.Timestamp window_end = 8;
+
+ // distribution_source identifies how the percentile distributions were
+ // derived. "exact_timeseries" = exact percentiles over the deduplicated
+ // busiest-pod-per-minute series (engine path); "sketch" = GK sketch
+ // aggregates (tail may collapse onto max — do not label as P99 on fleet
+ // screens).
+ string distribution_source = 9;
}
message ContainerProfileResult {
@@ -200,6 +243,45 @@ message ContainerProfileSnapshot {
bool insufficient_data = 12;
int64 current_cpu_request_millicores = 13;
int64 current_memory_request_bytes = 14;
+ // Container-level startup timing (scheduled -> Ready condition).
+ double avg_time_to_ready_ms = 15;
+ double p50_time_to_ready_ms = 16;
+ double p75_time_to_ready_ms = 17;
+ double p95_time_to_ready_ms = 18;
+ double p99_time_to_ready_ms = 19;
+ double p999_time_to_ready_ms = 20;
+ double max_time_to_ready_ms = 21;
+ // Container-level startup timing (container create -> Running state).
+ double avg_time_to_running_ms = 22;
+ double p50_time_to_running_ms = 23;
+ double p75_time_to_running_ms = 24;
+ double p95_time_to_running_ms = 25;
+ double p99_time_to_running_ms = 26;
+ double p999_time_to_running_ms = 27;
+ double max_time_to_running_ms = 28;
+}
+
+// WorkloadPeerConnectivity describes one outbound (egress) internal
+// workload-to-workload traffic edge from the profiled workload to a destination
+// workload in the same cluster, aggregated over the profile window. Only
+// internal cluster traffic is represented here (destination workload
+// name/namespace populated); external egress is out of scope.
+message WorkloadPeerConnectivity {
+ // Stable owner-workload UID of the destination, resolved at ingestion. Used
+ // for stable peer identity — name/namespace alone can collide across workload
+ // replacements.
+ string dst_workload_uid = 1;
+ string dst_workload_name = 2;
+ string dst_namespace = 3;
+ // traffic_type mirrors models.TrafficType (e.g. INTERNAL_SAME_NODE,
+ // INTERNAL_SAME_AZ, INTERNAL_CROSS_AZ). Kept as a string to match the
+ // ClickHouse-stored classification.
+ string traffic_type = 4;
+ // Total transmit/receive bytes over the profile window for this edge.
+ int64 tx_bytes = 5;
+ int64 rx_bytes = 6;
+ // Total network cost attributed to this edge over the window.
+ google.type.Money cost = 7;
}
message WorkloadProfileSnapshot {
@@ -209,4 +291,34 @@ message WorkloadProfileSnapshot {
ProfileDataQuality data_quality = 4;
google.protobuf.Timestamp computed_at = 5;
string ui_url = 6;
+ // Workload-level startup aggregates, pooled across every container of every
+ // pod in the window. Mirrors WorkloadHealthSummary's startup fields.
+ double avg_time_to_ready_ms = 7;
+ double p50_time_to_ready_ms = 8;
+ double p75_time_to_ready_ms = 9;
+ double p95_time_to_ready_ms = 10;
+ double p99_time_to_ready_ms = 11;
+ double p999_time_to_ready_ms = 12;
+ double max_time_to_ready_ms = 13;
+ // Always false from this pipeline: the batched cluster-wide fetch does not
+ // compute a previous-period comparison, matching the existing precedent in
+ // GetWorkloadHealthSummaries's cluster-list handler.
+ bool startup_degraded = 14;
+ // False when no container_startup_lifecycles rows matched this workload in
+ // the window — i.e. no pod lifecycle transitions (Pending, ContainerCreating,
+ // Running, or Ready) were observed for it, so the zero-valued timing fields
+ // above mean "no data" rather than a real zero-latency startup.
+ //
+ // Reflects workload-level (time_to_ready_ms) presence only. A workload can
+ // have has_startup_data=false with all *_time_to_ready_ms fields zero, while
+ // its containers[].{avg,p50,...}_time_to_running_ms are still populated —
+ // e.g. containers that reached Running but never became Ready in the
+ // window. Do not use this flag to gate reads of container-level
+ // *_time_to_running_ms; check each container's own fields instead.
+ bool has_startup_data = 15;
+
+ // peers carries the top outbound internal workload-to-workload traffic edges
+ // from this workload over the profile window (capped, ranked by tx+rx bytes).
+ // Only internal cluster traffic is included; external egress is excluded.
+ repeated WorkloadPeerConnectivity peers = 16;
}
diff --git a/internal/proto/api/v1/recommendation.proto b/internal/proto/api/v1/recommendation.proto
index f9eb451..1c8c34e 100644
--- a/internal/proto/api/v1/recommendation.proto
+++ b/internal/proto/api/v1/recommendation.proto
@@ -12,6 +12,7 @@ import "google/type/money.proto";
import "api/v1/common.proto";
import "api/v1/instance.proto";
import "api/v1/k8s.proto";
+import "api/v1/hpa_connector.proto";
import "api/v1/profiling.proto";
service K8sRecommendationService {
@@ -121,6 +122,26 @@ service K8sRecommendationService {
rpc DeleteNodePolicy(DeleteNodePolicyRequest) returns (DeleteNodePolicyResponse);
rpc SuggestedNodePolicy(SuggestedNodePolicyRequest) returns (SuggestedNodePolicyResponse);
rpc SuggestedKarpenterConfig(SuggestedKarpenterConfigRequest) returns (SuggestedKarpenterConfigResponse);
+ // SuggestNodePolicyImprovements returns evidence-cited improvement suggestions for a
+ // node policy's NodePool/NodeClass fields, computed per (policy, cluster) pair over a
+ // profile window. Serves the latest precomputed row when fresh; recomputes
+ // synchronously when the row is missing or stale (policy edited since, or the rule
+ // engine version changed). Inline drafts (`policy` set) always compute live.
+ rpc SuggestNodePolicyImprovements(SuggestNodePolicyImprovementsRequest) returns (SuggestNodePolicyImprovementsResponse);
+ // ListClusterNodePolicySuggestions returns the latest suggestions for every node
+ // policy on a cluster — dakr-authored and cluster-managed mirrors alike — one entry
+ // per policy, so a cluster-wide triage view does not need one
+ // SuggestNodePolicyImprovements call per policy. Always serves precomputed rows from
+ // the same node_policy_suggestions table SuggestNodePolicyImprovements reads,
+ // populated on a cadence by a per-cluster batch job; never computes live, so a large
+ // cluster's worth of policies can never block this call on a synchronous evidence
+ // load. A policy with no row yet, or a row stale enough to recompute, is reported via
+ // `stale` (per policy and in aggregate) rather than blocking the response, and a
+ // background refresh of the whole cluster is enqueued when any row needs one. Carries
+ // no `original`/`suggested` NodePolicy payload per policy — accepting a suggestion
+ // still goes through SuggestNodePolicyImprovements for that one policy, which is
+ // where the compiled accept-all/per-field composition already lives.
+ rpc ListClusterNodePolicySuggestions(ListClusterNodePolicySuggestionsRequest) returns (ListClusterNodePolicySuggestionsResponse);
// GenerateNodePoliciesFromKarpenter generates NodePolicy objects from existing Karpenter resources
// (NodePools and EC2NodeClasses) for a given cluster.
rpc GenerateNodePoliciesFromKarpenter(GenerateNodePoliciesFromKarpenterRequest) returns (GenerateNodePoliciesFromKarpenterResponse);
@@ -150,14 +171,44 @@ service K8sRecommendationService {
// render "9/10 labelled, 1 failed".
rpc GetCheckpointApplyStatus(GetCheckpointApplyStatusRequest) returns (GetCheckpointApplyStatusResponse);
+ // GetClusterCheckpointLabelCoverage returns per-node-group counts for the
+ // dakr.devzero.io/checkpoint-node label across every policy-managed node
+ // group in a cluster: how many live nodes carry the label, how many have a
+ // pending SSA apply, how many failed. The FE renders an "X/Y labeled"
+ // subtext under the checkpoint chip in NodeGroupsTable. Source-of-truth
+ // for live label state; the per-batch GetCheckpointApplyStatus only sees
+ // nodes that were in a batch.
+ rpc GetClusterCheckpointLabelCoverage(GetClusterCheckpointLabelCoverageRequest) returns (GetClusterCheckpointLabelCoverageResponse);
+
+ // ListNodeGroupCheckpointLabelState returns per-node label state for one
+ // node group: has-label, last apply attempt state, last error. Used by the
+ // NodeGroupPanelContent Nodes tab to render a per-node Checkpoint label
+ // column. Scoped to one node group so the per-panel-open payload stays
+ // bounded.
+ rpc ListNodeGroupCheckpointLabelState(ListNodeGroupCheckpointLabelStateRequest) returns (ListNodeGroupCheckpointLabelStateResponse);
+
// GetNodeAnnotationReadiness checks how many nodes in a cluster have been
// annotated with AWS metadata by the Karpenter fork's node metadata controller.
rpc GetNodeAnnotationReadiness(GetNodeAnnotationReadinessRequest) returns (GetNodeAnnotationReadinessResponse);
+ // DetectClusterAutoscaler classifies which autoscaler family manages the
+ // cluster from live signals (Karpenter CRDs, cluster-autoscaler Deployment,
+ // cast.ai provisioner Deployment / cast-labeled nodes). Used by the
+ // migration wizard entry to parameterize the journey by source autoscaler.
+ rpc DetectClusterAutoscaler(DetectClusterAutoscalerRequest) returns (DetectClusterAutoscalerResponse);
+
// Migration wizard state management
rpc GetMigrationState(GetMigrationStateRequest) returns (GetMigrationStateResponse);
rpc UpdateMigrationState(UpdateMigrationStateRequest) returns (UpdateMigrationStateResponse);
+ // Karpenter migration wizard
+ rpc GetKarpenterMigrationState(GetKarpenterMigrationStateRequest) returns (GetKarpenterMigrationStateResponse);
+ rpc UpdateKarpenterMigrationState(UpdateKarpenterMigrationStateRequest) returns (UpdateKarpenterMigrationStateResponse);
+ rpc DetectKarpenterOwnershipConflicts(DetectKarpenterOwnershipConflictsRequest) returns (DetectKarpenterOwnershipConflictsResponse);
+ rpc AcknowledgeKarpenterOwnershipConflict(AcknowledgeKarpenterOwnershipConflictRequest) returns (AcknowledgeKarpenterOwnershipConflictResponse);
+ rpc GetKarpenterSourceResources(GetKarpenterSourceResourcesRequest) returns (GetKarpenterSourceResourcesResponse);
+ rpc GetKarpenterAdoptionStatus(GetKarpenterAdoptionStatusRequest) returns (GetKarpenterAdoptionStatusResponse);
+
// NodePool validation phone-home
rpc ReportNodePoolValidation(ReportNodePoolValidationRequest) returns (ReportNodePoolValidationResponse);
rpc GetNodePoolValidations(GetNodePoolValidationsRequest) returns (GetNodePoolValidationsResponse);
@@ -172,6 +223,7 @@ service K8sRecommendationService {
rpc GetInstanceSizes(GetInstanceSizesRequest) returns (GetInstanceSizesResponse);
rpc GetInstanceCategories(GetInstanceCategoriesRequest) returns (GetInstanceCategoriesResponse);
+ rpc GetInstanceShapes(GetInstanceShapesRequest) returns (GetInstanceShapesResponse);
rpc GetInstanceCPUs(GetInstanceCPUsRequest) returns (GetInstanceCPUsResponse);
rpc GetInstanceTypeNames(GetInstanceTypeNamesRequest) returns (GetInstanceTypeNamesResponse);
@@ -181,6 +233,11 @@ service K8sRecommendationService {
rpc CreatePodDisruptionBudget(CreatePodDisruptionBudgetRequest) returns (CreatePodDisruptionBudgetResponse);
// GetPDBRecommendationForWorkload retrieves the existing PDB recommendation for a workload (if any)
rpc GetPDBRecommendationForWorkload(GetPDBRecommendationForWorkloadRequest) returns (GetPDBRecommendationForWorkloadResponse);
+ // ListWorkloadStructuralHealth returns every workload with at least one open
+ // structural-health finding -- disruption-fragility (single-replica / no-PDB /
+ // ineffective-PDB) and any net-new structural check (e.g. topology-
+ // concentration) -- composed into one per-workload report each.
+ rpc ListWorkloadStructuralHealth(ListWorkloadStructuralHealthRequest) returns (ListWorkloadStructuralHealthResponse);
// Storage Recommendation Policies
rpc CreateStorageRecommendationPolicy(CreateStorageRecommendationPolicyRequest) returns (CreateStorageRecommendationPolicyResponse);
@@ -216,11 +273,32 @@ service K8sRecommendationService {
rpc CreateWorkloadOptimizationPolicy(CreateWorkloadOptimizationPolicyRequest) returns (CreateWorkloadOptimizationPolicyResponse);
rpc ListWorkloadOptimizationPolicies(ListWorkloadOptimizationPoliciesRequest) returns (ListWorkloadOptimizationPoliciesResponse);
rpc GetWorkloadOptimizationPolicy(GetWorkloadOptimizationPolicyRequest) returns (GetWorkloadOptimizationPolicyResponse);
+ rpc GetWorkloadOptimizationPolicyByWorkload(GetWorkloadOptimizationPolicyByWorkloadRequest) returns (GetWorkloadOptimizationPolicyByWorkloadResponse);
rpc UpdateWorkloadOptimizationPolicy(UpdateWorkloadOptimizationPolicyRequest) returns (UpdateWorkloadOptimizationPolicyResponse);
+ // The sole way to change an existing policy's disabled state. See message doc.
+ rpc ToggleWorkloadOptimizationPolicyDisabled(ToggleWorkloadOptimizationPolicyDisabledRequest) returns (ToggleWorkloadOptimizationPolicyDisabledResponse);
rpc DeleteWorkloadOptimizationPolicy(DeleteWorkloadOptimizationPolicyRequest) returns (DeleteWorkloadOptimizationPolicyResponse);
+ // Dry-run: which workloads would this policy's targeting selectors match,
+ // right now, without saving anything. Works against unsaved/edited
+ // targeting fields (policy_id optional — set in edit mode to distinguish
+ // "already owned by this policy" from "owned by someone else").
+ rpc PreviewWorkloadOptimizationPolicyMatches(PreviewWorkloadOptimizationPolicyMatchesRequest) returns (PreviewWorkloadOptimizationPolicyMatchesResponse);
+
+ // Scheduler Policies: CRUD + targeting preview
+ rpc CreateSchedulerPolicy(CreateSchedulerPolicyRequest) returns (CreateSchedulerPolicyResponse);
+ rpc ListSchedulerPolicies(ListSchedulerPoliciesRequest) returns (ListSchedulerPoliciesResponse);
+ rpc UpdateSchedulerPolicy(UpdateSchedulerPolicyRequest) returns (UpdateSchedulerPolicyResponse);
+ rpc ToggleSchedulerPolicyDisabled(ToggleSchedulerPolicyDisabledRequest) returns (ToggleSchedulerPolicyDisabledResponse);
+ rpc DeleteSchedulerPolicy(DeleteSchedulerPolicyRequest) returns (DeleteSchedulerPolicyResponse);
+ rpc PreviewSchedulerPolicyTargets(PreviewSchedulerPolicyTargetsRequest) returns (PreviewSchedulerPolicyTargetsResponse);
+ // Read RPC for the enrolled-workloads drill-down (spec 4.5): every
+ // enrollment episode for a policy, regardless of lifecycle state.
+ rpc ListSchedulerPolicyEnrollments(ListSchedulerPolicyEnrollmentsRequest) returns (ListSchedulerPolicyEnrollmentsResponse);
// MPA V3: Workload Rules (CRUD)
rpc UpsertManualWorkloadRule(UpsertManualWorkloadRuleRequest) returns (UpsertManualWorkloadRuleResponse);
+ // The sole way to change an EXISTING rule's disabled state. See message doc.
+ rpc ToggleWorkloadRuleDisabled(ToggleWorkloadRuleDisabledRequest) returns (ToggleWorkloadRuleDisabledResponse);
rpc PreviewWorkloadRule(PreviewWorkloadRuleRequest) returns (PreviewWorkloadRuleResponse);
rpc GetWorkloadRulesByPolicy(GetWorkloadRulesByPolicyRequest) returns (GetWorkloadRulesByPolicyResponse);
rpc ListWorkloadRules(ListWorkloadRulesRequest) returns (ListWorkloadRulesResponse);
@@ -228,11 +306,64 @@ service K8sRecommendationService {
rpc GetWorkloadRuleByWorkload(GetWorkloadRuleByWorkloadRequest) returns (GetWorkloadRuleByWorkloadResponse);
rpc GetWorkloadByWorkloadRule(GetWorkloadByWorkloadRuleRequest) returns (GetWorkloadByWorkloadRuleResponse);
rpc DeleteWorkloadRule(DeleteWorkloadRuleRequest) returns (DeleteWorkloadRuleResponse);
+ rpc DeleteAllWorkloadRules(DeleteAllWorkloadRulesRequest) returns (DeleteAllWorkloadRulesResponse);
+ rpc BulkDeleteWorkloadRules(BulkDeleteWorkloadRulesRequest) returns (BulkDeleteWorkloadRulesResponse);
+ rpc BulkToggleWorkloadRulesDisabled(BulkToggleWorkloadRulesDisabledRequest) returns (BulkToggleWorkloadRulesDisabledResponse);
rpc GetWorkloadContainerNames(GetWorkloadContainerNamesRequest) returns (GetWorkloadContainerNamesResponse);
rpc BatchAutoOptimizeWorkloads(BatchAutoOptimizeWorkloadsRequest) returns (BatchAutoOptimizeWorkloadsResponse);
+ rpc BatchUpsertManualWorkloadRules(BatchUpsertManualWorkloadRulesRequest) returns (BatchUpsertManualWorkloadRulesResponse);
+ rpc BatchPreviewWorkloadRules(BatchPreviewWorkloadRulesRequest) returns (BatchPreviewWorkloadRulesResponse);
+ rpc ApplyOneTimeOptimization(ApplyOneTimeOptimizationRequest) returns (ApplyOneTimeOptimizationResponse);
+
+ // DeleteRuleAndApplyRecommendation is the v2 panic button: atomically deletes a WorkloadRule
+ // (triggering CRD removal from the cluster) and creates a one-time WorkloadRecommendation
+ // from user-adjusted values. After this call the workload receives no further auto-recommendations
+ // until a new rule is created.
+ rpc DeleteRuleAndApplyRecommendation(DeleteRuleAndApplyRecommendationRequest) returns (DeleteRuleAndApplyRecommendationResponse);
// Get current node pool config status and recent apply history for a cluster
rpc GetNodeRecommendationStatus(GetNodeRecommendationStatusRequest) returns (GetNodeRecommendationStatusResponse);
+
+ // ---- Snapshot policies (resilience) — spec §5 ----
+ rpc CreateSnapshotPolicies(CreateSnapshotPoliciesRequest) returns (CreateSnapshotPoliciesResponse);
+ rpc ListSnapshotPolicies(ListSnapshotPoliciesRequest) returns (ListSnapshotPoliciesResponse);
+ rpc UpdateSnapshotPolicy(UpdateSnapshotPolicyRequest) returns (UpdateSnapshotPolicyResponse);
+ rpc DeleteSnapshotPolicy(DeleteSnapshotPolicyRequest) returns (DeleteSnapshotPolicyResponse);
+ rpc CreateSnapshotPolicyTargets(CreateSnapshotPolicyTargetsRequest) returns (CreateSnapshotPolicyTargetsResponse);
+ rpc ListSnapshotPolicyTargets(ListSnapshotPolicyTargetsRequest) returns (ListSnapshotPolicyTargetsResponse);
+ rpc UpdateSnapshotPolicyTarget(UpdateSnapshotPolicyTargetRequest) returns (UpdateSnapshotPolicyTargetResponse);
+ rpc DeleteSnapshotPolicyTarget(DeleteSnapshotPolicyTargetRequest) returns (DeleteSnapshotPolicyTargetResponse);
+
+ // ---- Forensic snapshot policies (runtime security) — spec §5 ----
+ rpc CreateForensicSnapshotPolicies(CreateForensicSnapshotPoliciesRequest) returns (CreateForensicSnapshotPoliciesResponse);
+ rpc ListForensicSnapshotPolicies(ListForensicSnapshotPoliciesRequest) returns (ListForensicSnapshotPoliciesResponse);
+ rpc UpdateForensicSnapshotPolicy(UpdateForensicSnapshotPolicyRequest) returns (UpdateForensicSnapshotPolicyResponse);
+ rpc DeleteForensicSnapshotPolicy(DeleteForensicSnapshotPolicyRequest) returns (DeleteForensicSnapshotPolicyResponse);
+ rpc CreateForensicSnapshotPolicyTargets(CreateForensicSnapshotPolicyTargetsRequest) returns (CreateForensicSnapshotPolicyTargetsResponse);
+ rpc ListForensicSnapshotPolicyTargets(ListForensicSnapshotPolicyTargetsRequest) returns (ListForensicSnapshotPolicyTargetsResponse);
+ rpc UpdateForensicSnapshotPolicyTarget(UpdateForensicSnapshotPolicyTargetRequest) returns (UpdateForensicSnapshotPolicyTargetResponse);
+ rpc DeleteForensicSnapshotPolicyTarget(DeleteForensicSnapshotPolicyTargetRequest) returns (DeleteForensicSnapshotPolicyTargetResponse);
+ // Arms a forensic capture run: the ONLY way run_generation moves.
+ rpc TriggerForensicSnapshotRun(TriggerForensicSnapshotRunRequest) returns (TriggerForensicSnapshotRunResponse);
+
+ // ListReferencedAuthentications returns the distinct KEDA authenticationRef objects
+ // referenced by active WorkloadRules in a cluster. Each entry carries the
+ // name, kind (TriggerAuthentication or ClusterTriggerAuthentication),
+ // the count of rules that reference it, and the namespaces those rules live in.
+ // No credential or secret data is returned.
+ rpc ListReferencedAuthentications(ListReferencedAuthenticationsRequest) returns (ListReferencedAuthenticationsResponse);
+
+ // ---- Targeting preview + read model + delivery status ----
+ rpc PreviewSnapshotPolicyTargetMatches(PreviewSnapshotPolicyTargetMatchesRequest) returns (PreviewSnapshotPolicyTargetMatchesResponse);
+ rpc PreviewForensicSnapshotPolicyTargetMatches(PreviewForensicSnapshotPolicyTargetMatchesRequest) returns (PreviewForensicSnapshotPolicyTargetMatchesResponse);
+ rpc GetSnapshotPolicyTargetRenderedScope(GetSnapshotPolicyTargetRenderedScopeRequest) returns (GetSnapshotPolicyTargetRenderedScopeResponse);
+ rpc GetForensicSnapshotPolicyTargetRenderedScope(GetForensicSnapshotPolicyTargetRenderedScopeRequest) returns (GetForensicSnapshotPolicyTargetRenderedScopeResponse);
+ rpc GetSnapshotRecommendationStatus(GetSnapshotRecommendationStatusRequest) returns (GetSnapshotRecommendationStatusResponse);
+ rpc GetForensicSnapshotRecommendationStatus(GetForensicSnapshotRecommendationStatusRequest) returns (GetForensicSnapshotRecommendationStatusResponse);
+ // Compiled-YAML previews are implemented by the phase-3 compiler; until
+ // then the handlers return CodeUnimplemented.
+ rpc PreviewSnapshotRecommendationConfig(PreviewSnapshotRecommendationConfigRequest) returns (PreviewSnapshotRecommendationConfigResponse);
+ rpc PreviewForensicSnapshotRecommendationConfig(PreviewForensicSnapshotRecommendationConfigRequest) returns (PreviewForensicSnapshotRecommendationConfigResponse);
}
message GetRecommendationsRequest {
@@ -362,12 +493,10 @@ message GetPreviewWorkloadRecommendationRequest {
// Moment in time for which the recommendations are requested
// If not set, the current time is used
google.protobuf.Timestamp timestamp = 8;
- // Duration to look back for vertical scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 24 hours
- google.protobuf.Duration vpa_lookback = 9;
- // Duration to look back for horizontal scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 5 minutes
- google.protobuf.Duration hpa_lookback = 10;
+ // 9, 10: removed vpa_lookback / hpa_lookback — never read by either engine.
+ // The metrics window comes from the policy's loopback_period_seconds.
+ reserved 9, 10;
+ reserved "vpa_lookback", "hpa_lookback";
bool include_deleted = 21;
}
@@ -384,12 +513,10 @@ message GetPreviewWorkloadRecommendationsRequest {
// Moment in time for which the recommendations are requested
// If not set, the current time is used
google.protobuf.Timestamp timestamp = 5;
- // Duration to look back for vertical scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 24 hours
- google.protobuf.Duration vpa_lookback = 6;
- // Duration to look back for horizontal scaling recommendations
- // If not set, defaults to policy settings, if those are not set - 5 minutes
- google.protobuf.Duration hpa_lookback = 7;
+ // 6, 7: removed vpa_lookback / hpa_lookback — never read by either engine.
+ // The metrics window comes from the policy's loopback_period_seconds.
+ reserved 6, 7;
+ reserved "vpa_lookback", "hpa_lookback";
bool include_deleted = 21;
}
@@ -747,8 +874,10 @@ message WorkloadPolicyTarget {
optional LabelSelector annotation_selector = 15; // Target workloads by annotations
repeated string workload_names = 16; // Target specific workload kinds
optional RegexPattern namespace_pattern = 17; // Target namespaces by name pattern
+ repeated string workload_names_not_in = 18; // Exclude specific workload names
+ repeated K8sObjectKind kind_filter_not_in = 19; // Exclude specific workload kinds
- repeated string node_group_names = 21; // target workloads running on specific nodes
+ repeated string node_group_names = 21 [deprecated = true]; // Deprecated: unused by any active target; removed from the UI.
repeated string cluster_ids = 31;
@@ -773,8 +902,10 @@ message CreateWorkloadPolicyTargetRequest {
optional RegexPattern name_pattern = 14; // Target workloads by name pattern
optional LabelSelector annotation_selector = 15; // Target workloads by annotations
repeated string workload_names = 16;
- repeated string node_group_names = 17;
+ repeated string node_group_names = 17 [deprecated = true]; // Deprecated: unused by any active target; removed from the UI.
optional RegexPattern namespace_pattern = 18; // Target namespaces by name pattern
+ repeated string workload_names_not_in = 19; // Exclude specific workload names
+ repeated K8sObjectKind kind_filter_not_in = 20; // Exclude specific workload kinds
repeated string cluster_ids = 21;
}
@@ -820,8 +951,10 @@ message UpdateWorkloadPolicyTargetRequest {
optional RegexPattern name_pattern = 14; // Target workloads by name pattern
optional LabelSelector annotation_selector = 15; // Target workloads by annotations
repeated string workload_names = 16;
- repeated string node_group_names = 17;
+ repeated string node_group_names = 17 [deprecated = true]; // Deprecated: unused by any active target; removed from the UI.
optional RegexPattern namespace_pattern = 18; // Target namespaces by name pattern
+ repeated string workload_names_not_in = 19; // Exclude specific workload names
+ repeated K8sObjectKind kind_filter_not_in = 20; // Exclude specific workload kinds
optional string policy_id = 21; // should only be set when target needs to be attached to diff policy
@@ -873,8 +1006,10 @@ message PreviewWorkloadPolicyTargetMatchesRequest {
optional RegexPattern name_pattern = 6; // Target workloads by name pattern
optional LabelSelector annotation_selector = 7; // Target workloads by annotations
repeated string workload_names = 8;
- repeated string node_group_names = 9;
+ repeated string node_group_names = 9 [deprecated = true]; // Deprecated: unused by any active target; removed from the UI.
optional RegexPattern namespace_pattern = 10; // Target namespaces by name pattern
+ repeated string workload_names_not_in = 11; // Exclude specific workload names
+ repeated K8sObjectKind kind_filter_not_in = 12; // Exclude specific workload kinds
}
message PreviewWorkloadPolicyTargetMatchesResponse {
@@ -894,10 +1029,24 @@ message GetPreviewWorkloadPolicyTargetRecommendationsRequest {
repeated string workload_names = 9;
repeated string node_group_names = 10;
optional RegexPattern namespace_pattern = 11; // Target namespaces by name pattern
+ repeated string workload_names_not_in = 12; // Exclude specific workload names
+ repeated K8sObjectKind kind_filter_not_in = 13; // Exclude specific workload kinds
bool include_deleted = 21;
repeated string cluster_ids = 31;
+
+ // Priority of the previewed target; used to determine who wins when a
+ // competing target exists for the same workload. When absent, collision
+ // detection is skipped and collisions_by_workload_uid is empty.
+ optional int32 priority = 32;
+}
+
+message WorkloadCollisionInfo {
+ string policy_id = 1;
+ string policy_name = 2;
+ string target_id = 3;
+ string target_name = 4;
}
message GetPreviewWorkloadPolicyTargetRecommendationsResponse {
@@ -905,6 +1054,12 @@ message GetPreviewWorkloadPolicyTargetRecommendationsResponse {
repeated WorkloadItem workload_items = 2;
// Map from workload UID to aggregated percentile summaries across all containers
map workload_percentiles = 3;
+ // Workloads where a competing policy's target beats the previewed target.
+ // Absent entries mean the current policy wins or no competing target exists.
+ map collisions_by_workload_uid = 4;
+ // UIDs of workloads skipped because they are managed by optimization rules (MPA v2).
+ // Policy-based optimization cannot be applied to these workloads.
+ repeated string rule_managed_workload_uids = 5;
}
// WorkloadPercentileSummary aggregates percentile metrics across all containers of a workload.
@@ -1041,6 +1196,26 @@ message BalanceGetRecommendationsRequest {
// Sent when RuleEvaluatorController generates a recommendation from evaluating a WorkloadRule
WorkloadRecommendation in_cluster_recommendation = 21;
+ // Snapshot policies (spec §8): periodic full snapshot of the
+ // dakr-managed criu.org CR statuses from the cluster. The operator
+ // emits no Kubernetes Events — CR status is the entire runtime
+ // observability channel. dakr ingests with full-sync semantics
+ // (upsert reported, soft-delete unreported).
+ SnapshotCRStatusReport snapshot_cr_status_report = 31;
+
+ // Periodic full-sync report of scheduler enrollment state observed
+ // in-cluster: original-scheduler captures at first application.
+ // Full-sync semantics mirror SnapshotCRStatusReport. Revert acks do
+ // NOT ride this message — they use apply with
+ // RECOMMENDATION_TYPE_SCHEDULER_POLICY and the enrollment id.
+ SchedulerEnrollmentReport scheduler_enrollment_report = 32;
+
+ // Fail-open scheduler revert events observed by the admission
+ // failsafe: pods steered away from an unhealthy tracked scheduler at
+ // CREATE time. Batched per stream tick, replica-local (each tunr
+ // replica reports only what its own webhook process observed).
+ SchedulerRevertEventReport scheduler_revert_event_report = 33;
+
// health check APIs
OperatorHealth operator_health = 71;
AgentHealth agent_health = 81;
@@ -1080,6 +1255,19 @@ message BalanceGetRecommendationsResponse {
// KarpenterSettings CRD push-down
KarpenterSettingsRecommendation karpenter_settings = 62;
+
+ // Snapshot policy CRD bundles (checkpoint-restore-operator, spec §7)
+ SnapshotRecommendation snapshot_recommendation = 63;
+ ForensicSnapshotRecommendation forensic_snapshot_recommendation = 64;
+
+ // HPA connector CRD push-down
+ BatchHPAConnectors batch_hpa_connectors = 65;
+
+ // Full desired scheduler-policy set for this cluster plus pending
+ // revert instructions. Hash-gated full-sync push (see
+ // scheduler_policy_delivery.go); tunr reconciles it into the
+ // cluster-scoped SchedulerPolicy CRD and executes reverts.
+ SchedulerPolicySync scheduler_policy_sync = 66;
}
string request_id = 99; // optional
}
@@ -1134,15 +1322,58 @@ message WorkloadRule {
// in-place pod vertical scaling instead of triggering pod restarts.
bool use_in_place_vertical_scaling = 70;
+ // Opt-in: allow an in-place resize to LOWER a container's memory limit.
+ // Only consulted when use_in_place_vertical_scaling is true, and it never
+ // relaxes the Kubernetes version gate — a decrease still additionally
+ // requires a cluster new enough to accept one. Default false because
+ // shrinking a live container's memory limit can OOM-kill it.
+ bool allow_in_place_memory_limit_decrease = 71;
+
// UI display fields (not sent to cluster, only used for listing)
string status = 80; // "active" or "inactive"
string sync_status = 81; // "pending", "synced", or "failed"
string current_source = 82; // "crd", "policy", "auto_optimization", "manual", "pulumi_manual", "pulumi_auto", "terraform_manual", "terraform_auto"
google.protobuf.Timestamp created_at = 83;
google.protobuf.Timestamp updated_at = 84;
+ // True when the underlying workload (cluster_id, namespace, kind, name)
+ // is no longer present in the cluster. Populated by ListWorkloadRules
+ // at read time via a presence lookup against the workload tables — NOT
+ // persisted on the rule itself. Orthogonal to `status` (which reflects
+ // whether the rule's policy is enabled) — an Active rule can be
+ // orphaned if its workload was deleted, and will be cleaned up by the
+ // orphan janitor after a grace period.
+ bool is_orphaned = 85;
// Per-container resource configurations (VPA). When empty, workload-level rules apply to all containers.
repeated ContainerResourceRuleConfig containers = 90;
+
+ // JVM heap optimization overrides for this rule.
+ JVMHeapRuleConfig jvm_heap_rule = 91;
+
+ // Per-rule override of the JVM CPU startup floor (millicores). Standalone —
+ // deliberately NOT inside jvm_heap_rule and not gated by its enabled flag
+ // (the floor is always-on for detected JVMs). Unset = inherit policy /
+ // system default (75m). Explicit 0 = floor disabled for this rule.
+ optional int64 jvm_cpu_startup_floor_millicores = 92;
+
+ // Rule-wide on/off switch, independent of `status`/`sync_status`. A
+ // disabled rule still exists (status stays "active") but every CP loop
+ // and the in-cluster operator treat it as a full no-op: no further
+ // regeneration, no evaluation, no emergency OOM/throttle response.
+ bool disabled = 93;
+
+ // Per-rule override of the metrics lookback window (seconds). Unset =
+ // inherit the owning policy's window, else the 7-day default.
+ //
+ // Mirrored onto the CRD for visibility only — the operator evaluates off
+ // zxporter's rolling 5-minute window and never queries history.
+ optional int32 lookback_period_seconds = 94;
+
+ // KEDA ScaledObject template authored by dakr and carried to tunr.
+ // When set, tunr owns the ScaledObject lifecycle (create/update/delete)
+ // rather than generating its own HPA. Renumbered 94→95 on the main merge
+ // (main took 94 for lookback_period_seconds).
+ optional KEDAScaledObjectTemplate keda_scaled_object = 95;
}
message ResourceRuleConfig {
@@ -1169,6 +1400,50 @@ message ResourceRuleConfig {
// the produced BaseRequest differs from the user's expectation. Not
// persisted — recomputed on every generation/preview.
repeated string notes = 14;
+
+ // Recommendation floor (rules/v2, request only): the recommended request
+ // is never lowered below floor_percent% (1-100) of initial_request, the
+ // cached immutable baseline sourced from workload_resource_baselines and
+ // refreshed by GenerateAutoRule every cycle. initial_request is editable
+ // through the generic manual-rule surface like min_request (no special
+ // protection). Unset floor_percent = floor disabled. Resolved in the
+ // in-cluster tunr evaluator, not pre-resolved by dakr.
+ optional int64 initial_request = 15;
+ optional int64 floor_percent = 16;
+
+ // Recommendation ceiling (rules/v2, request only): the recommended request
+ // is never raised above ceiling_percent% (1-1000) of initial_request. The
+ // mirror of floor_percent; a ceiling below 100 is intentionally allowed as
+ // a baseline-relative cap distinct from max_request. Unset = ceiling
+ // disabled. Resolved in the in-cluster tunr evaluator, not pre-resolved by
+ // dakr.
+ optional int64 ceiling_percent = 17;
+
+ // Limit floor/ceiling (rules/v2, limit only): the recommended limit is
+ // never lowered below limit_floor_percent% (1-100) nor raised above
+ // limit_ceiling_percent% (1-1000) of initial_limit, the cached immutable
+ // initial-limit baseline sourced from workload_resource_baselines and
+ // refreshed by GenerateAutoRule every cycle. Applied only when limits
+ // adjustment is enabled and limits removal is not; the recommended
+ // request always wins over the limit ceiling (the limit is never clamped
+ // below the request). Unset = bound disabled. Resolved in the in-cluster
+ // tunr evaluator, not pre-resolved by dakr.
+ optional int64 initial_limit = 18;
+ optional int64 limit_floor_percent = 19;
+ optional int64 limit_ceiling_percent = 20;
+
+ // Memory-only: size the memory REQUEST recommendation from RSS instead of working set.
+ optional bool request_use_rss = 21;
+ // Memory-only: derive the limit from an RSS-based recommendation instead of working set
+ // (the limit multiplier still applies to whichever basis is selected).
+ optional bool limit_use_rss = 22;
+
+ // Memory-only: request-equivalent baseline on the *limit* basis (bytes). The
+ // generator emits this only when the limit basis differs from the request
+ // basis (RSS vs working set); 0 otherwise, meaning "derive the limit as
+ // request × limit_multiplier" (byte-identical default). NOT pre-multiplied.
+ // Consumed by the in-cluster tunr evaluator's normal-mode baseline path.
+ int64 base_limit = 23;
}
message HPAMetricTrigger {
@@ -1179,6 +1454,7 @@ message HPAMetricTrigger {
map metadata = 5; // Free-form key-value for external scalers (e.g. serverAddress, query for Prometheus)
optional string server_address = 6; // Frontend-friendly: Prometheus server URL (packed into metadata by service layer)
optional string query = 7; // Frontend-friendly: PromQL query (packed into metadata by service layer)
+ optional string connector_id = 8; // References HPAConnector by dakr-side UUID
}
// HPABehavior, HPAScalingRules, HPAScalingPolicy are defined in common.proto
@@ -1205,6 +1481,17 @@ message ContainerResourceConfig {
// Human-readable annotations from the engine for this container.
// See ResourceRuleConfig.notes for semantics.
repeated string notes = 9;
+
+ // Memory-only: size the memory REQUEST recommendation from RSS instead of working set.
+ optional bool request_use_rss = 10;
+ // Memory-only: derive the limit from an RSS-based recommendation instead of working set
+ // (the limit multiplier still applies to whichever basis is selected).
+ optional bool limit_use_rss = 11;
+
+ // Memory-only: request-equivalent baseline on the *limit* basis (bytes),
+ // emitted only when the limit basis differs from the request basis; 0
+ // otherwise. See ResourceRuleConfig.base_limit for full semantics.
+ int64 base_limit = 12;
}
// Per-container resource rule config with CPU/Memory/GPU.
@@ -1215,21 +1502,31 @@ message ContainerResourceRuleConfig {
ContainerResourceConfig gpu_rule = 4;
}
+// JVMHeapRuleConfig mirrors the policy-level JVM heap knobs as per-rule overrides.
+// Gated by enabled; the optional knobs are overrides — unset = use the default.
+message JVMHeapRuleConfig {
+ bool enabled = 1;
+ optional float target_percentile = 2;
+ optional float headroom_multiplier = 3;
+ optional float non_heap_overhead_percent = 4;
+ optional int64 non_heap_overhead_bytes = 5;
+ optional int64 min_heap_bytes = 6;
+ optional int64 max_heap_bytes = 7;
+ bool prefer_container_support = 8;
+}
+
message HPARuleConfig {
+ reserved 4, 5, 12;
+ reserved "target_utilization", "primary_metric", "target_memory_utilization";
bool enabled = 1;
optional int32 min_replicas = 2;
optional int32 max_replicas = 3;
- optional float target_utilization = 4;
- optional HPAMetricType primary_metric = 5;
optional float max_replica_change_percent = 6;
repeated HPAMetricTrigger metrics = 7;
optional HPABehavior behavior = 8;
optional string composite_formula = 9;
optional HPAFallback fallback = 10;
optional int32 scale_down_cooldown_seconds = 11;
- // Target memory utilization (0.0-1.0). Separate from target_utilization (CPU)
- // to allow independent tuning per resource.
- optional float target_memory_utilization = 12;
}
message EmergencyResponseConfig {
@@ -1242,6 +1539,48 @@ message EmergencyResponseConfig {
float cpu_throttling_multiplier = 7;
}
+// KEDAScaledObjectTemplate is the user-authored KEDA ScaledObject configuration
+// carried from dakr to the in-cluster tunr operator. tunr materialises it into
+// a live ScaledObject and owns the lifecycle (create/update/delete).
+message KEDAScaledObjectTemplate {
+ repeated KEDATrigger triggers = 1;
+ optional int32 min_replica_count = 2;
+ optional int32 max_replica_count = 3;
+ optional int32 idle_replica_count = 4;
+ optional int32 polling_interval = 5;
+ optional int32 cooldown_period = 6;
+ optional int32 initial_cooldown_period = 7;
+ optional KEDAFallback fallback = 8;
+ optional KEDAAdvanced advanced = 9;
+}
+
+message KEDATrigger {
+ string type = 1;
+ string name = 2;
+ map metadata = 3;
+ string metric_type = 4;
+ optional KEDAAuthenticationRef authentication_ref = 5;
+ bool use_cached_metrics = 6;
+}
+
+message KEDAAuthenticationRef {
+ string name = 1;
+ string kind = 2;
+}
+
+message KEDAFallback {
+ int32 failure_threshold = 1;
+ int32 replicas = 2;
+ string behavior = 3;
+}
+
+message KEDAAdvanced {
+ bool restore_to_original_replica_count = 1;
+ // advanced_behavior_json carries the k8s HorizontalPodAutoscalerBehavior as an
+ // opaque JSON string so dakr never re-models k8s types; tunr unmarshals it.
+ string advanced_behavior_json = 2;
+}
+
// PercentileValues contains pre-computed percentile values for a single resource axis
message PercentileValues {
int64 p50 = 1;
@@ -1280,6 +1619,11 @@ message BatchWorkloadRules {
repeated string rule_ids_to_delete = 2; // rule IDs whose CRDs should be deleted from cluster
}
+message BatchHPAConnectors {
+ repeated HPAConnector connectors = 1;
+ repeated string connector_ids_to_delete = 2;
+}
+
message WorkloadWithActiveRecommendations {
repeated WorkloadIdentifier workloads = 1; // picking this pattern since caller has to iterate over the list anyway
// TODO support pagination
@@ -1361,6 +1705,43 @@ message GetPDBRecommendationForWorkloadResponse {
optional GenericResourceRecommendation recommendation = 1;
}
+// StructuralHealthFinding is a single structural-health finding for a workload,
+// composed from either disruption-fragility or a net-new structural check (e.g.
+// topology-concentration). See dakr/services/structuralhealth.
+message StructuralHealthFinding {
+ // "DISRUPTION_FRAGILITY" | "TOPOLOGY_CONCENTRATION"
+ string check_type = 1;
+ // "HIGH" | "MEDIUM"
+ string severity = 2;
+ // e.g. "NO_PDB_MULTI_REPLICA" (fragility) or "ALL_REPLICAS_ONE_NODE" (topology)
+ string reason_code = 3;
+ google.protobuf.Timestamp first_seen_at = 4;
+ // Check-specific structured payload (e.g. replica_count/pdb_name for
+ // fragility findings, node_count for topology findings), JSON-encoded since
+ // its shape varies per check type rather than being modeled as a oneof.
+ string detail_json = 5;
+}
+
+// WorkloadStructuralHealth is one workload's fully composed set of open
+// structural-health findings across every check type.
+message WorkloadStructuralHealth {
+ string cluster_id = 1;
+ string namespace = 2;
+ string kind = 3; // "Deployment" | "StatefulSet"
+ string name = 4;
+ string uid = 5;
+ repeated StructuralHealthFinding findings = 6;
+}
+
+message ListWorkloadStructuralHealthRequest {
+ string cluster_id = 1;
+ string team_id = 2;
+}
+
+message ListWorkloadStructuralHealthResponse {
+ repeated WorkloadStructuralHealth workloads = 1;
+}
+
message ReconcileWorkload {
K8sObjectKind kind = 1;
string workload_name = 2;
@@ -1520,6 +1901,20 @@ message ContainerRecommendation {
ResourceRecommendation recommended_limit = 5;
double optimization_score = 6;
+
+ // Per-element env var mutations for this container (merge key: name).
+ // The operator merges these into the live container.Env; entries not
+ // referenced here are left untouched.
+ repeated EnvVarMutation env_mutations = 11;
+
+ // Per-flag command/arg mutations for this container. Used to carry
+ // command-line directives (e.g. JVM -Xmx) already lowered by the control
+ // plane into a concrete flag edit.
+ repeated CommandArgMutation command_arg_mutations = 12;
+
+ // Whether this container was observed OOM-killed, driving the memory
+ // recommendation.
+ bool oom_triggered = 13;
}
message KedaScaledObjectRecommendation {
@@ -1549,6 +1944,55 @@ enum ActionToTake {
ACTION_TO_TAKE_IGNORE = 2; // dont fuck with this
}
+// MutationAction is the per-element analog of ActionToTake for list/map-shaped
+// fields (env vars, nodeSelector, tolerations, command/arg flags). The action
+// lives on each element so the operator can merge deltas into the live spec
+// instead of replacing the whole list. IGNORE is implicit: omit the element.
+enum MutationAction {
+ MUTATION_ACTION_UNSPECIFIED = 0;
+ MUTATION_ACTION_UPSERT = 1; // add the element, or replace the one matching the merge key
+ MUTATION_ACTION_REMOVE = 2; // delete the element matching the merge key
+}
+
+// ArgTarget selects which container field a CommandArgMutation edits.
+enum ArgTarget {
+ ARG_TARGET_UNSPECIFIED = 0;
+ ARG_TARGET_ARGS = 1; // container.args
+ ARG_TARGET_COMMAND = 2; // container.command
+}
+
+// EnvVarMutation is a per-element edit to a container's env list. Merge key is
+// `name`. value_from (secret/configMap refs) is intentionally deferred.
+message EnvVarMutation {
+ MutationAction action = 1;
+ string name = 2; // merge key
+ optional string value = 3; // literal value for UPSERT
+}
+
+// CommandArgMutation is a per-flag edit to a container's command or args list.
+// The control plane lowers higher-level intent (e.g. JVM heap sizing) into this
+// concrete flag edit so the operator stays generic.
+message CommandArgMutation {
+ MutationAction action = 1;
+ ArgTarget target = 2; // command vs args
+ string flag = 3; // e.g. "-Xmx"
+ optional string value = 4; // e.g. "512m"; empty for valueless flags
+}
+
+// NodeSelectorMutation is a per-key edit to the pod's nodeSelector map.
+message NodeSelectorMutation {
+ MutationAction action = 1;
+ string key = 2; // merge key
+ optional string value = 3; // value for UPSERT
+}
+
+// TolerationMutation is a per-element edit to the pod's tolerations list.
+// Element identity is the full tuple.
+message TolerationMutation {
+ MutationAction action = 1;
+ Toleration toleration = 2;
+}
+
// The pod this Toleration is attached to tolerates any taint that matches
// the triple using the matching operator .
message Toleration {
@@ -1692,6 +2136,15 @@ message VerticalScalingOptimizationTarget {
// Whether to actively remove limits from workloads (CPU only for now).
// Takes precedence over limits_adjustment_enabled when true.
bool limits_removal_enabled = 42;
+
+ // Memory-only: when true, size the memory REQUEST recommendation from RSS
+ // (resident set size) instead of the default working set. Ignored for CPU/GPU.
+ optional bool request_use_rss = 43;
+
+ // Memory-only: when true, the limit is derived from an RSS-based recommendation
+ // instead of the default working-set recommendation (the Limit multiplier still
+ // applies to whichever basis is selected). Ignored for CPU/GPU.
+ optional bool limit_use_rss = 44;
}
message HorizontalScalingOptimizationTarget {
@@ -1812,10 +2265,8 @@ message WorkloadRecommendationPolicy {
// Minutes to wait between applying recommendations (prevents thrashing)
optional int32 cooldown_minutes = 96;
- // Deprecated: no longer used. The legacy policy flow no longer creates workload rules.
- // Workload rules are created via auto-optimization or the new WorkloadOptimizationPolicy flow.
- // Field retained for wire-compatibility; will be reserved in a future cleanup.
- bool enable_incluster_mpa = 97;
+ reserved 97;
+ reserved "enable_incluster_mpa";
// Feature flag: Enable In-Place Pod Vertical Scaling for this policy.
// Requires Kubernetes >= v1.33 on all attached clusters.
@@ -1823,6 +2274,13 @@ message WorkloadRecommendationPolicy {
// without triggering rolling restarts.
bool enable_in_place_vertical_scaling = 103;
+ // Opt-in escape hatch for the riskiest half of in-place scaling: allowing a
+ // resize to LOWER a container's memory limit on a running pod. Gated behind
+ // enable_in_place_vertical_scaling and, independently, behind the cluster's
+ // Kubernetes version — this flag only ever removes DevZero's own refusal, it
+ // never makes an unsupported cluster accept the decrease. Default false.
+ bool allow_in_place_memory_limit_decrease = 121;
+
// Policy-driven automation: enable PDB creation for workloads under this policy
bool pdb_enabled = 98;
@@ -1834,6 +2292,53 @@ message WorkloadRecommendationPolicy {
optional float pmax_ratio_threshold = 101; // default: 3.0
optional google.protobuf.Timestamp deleted_at = 102;
+
+ // JVM heap optimization. Gated by jvm_heap_optimization_enabled; the optional
+ // knobs are overrides — unset means "use the current system default".
+ bool jvm_heap_optimization_enabled = 104;
+ optional float jvm_heap_target_percentile = 105;
+ optional float jvm_heap_headroom_multiplier = 106;
+ optional float jvm_non_heap_overhead_percent = 107;
+ optional int64 jvm_non_heap_overhead_bytes = 108;
+ optional int64 jvm_min_heap_bytes = 109;
+ optional int64 jvm_max_heap_bytes = 110;
+ bool jvm_prefer_container_support = 111;
+
+ // Minimum CPU request (millicores) for detected JVM containers, protecting
+ // JVM startup (classloading, JIT warmup, agent instrumentation) from CPU
+ // starvation under node contention. Standalone knob — part of the always-on
+ // "respect JVM state" path, NOT gated by jvm_heap_optimization_enabled.
+ // Unset = system default (75m). Explicit 0 = floor disabled (only the
+ // generic CPU minimum applies).
+ optional int64 jvm_cpu_startup_floor_millicores = 112;
+
+ // Recommendation floor percentage (per resource, request only): the
+ // recommended request is never lowered below pct% (1-100) of the
+ // container's immutable initial-request baseline
+ // (workload_resource_baselines). Unset = floor disabled.
+ optional int64 cpu_floor_percent = 113;
+ optional int64 memory_floor_percent = 114;
+
+ // Recommendation ceiling percentage (per resource, request only): the
+ // recommended request is never raised above pct% (1-1000) of the
+ // container's immutable initial-request baseline
+ // (workload_resource_baselines). A ceiling below 100 is intentionally
+ // allowed as a baseline-relative cap distinct from max_request. Unset =
+ // ceiling disabled.
+ optional int64 cpu_ceiling_percent = 115;
+ optional int64 memory_ceiling_percent = 116;
+
+ // Limit floor/ceiling percentage (per resource, limit only): the
+ // recommended limit is never lowered below the floor pct (1-100) nor
+ // raised above the ceiling pct (1-1000) of the container's immutable
+ // initial-limit baseline (workload_resource_baselines). Applied only when
+ // that resource's limits adjustment is enabled and limits removal is not;
+ // the recommended request always wins over the limit ceiling (the limit
+ // is never clamped below the request). Unset = bound disabled.
+ optional int64 cpu_limit_floor_percent = 117;
+ optional int64 memory_limit_floor_percent = 118;
+ optional int64 cpu_limit_ceiling_percent = 119;
+ optional int64 memory_limit_ceiling_percent = 120;
}
message GetPolicyRecommendedDefaultsRequest {
@@ -1869,6 +2374,22 @@ message BalanceApplyRecommendationResponse {
optional string error = 4;
// Optional live migration metadata, populated when recommendation used live migration.
optional LiveMigrationResult live_migration_result = 5;
+ // image_changed signals the operator retired this recommendation because the
+ // target workload's container image changed since it was applied (a new
+ // release), so its image-tied tuned values (env/cmd/nodeSelector/toleration)
+ // were not pinned onto the new image. The control plane records this as
+ // Superseded — not a failure — so the optimizer re-derives a fresh
+ // recommendation for the new image. Only set for spec-mutating workload recs.
+ bool image_changed = 6;
+ // applied_at is the terminal-phase timestamp the operator stamped on the
+ // WorkloadRecommendation CRD (Status.AppliedAt). For MPA v2 (rule-based)
+ // recommendations, the control plane's DB row primary key is derived from
+ // recommendation_id + applied_at (see k8sconverters.DeriveWorkloadRecommendationID),
+ // so this is required to target the correct row for this apply cycle instead
+ // of the workload's static, un-derived recommendation_id. Unset for legacy
+ // (non-rule) recommendations and older operators — callers must fall back
+ // to recommendation_id in that case.
+ optional google.protobuf.Timestamp applied_at = 7;
}
// LiveMigrationResult provides structured metadata about a live migration attempt.
@@ -1888,6 +2409,13 @@ message LiveMigrationResult {
string target_node = 6;
// Checkpoint image size in bytes.
int64 checkpoint_size_bytes = 7;
+ // Whether checkpoint/restore or the recommendation itself was intentionally
+ // skipped (for example, because live migration is unsupported, the workload
+ // had no running Pods, or there was no effective resource change).
+ bool skipped = 8;
+ // Stable, human-readable reason the operation was skipped. Empty when
+ // skipped is false.
+ string skip_reason = 9;
}
message NodeGroupReference {
@@ -1953,10 +2481,15 @@ message WorkloadRecommendation {
bool use_live_migration = 21;
LiveMigDeletionPropagation del_prop = 22;
- optional string reasoning = 31;
+ // Why this recommendation was generated, set once at creation. For
+ // recommendations with no rule_id (policy-based / one-time), this is
+ // never touched again after generation — see `success`/`error` for the
+ // operator's terminal outcome instead. rule_id (MPA v2) rows may still
+ // have the operator's post-hoc status message appended.
+ optional string reasoning = 31;
repeated Toleration current_tolerations = 41;
- repeated Toleration recommended_tolerations = 42;
+ repeated Toleration recommended_tolerations = 42 [deprecated = true]; // superseded by toleration_mutations (per-element merge)
optional RecommendationStatus status = 51;
@@ -1968,6 +2501,20 @@ message WorkloadRecommendation {
optional string rule_id = 73;
+ // CurrentSource of the governing WorkloadRule (MPA v2), e.g. "auto_optimization",
+ // "policy", "manual". Only set when rule_id is populated. Mirrors WorkloadRule.current_source
+ // so the recommendations list can show/link the governing rule without a second RPC.
+ optional string rule_source = 104;
+
+ // The original spec.recommendation_id from the WorkloadRecommendation CRD. For MPA v2
+ // (rule-based) rows, recommendation_id (field 1, this message's row ID) is deliberately
+ // re-derived per apply cycle so each evaluation gets its own history row — but audit log
+ // entries and live-migration checkpoint/restore events are always stamped with this
+ // original, un-derived ID. Clients querying audit logs or C/R status/events for a
+ // recommendation MUST use this field, not recommendation_id, or the query returns nothing
+ // for MPA v2 rows. Equal to recommendation_id for legacy rows (which never derive it).
+ optional string source_recommendation_id = 105;
+
ActionToTake replica_count_action = 81; // suggests if operator should set recommended_replica_count
// Result of live migration when this recommendation was applied with use_live_migration (populated after apply).
@@ -1976,6 +2523,12 @@ message WorkloadRecommendation {
// Error message when status is failed or apply failed.
optional string error = 83;
+ // Operator's terminal status message for any non-failure outcome (applied,
+ // or superseded via image-changed/skip). Mirrors `error` for the
+ // non-failure side. Only populated for recommendations with no rule_id
+ // (policy-based and one-time recs) — see reasoning field note below.
+ optional string success = 106;
+
// Backend-computed cost impact (current vs recommended).
optional CostImpact cost_impact = 91;
@@ -1984,8 +2537,159 @@ message WorkloadRecommendation {
// without triggering rolling restarts (requires k8s >= v1.33).
bool use_in_place_vertical_scaling = 92;
+ // Whether the operator may lower a container's memory limit while applying
+ // this recommendation in place. Copied from the owning rule/policy at
+ // generation time so the operator's apply-time preflight can decide without
+ // re-reading the rule. Independent of, and additional to, the cluster
+ // version check.
+ bool allow_in_place_memory_limit_decrease = 109;
+
// Impact score (0-1) indicating optimization opportunity. Higher = more waste.
double impact_score = 93;
+
+ // Pod-scoped per-element nodeSelector mutations (merge key: key).
+ repeated NodeSelectorMutation node_selector_mutations = 101;
+
+ // Pod-scoped per-element toleration mutations. Supersedes the deprecated
+ // recommended_tolerations full-list field.
+ repeated TolerationMutation toleration_mutations = 102;
+
+ // Container image (keyed by container name) the recommendation was derived
+ // from — the "source" release. The operator compares this against a
+ // workload's live images to detect that a new release shipped and retire a
+ // recommendation whose tuned values (resources, JVM heap, …) were computed
+ // for the old image, so they are not pinned onto the new one (e.g. a stale
+ // -Xmx that could OOM the new build).
+ map source_images = 103;
+
+ // Force-restart directive when no resource fields changed but a restart
+ // was still requested (e.g. re-apply after an image change).
+ ActionToTake restart_action_to_take = 107;
+
+ // Structured reasoning payload (insights, per-container deltas, HPA
+ // context, decision trace). Only populated for mpav1 (policy_id set)
+ // recommendations generated after this field shipped; absent for mpav2,
+ // one-time, and historical rows — consumers fall back to `reasoning`.
+ optional ReasoningDetails reasoning_details = 108;
+}
+
+// ReasoningDetails is the structured form of a recommendation's `reasoning`
+// prose. schema_version tracks the payload shape (currently 1).
+message ReasoningDetails {
+ int32 schema_version = 1;
+ repeated ReasoningInsight insights = 2;
+ repeated ReasoningContainerChange container_changes = 3;
+ optional ReasoningReplicas replicas = 4;
+ repeated ReasoningDecision decisions = 5;
+ double confidence_score = 6;
+ double risk_score = 7;
+ double effective_deadband_percent = 8;
+}
+
+enum ReasoningInsightSeverity {
+ REASONING_INSIGHT_SEVERITY_UNSPECIFIED = 0;
+ REASONING_INSIGHT_SEVERITY_INFO = 1;
+ REASONING_INSIGHT_SEVERITY_LOW = 2;
+ REASONING_INSIGHT_SEVERITY_MEDIUM = 3;
+ REASONING_INSIGHT_SEVERITY_HIGH = 4;
+ REASONING_INSIGHT_SEVERITY_CRITICAL = 5;
+}
+
+enum ReasoningInsightType {
+ REASONING_INSIGHT_TYPE_UNSPECIFIED = 0;
+ REASONING_INSIGHT_TYPE_PATTERN = 1;
+ REASONING_INSIGHT_TYPE_ANOMALY = 2;
+ REASONING_INSIGHT_TYPE_TREND = 3;
+ REASONING_INSIGHT_TYPE_OPTIMIZATION = 4;
+ REASONING_INSIGHT_TYPE_RISK = 5;
+ REASONING_INSIGHT_TYPE_PROFILE = 6;
+}
+
+enum ReasoningDecisionKind {
+ REASONING_DECISION_KIND_UNSPECIFIED = 0;
+ REASONING_DECISION_KIND_CONSTRAINT_OVERRIDE = 1;
+ REASONING_DECISION_KIND_POLICY_CONFLICT = 2;
+ REASONING_DECISION_KIND_POLICY_FLOOR = 3;
+ REASONING_DECISION_KIND_POLICY_CEILING = 4;
+ REASONING_DECISION_KIND_PLATFORM_FLOOR = 5;
+ REASONING_DECISION_KIND_SAFETY_FLOOR = 6;
+ REASONING_DECISION_KIND_SUPPRESSION = 7;
+ REASONING_DECISION_KIND_FEATURE_DOWNGRADE = 8;
+ REASONING_DECISION_KIND_MODIFICATION = 9;
+ REASONING_DECISION_KIND_NORMALIZATION = 10;
+ REASONING_DECISION_KIND_POLICY_LIMIT_FLOOR = 11;
+ REASONING_DECISION_KIND_POLICY_LIMIT_CEILING = 12;
+}
+
+message ReasoningEvidence {
+ string type = 1;
+ string description = 2;
+ double confidence = 3;
+}
+
+message ReasoningInsight {
+ string id = 1;
+ ReasoningInsightType type = 2;
+ ReasoningInsightSeverity severity = 3;
+ double confidence = 4;
+ string title = 5;
+ string description = 6;
+ string impact = 7;
+ repeated ReasoningEvidence evidence = 8;
+}
+
+// Raw units: millicores for CPU, bytes for memory. Before = actuals at
+// generation time, after = final recommendation. Percent changes are for
+// the consumer to compute (avoids the legacy divide-by-zero Inf%).
+message ReasoningResourceEdge {
+ int64 request_before = 1;
+ int64 request_after = 2;
+ int64 limit_before = 3;
+ int64 limit_after = 4;
+}
+
+message ReasoningContainerChange {
+ string container = 1;
+ ReasoningResourceEdge cpu = 2;
+ ReasoningResourceEdge memory = 3;
+ ReasoningResourceEdge gpu = 4;
+ bool oom_triggered = 5;
+}
+
+message ReasoningUtilization {
+ double cpu_current = 1;
+ double cpu_target = 2;
+ double memory_current = 3;
+ double memory_target = 4;
+}
+
+message ReasoningHistoricalPattern {
+ string pattern = 1;
+ bool is_oscillating = 2;
+ double change_frequency = 3;
+}
+
+message ReasoningReplicas {
+ int32 current = 1;
+ int32 recommended = 2;
+ int32 min = 3;
+ int32 max = 4;
+ string reason = 5;
+ string primary_metric = 6;
+ ReasoningUtilization utilization = 7;
+ string workload_type = 8;
+ ReasoningHistoricalPattern historical_pattern = 9;
+}
+
+message ReasoningDecision {
+ ReasoningDecisionKind kind = 1;
+ string container = 2; // empty = workload-scoped
+ string resource = 3; // cpu | memory | gpu | ""
+ string field = 4; // request | limit | replicas | ""
+ optional int64 intended = 5;
+ optional int64 actual = 6;
+ string constraint = 7; // open-ended machine-readable cause token
+ string message = 8;
}
enum LiveMigDeletionPropagation {
@@ -2196,8 +2900,10 @@ message GenerateNodePoliciesFromNodeGroupsResponse {
// eligibility carries per-node-group "may this be migrated?" information
// computed from the current node observations. The wizard reads this to
// disable Step 3 rows for groups the operator must NOT migrate, with a
- // tooltip explaining why. Always parallel-keyed by group name (matches
- // NodePolicy.name). Empty when every group is migratable.
+ // tooltip explaining why. Keyed by group name (matches NodePolicy.name)
+ // and populated for every discovered group — including groups that are
+ // already managed by an existing node policy, which carry the
+ // "already_migrated" reason and have NO corresponding entry in policies.
repeated NodeGroupMigrationEligibility eligibility = 4;
}
@@ -2237,6 +2943,13 @@ message NodeGroupMigrationEligibility {
// "azure_sku_confidential" — source pool runs a Confidential Compute
// SKU (DC* / EC*). kp-azure's isConfidential
// predicate excludes these.
+ // "already_migrated" — the group is already managed by a live node
+ // policy with a live target scoped to this
+ // cluster. Unlike the other reasons, such
+ // groups are excluded from the policies list
+ // entirely (regenerating would create a
+ // duplicate policy); the entry exists so the
+ // UI can explain why the group is absent.
//
// Advisory reasons (migratable stays true; show as caveat):
// "azure_sku_nvme_under_cig" — source pool's SKU is NVMe-only
@@ -2250,6 +2963,10 @@ message NodeGroupMigrationEligibility {
// from the same family. Operator should know
// the launched nodes won't exactly match the
// source pool.
+ // "cast_ai_live_migration_pool" — the group hosts cast.ai
+ // live-migration components, which stop
+ // working once those components are disabled
+ // during this migration.
repeated string reasons = 3;
}
@@ -2279,6 +2996,23 @@ message GetNodeAnnotationReadinessResponse {
string aks_cluster_resource_group = 7;
}
+message DetectClusterAutoscalerRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message DetectClusterAutoscalerResponse {
+ // One of: karpenter | cluster_autoscaler | cast_ai | transitioning | unmanaged.
+ // Plain string (not an enum) so new families ship without a proto bump,
+ // matching node_scheduling_health.proto's autoscaler_type convention.
+ string autoscaler_type = 1;
+ // Per-family raw booleans so the wizard can pick the SOURCE autoscaler even
+ // while autoscaler_type reads transitioning (mid-migration both are live).
+ bool has_karpenter = 2;
+ bool has_cluster_autoscaler = 3;
+ bool has_cast_ai = 4;
+}
+
// Migration wizard state
message GetMigrationStateRequest {
string team_id = 1;
@@ -2307,6 +3041,94 @@ message UpdateMigrationStateResponse {
string id = 1;
}
+// Karpenter migration wizard
+message GetKarpenterMigrationStateRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message GetKarpenterMigrationStateResponse {
+ string id = 1;
+ string cluster_id = 2;
+ string status = 3;
+ int32 current_step = 4;
+ string state_json = 5;
+ google.protobuf.Timestamp created_at = 6;
+ google.protobuf.Timestamp updated_at = 7;
+}
+
+message UpdateKarpenterMigrationStateRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ string status = 3;
+ int32 current_step = 4;
+ string state_json = 5;
+}
+
+message UpdateKarpenterMigrationStateResponse {
+ string id = 1;
+}
+
+message KarpenterOwnershipConflict {
+ string id = 1;
+ string resource_kind = 2;
+ string resource_name = 3;
+ string owner_tool = 4;
+ google.protobuf.Timestamp detected_at = 5;
+ google.protobuf.Timestamp acknowledged_at = 6; // unset if not yet acknowledged
+ string acknowledged_by = 7;
+}
+
+message DetectKarpenterOwnershipConflictsRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message DetectKarpenterOwnershipConflictsResponse {
+ repeated KarpenterOwnershipConflict conflicts = 1; // includes previously-acknowledged ones so the UI can show history
+ bool already_dev_zero_managed = 2; // true if karpDeployment.IsDevZeroManaged() — short-circuit signal for Detect step
+}
+
+message AcknowledgeKarpenterOwnershipConflictRequest {
+ string team_id = 1;
+ string conflict_id = 2;
+ string acknowledged_by = 3;
+}
+
+message AcknowledgeKarpenterOwnershipConflictResponse {
+ string id = 1;
+}
+
+message KarpenterSourceResource {
+ string kind = 1; // "NodePool" | "EC2NodeClass" | "AKSNodeClass" | "GCENodeClass"
+ string name = 2;
+ string yaml = 3;
+}
+
+message GetKarpenterSourceResourcesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message GetKarpenterSourceResourcesResponse {
+ repeated KarpenterSourceResource resources = 1;
+}
+
+message NodePoolAdoptionStatus {
+ string node_pool_name = 1;
+ bool ready = 2;
+}
+
+message GetKarpenterAdoptionStatusRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ repeated string node_pool_names = 3;
+}
+
+message GetKarpenterAdoptionStatusResponse {
+ repeated NodePoolAdoptionStatus statuses = 1;
+}
+
// NodePool validation
message ReportNodePoolValidationRequest {
string cluster_id = 1;
@@ -2381,6 +3203,23 @@ enum NodeGroupCheckpointState {
NODE_GROUP_CHECKPOINT_STATE_ENABLED = 5;
}
+// CheckpointReason explains *why* a node group is stuck in CONFIGURED — surfaced
+// as a tooltip modifier line, never as a distinct chip. Multiple reasons can be
+// true at once; backend picks the most actionable one.
+enum CheckpointReason {
+ CHECKPOINT_REASON_UNSPECIFIED = 0;
+ // dakr-operator on this cluster predates per-node SSA fan-out. Existing
+ // nodes won't be labeled until the operator upgrades.
+ CHECKPOINT_REASON_OPERATOR_OUTDATED = 1;
+ // Label applied, but no node has reported criu_configured=true yet. Most
+ // likely the customer hasn't deployed (or hasn't finished deploying) the
+ // CRIU DaemonSet.
+ CHECKPOINT_REASON_DAEMONSET_NOT_DETECTED = 2;
+ // Some nodes joined recently (<5 min) and haven't been probed yet. State
+ // will resolve on the next operator tick.
+ CHECKPOINT_REASON_NEW_NODES_PROBING = 3;
+}
+
message NodeGroupCheckpointStatus {
NodeGroupCheckpointState state = 1;
// Associated node policy (empty when NOT_DZ_MANAGED).
@@ -2390,6 +3229,9 @@ message NodeGroupCheckpointStatus {
// to / clusters it targets — toggling the label affects all of them.
repeated string shared_node_pool_names = 4;
repeated string shared_cluster_ids = 5;
+ // Why this NG is in CONFIGURED (vs ENABLED). UNSPECIFIED for non-CONFIGURED
+ // states.
+ CheckpointReason reason = 6;
}
message GetNodeGroupsCheckpointStatusRequest {
@@ -2437,6 +3279,7 @@ message NodePolicy {
LabelSelector instance_hypervisors = 13; // self explanatory
LabelSelector instance_generations = 14; // self explanatory; UI: Generation; e.g., 4 (Azure), 5 (AWS)
LabelSelector instance_sizes = 15; // UI: Size; eg: Standard_D4s (Azure), large (AWS)
+ LabelSelector instance_shapes = 116; // GCP-only: standard/highcpu/highmem shape token
LabelSelector instance_types = 16; // UI: Type; eg: Standard_D4s_v2 (Azure), m4.2xlarge (AWS)
// AWS only — karpenter.k8s.aws/instance-local-nvme. Ephemeral NVMe GiB per
// node. Karpenter-provider-gcp/-azure/-oci have no equivalent label; this
@@ -2449,6 +3292,7 @@ message NodePolicy {
optional string instance_hypervisors_tip = 29;
optional string instance_generations_tip = 30;
optional string instance_sizes_tip = 31;
+ optional string instance_shapes_tip = 117;
optional string instance_local_nvme_tip = 114;
LabelSelector zones = 36; // abstract, per-cloud mapping
@@ -2498,6 +3342,22 @@ message NodePolicy {
google.protobuf.Timestamp created_at = 110;
google.protobuf.Timestamp updated_at = 111;
google.protobuf.Timestamp deleted_at = 112;
+
+ // "dakr" (user-authored, pushed to cluster) or "cluster" (read-only,
+ // computed from Karpenter CRDs NOT labeled devzero.io/managed-by=dakr — i.e.
+ // anything dakr does not own; see repositories.scopeNotDakrManaged).
+ string source = 115;
+ // For source == "cluster" only: the cluster whose Karpenter NodePool this
+ // policy mirrors. A cluster-managed policy belongs to exactly one cluster and
+ // has no NodePolicyTargets, so this is the frontend's only way to scope it
+ // (e.g. for suggestions). Empty for dakr-authored policies.
+ string source_cluster_id = 118;
+ // For source == "cluster" only: NodePool requirement keys on the mirrored CRD
+ // that this message has no field for (Azure/GCP SKU keys, custom label
+ // requirements). Computed per request like source and source_cluster_id, never
+ // stored, and empty for dakr-authored policies — which are authoritative by
+ // construction, since dakr compiled the NodePool from them.
+ repeated string unrepresented_requirement_keys = 119;
}
message PreviewNodeRecommendationConfigRequest {
@@ -2538,6 +3398,248 @@ message SuggestedKarpenterConfigResponse {
map ng_to_suggested = 11;
}
+message SuggestNodePolicyImprovementsRequest {
+ string team_id = 1;
+ // Required. Suggestions are computed per (policy, cluster) pair: the evidence is the
+ // cluster's live NodePools/nodes/workloads attributed to this policy.
+ string cluster_id = 2;
+ // Stored policy to evaluate. Takes precedence over `policy`, mirroring
+ // PreviewNodeRecommendationConfigRequest.
+ string policy_id = 3;
+ // Inline draft to evaluate when `policy_id` is empty. Always computed live, never
+ // persisted.
+ NodePolicy policy = 4;
+ // Evidence lookback window. Defaults to PROFILE_WINDOW_7D when unspecified.
+ ProfileWindow window = 5;
+}
+
+message SuggestNodePolicyImprovementsResponse {
+ NodePolicy original = 1;
+ // Deep copy of `original` with every suggestion applied — the "accept all" payload.
+ NodePolicy suggested = 2;
+ repeated NodePolicySuggestion suggestions = 3;
+ SuggestionContext context = 4;
+ google.protobuf.Timestamp computed_at = 5;
+ // False when the response was computed synchronously for this request rather than
+ // served from a precomputed row.
+ bool from_cache = 6;
+ // True when the served row predates the policy's current revision (or an engine
+ // rule-set change). A background refresh has been enqueued; clients should surface
+ // the computed_at staleness and may refetch shortly. Large clusters serve stale
+ // rather than recomputing in the request path.
+ bool stale = 7;
+}
+
+message ListClusterNodePolicySuggestionsRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ // Evidence lookback window. Defaults to PROFILE_WINDOW_7D when unspecified.
+ ProfileWindow window = 3;
+}
+
+message ListClusterNodePolicySuggestionsResponse {
+ repeated NodePolicySuggestionsForPolicy policies = 1;
+ // The oldest computed_at among the included policies — the bound a caller can trust
+ // the whole response by, even though each policy's own row has its own computed_at.
+ google.protobuf.Timestamp computed_at = 2;
+ // True when at least one policy has no row yet, or a row stale enough to recompute.
+ // A background refresh of the whole cluster has been enqueued; clients should
+ // surface staleness and may refetch shortly, the same contract as
+ // SuggestNodePolicyImprovementsResponse.stale.
+ bool stale = 3;
+}
+
+// NodePolicySuggestionsForPolicy is one policy's entry in a cluster-wide suggestions
+// list: everything ListClusterNodePolicySuggestions can say about a single policy
+// without the original/suggested NodePolicy payload SuggestNodePolicyImprovements
+// carries — that RPC is still where accepting a suggestion happens.
+message NodePolicySuggestionsForPolicy {
+ string policy_id = 1;
+ string policy_name = 2;
+ // "dakr" or "cluster", mirroring NodePolicy.source — cluster-managed mirrors get
+ // suggestions surfaced here the same as dakr-authored policies, visualization-only:
+ // accepting one still routes to that mirror's own Karpenter manifest, not this RPC.
+ string policy_source = 3;
+ repeated NodePolicySuggestion suggestions = 4;
+ SuggestionContext context = 5;
+ google.protobuf.Timestamp computed_at = 6;
+ // True when this policy's own row is missing, predates its current revision, or
+ // predates an engine rule-set change — same definition as
+ // SuggestNodePolicyImprovementsResponse.stale, just scoped to this one policy.
+ bool stale = 7;
+}
+
+// SuggestionGroup is the policy component a suggestion belongs to. The UI groups cards
+// by this axis.
+enum SuggestionGroup {
+ SUGGESTION_GROUP_UNSPECIFIED = 0;
+ SUGGESTION_GROUP_DISRUPTION = 1;
+ SUGGESTION_GROUP_REQUIREMENTS = 2;
+ SUGGESTION_GROUP_CAPACITY_TYPE = 3;
+ SUGGESTION_GROUP_ZONES = 4;
+ SUGGESTION_GROUP_LIMITS = 5;
+ SUGGESTION_GROUP_NODECLASS = 6;
+ SUGGESTION_GROUP_COMPATIBILITY = 7;
+ // SUGGESTION_GROUP_COVERAGE is the one group whose suggestions do not mutate this
+ // NodePolicy at all: field_path, current_value_yaml and suggested_value_yaml are all
+ // empty, and the suggestion never resolves to an Apply(). It surfaces workloads
+ // attributed to this pool that have no legacy (mpav1) WorkloadRecommendationPolicy
+ // coverage, which is a gap in DevZero's separate workload-optimization product, not a
+ // NodePolicy misconfiguration.
+ SUGGESTION_GROUP_COVERAGE = 8;
+}
+
+// SuggestionFlavor is the benefit a suggestion delivers. The UI renders this as a chip
+// alongside severity.
+enum SuggestionFlavor {
+ SUGGESTION_FLAVOR_UNSPECIFIED = 0;
+ SUGGESTION_FLAVOR_COST = 1;
+ SUGGESTION_FLAVOR_RELIABILITY = 2;
+ SUGGESTION_FLAVOR_PERFORMANCE = 3;
+ SUGGESTION_FLAVOR_SECURITY = 4;
+ SUGGESTION_FLAVOR_BEST_PRACTICE = 5;
+ SUGGESTION_FLAVOR_COMPATIBILITY = 6;
+}
+
+enum SuggestionSeverity {
+ SUGGESTION_SEVERITY_UNSPECIFIED = 0;
+ SUGGESTION_SEVERITY_INFO = 1;
+ SUGGESTION_SEVERITY_RECOMMENDED = 2;
+ SUGGESTION_SEVERITY_STRONG = 3;
+}
+
+// EvidenceScope records what population an evidence item was measured against. POOL means
+// the nodes attributed to this policy's live NodePools; CLUSTER is the cold-start
+// fallback for policies with no live nodes yet.
+enum EvidenceScope {
+ EVIDENCE_SCOPE_UNSPECIFIED = 0;
+ EVIDENCE_SCOPE_POOL = 1;
+ EVIDENCE_SCOPE_CLUSTER = 2;
+}
+
+message NodePolicySuggestion {
+ // Stable rule identifier, e.g. "disruption.consolidation_policy". Stable across
+ // engine versions so the frontend can special-case rendering per rule.
+ string rule_id = 1;
+ SuggestionGroup group = 2;
+ SuggestionFlavor flavor = 3;
+ SuggestionSeverity severity = 4;
+ // NodePolicy field the suggestion mutates, as a proto field path relative to
+ // NodePolicy, e.g. "disruption.consolidate_after", "capacity_types" or "limits.cpu".
+ // This names the FIRST (or only) field the suggestion changes; additional_field_changes
+ // below carries the rest for the rare suggestion that changes more than one. Two
+ // guarantees the per-card accept in the UI depends on, over the union of this path and
+ // every additional_field_changes[].field_path. First, the paths name exactly what this
+ // suggestion changes and nothing more: taking `original` and copying only these paths'
+ // values out of `suggested` yields the same policy as applying this one suggestion, so a
+ // card can be accepted on its own. Second, at most one suggestion per response claims a
+ // given path, and no claimed path is an ancestor of another — "limits" and "limits.cpu"
+ // never both appear — so accepting one card can never carry a neighbouring card's change
+ // with it. A rule with a finding on fields that do not belong together emits separate
+ // suggestions instead of naming their parent.
+ //
+ // Empty for a SUGGESTION_GROUP_COVERAGE suggestion, the one deliberate exception: it names
+ // no field because it does not mutate this NodePolicy at all. current_value_yaml and
+ // suggested_value_yaml are empty for the same reason.
+ string field_path = 5;
+ string title = 6;
+ // Detailed explanation of why this change is being suggested, written against the
+ // cited evidence. Rendered as the card body.
+ string rationale = 7;
+ // Display-ready YAML renderings of the field's current and suggested values, for
+ // field_path above.
+ string current_value_yaml = 8;
+ string suggested_value_yaml = 9;
+ repeated SuggestionEvidence evidence = 10;
+ // A directly attributable, non-overlapping monthly saving: a price delta (spot vs
+ // on-demand, gp2 vs gp3, a cheaper eligible candidate) applied to a known quantity. Safe
+ // to sum across every suggestion in a response, including others on the same policy,
+ // because each rule that sets this draws from its own independent price comparison —
+ // never from a shared, policy-wide figure two rules could both cite.
+ optional double estimated_monthly_savings_usd = 11;
+ // Additional NodePolicy fields this suggestion mutates together with field_path, when
+ // loosening several selector fields as one combination fits the population better than
+ // loosening any single one. Empty for almost every suggestion; see field_path's comment
+ // for the guarantees that apply across the whole set.
+ repeated SuggestionFieldChange additional_field_changes = 12;
+ // The most this suggestion could save if fully realized, for a rule whose saving is real
+ // but not directly attributable to this one change: reclaiming a pool's idle capacity
+ // (disruption.consolidation_policy, disruption.consolidate_after, disruption.budgets,
+ // requirements.size_mismatch) all draw the same ceiling from that pool's own idle spend,
+ // since each only widens Karpenter's ability to reclaim it rather than guaranteeing it
+ // does. Unlike estimated_monthly_savings_usd, this is NOT safe to sum across a policy:
+ // when more than one suggestion on the same policy sets it, the true ceiling is the
+ // maximum across them, not their total, because they are bounds on the same underlying
+ // capacity rather than independent savings. A rule never sets both this and
+ // estimated_monthly_savings_usd on the same suggestion.
+ optional double upper_bound_monthly_savings_usd = 13;
+}
+
+// SuggestionFieldChange is one additional NodePolicy field a suggestion mutates, beyond
+// field_path/current_value_yaml/suggested_value_yaml on NodePolicySuggestion, which always
+// name the first (or only) one. Almost every suggestion touches exactly one field and
+// leaves NodePolicySuggestion.additional_field_changes empty; only a combination-search
+// suggestion (currently just requirements.overpinned) populates it.
+message SuggestionFieldChange {
+ string field_path = 1;
+ string current_value_yaml = 2;
+ string suggested_value_yaml = 3;
+}
+
+// SuggestionEvidence is one observed data point cited by a suggestion, e.g.
+// label="p95 CPU utilization (7d)", value="22%", detail="across 14 nodes managed by
+// nodepool workers-a".
+message SuggestionEvidence {
+ string label = 1;
+ string value = 2;
+ string detail = 3;
+ EvidenceScope scope = 4;
+ // The workloads this citation names, in the order they appear in `detail` and in
+ // the rationale. Carries the identity behind the "namespace/name" text so the UI
+ // can open each one's drawer, which needs the uid and kind that the display
+ // string drops. Empty for citations about nodes or pricing rather than
+ // workloads, and for a workload whose metadata read missed it (the display
+ // string falls back to a bare uid there, and the drawer needs the kind too).
+ repeated SuggestionWorkloadRef workloads = 5;
+}
+
+// SuggestionWorkloadRef identifies one workload named by a suggestion well enough
+// to open its drawer: the panel takes uid, kind and the cluster the suggestion was
+// computed for.
+message SuggestionWorkloadRef {
+ string uid = 1;
+ // Kubernetes kind as written on the owner ("Deployment", "StatefulSet"), not the
+ // K8sObjectKind enum: this is passed straight to GetWorkload, which matches on
+ // the string.
+ string kind = 2;
+ string namespace = 3;
+ string name = 4;
+ // Exactly the text this workload appears as in `detail` and in the rationale, so
+ // the UI links the same token the sentence was written with instead of
+ // reassembling one and hoping it matches.
+ string display = 5;
+}
+
+// SuggestionContext describes the evidence population a suggestion run was computed
+// against, so the UI can qualify the results ("based on 14 nodes across 2 nodepools,
+// last 7d, 23 workload profiles").
+message SuggestionContext {
+ ProfileWindow window = 1;
+ // Live NodePool names attributed to the policy via the dakr.devzero.io/node-policy-id
+ // annotation. Empty on cold-start.
+ repeated string matched_node_pools = 2;
+ int32 node_count = 3;
+ EvidenceScope evidence_scope = 4;
+ // Number of fresh workload profile snapshots that informed the run.
+ int32 workload_profile_count = 5;
+ // For cluster-managed policies only: NodePool requirement keys present on the
+ // customer's CRD that this policy view cannot represent (Azure/GCP SKU keys,
+ // custom label requirements). Non-empty means both the suggestions and the
+ // compiled preview describe a partial picture of the real NodePool, and the
+ // UI should say so. Always empty for dakr-authored policies.
+ repeated string unrepresented_requirement_keys = 6;
+}
+
message GetAvailableKindsByTargetingFiltersRequest {
string team_id = 1;
repeated string cluster_ids = 2;
@@ -2752,6 +3854,14 @@ message GetInstanceSizesResponse {
repeated InstanceSize instance_sizes = 1;
}
+message GetInstanceShapesRequest {
+ repeated string cloud_providers = 1; // Cloud provider names (e.g., "aws", "azure", "gcp")
+}
+
+message GetInstanceShapesResponse {
+ repeated InstanceShape instance_shapes = 1;
+}
+
// -- Submessages --
message InstanceFamily {
@@ -2759,6 +3869,11 @@ message InstanceFamily {
string provider_name = 2;
}
+message InstanceShape {
+ string name = 1;
+ string provider_name = 2;
+}
+
message InstanceSize {
string name = 1;
string provider_name = 2;
@@ -2906,6 +4021,7 @@ message AzureNodeClassSpec {
map tags = 5;
optional AzureKubeletConfiguration kubelet = 6;
optional int32 max_pods = 7;
+ optional string image_version = 8;
}
message AzureKubeletConfiguration {
@@ -2983,6 +4099,89 @@ message RawKarpenterSpec {
string nodeclass_yaml = 2;
}
+// SnapshotRecommendation delivers one rendered resilience-family config
+// (spec §7): the multi-doc criu.org/v1 apply bundle compiled by the render
+// worker — anchor ConfigMap first, then CheckpointSchedule /
+// CheckpointRestoreOperator CRs sorted by name. tunr applies it verbatim
+// under the dz-snapshot-crds prune stream; the config ID is echoed back in
+// the apply ACK.
+message SnapshotRecommendation {
+ bytes compiled_resources_yaml = 1;
+ string snapshot_cfg_id = 2;
+ string content_hash = 3;
+}
+
+// ForensicSnapshotRecommendation is the forensic-family twin
+// (ForensicSnapshotChain CRs, dz-forensic-crds prune stream). Kept separate
+// from SnapshotRecommendation so neither family's apply can ever prune the
+// other's resources (spec §7).
+message ForensicSnapshotRecommendation {
+ bytes compiled_resources_yaml = 1;
+ string forensic_cfg_id = 2;
+ string content_hash = 3;
+}
+
+// SnapshotCRStatusReport carries the current statuses of every dakr-managed
+// criu.org CR on the cluster (tunr-side reporter, spec §8).
+message SnapshotCRStatusReport {
+ repeated SnapshotCRStatus resources = 1;
+}
+
+// SnapshotCRStatus is one CR's identity + raw status subtree. Annotations
+// carry the dakr.devzero.io policy/target ID keys the compiler stamped;
+// status_json is the CR's .status marshaled verbatim (dakr parses).
+message SnapshotCRStatus {
+ string kind = 1;
+ string name = 2;
+ string namespace = 3;
+ string uid = 4;
+ map annotations = 5;
+ bytes status_json = 6;
+}
+
+// SnapshotCRRuntimeStatus is one CR's ingested runtime state, projected for
+// reads. One shape serves both families; family-irrelevant fields are unset.
+message SnapshotCRRuntimeStatus {
+ string cluster_id = 1;
+ string kind = 2;
+ string name = 3;
+ string namespace = 4;
+ // ForensicSnapshotChain only: Pending/Running/Completed/Failed.
+ string phase = 11;
+ int32 snapshot_count = 12;
+ int32 attempt_count = 13;
+ int32 failure_count = 14;
+ // CheckpointSchedule only. INTERVAL-TRIGGER-ONLY counter: checkpoints
+ // fired by annotation/threshold/event triggers never bump it — label
+ // this "interval activity", or trigger-only schedules read as dead.
+ int32 checkpoints_created = 21;
+ string error_message = 31;
+ // lastCheckpointTime (schedules) / lastSnapshotTime (chains).
+ google.protobuf.Timestamp last_activity_time = 41;
+ google.protobuf.Timestamp start_time = 42;
+ google.protobuf.Timestamp completion_time = 43;
+ // When dakr last ingested this CR's status.
+ google.protobuf.Timestamp observed_at = 44;
+}
+
+// SnapshotPolicyTargetStatus aggregates a target's ingested CR statuses
+// (capped; ordered namespace, name).
+message SnapshotPolicyTargetStatus {
+ repeated SnapshotCRRuntimeStatus resources = 1;
+}
+
+// SnapshotPrereqs surfaces cluster prerequisites derivable from already-
+// ingested state (spec §7). CRIU-on-nodes and container-runtime checkpoint
+// support need node-level probing no collector performs yet — deferred; a
+// cluster can pass these checks and still fail applies for those reasons
+// (surfaced through apply events).
+message SnapshotPrereqs {
+ string kubernetes_version = 1;
+ // Kubernetes >= 1.30 (ContainerCheckpoint enabled by default).
+ bool kubernetes_version_supported = 2;
+ bool metrics_server_present = 3;
+}
+
message NodeRecommendation {
AWSKarpenterSpec aws = 1;
AKSKarpenterSpec aks = 2;
@@ -3078,6 +4277,10 @@ enum RecommendationType {
RECOMMENDATION_TYPE_PVC_STORAGE = 5;
RECOMMENDATION_TYPE_WORKLOAD_RULE = 6;
RECOMMENDATION_TYPE_KARPENTER_SETTINGS = 7;
+ RECOMMENDATION_TYPE_SNAPSHOT_CRD = 8;
+ RECOMMENDATION_TYPE_FORENSIC_SNAPSHOT_CRD = 9;
+ RECOMMENDATION_TYPE_HPA_CONNECTOR = 10;
+ RECOMMENDATION_TYPE_SCHEDULER_POLICY = 11;
}
enum HPAMetricType {
@@ -3436,14 +4639,22 @@ message ListWorkloadCPUThrottleEventsResponse {
// MPA V3: Workload Optimization Policy messages
// ============================================================================
+// StringSetSelector is an include/exclude selector for a set of string values.
+// If In is non-empty, the value must match one entry. NotIn entries are always
+// excluded. Both empty = match all.
+message StringSetSelector {
+ repeated string in = 1;
+ repeated string not_in = 2;
+}
+
message WorkloadOptimizationPolicyProto {
string id = 1;
string team_id = 2;
string name = 3;
optional string description = 4;
- bool enabled = 5;
+ bool disabled = 5;
repeated string cluster_ids = 6;
- repeated string namespace_selector = 7;
+ optional StringSetSelector namespace_selector = 7;
google.protobuf.Timestamp created_at = 8;
google.protobuf.Timestamp updated_at = 9;
map cluster_names = 10; // cluster_id → display name
@@ -3459,19 +4670,63 @@ message WorkloadOptimizationPolicyProto {
optional string defragmentation_schedule = 16;
bool live_migration_enabled = 17;
bool use_in_place_vertical_scaling = 18;
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ bool allow_in_place_memory_limit_decrease = 32;
// HPA: when true, WorkloadRules generated from this policy have HPA
// enabled. Two-way bound to HPARuleConfig.Enabled on the WorkloadRule CRD.
bool hpa_enabled = 19;
+
+ // Targeting selectors (MPA v2 extended targeting)
+ optional StringSetSelector kind_selector = 20;
+ optional LabelSelector label_selector = 21;
+ optional RegexPattern name_pattern = 22;
+ optional RegexPattern namespace_pattern = 23;
+
+ // How far back to analyze CPU/memory/GPU usage when generating rules from
+ // this policy. Unset = 7 days. Clamped to the team's tier cap on write.
+ optional int32 lookback_period_seconds = 24;
+ // Generic (workload-level, no-per-container) optimization settings this
+ // policy applies to every rule it generates — the same shape a manual
+ // rule's ManualRuleFields carries. Unset sub-fields mean "not configured
+ // for this axis"; the engine computes it as if this policy had no
+ // constraint at all.
+ ResourceRuleConfig cpu_rule = 25;
+ ResourceRuleConfig memory_rule = 26;
+ ResourceRuleConfig gpu_rule = 27;
+ HPARuleConfig hpa_rule = 28;
+ JVMHeapRuleConfig jvm_heap_rule = 29;
+ optional int64 jvm_cpu_startup_floor_millicores = 30;
+ EmergencyResponseConfig emergency_response = 31;
+}
+
+// GenericOptimizationSettings bundles the optional, workload-level (no
+// per-container) resource/HPA/JVM/emergency settings a
+// WorkloadOptimizationPolicy can apply to every rule it generates. Mirrors
+// ManualRuleFields but omits fields that only make sense for a single
+// concrete rule (containers, disabled, startup_period_seconds). Sent as a
+// single optional block on create/update: omitted entirely means "leave
+// every one of these columns unset/unchanged"; present means apply whichever
+// sub-fields are themselves set, exactly like ManualRuleFields already does
+// for a manual rule.
+message GenericOptimizationSettings {
+ ResourceRuleConfig cpu_rule = 1;
+ ResourceRuleConfig memory_rule = 2;
+ ResourceRuleConfig gpu_rule = 3;
+ HPARuleConfig hpa_rule = 4;
+ JVMHeapRuleConfig jvm_heap_rule = 5;
+ optional int64 jvm_cpu_startup_floor_millicores = 6;
+ EmergencyResponseConfig emergency_response = 7;
}
message CreateWorkloadOptimizationPolicyRequest {
string team_id = 1;
string name = 2;
optional string description = 3;
- bool enabled = 4;
+ bool disabled = 4;
repeated string cluster_ids = 5;
- repeated string namespace_selector = 6;
+ optional StringSetSelector namespace_selector = 6;
// Scheduling & Triggers
repeated ActionTrigger action_triggers = 7;
@@ -3484,8 +4739,25 @@ message CreateWorkloadOptimizationPolicyRequest {
optional string defragmentation_schedule = 12;
bool live_migration_enabled = 13;
bool use_in_place_vertical_scaling = 14;
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ bool allow_in_place_memory_limit_decrease = 31;
bool hpa_enabled = 15;
+
+ // Targeting selectors (MPA v2 extended targeting)
+ optional StringSetSelector kind_selector = 16;
+ optional LabelSelector label_selector = 17;
+ optional RegexPattern name_pattern = 18;
+ optional RegexPattern namespace_pattern = 19;
+
+ // Metrics lookback window in seconds. Unset = 7 days.
+ optional int32 lookback_period_seconds = 20;
+ // Optional. Omitted entirely (the field's zero-value nil pointer) means
+ // every new resource/HPA/JVM/emergency column is left at NULL — the
+ // policy relies purely on engine auto-computation. When present, only
+ // the sub-fields actually populated within it are written.
+ GenericOptimizationSettings settings = 30;
}
message CreateWorkloadOptimizationPolicyResponse {
@@ -3514,14 +4786,35 @@ message GetWorkloadOptimizationPolicyResponse {
WorkloadOptimizationPolicyProto policy = 1;
}
+// GetWorkloadOptimizationPolicyByWorkload looks up the optimization policy
+// attached to a workload's rule in a single hop. Returns found = false when
+// no rule exists for those coordinates or the rule has no policy attached.
+message GetWorkloadOptimizationPolicyByWorkloadRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ string namespace = 3;
+ string kind = 4;
+ string workload_name = 5;
+}
+
+message GetWorkloadOptimizationPolicyByWorkloadResponse {
+ WorkloadOptimizationPolicyProto policy = 1;
+}
+
message UpdateWorkloadOptimizationPolicyRequest {
+ // 5 was "disabled", 21 was "rule_action" — disable transitions for an
+ // existing policy now go exclusively through
+ // ToggleWorkloadOptimizationPolicyDisabled, never through this general
+ // update. Reserved so the numbers can't be silently reused with different
+ // semantics.
+ reserved 5, 21;
+
string team_id = 1;
string policy_id = 2;
optional string name = 3;
optional string description = 4;
- optional bool enabled = 5;
repeated string cluster_ids = 6;
- repeated string namespace_selector = 7;
+ optional StringSetSelector namespace_selector = 7;
// Scheduling & Triggers
repeated ActionTrigger action_triggers = 8;
@@ -3534,54 +4827,428 @@ message UpdateWorkloadOptimizationPolicyRequest {
optional string defragmentation_schedule = 13;
optional bool live_migration_enabled = 14;
optional bool use_in_place_vertical_scaling = 15;
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ optional bool allow_in_place_memory_limit_decrease = 31;
optional bool hpa_enabled = 16;
+
+ // Targeting selectors (MPA v2 extended targeting)
+ optional StringSetSelector kind_selector = 17;
+ optional LabelSelector label_selector = 18;
+ optional RegexPattern name_pattern = 19;
+ optional RegexPattern namespace_pattern = 20;
+
+ // Metrics lookback window in seconds. Omitting it leaves the stored window
+ // alone rather than resetting it. A change reaches the policy's rules on
+ // their next generation pass.
+ optional int32 lookback_period_seconds = 22;
+ // Optional. Omitted entirely means leave every existing
+ // resource/HPA/JVM/emergency setting on this policy untouched — the same
+ // "only update when the client explicitly sends a value" convention
+ // already used above for cron_schedule/cooldown_minutes/etc. When
+ // present, each sub-field within it (cpu_rule, hpa_rule, ...) is applied
+ // independently: a sub-field left unset inside a present `settings`
+ // block leaves that axis's current value untouched too, exactly
+ // mirroring how ManualRuleFields already behaves for a manual rule edit.
+ GenericOptimizationSettings settings = 30;
+}
+
+// ToggleWorkloadOptimizationPolicyDisabled is the sole way to change an
+// existing policy's disabled state (creation sets the initial value directly
+// via CreateWorkloadOptimizationPolicyRequest.disabled). Splitting this out
+// from the general update keeps the branchy "what happens to a policy's
+// existing rules when it goes disabled" logic in one place, not entangled
+// with unrelated field updates.
+message ToggleWorkloadOptimizationPolicyDisabledRequest {
+ string team_id = 1;
+ string policy_id = 2;
+ bool disabled = 3;
+ // Only consulted when transitioning enabled -> disabled. Unspecified
+ // defaults to KEEP (detach) — never a silent hard delete. Ignored when
+ // enabling, or when the policy is already in the requested state.
+ optional WorkloadRuleAction rule_action = 4;
+}
+
+message ToggleWorkloadOptimizationPolicyDisabledResponse {
+ WorkloadOptimizationPolicyProto policy = 1;
}
message UpdateWorkloadOptimizationPolicyResponse {
WorkloadOptimizationPolicyProto policy = 1;
}
+// WorkloadRuleAction is what should happen to a policy's already-generated
+// rules when the policy is disabled. Modeled as an enum (not a bool) because
+// KEEP/REMOVE won't stay the only two options.
+enum WorkloadRuleAction {
+ WORKLOAD_RULE_ACTION_UNSPECIFIED = 0;
+ // Detach: rules survive and keep optimizing, but revert to
+ // auto_optimization ownership instead of being regenerated by this policy.
+ WORKLOAD_RULE_ACTION_KEEP = 1;
+ // Delete the rules and their in-cluster CRDs; workloads are no longer
+ // optimized by them.
+ WORKLOAD_RULE_ACTION_REMOVE = 2;
+ // Detach AND disable: same detach semantics as KEEP, but the rules become
+ // full no-ops (disabled=true) until manually re-enabled. Re-enabling this
+ // policy does NOT automatically re-enable them.
+ WORKLOAD_RULE_ACTION_DISABLE = 3;
+}
+
message DeleteWorkloadOptimizationPolicyRequest {
+ // 3 was "delete_rules" (bool) — replaced by the same 3-way rule_action
+ // used by ToggleWorkloadOptimizationPolicyDisabled, so deleting a policy
+ // supports KEEP/DISABLE/REMOVE for its rules, not just keep-or-remove.
+ reserved 3;
+
string team_id = 1;
string policy_id = 2;
- bool delete_rules = 3; // if true, delete associated rules; if false, detach (set policy_id=null)
+ // Controls what happens to the policy's already-generated rules.
+ // Unspecified/omitted defaults to KEEP (detach) — never a silent hard
+ // delete.
+ optional WorkloadRuleAction rule_action = 4;
}
message DeleteWorkloadOptimizationPolicyResponse {}
+// PreviewWorkloadOptimizationPolicyMatches: dry-run targeting preview. Mirrors
+// CreateWorkloadOptimizationPolicyRequest's targeting fields exactly (plus
+// optional policy_id) — deliberately excludes operational fields (triggers,
+// scheduling, HPA/scaling flags) since those don't affect which workloads
+// match, only what happens once a rule is generated for them.
+message PreviewWorkloadOptimizationPolicyMatchesRequest {
+ string team_id = 1;
+ // Optional. Set in edit mode so matches already owned by this policy can
+ // be distinguished from matches owned by a different policy. Omit in
+ // create mode, where there is no "this policy" yet.
+ optional string policy_id = 2;
+ repeated string cluster_ids = 3;
+ optional StringSetSelector namespace_selector = 4;
+ optional StringSetSelector kind_selector = 5;
+ optional LabelSelector label_selector = 6;
+ optional RegexPattern name_pattern = 7;
+ optional RegexPattern namespace_pattern = 8;
+}
+
+enum WorkloadOptimizationPolicyMatchStatus {
+ WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_UNSPECIFIED = 0;
+ // No workload_rule exists yet for this workload — saving the policy as
+ // configured would create one.
+ WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_NEW_RULE = 1;
+ // A rule already exists and is owned by this policy (edit mode only) —
+ // saving would leave it as-is (recalibration happens on its own cadence).
+ WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_ALREADY_OWNED_BY_THIS_POLICY = 2;
+ // Matched the selector, but a manually-managed rule already exists —
+ // this policy will never touch it.
+ WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_MANUAL = 3;
+ // Matched the selector, but a CRD-managed (kubectl-applied) rule already
+ // exists — this policy will never touch it.
+ WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_CRD = 4;
+ // Matched the selector, but a different policy already owns the rule —
+ // this policy will not steal it. See owning_policy_id/owning_policy_name.
+ WORKLOAD_OPTIMIZATION_POLICY_MATCH_STATUS_SKIPPED_OWNED_BY_OTHER_POLICY = 5;
+}
+
+message WorkloadOptimizationPolicyMatch {
+ string cluster_id = 1;
+ string namespace = 2;
+ string kind = 3;
+ string name = 4;
+ string uid = 5;
+ WorkloadOptimizationPolicyMatchStatus status = 6;
+ // Populated only when status = SKIPPED_OWNED_BY_OTHER_POLICY.
+ optional string owning_policy_id = 7;
+ optional string owning_policy_name = 8;
+}
+
+message PreviewWorkloadOptimizationPolicyMatchesResponse {
+ // Capped (see total_matched vs. total_returned below) — ordered by
+ // cluster, namespace, kind, name.
+ repeated WorkloadOptimizationPolicyMatch matched_workloads = 1;
+ // Total workloads that matched the selector across all requested
+ // clusters, before the cap was applied.
+ int32 total_matched = 2;
+ // How many of total_matched are actually included in matched_workloads.
+ // total_returned < total_matched means the result was capped — narrow the
+ // targeting to see the rest.
+ int32 total_returned = 3;
+}
+
// ============================================================================
-// MPA V3: Workload Rule listing messages
+// Scheduler Policies: CRUD, preview, and stream sync messages
// ============================================================================
-message GetWorkloadRulesByPolicyRequest {
- string team_id = 1;
- string policy_id = 2;
+message SchedulerPolicyTargetProto {
+ string id = 1; // empty on create; set on update to preserve identity
+ repeated string cluster_ids = 2; // empty = all team clusters
+ StringSetSelector namespace_selector = 3;
+ StringSetSelector kind_selector = 4;
+ LabelSelector label_selector = 5;
+ RegexPattern name_pattern = 6;
+ RegexPattern namespace_pattern = 7;
}
-message GetWorkloadRulesByPolicyResponse {
- repeated WorkloadRule managed_rules = 1;
- repeated WorkloadRule excluded_rules = 2;
- map cluster_names = 3;
+message SchedulerPolicyProto {
+ string id = 1;
+ string team_id = 2;
+ string name = 3;
+ optional string description = 4;
+ bool disabled = 5;
+ string scheduler_name = 6;
+ bool override_custom_scheduler = 7;
+ repeated SchedulerPolicyTargetProto targets = 8;
+ google.protobuf.Timestamp created_at = 9;
+ google.protobuf.Timestamp updated_at = 10;
+ // set while a delete waits for revert acks (spec 4.5)
+ optional google.protobuf.Timestamp delete_requested_at = 11;
+ // live enrollment count, filled by List (not persisted)
+ int32 enrolled_workloads = 12;
+ map cluster_names = 13; // cluster_id -> display name, union of target clusters
+}
+
+message CreateSchedulerPolicyRequest {
+ string team_id = 1;
+ string name = 2;
+ optional string description = 3;
+ bool override_custom_scheduler = 4;
+ repeated SchedulerPolicyTargetProto targets = 5;
}
+message CreateSchedulerPolicyResponse { SchedulerPolicyProto policy = 1; }
-message ListWorkloadRulesRequest {
+message ListSchedulerPoliciesRequest {
string team_id = 1;
+ // When set, only policies with at least one live target covering this
+ // cluster are returned. Omitted (unset) returns every policy for the
+ // team, unfiltered.
optional string cluster_id = 2;
}
+message ListSchedulerPoliciesResponse { repeated SchedulerPolicyProto policies = 1; }
-message ListWorkloadRulesResponse {
- repeated WorkloadRule rules = 1;
- map cluster_names = 2; // cluster_id → display name
- map policy_names = 3; // policy_id → policy name
+message UpdateSchedulerPolicyRequest {
+ string team_id = 1;
+ string policy_id = 2;
+ optional string name = 3;
+ optional string description = 4;
+ optional bool override_custom_scheduler = 5;
+ // full replacement of the target set (targets with ids are updated,
+ // without ids created, missing ones removed) — omitted (empty) list
+ // means "leave targets unchanged", carried by this flag:
+ bool replace_targets = 6;
+ repeated SchedulerPolicyTargetProto targets = 7;
}
+message UpdateSchedulerPolicyResponse { SchedulerPolicyProto policy = 1; }
-message GetWorkloadRuleByIDRequest {
+message ToggleSchedulerPolicyDisabledRequest {
string team_id = 1;
- string rule_id = 2;
+ string policy_id = 2;
+ bool disabled = 3;
+}
+message ToggleSchedulerPolicyDisabledResponse {
+ SchedulerPolicyProto policy = 1;
+ // active enrollments flipped to pending_revert by disabling
+ int32 reverts_initiated = 2;
}
-message GetWorkloadRuleByIDResponse {
+message DeleteSchedulerPolicyRequest {
+ string team_id = 1;
+ string policy_id = 2;
+ // force skips reverts: enrollments are abandoned in place (spec 4.5)
+ bool force = 3;
+}
+message DeleteSchedulerPolicyResponse {
+ // DELETED: no live enrollments existed (or force) — policy soft-deleted now.
+ // REVERTING: reverts initiated; delete finalizes when acks arrive.
+ enum Outcome {
+ OUTCOME_UNSPECIFIED = 0;
+ OUTCOME_DELETED = 1;
+ OUTCOME_REVERTING = 2;
+ }
+ Outcome outcome = 1;
+ int32 reverts_initiated = 2;
+}
+
+message PreviewSchedulerPolicyTargetsRequest {
+ string team_id = 1;
+ optional string policy_id = 2; // set when editing, for diff classification
+ repeated SchedulerPolicyTargetProto targets = 3;
+}
+message SchedulerPolicyTargetMatch {
+ string cluster_id = 1;
+ string namespace = 2;
+ string kind = 3;
+ string name = 4;
+ enum Status {
+ STATUS_UNSPECIFIED = 0;
+ NEW_ENROLLMENT = 1; // would enroll
+ ALREADY_ENROLLED_THIS_POLICY = 2; // no change
+ ENROLLED_BY_OTHER_POLICY = 3; // precedence: stays with its owner
+ }
+ Status status = 5;
+ optional string owning_policy_id = 6;
+ optional string owning_policy_name = 7;
+ // workload spec's current schedulerName ("" = unset/default)
+ string current_scheduler = 8;
+}
+message PreviewSchedulerPolicyTargetsResponse {
+ repeated SchedulerPolicyTargetMatch matched_workloads = 1;
+ int32 total_matched = 2;
+ int32 total_returned = 3; // capped at 500, deterministic prefix
+ // Count over the FULL match set (like total_matched), not just the
+ // capped/returned prefix: matches whose current_scheduler is neither
+ // empty nor default-scheduler.
+ int32 custom_scheduler_count = 4;
+}
+
+message ListSchedulerPolicyEnrollmentsRequest {
+ string team_id = 1;
+ string policy_id = 2;
+}
+message SchedulerPolicyEnrollment {
+ string cluster_id = 1;
+ string namespace = 2;
+ string kind = 3;
+ string workload_name = 4;
+ enum State {
+ STATE_UNSPECIFIED = 0;
+ STATE_ACTIVE = 1;
+ STATE_PENDING_REVERT = 2;
+ STATE_REVERTED = 3;
+ STATE_ABANDONED = 4;
+ }
+ State state = 5;
+ // Original scheduler captured in the workload's baseline. Unset when no
+ // baseline row exists yet (spec 3.3); an empty string is a real value —
+ // the baseline captured the field as unset on the workload, not "unknown".
+ optional string original_scheduler_name = 6;
+ google.protobuf.Timestamp enrolled_at = 7;
+ optional google.protobuf.Timestamp unenrolled_at = 8;
+}
+message ListSchedulerPolicyEnrollmentsResponse {
+ repeated SchedulerPolicyEnrollment enrollments = 1;
+ map cluster_names = 2; // cluster_id -> display name
+}
+
+message SchedulerPolicySync {
+ repeated SchedulerPolicyProto policies = 1;
+ repeated SchedulerRevertInstruction reverts = 2;
+ // Opaque fingerprint of (policies, reverts, scheduler_settings); tunr
+ // echoes it in its next enrollment report so dakr can log convergence.
+ // Not used for correctness.
+ string sync_fingerprint = 3;
+ // Rendered dz-scheduler-config.yaml content for this cluster, when a
+ // settings row exists. Unset when the cluster has no persisted
+ // SchedulerSettings row — tunr must leave the helm-managed ConfigMap
+ // untouched in that case, not apply a rendered-defaults config.
+ SchedulerConfigPayload scheduler_settings = 4;
+}
+
+message SchedulerConfigPayload {
+ // Complete dz-scheduler-config.yaml content, rendered by dakr.
+ string rendered_config = 1;
+ google.protobuf.Timestamp updated_at = 2;
+}
+
+message SchedulerRevertInstruction {
+ string enrollment_id = 1; // ack correlation id for apply
+ string namespace = 2;
+ string kind = 3;
+ string workload_name = 4;
+ // literal value to restore; empty string means remove the field
+ // (baseline recorded the scheduler as unset). tunr prefers the
+ // on-workload annotation and uses this as fallback (spec 4.5 step 2).
+ string original_scheduler_name = 5;
+}
+
+message SchedulerEnrollmentReport {
+ message Observation {
+ string namespace = 1;
+ string kind = 2;
+ string workload_name = 3;
+ string policy_id = 4;
+ // pre-mutation scheduler observed at first application; "" = field
+ // was unset in the workload spec
+ string original_scheduler_name = 5;
+ }
+ repeated Observation observations = 1;
+ // Echo of the SchedulerPolicySync.sync_fingerprint tunr last applied.
+ // dakr compares this against the sending stream's current delivery-state
+ // fingerprint and logs a divergence once per report (Debug/Info) --
+ // informational only, never rejected: a stale echo just means tunr's
+ // report raced an in-flight sync push and will self-correct on the next
+ // tick.
+ string sync_fingerprint = 2;
+ // Full image ref of the running dz-scheduler container (registry/repo:tag),
+ // as read from the dz-scheduler Deployment's first container. Informational,
+ // and the version gate the config renderer (#9978) uses to decide which
+ // rendered-config shape a cluster can accept. "" = unknown or the
+ // Deployment was not found (scheduler disabled, or not yet observed).
+ string scheduler_image = 3;
+}
+
+// SchedulerRevertEventReport carries fail-open scheduler revert events
+// observed by tunr's admission failsafe: pods steered away from an
+// unhealthy tracked scheduler at CREATE time. Pod-level and transient --
+// the owning workload stays enrolled; dakr records these as the negative
+// signal for scheduler-impact observability. Batched per stream tick;
+// dropped_events counts buffer overflow drops since the last report.
+message SchedulerRevertEventReport {
+ message Event {
+ string namespace = 1;
+ string pod_name = 2;
+ // Owning controller identity when resolvable from ownerRefs at
+ // admission time; empty for bare pods.
+ string workload_kind = 3;
+ string workload_name = 4;
+ // scheduler-policy id annotation value if the pod carried one.
+ string policy_id = 5;
+ string from_scheduler = 6;
+ string to_scheduler = 7;
+ // Why the scheduler was considered unhealthy at revert time.
+ SchedulerUnhealthyReason reason = 8;
+ google.protobuf.Timestamp occurred_at = 9;
+ }
+ repeated Event events = 1;
+ uint32 dropped_events = 2;
+}
+
+enum SchedulerUnhealthyReason {
+ SCHEDULER_UNHEALTHY_REASON_UNSPECIFIED = 0;
+ SCHEDULER_UNHEALTHY_REASON_HEALTHZ_FAILED = 1;
+ SCHEDULER_UNHEALTHY_REASON_PENDING_PODS_STUCK = 2;
+}
+
+// ============================================================================
+// MPA V3: Workload Rule listing messages
+// ============================================================================
+
+message GetWorkloadRulesByPolicyRequest {
+ string team_id = 1;
+ string policy_id = 2;
+}
+
+message GetWorkloadRulesByPolicyResponse {
+ repeated WorkloadRule managed_rules = 1;
+ repeated WorkloadRule excluded_rules = 2;
+ map cluster_names = 3;
+}
+
+message ListWorkloadRulesRequest {
+ string team_id = 1;
+ optional string cluster_id = 2;
+}
+
+message ListWorkloadRulesResponse {
+ repeated WorkloadRule rules = 1;
+ map cluster_names = 2; // cluster_id → display name
+ map policy_names = 3; // policy_id → policy name
+}
+
+message GetWorkloadRuleByIDRequest {
+ string team_id = 1;
+ string rule_id = 2;
+}
+
+message GetWorkloadRuleByIDResponse {
WorkloadRule rule = 1;
string cluster_name = 2; // display name of rule.cluster_id
string policy_name = 3; // display name of rule.policy_id (empty if no policy attached)
@@ -3625,6 +5292,52 @@ message DeleteWorkloadRuleRequest {
message DeleteWorkloadRuleResponse {}
+message DeleteAllWorkloadRulesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message DeleteAllWorkloadRulesResponse {}
+
+// BulkDeleteWorkloadRules deletes an explicit set of rules within a single
+// cluster (e.g. a UI multi-select), triggering CRD removal for each. Scoped
+// to cluster_id so the server can validate ownership once and reject any
+// rule_ids that don't belong to that cluster, rather than trusting the caller.
+message BulkDeleteWorkloadRulesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ repeated string rule_ids = 3;
+}
+
+message BulkDeleteWorkloadRulesResponse {
+ int32 deleted_count = 1;
+}
+
+// BulkToggleWorkloadRulesDisabled flips the disabled flag on an explicit set
+// of rules within a single cluster (e.g. a UI multi-select) — each rule
+// switches to whatever it currently is NOT, independently of the others, so
+// a single call can disable some and enable others in one request. Mirrors
+// BulkDeleteWorkloadRules's scoping: rule_ids that do not belong to
+// cluster_id are silently excluded rather than erroring.
+message BulkToggleWorkloadRulesDisabledRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ repeated string rule_ids = 3;
+}
+
+message BulkToggleWorkloadRulesDisabledResponse {
+ int32 updated_count = 1;
+}
+
+message DeleteRuleAndApplyRecommendationRequest {
+ string team_id = 1;
+ string rule_id = 2;
+ string workload_uid = 3;
+ WorkloadRecommendation workload_recommendation = 4;
+}
+
+message DeleteRuleAndApplyRecommendationResponse {}
+
// ManualRuleFields carries the user-configurable rule fields shared by the
// Upsert and Preview RPCs. Extracted as its own message so the two request
// messages stay shape-aligned and the Go conversion logic has a single entry
@@ -3644,8 +5357,35 @@ message ManualRuleFields {
optional string defragmentation_schedule = 12;
bool live_migration_enabled = 13;
bool use_in_place_vertical_scaling = 14;
+ // Only meaningful while use_in_place_vertical_scaling is true. Default
+ // false; see WorkloadRule.allow_in_place_memory_limit_decrease.
+ bool allow_in_place_memory_limit_decrease = 20;
// Per-container resource configs (VPA). When empty, workload-level rules apply to all containers.
repeated ContainerResourceRuleConfig containers = 15;
+ // JVM heap optimization overrides for this rule.
+ JVMHeapRuleConfig jvm_heap_rule = 16;
+
+ // Per-rule override of the JVM CPU startup floor (millicores). See
+ // WorkloadRule.jvm_cpu_startup_floor_millicores for semantics.
+ optional int64 jvm_cpu_startup_floor_millicores = 17;
+
+ // Rule-wide on/off switch. Only valid when creating a brand-new rule via
+ // UpsertManualWorkloadRule — the request is REJECTED with an error if this
+ // is set while updating an existing rule. Use ToggleWorkloadRuleDisabled
+ // to change an existing rule's disabled state. See WorkloadRule.disabled
+ // for runtime semantics. optional (not plain bool) so the server can tell
+ // "omitted" apart from "explicitly false" and enforce the create-only rule.
+ optional bool disabled = 18;
+
+ // Per-rule metrics lookback override. Unset inherits the owning policy's
+ // window, else the 7-day default.
+ optional int32 lookback_period_seconds = 19;
+
+ // KEDA ScaledObject template authored by the user via the manual-rule form.
+ // Mirrors WorkloadRule.keda_scaled_object; written through by UpsertManualWorkloadRule.
+ // Field 20 is taken by main's allow_in_place_memory_limit_decrease (added on the
+ // main merge), so keda_scaled_object is 21.
+ optional KEDAScaledObjectTemplate keda_scaled_object = 21;
}
// WorkloadRuleSource identifies who created/last-modified a WorkloadRule.
@@ -3687,6 +5427,19 @@ message UpsertManualWorkloadRuleResponse {
WorkloadRule rule = 1;
}
+// ToggleWorkloadRuleDisabled is the sole way to change an EXISTING rule's
+// disabled state. UpsertManualWorkloadRule only honors ManualRuleFields.disabled
+// when creating a brand-new rule; every other transition goes through here.
+message ToggleWorkloadRuleDisabledRequest {
+ string team_id = 1;
+ string rule_id = 2;
+ bool disabled = 3;
+}
+
+message ToggleWorkloadRuleDisabledResponse {
+ WorkloadRule rule = 1;
+}
+
// PreviewWorkloadRuleRequest mirrors the upsert request but does not
// persist anything; returns a side-by-side preview instead.
message PreviewWorkloadRuleRequest {
@@ -3700,6 +5453,14 @@ message PreviewWorkloadRuleRequest {
string workload_uid = 6;
ManualRuleFields fields = 10;
+
+ // Optional. Set when this preview is being driven by a
+ // WorkloadOptimizationPolicy rather than a manual draft (e.g. the policy
+ // targeting preview's per-row rule detail) — applies the policy's
+ // operational overrides (currently just hpa_enabled=false, which can only
+ // disable HPA, never force it on — same clamp real rule generation
+ // applies) to the materialized pass. Has no effect on engine_projection.
+ optional string policy_id = 11;
}
message PreviewWorkloadRuleResponse {
@@ -3723,6 +5484,12 @@ message PreviewWorkloadRuleResponse {
// workload not yet emitting metrics, etc.). FE renders the materialized
// draft + observed view without an engine column.
string engine_projection_unavailable_reason = 4;
+
+ // The persisted DB rule for this workload. Null when no rule has been saved
+ // yet (create mode). Frontend fills ALL form fields directly from this when
+ // present; falls back to engine_projection for create-mode prefill.
+ // Engine suggestion chips always compare against engine_projection.
+ WorkloadRule db_rule = 5;
}
message GetWorkloadContainerNamesRequest {
@@ -3764,6 +5531,78 @@ message BatchAutoOptimizeWorkloadsResponse {
repeated BatchAutoOptimizeWorkloadResult results = 1;
}
+// Identifies a workload by namespace/kind/name. Shared by batch RPCs
+// (BatchUpsertManualWorkloadRules, BatchPreviewWorkloadRules).
+// workload_uid is only needed for preview (the profiling service uses it).
+message BatchWorkloadEntry {
+ string namespace = 1;
+ string kind = 2;
+ string name = 3;
+ optional string workload_uid = 5;
+}
+
+message BatchUpsertManualWorkloadRulesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ repeated BatchWorkloadEntry workloads = 3;
+ bool auto_generate = 4;
+ ManualRuleFields fields = 5; // shared across all workloads (only used when auto_generate=false)
+ WorkloadRuleSource source = 6;
+}
+
+message BatchUpsertManualWorkloadRuleResult {
+ string namespace = 1;
+ string kind = 2;
+ string name = 3;
+ bool success = 4;
+ string error = 5;
+ WorkloadRule rule = 6;
+}
+
+message BatchUpsertManualWorkloadRulesResponse {
+ repeated BatchUpsertManualWorkloadRuleResult results = 1;
+}
+
+// Batch preview — applies the same ManualRuleFields to multiple workloads
+// and returns per-workload previews without persisting anything.
+message BatchPreviewWorkloadRulesRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ repeated BatchWorkloadEntry workloads = 3;
+ ManualRuleFields fields = 4; // shared across all workloads
+}
+
+message BatchPreviewWorkloadRuleResult {
+ string namespace = 1;
+ string kind = 2;
+ string name = 3;
+ bool success = 4;
+ string error = 5;
+ WorkloadRule materialized_rule = 6;
+ WorkloadRule engine_projection = 7;
+ WorkloadProfileResult profile = 8;
+ string engine_projection_unavailable_reason = 9;
+}
+
+message BatchPreviewWorkloadRulesResponse {
+ repeated BatchPreviewWorkloadRuleResult results = 1;
+}
+
+// ApplyOneTimeOptimization runs the MPA v2 engine for a workload and immediately
+// creates a WorkloadRecommendation (no WorkloadRule persisted). Only allowed when
+// no WorkloadRule already exists for the workload — the frontend disables the
+// button in edit mode to enforce this at the UI layer too.
+message ApplyOneTimeOptimizationRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ string namespace = 3;
+ string kind = 4;
+ string name = 5;
+ string workload_uid = 6;
+}
+
+message ApplyOneTimeOptimizationResponse {}
+
// WorkloadProfileManifest is the authoritative key set for a single emit cycle
// of profile snapshots for a (cluster, window) pair. The server sends exactly
// one manifest followed by zero or more BatchWorkloadProfiles, all tagged with
@@ -3859,3 +5698,549 @@ message NodeApplyFailure {
string node_name = 1;
string error = 2;
}
+
+// NodeCheckpointLabelState describes the last-known per-node apply outcome for
+// the checkpoint-restore label. PENDING/FAILED reflect the most recent
+// generic_resource_recommendations row; NONE means we have no apply attempt
+// on record for the node — has_label may still be true (label inherited via
+// the Karpenter NodePool template, or set manually).
+enum NodeCheckpointLabelState {
+ NODE_CHECKPOINT_LABEL_STATE_UNSPECIFIED = 0;
+ NODE_CHECKPOINT_LABEL_STATE_NONE = 1;
+ NODE_CHECKPOINT_LABEL_STATE_PENDING = 2;
+ NODE_CHECKPOINT_LABEL_STATE_APPLIED = 3;
+ NODE_CHECKPOINT_LABEL_STATE_FAILED = 4;
+ // REJECTED lumps every other terminal status (superseded, blocked, ignored)
+ // — the UI surfaces them collectively as "did not apply".
+ NODE_CHECKPOINT_LABEL_STATE_REJECTED = 5;
+}
+
+message GetClusterCheckpointLabelCoverageRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+message NodeGroupCheckpointLabelCoverage {
+ string node_pool_name = 1;
+ // total_nodes counts live nodes in the group whose node_group_name maps to
+ // a policy attached to this cluster via an enabled NodePolicyTarget. Nodes
+ // outside any policy's scope are excluded.
+ uint32 total_nodes = 2;
+ uint32 labeled_nodes = 3;
+ uint32 pending_nodes = 4;
+ uint32 failed_nodes = 5;
+ // ready_nodes = label applied AND criu_configured AND agent heartbeat fresh
+ // (<5 min). Drives the "Active · X/Y ready" / "Awaiting runtime · X/Y ready"
+ // NG-row subtext.
+ uint32 ready_nodes = 6;
+}
+
+message GetClusterCheckpointLabelCoverageResponse {
+ repeated NodeGroupCheckpointLabelCoverage groups = 1;
+}
+
+message ListNodeGroupCheckpointLabelStateRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ string node_pool_name = 3;
+}
+
+message NodeCheckpointLabelEntry {
+ string node_name = 1;
+ bool has_label = 2;
+ NodeCheckpointLabelState last_apply_state = 3;
+ string last_error = 4;
+ // criu_configured = dakr-operator's last probe found criu installed on this
+ // node. Pair with criu_heartbeat_fresh — a true value with a stale heartbeat
+ // is not trustworthy.
+ bool criu_configured = 5;
+ // criu_heartbeat_fresh = agent_healths.last_ping_at within the last 5 min.
+ // FE renders "Active" only when has_label + criu_configured + this.
+ bool criu_heartbeat_fresh = 6;
+}
+
+message ListNodeGroupCheckpointLabelStateResponse {
+ repeated NodeCheckpointLabelEntry nodes = 1;
+}
+
+// ---------------------------------------------------------------------------
+// Snapshot policies (resilience) + forensic snapshot policies (runtime
+// security) — spec: dakr/docs/superpowers/specs/2026-07-02-snapshot-policies-design.md
+// ---------------------------------------------------------------------------
+
+message SnapshotPercentBounds {
+ optional int32 upper = 1;
+ optional int32 lower = 2;
+}
+
+message SnapshotResourceThreshold {
+ optional SnapshotPercentBounds cpu_percent = 1;
+ optional SnapshotPercentBounds memory_percent = 2;
+ optional int32 poll_interval_seconds = 3;
+}
+
+// CheckpointSchedule behavior (triggers only — scope lives on the target).
+message SnapshotSchedulePolicySpec {
+ optional int64 interval_seconds = 1;
+ optional SnapshotResourceThreshold resource_threshold = 2;
+ // Values: NodeDrain | PodEviction | Preemption (validated server-side; the CRD has no enum).
+ repeated string on_kubernetes_events = 3;
+ bool on_annotation = 4;
+}
+
+message SnapshotGlobalRetention {
+ optional bool retain_orphan = 1;
+ optional int32 max_checkpoints_per_namespace = 2;
+ optional int32 max_checkpoints_per_pod = 3;
+ optional int32 max_checkpoints_per_container = 4;
+ // Sizes are integer MB; the compiler renders them as "Mi" quantities.
+ optional int32 max_checkpoint_size_mb = 5;
+ optional int32 max_total_size_per_namespace_mb = 6;
+ optional int32 max_total_size_per_pod_mb = 7;
+ optional int32 max_total_size_per_container_mb = 8;
+}
+
+message SnapshotContainerRetentionPolicy {
+ string namespace = 1;
+ string pod = 2;
+ string container = 3;
+ optional bool retain_orphan = 4;
+ optional int32 max_checkpoints = 5;
+ optional int32 max_checkpoint_size_mb = 6;
+ optional int32 max_total_size_mb = 7;
+}
+
+message SnapshotPodRetentionPolicy {
+ string namespace = 1;
+ string pod = 2;
+ optional bool retain_orphan = 3;
+ optional int32 max_checkpoints = 4;
+ optional int32 max_checkpoint_size_mb = 5;
+ optional int32 max_total_size_mb = 6;
+}
+
+message SnapshotNamespaceRetentionPolicy {
+ string namespace = 1;
+ optional bool retain_orphan = 2;
+ optional int32 max_checkpoints = 3;
+ optional int32 max_checkpoint_size_mb = 4;
+ optional int32 max_total_size_mb = 5;
+}
+
+// CheckpointRestoreOperator behavior (cluster-wide retention/GC config).
+message SnapshotRetentionPolicySpec {
+ string checkpoint_directory = 1;
+ bool apply_policies_immediately = 2;
+ optional SnapshotGlobalRetention global_retention = 3;
+ repeated SnapshotContainerRetentionPolicy container_policies = 4;
+ repeated SnapshotPodRetentionPolicy pod_policies = 5;
+ repeated SnapshotNamespaceRetentionPolicy namespace_policies = 6;
+}
+
+message SnapshotPolicy {
+ string policy_id = 1;
+ string team_id = 2;
+ string name = 3;
+ string description = 4;
+ oneof spec {
+ SnapshotSchedulePolicySpec schedule = 11;
+ SnapshotRetentionPolicySpec retention = 12;
+ }
+ google.protobuf.Timestamp created_at = 51;
+ google.protobuf.Timestamp updated_at = 52;
+}
+
+enum ForensicPostSnapshotAction {
+ FORENSIC_POST_SNAPSHOT_ACTION_UNSPECIFIED = 0;
+ FORENSIC_POST_SNAPSHOT_ACTION_NONE = 1;
+ FORENSIC_POST_SNAPSHOT_ACTION_DELETE_POD = 2;
+}
+
+message ForensicSnapshotPolicy {
+ string policy_id = 1;
+ string team_id = 2;
+ string name = 3;
+ string description = 4;
+ optional int64 interval_seconds = 11;
+ optional int32 max_snapshots = 12;
+ optional int64 max_duration_seconds = 13;
+ string hash_algorithm = 14;
+ ForensicPostSnapshotAction post_snapshot_action = 15;
+ // Read-only: 0 = never triggered. Mutable only via
+ // TriggerForensicSnapshotRun. Create rejects non-zero values; Update
+ // ignores the field entirely (round-tripped entities carry it).
+ int32 run_generation = 16;
+ google.protobuf.Timestamp created_at = 51;
+ google.protobuf.Timestamp updated_at = 52;
+}
+
+// Scope shared by both target families. Non-nil criteria combine with AND.
+// Empty cluster_ids = NO clusters (deliberately inverted from WorkloadPolicyTarget).
+message SnapshotTargetScope {
+ repeated string cluster_ids = 1;
+ repeated string namespaces = 11;
+ optional LabelSelector namespace_selector = 12;
+ optional RegexPattern namespace_pattern = 13;
+ optional LabelSelector workload_selector = 14;
+ optional LabelSelector annotation_selector = 15;
+ repeated string workload_names = 16;
+ optional RegexPattern name_pattern = 17;
+ repeated K8sObjectKind kind_filter = 18;
+ repeated string node_group_names = 19;
+ // Passed verbatim into the CR's spec.selector; operators restricted to
+ // In/NotIn/Exists/DoesNotExist (validated server-side).
+ optional LabelSelector pod_selector = 21;
+ repeated string container_names = 22;
+}
+
+// NOTE: the spec's target-level runtime `status` field (§8) is deliberately
+// absent — phase 6 (status ingestion) adds it as a backward-compatible field
+// at tag 120, mirroring NodePolicyTarget.status.
+message SnapshotPolicyTarget {
+ string target_id = 1;
+ string policy_id = 2;
+ string team_id = 3;
+ string name = 4;
+ string description = 5;
+ int32 priority = 6;
+ bool enabled = 7;
+ SnapshotTargetScope scope = 11;
+ google.protobuf.Timestamp created_at = 51;
+ google.protobuf.Timestamp updated_at = 52;
+ // Ingested runtime status of the target's compiled CRs (spec §8).
+ // Populated by ListSnapshotPolicyTargets; unset when nothing ingested.
+ SnapshotPolicyTargetStatus status = 120;
+}
+
+message ForensicSnapshotPolicyTarget {
+ string target_id = 1;
+ string policy_id = 2;
+ string team_id = 3;
+ string name = 4;
+ string description = 5;
+ int32 priority = 6;
+ bool enabled = 7;
+ SnapshotTargetScope scope = 11;
+ google.protobuf.Timestamp created_at = 51;
+ google.protobuf.Timestamp updated_at = 52;
+ // Ingested runtime status of the target's compiled chain CRs (spec §8).
+ SnapshotPolicyTargetStatus status = 120;
+}
+
+// ---- CRUD: snapshot policies ----
+message CreateSnapshotPoliciesRequest {
+ string team_id = 1;
+ repeated SnapshotPolicy policies = 2; // policy_id/timestamps ignored
+}
+message CreateSnapshotPoliciesResponse {
+ repeated SnapshotPolicy policies = 1;
+}
+message ListSnapshotPoliciesRequest {
+ string team_id = 1;
+ int32 limit = 2;
+ int32 offset = 3;
+}
+message ListSnapshotPoliciesResponse {
+ repeated SnapshotPolicy policies = 1;
+ int64 total = 2;
+}
+message UpdateSnapshotPolicyRequest {
+ string team_id = 1;
+ SnapshotPolicy policy = 2;
+}
+message UpdateSnapshotPolicyResponse {
+ SnapshotPolicy policy = 1;
+}
+message DeleteSnapshotPolicyRequest {
+ string team_id = 1;
+ string policy_id = 2;
+}
+message DeleteSnapshotPolicyResponse {
+ bool success = 1;
+}
+
+// ---- CRUD: snapshot policy targets ----
+message CreateSnapshotPolicyTargetsRequest {
+ string team_id = 1;
+ repeated SnapshotPolicyTarget targets = 2; // target_id/timestamps ignored
+}
+message CreateSnapshotPolicyTargetsResponse {
+ repeated SnapshotPolicyTarget targets = 1;
+}
+message ListSnapshotPolicyTargetsRequest {
+ string team_id = 1;
+ optional string policy_id = 2;
+ int32 limit = 3;
+ int32 offset = 4;
+}
+message ListSnapshotPolicyTargetsResponse {
+ repeated SnapshotPolicyTarget targets = 1;
+ int64 total = 2;
+}
+message UpdateSnapshotPolicyTargetRequest {
+ string team_id = 1;
+ SnapshotPolicyTarget target = 2;
+}
+message UpdateSnapshotPolicyTargetResponse {
+ SnapshotPolicyTarget target = 1;
+}
+message DeleteSnapshotPolicyTargetRequest {
+ string team_id = 1;
+ repeated string target_ids = 2;
+}
+message DeleteSnapshotPolicyTargetResponse {
+ bool success = 1;
+}
+
+// ---- CRUD: forensic snapshot policies + targets (mirrors above) ----
+message CreateForensicSnapshotPoliciesRequest {
+ string team_id = 1;
+ repeated ForensicSnapshotPolicy policies = 2;
+}
+message CreateForensicSnapshotPoliciesResponse {
+ repeated ForensicSnapshotPolicy policies = 1;
+}
+message ListForensicSnapshotPoliciesRequest {
+ string team_id = 1;
+ int32 limit = 2;
+ int32 offset = 3;
+}
+message ListForensicSnapshotPoliciesResponse {
+ repeated ForensicSnapshotPolicy policies = 1;
+ int64 total = 2;
+}
+message UpdateForensicSnapshotPolicyRequest {
+ string team_id = 1;
+ ForensicSnapshotPolicy policy = 2;
+}
+message UpdateForensicSnapshotPolicyResponse {
+ ForensicSnapshotPolicy policy = 1;
+}
+message DeleteForensicSnapshotPolicyRequest {
+ string team_id = 1;
+ string policy_id = 2;
+}
+message DeleteForensicSnapshotPolicyResponse {
+ bool success = 1;
+}
+message CreateForensicSnapshotPolicyTargetsRequest {
+ string team_id = 1;
+ repeated ForensicSnapshotPolicyTarget targets = 2;
+}
+message CreateForensicSnapshotPolicyTargetsResponse {
+ repeated ForensicSnapshotPolicyTarget targets = 1;
+}
+message ListForensicSnapshotPolicyTargetsRequest {
+ string team_id = 1;
+ optional string policy_id = 2;
+ int32 limit = 3;
+ int32 offset = 4;
+}
+message ListForensicSnapshotPolicyTargetsResponse {
+ repeated ForensicSnapshotPolicyTarget targets = 1;
+ int64 total = 2;
+}
+message UpdateForensicSnapshotPolicyTargetRequest {
+ string team_id = 1;
+ ForensicSnapshotPolicyTarget target = 2;
+}
+message UpdateForensicSnapshotPolicyTargetResponse {
+ ForensicSnapshotPolicyTarget target = 1;
+}
+message DeleteForensicSnapshotPolicyTargetRequest {
+ string team_id = 1;
+ repeated string target_ids = 2;
+}
+message DeleteForensicSnapshotPolicyTargetResponse {
+ bool success = 1;
+}
+
+// ---- Forensic run trigger ----
+message TriggerForensicSnapshotRunRequest {
+ string team_id = 1;
+ string policy_id = 2;
+}
+message TriggerForensicSnapshotRunResponse {
+ int32 run_generation = 1;
+}
+
+// ---- Targeting preview (shared resolver, spec §6) ----
+message SnapshotResolvedWorkload {
+ K8sObjectKind kind = 1;
+ string name = 2;
+ string uid = 3;
+ optional LabelSelector pod_selector = 4; // from the workload's pod template
+ // Summed container resource requests + replicas from the workload spec,
+ // for the preview's workload table. Zero when the kind has no typed spec
+ // (Pod, CRDs) or the field is absent (DaemonSet/Job have no replica count).
+ int32 replicas = 5;
+ int64 cpu_request_millicores = 6;
+ int64 memory_request_bytes = 7;
+}
+message SnapshotResolvedNamespace {
+ string namespace = 1;
+ // Present only when workload-scope criteria were used; empty for
+ // pod_selector-passthrough targets.
+ repeated SnapshotResolvedWorkload workloads = 2;
+ bool pod_selector_passthrough = 3;
+}
+message SnapshotClusterScopePreview {
+ string cluster_id = 1;
+ repeated SnapshotResolvedNamespace namespaces = 2;
+ bool truncated = 3; // fan-out cap hit (spec §6)
+ string error = 4; // per-cluster resolution error (cluster missing, etc.)
+}
+message PreviewSnapshotPolicyTargetMatchesRequest {
+ string team_id = 1;
+ SnapshotTargetScope scope = 2; // unsaved target scope
+}
+message PreviewSnapshotPolicyTargetMatchesResponse {
+ repeated SnapshotClusterScopePreview clusters = 1;
+}
+message ForensicTargetOverlap {
+ string target_id = 1;
+ string policy_id = 2;
+ string cluster_id = 3;
+ string namespace = 4;
+ repeated string workload_uids = 5;
+}
+message PreviewForensicSnapshotPolicyTargetMatchesRequest {
+ string team_id = 1;
+ SnapshotTargetScope scope = 2;
+ // When previewing edits to an existing target, set this to its id so the
+ // target's persisted copy is not reported as overlapping itself.
+ optional string exclude_target_id = 3;
+}
+message PreviewForensicSnapshotPolicyTargetMatchesResponse {
+ repeated SnapshotClusterScopePreview clusters = 1;
+ // Enabled forensic targets whose rendered workloads intersect this scope
+ // (overlapping forensic captures race on DeletePod — spec §2). Computed
+ // against the rendered-scope read model, so overlaps reflect each
+ // target's matches as of its LAST RENDER (up to one render interval
+ // stale), not a live re-resolution.
+ repeated ForensicTargetOverlap overlaps = 2;
+}
+
+// ---- Rendered scope (read model, spec §3.5) ----
+message SnapshotRenderedScopeRow {
+ string cluster_id = 1;
+ string policy_id = 2;
+ string target_id = 3;
+ string namespace = 4;
+ optional LabelSelector pod_selector = 5;
+ repeated string container_names = 6;
+ int32 workload_count = 7;
+ repeated SnapshotResolvedWorkload workloads = 8;
+ string config_id = 9;
+ optional int32 run_generation = 10; // forensic only
+ google.protobuf.Timestamp updated_at = 51;
+}
+message GetSnapshotPolicyTargetRenderedScopeRequest {
+ string team_id = 1;
+ oneof by {
+ string target_id = 2;
+ string policy_id = 3;
+ }
+ int32 limit = 4;
+ int32 offset = 5;
+}
+message GetSnapshotPolicyTargetRenderedScopeResponse {
+ repeated SnapshotRenderedScopeRow rows = 1;
+ int64 total = 2;
+}
+message GetForensicSnapshotPolicyTargetRenderedScopeRequest {
+ string team_id = 1;
+ oneof by {
+ string target_id = 2;
+ string policy_id = 3;
+ }
+ int32 limit = 4;
+ int32 offset = 5;
+}
+message GetForensicSnapshotPolicyTargetRenderedScopeResponse {
+ repeated SnapshotRenderedScopeRow rows = 1;
+ int64 total = 2;
+}
+
+// ---- Delivery status (apply layer now; runtime status added in phase 6) ----
+message SnapshotConfigInfo {
+ string config_id = 1;
+ string cluster_id = 2;
+ string content_hash = 3;
+ string status = 4; // pending | applied | failed
+ string error = 5;
+ optional int32 run_generation = 6; // forensic only
+ string triggered_by = 7; // forensic only
+ google.protobuf.Timestamp created_at = 51;
+ google.protobuf.Timestamp updated_at = 52;
+}
+message SnapshotConfigApplyEventInfo {
+ string event_id = 1;
+ string config_id = 2;
+ string status = 3;
+ string error = 4;
+ google.protobuf.Timestamp applied_at = 51;
+ google.protobuf.Timestamp created_at = 52;
+}
+message GetSnapshotRecommendationStatusRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ int32 event_limit = 3; // default 20
+}
+message GetSnapshotRecommendationStatusResponse {
+ optional SnapshotConfigInfo current_config = 1;
+ repeated SnapshotConfigApplyEventInfo events = 2;
+ // Ingested runtime status of the cluster's resilience-family CRs.
+ repeated SnapshotCRRuntimeStatus runtime = 3;
+ SnapshotPrereqs prereqs = 4;
+}
+message GetForensicSnapshotRecommendationStatusRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+ int32 event_limit = 3;
+}
+message GetForensicSnapshotRecommendationStatusResponse {
+ optional SnapshotConfigInfo current_config = 1;
+ repeated SnapshotConfigApplyEventInfo events = 2;
+ // Ingested runtime status of the cluster's ForensicSnapshotChain CRs.
+ repeated SnapshotCRRuntimeStatus runtime = 3;
+}
+
+// ---- Compiled-config preview (implemented in phase 3; Unimplemented now) ----
+message PreviewSnapshotRecommendationConfigRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+message PreviewSnapshotRecommendationConfigResponse {
+ string yaml = 1;
+}
+message PreviewForensicSnapshotRecommendationConfigRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+message PreviewForensicSnapshotRecommendationConfigResponse {
+ string yaml = 1;
+}
+
+// ---- KEDA shared authentication ----
+message ListReferencedAuthenticationsRequest {
+ string team_id = 1;
+ string cluster_id = 2;
+}
+
+// ReferencedAuthentication is a distinct KEDA authenticationRef observed
+// across a cluster's active WorkloadRules.
+// It carries no credential or secret data.
+message ReferencedAuthentication {
+ string name = 1;
+ // kind is either TriggerAuthentication or ClusterTriggerAuthentication.
+ string kind = 2;
+ // used_by_count is the number of active WorkloadRules that reference this auth object.
+ int64 used_by_count = 3;
+ // namespaces lists the namespaces of the referencing WorkloadRules.
+ repeated string namespaces = 4;
+}
+
+message ListReferencedAuthenticationsResponse {
+ repeated ReferencedAuthentication authentications = 1;
+}
diff --git a/internal/provider/cluster_resource.go b/internal/provider/cluster_resource.go
index 22a9dd6..3060cb9 100644
--- a/internal/provider/cluster_resource.go
+++ b/internal/provider/cluster_resource.go
@@ -170,12 +170,16 @@ func (r *ClusterResource) Read(ctx context.Context, req resource.ReadRequest, re
getClusterResp, err := r.client.K8SServiceClient.GetCluster(ctx, connect.NewRequest(getClusterReq))
if err != nil {
+ if connect.CodeOf(err) == connect.CodeNotFound {
+ resp.State.RemoveResource(ctx)
+ return
+ }
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to get cluster, got error: %s", err))
return
}
if getClusterResp.Msg.Cluster == nil {
- resp.Diagnostics.AddError("Client Error", "Cluster not found")
+ resp.State.RemoveResource(ctx)
return
}
@@ -217,7 +221,11 @@ func (r *ClusterResource) Update(ctx context.Context, req resource.UpdateRequest
return
}
- data.Name = types.StringValue(updateClusterResp.Msg.Cluster.CustomName)
+ updatedName := updateClusterResp.Msg.Cluster.CustomName
+ if updatedName == "" {
+ updatedName = updateClusterResp.Msg.Cluster.Name
+ }
+ data.Name = types.StringValue(updatedName)
// If prior token was empty, rotate it now and persist the new token in state
if data.Token.IsNull() || data.Token.IsUnknown() || data.Token.ValueString() == "" {
@@ -257,7 +265,7 @@ func (r *ClusterResource) Delete(ctx context.Context, req resource.DeleteRequest
}
_, err := r.client.ClusterMutationClient.DeleteCluster(ctx, connect.NewRequest(deleteClusterReq))
- if err != nil {
+ if err != nil && connect.CodeOf(err) != connect.CodeNotFound {
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to delete cluster, got error: %s", err))
return
}
diff --git a/internal/provider/fake_server_lifecycle_extra_test.go b/internal/provider/fake_server_lifecycle_extra_test.go
new file mode 100644
index 0000000..ebcd586
--- /dev/null
+++ b/internal/provider/fake_server_lifecycle_extra_test.go
@@ -0,0 +1,287 @@
+package provider
+
+import (
+ "context"
+ "fmt"
+ "testing"
+
+ "connectrpc.com/connect"
+ "github.com/hashicorp/terraform-plugin-framework/attr"
+ "github.com/hashicorp/terraform-plugin-framework/resource"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+
+ apiv1 "github.com/devzero-inc/terraform-provider-devzero/internal/gen/api/v1"
+)
+
+// ---------------------------------------------------------------------------
+// Cluster RPCs on the fake backend (K8SService + ClusterMutationService).
+// ---------------------------------------------------------------------------
+
+func (f *fakeBackend) CreateCluster(_ context.Context, req *connect.Request[apiv1.CreateClusterRequest]) (*connect.Response[apiv1.CreateClusterResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ if f.clusters == nil {
+ f.clusters = map[string]*apiv1.Cluster{}
+ }
+ c := &apiv1.Cluster{Id: f.id("cl"), Name: req.Msg.ClusterName, CustomName: req.Msg.ClusterName}
+ f.clusters[c.Id] = c
+ return connect.NewResponse(&apiv1.CreateClusterResponse{Cluster: c, Token: "tok-" + c.Id}), nil
+}
+
+func (f *fakeBackend) GetCluster(_ context.Context, req *connect.Request[apiv1.GetClusterRequest]) (*connect.Response[apiv1.GetClusterResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ c, ok := f.clusters[req.Msg.ClusterId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("cluster not found"))
+ }
+ return connect.NewResponse(&apiv1.GetClusterResponse{Cluster: c}), nil
+}
+
+func (f *fakeBackend) UpdateCluster(_ context.Context, req *connect.Request[apiv1.UpdateClusterRequest]) (*connect.Response[apiv1.UpdateClusterResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ c, ok := f.clusters[req.Msg.ClusterId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("cluster not found"))
+ }
+ c.CustomName = req.Msg.ClusterName
+ return connect.NewResponse(&apiv1.UpdateClusterResponse{Cluster: c}), nil
+}
+
+func (f *fakeBackend) DeleteCluster(_ context.Context, req *connect.Request[apiv1.DeleteClusterRequest]) (*connect.Response[apiv1.DeleteClusterResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ if _, ok := f.clusters[req.Msg.ClusterId]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("cluster not found"))
+ }
+ delete(f.clusters, req.Msg.ClusterId)
+ return connect.NewResponse(&apiv1.DeleteClusterResponse{}), nil
+}
+
+func (f *fakeBackend) ResetClusterToken(_ context.Context, req *connect.Request[apiv1.ResetClusterTokenRequest]) (*connect.Response[apiv1.ResetClusterTokenResponse], error) {
+ return connect.NewResponse(&apiv1.ResetClusterTokenResponse{Token: "rotated-" + req.Msg.ClusterId}), nil
+}
+
+// ---------------------------------------------------------------------------
+// Cluster lifecycle
+// ---------------------------------------------------------------------------
+
+func TestLifecycle_Cluster(t *testing.T) {
+ ctx := context.Background()
+ fake := newFakeClientSetT(t)
+ r := &ClusterResource{client: fake.cs}
+
+ // Create
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[ClusterResourceModel](t, r, func(m *ClusterResourceModel) {
+ m.Name = stringVal("prod-cluster")
+ })}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+
+ var created ClusterResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+ if created.Id.ValueString() == "" || created.Token.ValueString() == "" {
+ t.Fatalf("expected id and token after create, got %+v", created)
+ }
+
+ // Update (rename) — token must be preserved, name read back with fallback.
+ updResp := resource.UpdateResponse{State: createResp.State}
+ r.Update(ctx, resource.UpdateRequest{
+ Plan: buildPlan[ClusterResourceModel](t, r, func(m *ClusterResourceModel) {
+ m.Id = created.Id
+ m.Name = stringVal("prod-cluster-renamed")
+ m.Token = created.Token
+ }),
+ State: createResp.State,
+ }, &updResp)
+ mustNoDiags(t, "Update", updResp.Diagnostics)
+ var updated ClusterResourceModel
+ mustNoDiags(t, "State.Get", updResp.State.Get(ctx, &updated))
+ if updated.Name.ValueString() != "prod-cluster-renamed" {
+ t.Fatalf("Name after update: %q", updated.Name.ValueString())
+ }
+ if updated.Token.ValueString() != created.Token.ValueString() {
+ t.Fatal("token must be preserved across updates")
+ }
+
+ // Out-of-band delete → Read drops from state.
+ fake.backend.mu.Lock()
+ delete(fake.backend.clusters, created.Id.ValueString())
+ fake.backend.mu.Unlock()
+ readGone := resource.ReadResponse{State: updResp.State}
+ r.Read(ctx, resource.ReadRequest{State: updResp.State}, &readGone)
+ mustNoDiags(t, "Read after out-of-band delete", readGone.Diagnostics)
+ if !readGone.State.Raw.IsNull() {
+ t.Fatal("expected state removal after out-of-band delete")
+ }
+
+ // Delete of an already-gone cluster is tolerated.
+ delResp := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: updResp.State}, &delResp)
+ mustNoDiags(t, "Delete (already gone)", delResp.Diagnostics)
+}
+
+// ---------------------------------------------------------------------------
+// Update lifecycles previously untested end-to-end
+// ---------------------------------------------------------------------------
+
+func TestLifecycle_NodePolicy_Update(t *testing.T) {
+ ctx := context.Background()
+ fake := newFakeClientSetT(t)
+ r := &NodePolicyResource{client: fake.cs}
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[NodePolicyResourceModel](t, r, func(m *NodePolicyResourceModel) {
+ m.Name = stringVal("pool")
+ azure := &AzureNodeClass{}
+ hydrateNested(t, r, "azure", azure)
+ azure.VnetSubnetId = stringVal("subnet-a")
+ m.Azure = azure
+ })}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+ var created NodePolicyResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+
+ // Update: change the subnet and add a startup taint.
+ updResp := resource.UpdateResponse{State: createResp.State}
+ r.Update(ctx, resource.UpdateRequest{
+ Plan: buildPlan[NodePolicyResourceModel](t, r, func(m *NodePolicyResourceModel) {
+ m.Id = created.Id
+ m.Name = stringVal("pool")
+ azure := &AzureNodeClass{}
+ hydrateNested(t, r, "azure", azure)
+ azure.VnetSubnetId = stringVal("subnet-b")
+ m.Azure = azure
+ }),
+ State: createResp.State,
+ }, &updResp)
+ mustNoDiags(t, "Update", updResp.Diagnostics)
+ var updated NodePolicyResourceModel
+ mustNoDiags(t, "State.Get", updResp.State.Get(ctx, &updated))
+ if updated.Azure == nil || updated.Azure.VnetSubnetId.ValueString() != "subnet-b" {
+ t.Fatalf("azure.vnet_subnet_id after update: %+v", updated.Azure)
+ }
+ fake.backend.mu.Lock()
+ stored := fake.backend.nodePol[created.Id.ValueString()]
+ fake.backend.mu.Unlock()
+ if stored == nil || stored.Azure.GetVnetSubnetId() != "subnet-b" {
+ t.Fatalf("backend did not receive the updated subnet: %+v", stored)
+ }
+}
+
+func TestLifecycle_WorkloadPolicyTarget_Update(t *testing.T) {
+ ctx := context.Background()
+ fake := newFakeClientSetT(t)
+ r := &WorkloadPolicyTargetResource{client: fake.cs}
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[WorkloadPolicyTargetResourceModel](t, r, func(m *WorkloadPolicyTargetResourceModel) {
+ m.Name = stringVal("t1")
+ m.PolicyId = stringVal("wp-0001")
+ m.Enabled = boolValTrue()
+ m.ClusterIds = stringList("c1")
+ })}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+ var created WorkloadPolicyTargetResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+
+ updResp := resource.UpdateResponse{State: createResp.State}
+ r.Update(ctx, resource.UpdateRequest{
+ Plan: buildPlan[WorkloadPolicyTargetResourceModel](t, r, func(m *WorkloadPolicyTargetResourceModel) {
+ m.Id = created.Id
+ m.Name = stringVal("t1-renamed")
+ m.PolicyId = stringVal("wp-0001")
+ m.Enabled = boolValFalse()
+ m.ClusterIds = stringList("c1")
+ m.WorkloadNamesNotIn = stringList("excluded-app")
+ }),
+ State: createResp.State,
+ }, &updResp)
+ mustNoDiags(t, "Update", updResp.Diagnostics)
+
+ fake.backend.mu.Lock()
+ stored := fake.backend.wpt[created.Id.ValueString()]
+ fake.backend.mu.Unlock()
+ if stored == nil {
+ t.Fatal("target missing backend-side")
+ }
+ if stored.Name != "t1-renamed" || stored.Enabled || len(stored.WorkloadNamesNotIn) != 1 {
+ t.Fatalf("update not propagated: name=%q enabled=%v notIn=%v", stored.Name, stored.Enabled, stored.WorkloadNamesNotIn)
+ }
+}
+
+// ---------------------------------------------------------------------------
+// Import-shaped Read: state contains only the ID (what ImportState produces).
+// The Read must populate the full state from the API alone.
+// ---------------------------------------------------------------------------
+
+func TestLifecycle_WorkloadPolicy_ImportShapedRead(t *testing.T) {
+ ctx := context.Background()
+ fake := newFakeClientSetT(t)
+ r := &WorkloadPolicyResource{client: fake.cs}
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[WorkloadPolicyResourceModel](t, r, func(m *WorkloadPolicyResourceModel) {
+ m.Name = stringVal("imported")
+ m.EnableInPlaceVerticalScaling = boolValTrue()
+ cpu := &VerticalScalingOptions{}
+ hydrateNested(t, r, "cpu_vertical_scaling", cpu)
+ cpu.Enabled = boolValTrue()
+ m.CPUVerticalScaling = cpu
+ })}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+ var created WorkloadPolicyResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+
+ // Simulate `terraform import `: state holds only the id.
+ importState := emptyState(t, r)
+ var blank WorkloadPolicyResourceModel
+ mustNoDiags(t, "hydrate blank", buildPlan[WorkloadPolicyResourceModel](t, r, func(m *WorkloadPolicyResourceModel) {
+ m.Id = created.Id
+ }).Get(ctx, &blank))
+ mustNoDiags(t, "seed import state", importState.Set(ctx, &blank))
+
+ readResp := resource.ReadResponse{State: importState}
+ r.Read(ctx, resource.ReadRequest{State: importState}, &readResp)
+ mustNoDiags(t, "Read (import-shaped)", readResp.Diagnostics)
+
+ var imported WorkloadPolicyResourceModel
+ mustNoDiags(t, "State.Get", readResp.State.Get(ctx, &imported))
+ if imported.Name.ValueString() != "imported" {
+ t.Fatalf("import Read did not populate name: %q", imported.Name.ValueString())
+ }
+ if imported.CPUVerticalScaling == nil || !imported.CPUVerticalScaling.Enabled.ValueBool() {
+ t.Fatalf("import Read did not populate the nested vertical scaling block: %+v", imported.CPUVerticalScaling)
+ }
+ if !imported.EnableInPlaceVerticalScaling.ValueBool() {
+ t.Fatal("import Read did not populate enable_in_place_vertical_scaling")
+ }
+}
+
+// ---------------------------------------------------------------------------
+// small typed-value helpers for this file
+// ---------------------------------------------------------------------------
+
+type fakeHarness struct {
+ cs *ClientSet
+ backend *fakeBackend
+}
+
+func newFakeClientSetT(t *testing.T) fakeHarness {
+ cs, backend := newFakeClientSet(t)
+ return fakeHarness{cs: cs, backend: backend}
+}
+
+func stringVal(s string) types.String { return types.StringValue(s) }
+
+func stringList(items ...string) types.List {
+ vals := make([]attr.Value, 0, len(items))
+ for _, it := range items {
+ vals = append(vals, types.StringValue(it))
+ }
+ return types.ListValueMust(types.StringType, vals)
+}
+
+func boolValTrue() types.Bool { return types.BoolValue(true) }
+func boolValFalse() types.Bool { return types.BoolValue(false) }
diff --git a/internal/provider/fake_server_test.go b/internal/provider/fake_server_test.go
new file mode 100644
index 0000000..94fd1c3
--- /dev/null
+++ b/internal/provider/fake_server_test.go
@@ -0,0 +1,744 @@
+package provider
+
+import (
+ "context"
+ "fmt"
+ "net/http"
+ "net/http/httptest"
+ "sync"
+ "testing"
+
+ "connectrpc.com/connect"
+ "github.com/hashicorp/terraform-plugin-framework/attr"
+ "github.com/hashicorp/terraform-plugin-framework/resource"
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ "github.com/hashicorp/terraform-plugin-go/tftypes"
+
+ apiv1 "github.com/devzero-inc/terraform-provider-devzero/internal/gen/api/v1"
+ apiv1connect "github.com/devzero-inc/terraform-provider-devzero/internal/gen/api/v1/apiv1connect"
+)
+
+// ---------------------------------------------------------------------------
+// Fake backend: an in-memory implementation of the RPCs the provider calls,
+// mimicking the dakr semantics that matter to CRUD correctness (upserts,
+// NotFound codes, target invariants, disabled-on-update rejection, virtual
+// cluster-sourced node policies in list responses).
+// ---------------------------------------------------------------------------
+
+type fakeBackend struct {
+ apiv1connect.UnimplementedK8SRecommendationServiceHandler
+ apiv1connect.UnimplementedK8SServiceHandler
+ apiv1connect.UnimplementedClusterMutationServiceHandler
+
+ mu sync.Mutex
+ nextID int
+ teamID string
+ nodePol map[string]*apiv1.NodePolicy
+ nodeTgt map[string]*apiv1.NodePolicyTarget
+ wp map[string]*apiv1.WorkloadRecommendationPolicy
+ wpt map[string]*apiv1.WorkloadPolicyTarget
+ rules map[string]*apiv1.WorkloadRule
+ clusters map[string]*apiv1.Cluster
+}
+
+func newFakeBackend(teamID string) *fakeBackend {
+ return &fakeBackend{
+ teamID: teamID,
+ nodePol: map[string]*apiv1.NodePolicy{},
+ nodeTgt: map[string]*apiv1.NodePolicyTarget{},
+ wp: map[string]*apiv1.WorkloadRecommendationPolicy{},
+ wpt: map[string]*apiv1.WorkloadPolicyTarget{},
+ rules: map[string]*apiv1.WorkloadRule{},
+ clusters: map[string]*apiv1.Cluster{},
+ }
+}
+
+func (f *fakeBackend) id(prefix string) string {
+ f.nextID++
+ return fmt.Sprintf("%s-%04d", prefix, f.nextID)
+}
+
+// --- node policies ---
+
+func (f *fakeBackend) CreateNodePolicies(_ context.Context, req *connect.Request[apiv1.CreateNodePoliciesRequest]) (*connect.Response[apiv1.CreateNodePoliciesResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ out := make([]*apiv1.NodePolicy, 0, len(req.Msg.Policies))
+ for _, p := range req.Msg.Policies {
+ if p.Id == "" {
+ p.Id = f.id("np")
+ }
+ p.TeamId = req.Msg.TeamId
+ f.nodePol[p.Id] = p
+ out = append(out, p)
+ }
+ return connect.NewResponse(&apiv1.CreateNodePoliciesResponse{Policies: out}), nil
+}
+
+func (f *fakeBackend) ListNodePolicies(_ context.Context, _ *connect.Request[apiv1.ListNodePoliciesRequest]) (*connect.Response[apiv1.ListNodePoliciesResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ resp := &apiv1.ListNodePoliciesResponse{}
+ for _, p := range f.nodePol {
+ resp.Policies = append(resp.Policies, p)
+ }
+ // dakr mixes read-only virtual policies mirrored from non-dakr Karpenter
+ // resources into the list; the provider must skip them.
+ resp.Policies = append(resp.Policies, &apiv1.NodePolicy{
+ Id: "np-virtual-cluster",
+ Name: "cluster-managed",
+ Source: "cluster",
+ })
+ return connect.NewResponse(resp), nil
+}
+
+func (f *fakeBackend) UpdateNodePolicy(_ context.Context, req *connect.Request[apiv1.UpdateNodePolicyRequest]) (*connect.Response[apiv1.UpdateNodePolicyResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ p := req.Msg.Policy
+ if _, ok := f.nodePol[p.Id]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("node policy not found"))
+ }
+ f.nodePol[p.Id] = p
+ return connect.NewResponse(&apiv1.UpdateNodePolicyResponse{Policy: p}), nil
+}
+
+func (f *fakeBackend) DeleteNodePolicy(_ context.Context, req *connect.Request[apiv1.DeleteNodePolicyRequest]) (*connect.Response[apiv1.DeleteNodePolicyResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ if _, ok := f.nodePol[req.Msg.PolicyId]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("resource not found"))
+ }
+ delete(f.nodePol, req.Msg.PolicyId)
+ var deleted int32
+ for id, t := range f.nodeTgt {
+ if t.PolicyId == req.Msg.PolicyId {
+ delete(f.nodeTgt, id)
+ deleted++
+ }
+ }
+ return connect.NewResponse(&apiv1.DeleteNodePolicyResponse{Success: true, DeletedTargetCount: deleted}), nil
+}
+
+// --- node policy targets ---
+
+func (f *fakeBackend) CreateNodePolicyTargets(_ context.Context, req *connect.Request[apiv1.CreateNodePolicyTargetsRequest]) (*connect.Response[apiv1.CreateNodePolicyTargetsResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ out := make([]*apiv1.NodePolicyTarget, 0, len(req.Msg.Targets))
+ for _, t := range req.Msg.Targets {
+ if t.TargetId != "" {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("target_id must be empty on create"))
+ }
+ if len(t.ClusterIds) > 1 {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("node policy target must target at most one cluster"))
+ }
+ t.TargetId = f.id("npt")
+ f.nodeTgt[t.TargetId] = t
+ out = append(out, t)
+ }
+ return connect.NewResponse(&apiv1.CreateNodePolicyTargetsResponse{Targets: out}), nil
+}
+
+func (f *fakeBackend) ListNodePolicyTargets(_ context.Context, _ *connect.Request[apiv1.ListNodePolicyTargetsRequest]) (*connect.Response[apiv1.ListNodePolicyTargetsResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ resp := &apiv1.ListNodePolicyTargetsResponse{}
+ for _, t := range f.nodeTgt {
+ resp.Targets = append(resp.Targets, t)
+ }
+ return connect.NewResponse(resp), nil
+}
+
+func (f *fakeBackend) UpdateNodePolicyTarget(_ context.Context, req *connect.Request[apiv1.UpdateNodePolicyTargetRequest]) (*connect.Response[apiv1.UpdateNodePolicyTargetResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ t := req.Msg.Target
+ if _, ok := f.nodeTgt[t.TargetId]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("target not found"))
+ }
+ if len(t.ClusterIds) > 1 {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("node policy target must target at most one cluster"))
+ }
+ f.nodeTgt[t.TargetId] = t
+ return connect.NewResponse(&apiv1.UpdateNodePolicyTargetResponse{Target: t}), nil
+}
+
+// --- workload policies (v1) ---
+
+func (f *fakeBackend) CreateWorkloadRecommendationPolicy(_ context.Context, req *connect.Request[apiv1.CreateWorkloadRecommendationPolicyRequest]) (*connect.Response[apiv1.CreateWorkloadRecommendationPolicyResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ p := req.Msg.Policy
+ if p == nil {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("policy required"))
+ }
+ p.PolicyId = f.id("wp")
+ p.TeamId = req.Msg.TeamId
+ f.wp[p.PolicyId] = p
+ return connect.NewResponse(&apiv1.CreateWorkloadRecommendationPolicyResponse{Policy: p}), nil
+}
+
+func (f *fakeBackend) GetWorkloadRecommendationPolicy(_ context.Context, req *connect.Request[apiv1.GetWorkloadRecommendationPolicyRequest]) (*connect.Response[apiv1.GetWorkloadRecommendationPolicyResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ p, ok := f.wp[req.Msg.PolicyId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("workload policy not found"))
+ }
+ return connect.NewResponse(&apiv1.GetWorkloadRecommendationPolicyResponse{Policy: p}), nil
+}
+
+func (f *fakeBackend) UpdateWorkloadRecommendationPolicy(_ context.Context, req *connect.Request[apiv1.UpdateWorkloadRecommendationPolicyRequest]) (*connect.Response[apiv1.UpdateWorkloadRecommendationPolicyResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ p := req.Msg.Policy
+ if p == nil {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("policy required"))
+ }
+ if _, ok := f.wp[p.PolicyId]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("workload policy not found"))
+ }
+ f.wp[p.PolicyId] = p
+ return connect.NewResponse(&apiv1.UpdateWorkloadRecommendationPolicyResponse{Policy: p}), nil
+}
+
+func (f *fakeBackend) DeleteWorkloadRecommendationPolicy(_ context.Context, req *connect.Request[apiv1.DeleteWorkloadRecommendationPolicyRequest]) (*connect.Response[apiv1.DeleteWorkloadRecommendationPolicyResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ if _, ok := f.wp[req.Msg.PolicyId]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("workload policy not found"))
+ }
+ delete(f.wp, req.Msg.PolicyId)
+ return connect.NewResponse(&apiv1.DeleteWorkloadRecommendationPolicyResponse{Success: true}), nil
+}
+
+// --- workload policy targets ---
+
+func (f *fakeBackend) CreateWorkloadPolicyTarget(_ context.Context, req *connect.Request[apiv1.CreateWorkloadPolicyTargetRequest]) (*connect.Response[apiv1.CreateWorkloadPolicyTargetResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ if len(req.Msg.ClusterIds) == 0 {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("cluster_ids must name at least one cluster"))
+ }
+ t := &apiv1.WorkloadPolicyTarget{
+ TargetId: f.id("wpt"),
+ PolicyId: req.Msg.PolicyId,
+ TeamId: req.Msg.TeamId,
+ Name: req.Msg.Name,
+ Description: req.Msg.Description,
+ Priority: req.Msg.Priority,
+ Enabled: req.Msg.Enabled,
+ NamespaceSelector: req.Msg.NamespaceSelector,
+ WorkloadSelector: req.Msg.WorkloadSelector,
+ AnnotationSelector: req.Msg.AnnotationSelector,
+ KindFilter: req.Msg.KindFilter,
+ KindFilterNotIn: req.Msg.KindFilterNotIn,
+ NamePattern: req.Msg.NamePattern,
+ NamespacePattern: req.Msg.NamespacePattern,
+ WorkloadNames: req.Msg.WorkloadNames,
+ WorkloadNamesNotIn: req.Msg.WorkloadNamesNotIn,
+ NodeGroupNames: req.Msg.NodeGroupNames, //nolint:staticcheck // deprecated upstream but still round-tripped
+ ClusterIds: req.Msg.ClusterIds,
+ }
+ f.wpt[t.TargetId] = t
+ return connect.NewResponse(&apiv1.CreateWorkloadPolicyTargetResponse{Target: t}), nil
+}
+
+func (f *fakeBackend) GetWorkloadPolicyTarget(_ context.Context, req *connect.Request[apiv1.GetWorkloadPolicyTargetRequest]) (*connect.Response[apiv1.GetWorkloadPolicyTargetResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ t, ok := f.wpt[req.Msg.TargetId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("target not found"))
+ }
+ return connect.NewResponse(&apiv1.GetWorkloadPolicyTargetResponse{Target: t}), nil
+}
+
+func (f *fakeBackend) UpdateWorkloadPolicyTarget(_ context.Context, req *connect.Request[apiv1.UpdateWorkloadPolicyTargetRequest]) (*connect.Response[apiv1.UpdateWorkloadPolicyTargetResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ t, ok := f.wpt[req.Msg.TargetId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("target not found"))
+ }
+ t.Name = req.Msg.Name
+ t.Description = req.Msg.Description
+ t.Priority = req.Msg.Priority
+ t.Enabled = req.Msg.Enabled
+ t.NamespaceSelector = req.Msg.NamespaceSelector
+ t.WorkloadSelector = req.Msg.WorkloadSelector
+ t.AnnotationSelector = req.Msg.AnnotationSelector
+ t.KindFilter = req.Msg.KindFilter
+ t.KindFilterNotIn = req.Msg.KindFilterNotIn
+ t.NamePattern = req.Msg.NamePattern
+ t.NamespacePattern = req.Msg.NamespacePattern
+ t.WorkloadNames = req.Msg.WorkloadNames
+ t.WorkloadNamesNotIn = req.Msg.WorkloadNamesNotIn
+ t.NodeGroupNames = req.Msg.NodeGroupNames //nolint:staticcheck // deprecated upstream but still round-tripped
+ if len(req.Msg.ClusterIds) > 0 {
+ t.ClusterIds = req.Msg.ClusterIds
+ }
+ return connect.NewResponse(&apiv1.UpdateWorkloadPolicyTargetResponse{Target: t}), nil
+}
+
+func (f *fakeBackend) DeleteWorkloadPolicyTarget(_ context.Context, req *connect.Request[apiv1.DeleteWorkloadPolicyTargetRequest]) (*connect.Response[apiv1.DeleteWorkloadPolicyTargetResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ found := false
+ for _, id := range req.Msg.TargetIds {
+ if _, ok := f.wpt[id]; ok {
+ delete(f.wpt, id)
+ found = true
+ }
+ }
+ if !found {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("no workload policy targets found for deletion"))
+ }
+ return connect.NewResponse(&apiv1.DeleteWorkloadPolicyTargetResponse{}), nil
+}
+
+// --- workload rules (v2) ---
+
+func (f *fakeBackend) UpsertManualWorkloadRule(_ context.Context, req *connect.Request[apiv1.UpsertManualWorkloadRuleRequest]) (*connect.Response[apiv1.UpsertManualWorkloadRuleResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ key := req.Msg.ClusterId + "/" + req.Msg.Namespace + "/" + req.Msg.Kind + "/" + req.Msg.Name
+ var existing *apiv1.WorkloadRule
+ for _, r := range f.rules {
+ if r.ClusterId+"/"+r.Namespace+"/"+r.Kind+"/"+r.Name == key {
+ existing = r
+ break
+ }
+ }
+ if existing != nil && req.Msg.Fields != nil && req.Msg.Fields.Disabled != nil {
+ // dakr: fields.disabled cannot be set when updating an existing rule.
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("fields.disabled cannot be set when updating an existing rule; use ToggleWorkloadRuleDisabled instead"))
+ }
+ rule := &apiv1.WorkloadRule{
+ ClusterId: req.Msg.ClusterId,
+ Namespace: req.Msg.Namespace,
+ Kind: req.Msg.Kind,
+ Name: req.Msg.Name,
+ CurrentSource: workloadRuleSourceString(req.Msg.Source),
+ Status: "active",
+ SyncStatus: "pending",
+ Generation: 1,
+ }
+ if existing != nil {
+ rule.RuleId = existing.RuleId
+ rule.Generation = existing.Generation + 1
+ rule.Disabled = existing.Disabled
+ } else {
+ rule.RuleId = f.id("wr")
+ }
+ if fields := req.Msg.Fields; fields != nil {
+ rule.CpuRule = fields.CpuRule
+ rule.MemoryRule = fields.MemoryRule
+ rule.GpuRule = fields.GpuRule
+ rule.HpaRule = fields.HpaRule
+ rule.EmergencyResponse = fields.EmergencyResponse
+ rule.ActionTriggers = fields.ActionTriggers
+ rule.DetectionTriggers = fields.DetectionTriggers
+ rule.SchedulerPlugins = fields.SchedulerPlugins
+ rule.LiveMigrationEnabled = fields.LiveMigrationEnabled
+ rule.UseInPlaceVerticalScaling = fields.UseInPlaceVerticalScaling
+ rule.Containers = fields.Containers
+ rule.LookbackPeriodSeconds = fields.LookbackPeriodSeconds
+ rule.StartupPeriodSeconds = fields.StartupPeriodSeconds
+ rule.CronSchedule = fields.CronSchedule
+ rule.CooldownMinutes = fields.CooldownMinutes
+ rule.DefragmentationSchedule = fields.DefragmentationSchedule
+ if fields.Disabled != nil {
+ rule.Disabled = *fields.Disabled
+ }
+ }
+ f.rules[rule.RuleId] = rule
+ return connect.NewResponse(&apiv1.UpsertManualWorkloadRuleResponse{Rule: rule}), nil
+}
+
+func workloadRuleSourceString(s apiv1.WorkloadRuleSource) string {
+ switch s {
+ case apiv1.WorkloadRuleSource_WORKLOAD_RULE_SOURCE_TERRAFORM_AUTO:
+ return "terraform_auto"
+ case apiv1.WorkloadRuleSource_WORKLOAD_RULE_SOURCE_TERRAFORM_MANUAL:
+ return "terraform_manual"
+ default:
+ return "manual"
+ }
+}
+
+func (f *fakeBackend) GetWorkloadRuleByID(_ context.Context, req *connect.Request[apiv1.GetWorkloadRuleByIDRequest]) (*connect.Response[apiv1.GetWorkloadRuleByIDResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ r, ok := f.rules[req.Msg.RuleId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("workload rule not found"))
+ }
+ return connect.NewResponse(&apiv1.GetWorkloadRuleByIDResponse{Rule: r}), nil
+}
+
+func (f *fakeBackend) DeleteWorkloadRule(_ context.Context, req *connect.Request[apiv1.DeleteWorkloadRuleRequest]) (*connect.Response[apiv1.DeleteWorkloadRuleResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ if _, ok := f.rules[req.Msg.RuleId]; !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("workload rule not found"))
+ }
+ delete(f.rules, req.Msg.RuleId)
+ return connect.NewResponse(&apiv1.DeleteWorkloadRuleResponse{}), nil
+}
+
+func (f *fakeBackend) ToggleWorkloadRuleDisabled(_ context.Context, req *connect.Request[apiv1.ToggleWorkloadRuleDisabledRequest]) (*connect.Response[apiv1.ToggleWorkloadRuleDisabledResponse], error) {
+ f.mu.Lock()
+ defer f.mu.Unlock()
+ r, ok := f.rules[req.Msg.RuleId]
+ if !ok {
+ return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("workload rule not found"))
+ }
+ r.Disabled = req.Msg.Disabled
+ return connect.NewResponse(&apiv1.ToggleWorkloadRuleDisabledResponse{Rule: r}), nil
+}
+
+// ---------------------------------------------------------------------------
+// Harness plumbing
+// ---------------------------------------------------------------------------
+
+func newFakeClientSet(t *testing.T) (*ClientSet, *fakeBackend) {
+ t.Helper()
+ fake := newFakeBackend("team-1")
+ mux := http.NewServeMux()
+ mux.Handle(apiv1connect.NewK8SRecommendationServiceHandler(fake))
+ mux.Handle(apiv1connect.NewK8SServiceHandler(fake))
+ mux.Handle(apiv1connect.NewClusterMutationServiceHandler(fake))
+ srv := httptest.NewServer(mux)
+ t.Cleanup(srv.Close)
+ return &ClientSet{
+ TeamId: "team-1",
+ ClusterMutationClient: apiv1connect.NewClusterMutationServiceClient(srv.Client(), srv.URL),
+ K8SServiceClient: apiv1connect.NewK8SServiceClient(srv.Client(), srv.URL),
+ RecommendationClient: apiv1connect.NewK8SRecommendationServiceClient(srv.Client(), srv.URL),
+ }, fake
+}
+
+// buildPlan encodes a model into a tfsdk.Plan against the resource's schema.
+// The model is first hydrated from an all-null plan so every types.List/Map/
+// Object field carries its proper element type (a zero types.List fails the
+// framework's type verification).
+func buildPlan[M any](t *testing.T, res resource.Resource, mutate func(*M)) tfsdk.Plan {
+ t.Helper()
+ ctx := context.Background()
+ var schemaResp resource.SchemaResponse
+ res.Schema(ctx, resource.SchemaRequest{}, &schemaResp)
+ if schemaResp.Diagnostics.HasError() {
+ t.Fatalf("schema: %v", schemaResp.Diagnostics)
+ }
+ objType, ok := schemaResp.Schema.Type().TerraformType(ctx).(tftypes.Object)
+ if !ok {
+ t.Fatal("schema type is not an object")
+ }
+ nulls := make(map[string]tftypes.Value, len(objType.AttributeTypes))
+ for name, at := range objType.AttributeTypes {
+ nulls[name] = tftypes.NewValue(at, nil)
+ }
+ plan := tfsdk.Plan{Schema: schemaResp.Schema, Raw: tftypes.NewValue(objType, nulls)}
+
+ var model M
+ if d := plan.Get(ctx, &model); d.HasError() {
+ t.Fatalf("plan.Get (hydrate): %v", d)
+ }
+ mutate(&model)
+ if d := plan.Set(ctx, &model); d.HasError() {
+ t.Fatalf("plan.Set: %v", d)
+ }
+ return plan
+}
+
+// hydrateNested populates target (a pointer to a nested tfsdk struct) from a
+// null object of the named top-level attribute's type, so all its typed
+// null fields (types.List/Map/Object) carry their element types.
+func hydrateNested(t *testing.T, res resource.Resource, attrName string, target any) {
+ t.Helper()
+ ctx := context.Background()
+ var schemaResp resource.SchemaResponse
+ res.Schema(ctx, resource.SchemaRequest{}, &schemaResp)
+ objType, okObj := schemaResp.Schema.Type().TerraformType(ctx).(tftypes.Object)
+ if !okObj {
+ t.Fatal("schema type is not an object")
+ }
+ at, ok := objType.AttributeTypes[attrName]
+ if !ok {
+ t.Fatalf("attribute %q not in schema", attrName)
+ }
+ attrType, err := schemaResp.Schema.TypeAtTerraformPath(ctx, tftypes.NewAttributePath().WithAttributeName(attrName))
+ if err != nil {
+ t.Fatalf("type at path %q: %v", attrName, err)
+ }
+ obj, ok := at.(tftypes.Object)
+ if !ok {
+ t.Fatalf("attribute %q is not an object", attrName)
+ }
+ nulls := make(map[string]tftypes.Value, len(obj.AttributeTypes))
+ for name, nt := range obj.AttributeTypes {
+ nulls[name] = tftypes.NewValue(nt, nil)
+ }
+ val, err := attrType.ValueFromTerraform(ctx, tftypes.NewValue(obj, nulls))
+ if err != nil {
+ t.Fatalf("value from terraform: %v", err)
+ }
+ if d := tfsdk.ValueAs(ctx, val, target); d.HasError() {
+ t.Fatalf("ValueAs: %v", d)
+ }
+}
+
+func emptyState(t *testing.T, res resource.Resource) tfsdk.State {
+ t.Helper()
+ ctx := context.Background()
+ var schemaResp resource.SchemaResponse
+ res.Schema(ctx, resource.SchemaRequest{}, &schemaResp)
+ objType := schemaResp.Schema.Type().TerraformType(ctx)
+ return tfsdk.State{Schema: schemaResp.Schema, Raw: tftypes.NewValue(objType, nil)}
+}
+
+func mustNoDiags(t *testing.T, what string, d interface{ HasError() bool }) {
+ t.Helper()
+ if d.HasError() {
+ t.Fatalf("%s failed: %+v", what, d)
+ }
+}
+
+// ---------------------------------------------------------------------------
+// Lifecycle tests
+// ---------------------------------------------------------------------------
+
+func TestLifecycle_NodePolicy(t *testing.T) {
+ ctx := context.Background()
+ cs, fake := newFakeClientSet(t)
+ r := &NodePolicyResource{client: cs}
+
+ mutate := func(m *NodePolicyResourceModel) {
+ m.Name = types.StringValue("azure-pool")
+ m.Description = types.StringValue("desc")
+ azure := &AzureNodeClass{}
+ hydrateNested(t, r, "azure", azure)
+ azure.VnetSubnetId = types.StringValue("/subscriptions/x/subnet/y")
+ m.Azure = azure
+ }
+
+ // Create
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[NodePolicyResourceModel](t, r, mutate)}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+
+ var created NodePolicyResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+ if created.Id.ValueString() == "" {
+ t.Fatal("expected id after create")
+ }
+ if created.Azure == nil || created.Azure.VnetSubnetId.ValueString() != "/subscriptions/x/subnet/y" {
+ t.Fatalf("azure block not round-tripped: %+v", created.Azure)
+ }
+
+ // Read refreshes from the API and must skip the virtual source=="cluster" policy.
+ readResp := resource.ReadResponse{State: createResp.State}
+ r.Read(ctx, resource.ReadRequest{State: createResp.State}, &readResp)
+ mustNoDiags(t, "Read", readResp.Diagnostics)
+
+ // Out-of-band deletion drops the resource from state instead of erroring.
+ fake.mu.Lock()
+ delete(fake.nodePol, created.Id.ValueString())
+ fake.mu.Unlock()
+ readGone := resource.ReadResponse{State: createResp.State}
+ r.Read(ctx, resource.ReadRequest{State: createResp.State}, &readGone)
+ mustNoDiags(t, "Read after out-of-band delete", readGone.Diagnostics)
+ if !readGone.State.Raw.IsNull() {
+ t.Fatal("expected state to be removed after out-of-band delete")
+ }
+
+ // Recreate, then Delete must call the API (policy actually disappears) and
+ // a second Delete must tolerate NotFound.
+ createResp = resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[NodePolicyResourceModel](t, r, mutate)}, &createResp)
+ mustNoDiags(t, "re-Create", createResp.Diagnostics)
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+
+ delResp := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: createResp.State}, &delResp)
+ mustNoDiags(t, "Delete", delResp.Diagnostics)
+ fake.mu.Lock()
+ _, still := fake.nodePol[created.Id.ValueString()]
+ fake.mu.Unlock()
+ if still {
+ t.Fatal("Delete did not remove the policy from the backend")
+ }
+ delAgain := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: createResp.State}, &delAgain)
+ mustNoDiags(t, "Delete (already gone)", delAgain.Diagnostics)
+}
+
+func TestLifecycle_NodePolicyTarget(t *testing.T) {
+ ctx := context.Background()
+ cs, fake := newFakeClientSet(t)
+ r := &NodePolicyTargetResource{client: cs}
+
+ mutate := func(m *NodePolicyTargetResourceModel) {
+ m.Name = types.StringValue("target-1")
+ m.PolicyId = types.StringValue("np-0001")
+ m.Enabled = types.BoolValue(true)
+ m.ClusterIds = types.ListValueMust(types.StringType, []attr.Value{types.StringValue("cluster-1")})
+ }
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[NodePolicyTargetResourceModel](t, r, mutate)}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+
+ var created NodePolicyTargetResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+ if created.Id.ValueString() == "" {
+ t.Fatal("expected target id")
+ }
+
+ // Destroy must disable the target (no delete RPC exists).
+ delResp := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: createResp.State}, &delResp)
+ mustNoDiags(t, "Delete", delResp.Diagnostics)
+ fake.mu.Lock()
+ tgt := fake.nodeTgt[created.Id.ValueString()]
+ fake.mu.Unlock()
+ if tgt == nil {
+ t.Fatal("target should still exist backend-side (no delete RPC)")
+ }
+ if tgt.Enabled {
+ t.Fatal("Delete must disable the target")
+ }
+}
+
+func TestLifecycle_WorkloadPolicy(t *testing.T) {
+ ctx := context.Background()
+ cs, fake := newFakeClientSet(t)
+ r := &WorkloadPolicyResource{client: cs}
+
+ mutate := func(m *WorkloadPolicyResourceModel) {
+ m.Name = types.StringValue("policy-1")
+ m.EnableInPlaceVerticalScaling = types.BoolValue(true)
+ cpu := &VerticalScalingOptions{}
+ hydrateNested(t, r, "cpu_vertical_scaling", cpu)
+ cpu.Enabled = types.BoolValue(true)
+ cpu.MinRequest = types.Int64Value(10)
+ m.CPUVerticalScaling = cpu
+ }
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[WorkloadPolicyResourceModel](t, r, mutate)}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+ var created WorkloadPolicyResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+
+ // Read after out-of-band delete removes from state.
+ fake.mu.Lock()
+ delete(fake.wp, created.Id.ValueString())
+ fake.mu.Unlock()
+ readGone := resource.ReadResponse{State: createResp.State}
+ r.Read(ctx, resource.ReadRequest{State: createResp.State}, &readGone)
+ mustNoDiags(t, "Read after out-of-band delete", readGone.Diagnostics)
+ if !readGone.State.Raw.IsNull() {
+ t.Fatal("expected state removal")
+ }
+
+ // allow_in_place_memory_limit_decrease without in-place scaling is rejected client-side.
+ badResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[WorkloadPolicyResourceModel](t, r, func(m *WorkloadPolicyResourceModel) {
+ m.Name = types.StringValue("bad")
+ m.AllowInPlaceMemoryLimitDecrease = types.BoolValue(true)
+ m.EnableInPlaceVerticalScaling = types.BoolValue(false)
+ })}, &badResp)
+ if !badResp.Diagnostics.HasError() {
+ t.Fatal("expected validation error for allow_in_place_memory_limit_decrease without enable_in_place_vertical_scaling")
+ }
+}
+
+func TestLifecycle_WorkloadRule(t *testing.T) {
+ ctx := context.Background()
+ cs, fake := newFakeClientSet(t)
+ r := &WorkloadRuleResource{client: cs}
+
+ mutate := func(m *WorkloadRuleResourceModel) {
+ m.ClusterId = types.StringValue("cluster-1")
+ m.Namespace = types.StringValue("prod")
+ m.Kind = types.StringValue("Deployment")
+ m.Name = types.StringValue("api")
+ m.Disabled = types.BoolValue(false)
+ cpu := &ResourceRuleConfigModel{}
+ hydrateNested(t, r, "cpu_rule", cpu)
+ cpu.Enabled = types.BoolValue(true)
+ cpu.MinRequest = types.Int64Value(10)
+ m.CpuRule = cpu
+ }
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[WorkloadRuleResourceModel](t, r, mutate)}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+ var created WorkloadRuleResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+ if created.Id.ValueString() == "" {
+ t.Fatal("expected rule id")
+ }
+
+ // Update flipping `disabled` must go through the toggle RPC, not the upsert
+ // (the fake rejects fields.disabled on update, mirroring dakr).
+ updatePlan := buildPlan[WorkloadRuleResourceModel](t, r, func(m *WorkloadRuleResourceModel) {
+ mutate(m)
+ m.Id = created.Id
+ m.Disabled = types.BoolValue(true)
+ })
+ updResp := resource.UpdateResponse{State: createResp.State}
+ r.Update(ctx, resource.UpdateRequest{Plan: updatePlan, State: createResp.State}, &updResp)
+ mustNoDiags(t, "Update", updResp.Diagnostics)
+ fake.mu.Lock()
+ rule := fake.rules[created.Id.ValueString()]
+ fake.mu.Unlock()
+ if rule == nil || !rule.Disabled {
+ t.Fatalf("expected rule to be disabled via toggle RPC, got %+v", rule)
+ }
+
+ // Delete + idempotent delete.
+ delResp := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: updResp.State}, &delResp)
+ mustNoDiags(t, "Delete", delResp.Diagnostics)
+ delAgain := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: updResp.State}, &delAgain)
+ mustNoDiags(t, "Delete (already gone)", delAgain.Diagnostics)
+}
+
+func TestLifecycle_WorkloadPolicyTarget(t *testing.T) {
+ ctx := context.Background()
+ cs, _ := newFakeClientSet(t)
+ r := &WorkloadPolicyTargetResource{client: cs}
+
+ mutate := func(m *WorkloadPolicyTargetResourceModel) {
+ m.Name = types.StringValue("t1")
+ m.PolicyId = types.StringValue("wp-0001")
+ m.Enabled = types.BoolValue(true)
+ m.ClusterIds = types.ListValueMust(types.StringType, []attr.Value{types.StringValue("c1")})
+ m.NamePattern = &RegexPattern{
+ Pattern: types.StringValue("^api-"),
+ Flags: types.StringNull(), // omitted: must round-trip as null, not "".
+ }
+ }
+
+ createResp := resource.CreateResponse{State: emptyState(t, r)}
+ r.Create(ctx, resource.CreateRequest{Plan: buildPlan[WorkloadPolicyTargetResourceModel](t, r, mutate)}, &createResp)
+ mustNoDiags(t, "Create", createResp.Diagnostics)
+ var created WorkloadPolicyTargetResourceModel
+ mustNoDiags(t, "State.Get", createResp.State.Get(ctx, &created))
+ if created.NamePattern == nil || !created.NamePattern.Flags.IsNull() {
+ t.Fatalf("expected null flags after round-trip, got %+v", created.NamePattern)
+ }
+
+ delResp := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: createResp.State}, &delResp)
+ mustNoDiags(t, "Delete", delResp.Diagnostics)
+ delAgain := resource.DeleteResponse{}
+ r.Delete(ctx, resource.DeleteRequest{State: createResp.State}, &delAgain)
+ mustNoDiags(t, "Delete (already gone)", delAgain.Diagnostics)
+}
diff --git a/internal/provider/node_policy.go b/internal/provider/node_policy.go
index f4428f1..49508ab 100644
--- a/internal/provider/node_policy.go
+++ b/internal/provider/node_policy.go
@@ -66,7 +66,8 @@ type NodePolicyResourceModel struct {
CapacityTypeTip types.String `tfsdk:"capacity_type_tip"`
OperatingSystemsTip types.String `tfsdk:"operating_systems_tip"`
Labels types.Map `tfsdk:"labels"`
- Taints types.List `tfsdk:"taints"` // List of Taint objects
+ Taints types.List `tfsdk:"taints"` // List of Taint objects
+ StartupTaints types.List `tfsdk:"startup_taints"` // List of Taint objects
Disruption *DisruptionPolicy `tfsdk:"disruption"`
Limits *ResourceLimits `tfsdk:"limits"`
TaintsTip types.String `tfsdk:"taints_tip"`
@@ -77,6 +78,9 @@ type NodePolicyResourceModel struct {
NodeClassName types.String `tfsdk:"node_class_name"`
Aws *AWSNodeClass `tfsdk:"aws"`
Azure *AzureNodeClass `tfsdk:"azure"`
+ ZonalShift *ZonalShiftConfig `tfsdk:"zonal_shift"`
+ InstanceLocalNvme *LabelSelector `tfsdk:"instance_local_nvme"`
+ CloudProviderId types.Int64 `tfsdk:"cloud_provider_id"`
Raw types.List `tfsdk:"raw"` // List of RawKarpenterSpec objects
}
@@ -87,6 +91,13 @@ type Taint struct {
Effect types.String `tfsdk:"effect"`
}
+// ZonalShiftConfig configures behavior during an AWS ARC zonal shift (AWS only).
+type ZonalShiftConfig struct {
+ RespectZonalShift types.Bool `tfsdk:"respect_zonal_shift"`
+ EvictImpactedNodes types.Bool `tfsdk:"evict_impacted_nodes"`
+ AllowZoneFallback types.Bool `tfsdk:"allow_zone_fallback"`
+}
+
// DisruptionPolicy defines node disruption policy.
type DisruptionPolicy struct {
ConsolidateAfter types.String `tfsdk:"consolidate_after"`
@@ -178,6 +189,7 @@ type AzureNodeClass struct {
Tags types.Map `tfsdk:"tags"`
Kubelet *AzureKubeletConfiguration `tfsdk:"kubelet"`
MaxPods types.Int32 `tfsdk:"max_pods"`
+ ImageVersion types.String `tfsdk:"image_version"`
}
// RawKarpenterSpec defines raw Karpenter YAML specs.
@@ -276,6 +288,59 @@ func (r *NodePolicyResource) Schema(ctx context.Context, req resource.SchemaRequ
},
},
},
+ "startup_taints": schema.ListNestedAttribute{
+ Description: "Taints applied to nodes only during startup",
+ MarkdownDescription: "List of Kubernetes taints applied to nodes only while they start up (Karpenter `startupTaints`). Removed once the node is ready.",
+ Optional: true,
+ NestedObject: schema.NestedAttributeObject{
+ Attributes: map[string]schema.Attribute{
+ "key": schema.StringAttribute{
+ Description: "Taint key",
+ Required: true,
+ },
+ "value": schema.StringAttribute{
+ Description: "Taint value",
+ Required: true,
+ },
+ "effect": schema.StringAttribute{
+ Description: "Taint effect (NoSchedule, PreferNoSchedule, NoExecute)",
+ MarkdownDescription: "Taint effect. Valid values: `NoSchedule`, `PreferNoSchedule`, `NoExecute`.",
+ Required: true,
+ },
+ },
+ },
+ },
+ "zonal_shift": schema.SingleNestedAttribute{
+ Description: "AWS ARC zonal shift behavior (AWS only)",
+ MarkdownDescription: "Behavior during an AWS ARC zonal shift. AWS only — silently ignored for other clouds.",
+ Optional: true,
+ Attributes: map[string]schema.Attribute{
+ "respect_zonal_shift": schema.BoolAttribute{
+ Description: "Master opt-in. When false the other fields are ignored",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "evict_impacted_nodes": schema.BoolAttribute{
+ Description: "Also terminate existing nodes in the impacted zone (respects PDBs)",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "allow_zone_fallback": schema.BoolAttribute{
+ Description: "Expand a single-zone policy to other zones when its zone is impacted",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ },
+ },
+ "instance_local_nvme": labelSelectorAttribute("Ephemeral NVMe storage per node in GiB (AWS only; karpenter.k8s.aws/instance-local-nvme)"),
+ "cloud_provider_id": schema.Int64Attribute{
+ Description: "Cloud provider ID this policy is intended for (informational)",
+ MarkdownDescription: "Cloud provider ID this policy is intended for: `1` = AWS, `2` = Azure, `3` = GCP, `4` = OCI. Informational/UI filter — compilation always uses the target cluster's provider.",
+ Optional: true,
+ },
"disruption": schema.SingleNestedAttribute{
Description: "Node disruption policy configuration",
MarkdownDescription: "Configuration for node disruption policies including consolidation and expiration settings.",
@@ -581,6 +646,94 @@ func (r *NodePolicyResource) Schema(ctx context.Context, req resource.SchemaRequ
},
},
},
+ "capacity_reservation_selector_terms": schema.ListNestedAttribute{
+ Description: "Capacity reservation selector terms",
+ MarkdownDescription: "Selects EC2 Capacity Reservations that nodes launched by this policy may use. Terms are ORed; criteria within a term are ANDed.",
+ Optional: true,
+ NestedObject: schema.NestedAttributeObject{
+ Attributes: map[string]schema.Attribute{
+ "id": schema.StringAttribute{
+ Description: "Capacity reservation ID",
+ Optional: true,
+ },
+ "owner_id": schema.StringAttribute{
+ Description: "AWS account ID that owns the capacity reservation",
+ Optional: true,
+ },
+ "tags": schema.MapAttribute{
+ Description: "Tags to match on the capacity reservation",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ },
+ },
+ },
+ "kubelet": schema.SingleNestedAttribute{
+ Description: "Kubelet configuration overrides",
+ MarkdownDescription: "Kubelet configuration overrides applied to nodes launched by this policy (maps to the EC2NodeClass `spec.kubelet` block).",
+ Optional: true,
+ Attributes: map[string]schema.Attribute{
+ "cluster_dns": schema.ListAttribute{
+ Description: "Cluster DNS server IPs",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "max_pods": schema.Int32Attribute{
+ Description: "Maximum number of pods per node",
+ Optional: true,
+ },
+ "pods_per_core": schema.Int32Attribute{
+ Description: "Maximum pods per CPU core",
+ Optional: true,
+ },
+ "system_reserved": schema.MapAttribute{
+ Description: "Resources reserved for system daemons (e.g. cpu, memory, ephemeral-storage)",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "kube_reserved": schema.MapAttribute{
+ Description: "Resources reserved for Kubernetes system daemons",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "eviction_hard": schema.MapAttribute{
+ Description: "Hard eviction thresholds (e.g. memory.available = 100Mi)",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "eviction_soft": schema.MapAttribute{
+ Description: "Soft eviction thresholds",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "eviction_soft_grace_period": schema.MapAttribute{
+ Description: "Grace periods for soft eviction thresholds",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "eviction_max_pod_grace_period": schema.Int32Attribute{
+ Description: "Maximum pod termination grace period (seconds) used on soft eviction",
+ Optional: true,
+ },
+ "image_gc_high_threshold_percent": schema.Int32Attribute{
+ Description: "Disk usage percentage above which image garbage collection runs",
+ Optional: true,
+ },
+ "image_gc_low_threshold_percent": schema.Int32Attribute{
+ Description: "Disk usage percentage below which image garbage collection stops",
+ Optional: true,
+ },
+ "cpu_cfs_quota": schema.BoolAttribute{
+ Description: "Enable CPU CFS quota enforcement for containers that specify CPU limits",
+ Optional: true,
+ },
+ },
+ },
+ "context": schema.StringAttribute{
+ Description: "EC2 Fleet context (reserved for AWS use)",
+ MarkdownDescription: "Context passed through to EC2 Fleet launches (`spec.context` on the EC2NodeClass). Reserved for use by AWS.",
+ Optional: true,
+ },
},
},
// Azure provider configuration
@@ -616,6 +769,61 @@ func (r *NodePolicyResource) Schema(ctx context.Context, req resource.SchemaRequ
Description: "Maximum number of pods per node",
Optional: true,
},
+ "image_version": schema.StringAttribute{
+ Description: "Pinned node image version",
+ MarkdownDescription: "Pinned node image version. Requires the DevZero node operator >= 1.8.4.",
+ Optional: true,
+ },
+ "kubelet": schema.SingleNestedAttribute{
+ Description: "Kubelet configuration overrides",
+ MarkdownDescription: "Kubelet configuration overrides applied to nodes launched by this policy (maps to the AKSNodeClass `spec.kubelet` block).",
+ Optional: true,
+ Attributes: map[string]schema.Attribute{
+ "cpu_manager_policy": schema.StringAttribute{
+ Description: "CPU manager policy (none, static)",
+ MarkdownDescription: "CPU manager policy. Valid values: `none`, `static`.",
+ Optional: true,
+ },
+ "cpu_cfs_quota": schema.BoolAttribute{
+ Description: "Enable CPU CFS quota enforcement for containers that specify CPU limits",
+ Optional: true,
+ },
+ "cpu_cfs_quota_period": schema.StringAttribute{
+ Description: "CPU CFS quota period (e.g. 100ms)",
+ Optional: true,
+ },
+ "image_gc_high_threshold_percent": schema.Int32Attribute{
+ Description: "Disk usage percentage above which image garbage collection runs",
+ Optional: true,
+ },
+ "image_gc_low_threshold_percent": schema.Int32Attribute{
+ Description: "Disk usage percentage below which image garbage collection stops",
+ Optional: true,
+ },
+ "topology_manager_policy": schema.StringAttribute{
+ Description: "Topology manager policy (none, best-effort, restricted, single-numa-node)",
+ MarkdownDescription: "Topology manager policy. Valid values: `none`, `best-effort`, `restricted`, `single-numa-node`.",
+ Optional: true,
+ },
+ "allowed_unsafe_sysctls": schema.ListAttribute{
+ Description: "Unsafe sysctls or sysctl patterns allowed on the node",
+ Optional: true,
+ ElementType: types.StringType,
+ },
+ "container_log_max_size": schema.StringAttribute{
+ Description: "Maximum size of a container log file before rotation (e.g. 50Mi)",
+ Optional: true,
+ },
+ "container_log_max_files": schema.Int32Attribute{
+ Description: "Maximum number of container log files retained per container",
+ Optional: true,
+ },
+ "pod_pids_limit": schema.Int64Attribute{
+ Description: "Maximum number of PIDs per pod",
+ Optional: true,
+ },
+ },
+ },
},
},
// Raw Karpenter specs
@@ -768,9 +976,14 @@ func (r *NodePolicyResource) Read(ctx context.Context, req resource.ReadRequest,
return
}
- // Find the policy with matching ID
+ // Find the policy with matching ID. ListNodePolicies also returns read-only
+ // virtual policies mirrored from non-dakr Karpenter resources (source ==
+ // "cluster"); those are never managed by Terraform, so skip them.
var foundPolicy *apiv1.NodePolicy
for _, policy := range listNodePoliciesResp.Msg.Policies {
+ if policy.Source != "" && policy.Source != "dakr" {
+ continue
+ }
if policy.Id == data.Id.ValueString() {
foundPolicy = policy
break
@@ -778,7 +991,8 @@ func (r *NodePolicyResource) Read(ctx context.Context, req resource.ReadRequest,
}
if foundPolicy == nil {
- resp.Diagnostics.AddError("Client Error", "Node policy not found")
+ // Deleted out of band — drop it from state so the plan recreates it.
+ resp.State.RemoveResource(ctx)
return
}
@@ -834,10 +1048,20 @@ func (r *NodePolicyResource) Delete(ctx context.Context, req resource.DeleteRequ
return
}
- // No-op delete: just remove from state
- // The API doesn't provide a delete endpoint, so we just remove it from Terraform state
- // The policy will remain in the backend
- tflog.Warn(ctx, "Node policy delete is a no-op operation. The policy will remain in the backend.")
+ _, err := r.client.RecommendationClient.DeleteNodePolicy(ctx, connect.NewRequest(&apiv1.DeleteNodePolicyRequest{
+ TeamId: r.client.TeamId,
+ PolicyId: data.Id.ValueString(),
+ }))
+ if err != nil {
+ if connect.CodeOf(err) == connect.CodeNotFound {
+ // Already gone — treat delete as successful.
+ return
+ }
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to delete node policy, got error: %s", err))
+ return
+ }
+
+ tflog.Trace(ctx, "deleted node policy (targets are cascade-deleted server-side)")
}
func (r *NodePolicyResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
@@ -1016,6 +1240,44 @@ func (m *NodePolicyResourceModel) toProto(ctx context.Context, diags *diag.Diagn
policy.Taints = taints
}
+ // Startup taints
+ if !m.StartupTaints.IsNull() && !m.StartupTaints.IsUnknown() {
+ startupTaints, err := getElementList(ctx, m.StartupTaints.Elements(), func(ctx context.Context, value Taint) (*apiv1.Taint, error) {
+ return &apiv1.Taint{
+ Key: value.Key.ValueString(),
+ Value: value.Value.ValueString(),
+ Effect: value.Effect.ValueString(),
+ }, nil
+ })
+ if err != nil {
+ diags.AddError("Conversion Error", fmt.Sprintf("Unable to convert startup taints: %s", err))
+ return nil
+ }
+ policy.StartupTaints = startupTaints
+ }
+
+ // Zonal shift (AWS only)
+ if m.ZonalShift != nil {
+ policy.ZonalShift = &apiv1.ZonalShiftConfig{
+ RespectZonalShift: m.ZonalShift.RespectZonalShift.ValueBool(),
+ EvictImpactedNodes: m.ZonalShift.EvictImpactedNodes.ValueBool(),
+ AllowZoneFallback: m.ZonalShift.AllowZoneFallback.ValueBool(),
+ }
+ }
+
+ // Instance local NVMe selector (AWS only)
+ if m.InstanceLocalNvme != nil {
+ selector, err := m.InstanceLocalNvme.toProto(ctx)
+ if err != nil {
+ diags.AddError("Conversion Error", fmt.Sprintf("Unable to convert instance local NVMe selector: %s", err))
+ return nil
+ }
+ policy.InstanceLocalNvme = selector
+ }
+
+ // Cloud provider id (informational)
+ policy.CloudProviderId = m.CloudProviderId.ValueInt64Pointer()
+
// Disruption policy
if m.Disruption != nil {
policy.Disruption = m.Disruption.toProto(ctx, diags)
@@ -1077,6 +1339,30 @@ func (m *NodePolicyResourceModel) toProto(ctx context.Context, diags *diag.Diagn
}
// fromProto converts protobuf message to Terraform model.
+// taintAttrTypes is the Terraform object shape shared by taints and startup_taints.
+var taintAttrTypes = map[string]attr.Type{
+ "key": types.StringType,
+ "value": types.StringType,
+ "effect": types.StringType,
+}
+
+// taintListFromProto converts API taints into the Terraform list value, or a
+// typed null when the list is empty.
+func taintListFromProto(taints []*apiv1.Taint) types.List {
+ if len(taints) == 0 {
+ return types.ListNull(types.ObjectType{AttrTypes: taintAttrTypes})
+ }
+ values := make([]attr.Value, 0, len(taints))
+ for _, taint := range taints {
+ values = append(values, types.ObjectValueMust(taintAttrTypes, map[string]attr.Value{
+ "key": types.StringValue(taint.Key),
+ "value": types.StringValue(taint.Value),
+ "effect": types.StringValue(taint.Effect),
+ }))
+ }
+ return types.ListValueMust(types.ObjectType{AttrTypes: taintAttrTypes}, values)
+}
+
func (m *NodePolicyResourceModel) fromProto(policy *apiv1.NodePolicy) {
m.Id = types.StringValue(policy.Id)
m.Name = types.StringValue(policy.Name)
@@ -1142,41 +1428,7 @@ func (m *NodePolicyResourceModel) fromProto(policy *apiv1.NodePolicy) {
}
// Taints
- if len(policy.Taints) > 0 {
- taints := make([]attr.Value, 0, len(policy.Taints))
- for _, taint := range policy.Taints {
- taints = append(taints, types.ObjectValueMust(
- map[string]attr.Type{
- "key": types.StringType,
- "value": types.StringType,
- "effect": types.StringType,
- },
- map[string]attr.Value{
- "key": types.StringValue(taint.Key),
- "value": types.StringValue(taint.Value),
- "effect": types.StringValue(taint.Effect),
- },
- ))
- }
- m.Taints = types.ListValueMust(
- types.ObjectType{
- AttrTypes: map[string]attr.Type{
- "key": types.StringType,
- "value": types.StringType,
- "effect": types.StringType,
- },
- },
- taints,
- )
- } else {
- m.Taints = types.ListNull(types.ObjectType{
- AttrTypes: map[string]attr.Type{
- "key": types.StringType,
- "value": types.StringType,
- "effect": types.StringType,
- },
- })
- }
+ m.Taints = taintListFromProto(policy.Taints)
// Disruption policy
if policy.Disruption != nil {
@@ -1192,6 +1444,29 @@ func (m *NodePolicyResourceModel) fromProto(policy *apiv1.NodePolicy) {
}
// Tooltip fields for node config
+ // Startup taints
+ m.StartupTaints = taintListFromProto(policy.StartupTaints)
+
+ // Zonal shift
+ if policy.ZonalShift != nil {
+ m.ZonalShift = &ZonalShiftConfig{
+ RespectZonalShift: types.BoolValue(policy.ZonalShift.RespectZonalShift),
+ EvictImpactedNodes: types.BoolValue(policy.ZonalShift.EvictImpactedNodes),
+ AllowZoneFallback: types.BoolValue(policy.ZonalShift.AllowZoneFallback),
+ }
+ } else {
+ m.ZonalShift = nil
+ }
+
+ // Instance local NVMe selector
+ if policy.InstanceLocalNvme != nil {
+ m.InstanceLocalNvme = labelSelectorFromProto(policy.InstanceLocalNvme)
+ } else {
+ m.InstanceLocalNvme = nil
+ }
+
+ m.CloudProviderId = types.Int64PointerValue(policy.CloudProviderId)
+
m.TaintsTip = stringPointerValue(policy.TaintsTip)
m.DisruptionsTip = stringPointerValue(policy.DisruptionsTip)
m.LimitsTip = stringPointerValue(policy.LimitsTip)
@@ -2201,6 +2476,11 @@ func (azure *AzureNodeClass) toProto(ctx context.Context, diags *diag.Diagnostic
spec.MaxPods = &val
}
+ if !azure.ImageVersion.IsNull() {
+ val := azure.ImageVersion.ValueString()
+ spec.ImageVersion = &val
+ }
+
if azure.Kubelet != nil {
k := &apiv1.AzureKubeletConfiguration{}
if !azure.Kubelet.CpuManagerPolicy.IsNull() {
@@ -2317,6 +2597,8 @@ func azureNodeClassFromProto(spec *apiv1.AzureNodeClassSpec) *AzureNodeClass {
azure.MaxPods = types.Int32Null()
}
+ azure.ImageVersion = stringPointerValue(spec.ImageVersion)
+
if spec.Kubelet != nil {
k := &AzureKubeletConfiguration{}
k.CpuManagerPolicy = stringPointerValue(spec.Kubelet.CpuManagerPolicy)
diff --git a/internal/provider/node_policy_decode_test.go b/internal/provider/node_policy_decode_test.go
new file mode 100644
index 0000000..4fc0891
--- /dev/null
+++ b/internal/provider/node_policy_decode_test.go
@@ -0,0 +1,277 @@
+package provider
+
+import (
+ "context"
+ "strings"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-framework/diag"
+ "github.com/hashicorp/terraform-plugin-framework/resource"
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-go/tftypes"
+)
+
+// nodePolicySchemaPlan builds a tfsdk.Plan from the real resource schema, the same
+// way Terraform core hands a planned value to Create/Update. Every top-level
+// attribute not present in `set` is null. Nested objects are built with
+// nullObjectWith so they carry every attribute the schema defines.
+func nodePolicySchemaPlan(t *testing.T, set map[string]tftypes.Value) tfsdk.Plan {
+ t.Helper()
+ ctx := context.Background()
+ r := &NodePolicyResource{}
+ var schemaResp resource.SchemaResponse
+ r.Schema(ctx, resource.SchemaRequest{}, &schemaResp)
+ if schemaResp.Diagnostics.HasError() {
+ t.Fatalf("schema: %v", schemaResp.Diagnostics)
+ }
+
+ objType, ok := schemaResp.Schema.Type().TerraformType(ctx).(tftypes.Object)
+ if !ok {
+ t.Fatal("schema type is not an object")
+ }
+ vals := make(map[string]tftypes.Value, len(objType.AttributeTypes))
+ for name, typ := range objType.AttributeTypes {
+ if v, ok := set[name]; ok {
+ vals[name] = v
+ continue
+ }
+ vals[name] = tftypes.NewValue(typ, nil)
+ }
+ return tfsdk.Plan{Schema: schemaResp.Schema, Raw: tftypes.NewValue(objType, vals)}
+}
+
+func nodePolicyAttrType(t *testing.T, path ...string) tftypes.Type {
+ t.Helper()
+ ctx := context.Background()
+ r := &NodePolicyResource{}
+ var schemaResp resource.SchemaResponse
+ r.Schema(ctx, resource.SchemaRequest{}, &schemaResp)
+ typ := schemaResp.Schema.Type().TerraformType(ctx)
+ for _, p := range path {
+ switch tt := typ.(type) {
+ case tftypes.Object:
+ typ = tt.AttributeTypes[p]
+ case tftypes.List:
+ typ = tt.ElementType
+ default:
+ t.Fatalf("unexpected type %T at %q", typ, p)
+ }
+ if typ == nil {
+ t.Fatalf("attribute %v not in schema", path)
+ }
+ }
+ return typ
+}
+
+// nullObjectWith returns an object of type typ with all attributes null except those in set.
+func nullObjectWith(t *testing.T, typ tftypes.Type, set map[string]tftypes.Value) tftypes.Value {
+ t.Helper()
+ obj, ok := typ.(tftypes.Object)
+ if !ok {
+ t.Fatalf("type %v is not an object", typ)
+ }
+ vals := make(map[string]tftypes.Value, len(obj.AttributeTypes))
+ for name, at := range obj.AttributeTypes {
+ if v, ok := set[name]; ok {
+ vals[name] = v
+ } else {
+ vals[name] = tftypes.NewValue(at, nil)
+ }
+ }
+ return tftypes.NewValue(obj, vals)
+}
+
+// Regression for: "Struct defines fields not found in object: kubelet" when an
+// `azure {}` block is set (v0.1.6). The Go model had a `kubelet` field the schema
+// did not declare, so req.Plan.Get failed before any API call.
+func TestNodePolicy_PlanDecode_AzureBlock(t *testing.T) {
+ ctx := context.Background()
+ azureType := nodePolicyAttrType(t, "azure")
+ plan := nodePolicySchemaPlan(t, map[string]tftypes.Value{
+ "name": tftypes.NewValue(tftypes.String, "azure-pool"),
+ "azure": nullObjectWith(t, azureType, map[string]tftypes.Value{
+ "vnet_subnet_id": tftypes.NewValue(tftypes.String, "/subscriptions/x/subnet/y"),
+ }),
+ })
+
+ var m NodePolicyResourceModel
+ diags := plan.Get(ctx, &m)
+ if diags.HasError() {
+ t.Fatalf("plan.Get failed: %v", diags)
+ }
+ if m.Azure == nil {
+ t.Fatalf("m.Azure is nil")
+ }
+ if got := m.Azure.VnetSubnetId.ValueString(); got != "/subscriptions/x/subnet/y" {
+ t.Fatalf("got %q, want %s", got, "/subscriptions/x/subnet/y")
+ }
+
+ var d diag.Diagnostics
+ proto := m.toProto(ctx, &d, "team-1")
+ if d.HasError() {
+ t.Fatalf("toProto failed: %v", d)
+ }
+ if proto.Azure == nil {
+ t.Fatalf("proto.Azure is nil")
+ }
+ if got := proto.Azure.GetVnetSubnetId(); got != "/subscriptions/x/subnet/y" {
+ t.Fatalf("got %q, want %s", got, "/subscriptions/x/subnet/y")
+ }
+}
+
+// Regression for: "Unable to convert taints: can't unmarshal into *provider.Taint,
+// needs FromTerraform5Value method" (v0.1.6). getElementList decoded list elements
+// through tftypes.Value.As, which cannot populate tfsdk-tagged structs.
+func TestNodePolicy_PlanDecode_Taints(t *testing.T) {
+ ctx := context.Background()
+ taintsType, ok := nodePolicyAttrType(t, "taints").(tftypes.List)
+ if !ok {
+ t.Fatal("taints attribute is not a list")
+ }
+ taint := nullObjectWith(t, taintsType.ElementType, map[string]tftypes.Value{
+ "key": tftypes.NewValue(tftypes.String, "dedicated"),
+ "value": tftypes.NewValue(tftypes.String, "gpu"),
+ "effect": tftypes.NewValue(tftypes.String, "NoSchedule"),
+ })
+ plan := nodePolicySchemaPlan(t, map[string]tftypes.Value{
+ "name": tftypes.NewValue(tftypes.String, "tainted-pool"),
+ "taints": tftypes.NewValue(taintsType, []tftypes.Value{taint}),
+ })
+
+ var m NodePolicyResourceModel
+ diags := plan.Get(ctx, &m)
+ if diags.HasError() {
+ t.Fatalf("plan.Get failed: %v", diags)
+ }
+
+ var d diag.Diagnostics
+ proto := m.toProto(ctx, &d, "team-1")
+ if d.HasError() {
+ t.Fatalf("toProto failed: %v", d)
+ }
+ if len(proto.Taints) != 1 {
+ t.Fatalf("len(proto.Taints) = %d, want 1", len(proto.Taints))
+ }
+ if got := proto.Taints[0].Key; got != "dedicated" {
+ t.Fatalf("got %q, want %s", got, "dedicated")
+ }
+ if got := proto.Taints[0].Value; got != "gpu" {
+ t.Fatalf("got %q, want %s", got, "gpu")
+ }
+ if got := proto.Taints[0].Effect; got != "NoSchedule" {
+ t.Fatalf("got %q, want %s", got, "NoSchedule")
+ }
+}
+
+// The same struct/schema mismatch existed for `aws {}` (kubelet,
+// capacity_reservation_selector_terms, context were in the model but not the schema).
+func TestNodePolicy_PlanDecode_AwsBlock(t *testing.T) {
+ ctx := context.Background()
+ awsType := nodePolicyAttrType(t, "aws")
+ plan := nodePolicySchemaPlan(t, map[string]tftypes.Value{
+ "name": tftypes.NewValue(tftypes.String, "aws-pool"),
+ "aws": nullObjectWith(t, awsType, map[string]tftypes.Value{
+ "ami_family": tftypes.NewValue(tftypes.String, "AL2023"),
+ }),
+ })
+
+ var m NodePolicyResourceModel
+ diags := plan.Get(ctx, &m)
+ if diags.HasError() {
+ t.Fatalf("plan.Get failed: %v", diags)
+ }
+ if m.Aws == nil {
+ t.Fatalf("m.Aws is nil")
+ }
+
+ var d diag.Diagnostics
+ proto := m.toProto(ctx, &d, "team-1")
+ if d.HasError() {
+ t.Fatalf("toProto failed: %v", d)
+ }
+ if proto.Aws == nil {
+ t.Fatalf("proto.Aws is nil")
+ }
+ if got := proto.Aws.GetAmiFamily(); got != "AL2023" {
+ t.Fatalf("got %q, want %s", got, "AL2023")
+ }
+}
+
+// Raw karpenter specs also flow through getElementList with a struct element type.
+func TestNodePolicy_PlanDecode_Raw(t *testing.T) {
+ ctx := context.Background()
+ rawType, ok := nodePolicyAttrType(t, "raw").(tftypes.List)
+ if !ok {
+ t.Fatal("raw attribute is not a list")
+ }
+ spec := nullObjectWith(t, rawType.ElementType, map[string]tftypes.Value{
+ "nodepool_yaml": tftypes.NewValue(tftypes.String, "apiVersion: karpenter.sh/v1\nkind: NodePool\n"),
+ "nodeclass_yaml": tftypes.NewValue(tftypes.String, ""),
+ })
+ plan := nodePolicySchemaPlan(t, map[string]tftypes.Value{
+ "name": tftypes.NewValue(tftypes.String, "raw-pool"),
+ "raw": tftypes.NewValue(rawType, []tftypes.Value{spec}),
+ })
+
+ var m NodePolicyResourceModel
+ diags := plan.Get(ctx, &m)
+ if diags.HasError() {
+ t.Fatalf("plan.Get failed: %v", diags)
+ }
+
+ var d diag.Diagnostics
+ proto := m.toProto(ctx, &d, "team-1")
+ if d.HasError() {
+ t.Fatalf("toProto failed: %v", d)
+ }
+ if len(proto.Raw) != 1 {
+ t.Fatalf("len(proto.Raw) = %d, want 1", len(proto.Raw))
+ }
+ if !strings.Contains(proto.Raw[0].NodepoolYaml, "kind: NodePool") {
+ t.Fatalf("%q does not contain %s", proto.Raw[0].NodepoolYaml, "kind: NodePool")
+ }
+}
+
+// Round-trip guard: whatever fromProto produces must be settable into state
+// through the real schema (State.Set uses the same reflection as Plan.Get).
+func TestNodePolicy_StateSet_RoundTrip(t *testing.T) {
+ ctx := context.Background()
+ azureType := nodePolicyAttrType(t, "azure")
+ taintsType, ok := nodePolicyAttrType(t, "taints").(tftypes.List)
+ if !ok {
+ t.Fatal("taints attribute is not a list")
+ }
+ plan := nodePolicySchemaPlan(t, map[string]tftypes.Value{
+ "name": tftypes.NewValue(tftypes.String, "rt"),
+ "azure": nullObjectWith(t, azureType, map[string]tftypes.Value{
+ "vnet_subnet_id": tftypes.NewValue(tftypes.String, "subnet"),
+ }),
+ "taints": tftypes.NewValue(taintsType, []tftypes.Value{
+ nullObjectWith(t, taintsType.ElementType, map[string]tftypes.Value{
+ "key": tftypes.NewValue(tftypes.String, "k"),
+ "value": tftypes.NewValue(tftypes.String, "v"),
+ "effect": tftypes.NewValue(tftypes.String, "NoExecute"),
+ }),
+ }),
+ })
+
+ var m NodePolicyResourceModel
+ if d0 := plan.Get(ctx, &m); d0.HasError() {
+ t.Fatalf("plan.Get failed: %v", d0)
+ }
+ var d diag.Diagnostics
+ proto := m.toProto(ctx, &d, "team-1")
+ if d.HasError() {
+ t.Fatalf("toProto failed: %v", d)
+ }
+ proto.Id = "np-123"
+
+ var back NodePolicyResourceModel
+ back.fromProto(proto)
+
+ state := tfsdk.State{Schema: plan.Schema, Raw: tftypes.NewValue(plan.Schema.Type().TerraformType(ctx), nil)}
+ setDiags := state.Set(ctx, &back)
+ if setDiags.HasError() {
+ t.Fatalf("state.Set failed: %v", setDiags)
+ }
+}
diff --git a/internal/provider/node_policy_target.go b/internal/provider/node_policy_target.go
index 76cc02d..acf6150 100644
--- a/internal/provider/node_policy_target.go
+++ b/internal/provider/node_policy_target.go
@@ -5,6 +5,7 @@ import (
"fmt"
"connectrpc.com/connect"
+ "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/resource"
@@ -13,6 +14,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
+ "github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
@@ -85,10 +87,13 @@ func (r *NodePolicyTargetResource) Schema(ctx context.Context, req resource.Sche
Default: booldefault.StaticBool(true),
},
"cluster_ids": schema.ListAttribute{
- Description: "List of cluster IDs to apply the node policy to",
- MarkdownDescription: "List of cluster IDs to apply the node policy to. Must reference existing cluster IDs.",
+ Description: "Cluster ID to apply the node policy to (at most one)",
+ MarkdownDescription: "Cluster ID to apply the node policy to. The API accepts at most one cluster per target; create one target per cluster.",
Required: true,
ElementType: types.StringType,
+ Validators: []validator.List{
+ listvalidator.SizeBetween(1, 1),
+ },
},
},
}
@@ -182,7 +187,8 @@ func (r *NodePolicyTargetResource) Read(ctx context.Context, req resource.ReadRe
}
if foundTarget == nil {
- resp.Diagnostics.AddError("Client Error", "Node policy target not found")
+ // Deleted out of band — drop it from state so the plan recreates it.
+ resp.State.RemoveResource(ctx)
return
}
@@ -237,10 +243,26 @@ func (r *NodePolicyTargetResource) Delete(ctx context.Context, req resource.Dele
return
}
- // No-op delete: just remove from state
- // The API doesn't provide a delete endpoint, so we just remove it from Terraform state
- // The target will remain in the backend
- tflog.Warn(ctx, "Node policy target delete is a no-op operation. The target will remain in the backend.")
+ // The API has no DeleteNodePolicyTarget RPC. Leaving the target enabled
+ // would keep applying the policy after destroy, so disable it instead.
+ target := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId)
+ if resp.Diagnostics.HasError() {
+ return
+ }
+ target.Enabled = false
+
+ _, err := r.client.RecommendationClient.UpdateNodePolicyTarget(ctx, connect.NewRequest(&apiv1.UpdateNodePolicyTargetRequest{
+ Target: target,
+ }))
+ if err != nil {
+ if connect.CodeOf(err) == connect.CodeNotFound {
+ return
+ }
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to disable node policy target on destroy, got error: %s", err))
+ return
+ }
+
+ tflog.Warn(ctx, "The API has no delete endpoint for node policy targets; the target was disabled and removed from state, but the row remains in the backend.")
}
func (r *NodePolicyTargetResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
diff --git a/internal/provider/schema_model_consistency_test.go b/internal/provider/schema_model_consistency_test.go
new file mode 100644
index 0000000..4751c99
--- /dev/null
+++ b/internal/provider/schema_model_consistency_test.go
@@ -0,0 +1,255 @@
+package provider
+
+import (
+ "context"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-framework/diag"
+ "github.com/hashicorp/terraform-plugin-framework/resource"
+ "github.com/hashicorp/terraform-plugin-framework/resource/schema"
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-go/tftypes"
+ "google.golang.org/protobuf/proto"
+)
+
+// leafOverrides supplies valid values for attributes whose converters only
+// accept a fixed vocabulary (enums). Keyed by attribute name, applied at any
+// nesting depth. Anything not listed gets a generic "x" / 1 / true.
+var leafOverrides = map[string]tftypes.Value{
+ "action_triggers": tftypes.NewValue(tftypes.String, "on_schedule"),
+ "detection_triggers": tftypes.NewValue(tftypes.String, "pod_creation"),
+ "operator": tftypes.NewValue(tftypes.String, "In"),
+ "effect": tftypes.NewValue(tftypes.String, "NoSchedule"),
+ "kinds": tftypes.NewValue(tftypes.String, "Deployment"),
+ "workload_kinds": tftypes.NewValue(tftypes.String, "Deployment"),
+}
+
+// populatedValue builds a tftypes.Value of type typ in which every object,
+// list, set and map is NON-null (lists/sets get one element, maps one entry)
+// and every primitive leaf holds a concrete value ("x", 1, true) unless
+// leafOverrides names the attribute. Decoding such a value into a resource
+// model exercises every tfsdk struct at every nesting level, which is exactly
+// what catches "Struct defines fields not found in object" / "Object defines
+// fields not found in struct" mismatches between a schema and its Go model —
+// the bug class that broke `azure {}` / `aws {}` in v0.1.6 — and then drives
+// every toProto/fromProto branch.
+func populatedValue(typ tftypes.Type) tftypes.Value {
+ return populatedValueNamed("", typ)
+}
+
+func populatedValueNamed(name string, typ tftypes.Type) tftypes.Value {
+ switch t := typ.(type) {
+ case tftypes.Object:
+ vals := make(map[string]tftypes.Value, len(t.AttributeTypes))
+ for attrName, at := range t.AttributeTypes {
+ vals[attrName] = populatedValueNamed(attrName, at)
+ }
+ return tftypes.NewValue(t, vals)
+ case tftypes.List:
+ return tftypes.NewValue(t, []tftypes.Value{populatedValueNamed(name, t.ElementType)})
+ case tftypes.Set:
+ return tftypes.NewValue(t, []tftypes.Value{populatedValueNamed(name, t.ElementType)})
+ case tftypes.Map:
+ return tftypes.NewValue(t, map[string]tftypes.Value{"k": populatedValueNamed(name, t.ElementType)})
+ case tftypes.Tuple:
+ vals := make([]tftypes.Value, len(t.ElementTypes))
+ for i, et := range t.ElementTypes {
+ vals[i] = populatedValueNamed(name, et)
+ }
+ return tftypes.NewValue(t, vals)
+ }
+ if v, ok := leafOverrides[name]; ok && v.Type().Equal(typ) {
+ return v
+ }
+ switch {
+ case typ.Is(tftypes.String):
+ return tftypes.NewValue(typ, "x")
+ case typ.Is(tftypes.Number):
+ return tftypes.NewValue(typ, 1)
+ case typ.Is(tftypes.Bool):
+ return tftypes.NewValue(typ, true)
+ }
+ return tftypes.NewValue(typ, nil)
+}
+
+func resourceSchema(t *testing.T, r resource.Resource) schema.Schema {
+ t.Helper()
+ var resp resource.SchemaResponse
+ r.Schema(context.Background(), resource.SchemaRequest{}, &resp)
+ if resp.Diagnostics.HasError() {
+ t.Fatalf("schema: %v", resp.Diagnostics)
+ }
+ return resp.Schema
+}
+
+type resourceUnderTest struct {
+ name string
+ resource func() resource.Resource
+ newModel func() any
+ // roundTrip converts the decoded model to its proto and back (nil = skip).
+ // It must return the model populated by fromProto.
+ roundTrip func(ctx context.Context, model any) (any, diag.Diagnostics)
+}
+
+func allResourcesUnderTest() []resourceUnderTest {
+ return []resourceUnderTest{
+ {
+ name: "devzero_node_policy",
+ resource: NewNodePolicyResource,
+ newModel: func() any { return &NodePolicyResourceModel{} },
+ roundTrip: func(ctx context.Context, model any) (any, diag.Diagnostics) {
+ var d diag.Diagnostics
+ m, ok := model.(*NodePolicyResourceModel)
+ if !ok {
+ return nil, d
+ }
+ p := m.toProto(ctx, &d, "team")
+ if d.HasError() {
+ return nil, d
+ }
+ p.Id = "id"
+ var back NodePolicyResourceModel
+ back.fromProto(p)
+ p2 := back.toProto(ctx, &d, "team")
+ if !d.HasError() && !proto.Equal(p, p2) {
+ d.AddError("Round-Trip", "node policy proto round-trip is lossy — a field is dropped in toProto or fromProto")
+ }
+ return &back, d
+ },
+ },
+ {
+ name: "devzero_node_policy_target",
+ resource: NewNodePolicyTargetResource,
+ newModel: func() any { return &NodePolicyTargetResourceModel{} },
+ roundTrip: func(ctx context.Context, model any) (any, diag.Diagnostics) {
+ var d diag.Diagnostics
+ m, ok := model.(*NodePolicyTargetResourceModel)
+ if !ok {
+ return nil, d
+ }
+ p := m.toProto(ctx, &d, "team")
+ if d.HasError() {
+ return nil, d
+ }
+ var back NodePolicyTargetResourceModel
+ back.fromProto(p)
+ p2 := back.toProto(ctx, &d, "team")
+ if !d.HasError() && !proto.Equal(p, p2) {
+ d.AddError("Round-Trip", "node policy target proto round-trip is lossy — a field is dropped in toProto or fromProto")
+ }
+ return &back, d
+ },
+ },
+ {
+ name: "devzero_workload_policy",
+ resource: NewWorkloadPolicyResource,
+ newModel: func() any { return &WorkloadPolicyResourceModel{} },
+ roundTrip: func(ctx context.Context, model any) (any, diag.Diagnostics) {
+ var d diag.Diagnostics
+ m, ok := model.(*WorkloadPolicyResourceModel)
+ if !ok {
+ return nil, d
+ }
+ p := m.toProto(ctx, &d, "team")
+ if d.HasError() {
+ return nil, d
+ }
+ var back WorkloadPolicyResourceModel
+ back.fromProto(p)
+ p2 := back.toProto(ctx, &d, "team")
+ if !d.HasError() && !proto.Equal(p, p2) {
+ d.AddError("Round-Trip", "workload policy proto round-trip is lossy — a field is dropped in toProto or fromProto")
+ }
+ return &back, d
+ },
+ },
+ {
+ name: "devzero_workload_policy_target",
+ resource: NewWorkloadPolicyTargetResource,
+ newModel: func() any { return &WorkloadPolicyTargetResourceModel{} },
+ },
+ {
+ name: "devzero_workload_rule",
+ resource: NewWorkloadRuleResource,
+ newModel: func() any { return &WorkloadRuleResourceModel{} },
+ },
+ {
+ name: "devzero_cluster",
+ resource: NewClusterResource,
+ newModel: func() any { return &ClusterResourceModel{} },
+ },
+ }
+}
+
+// TestSchemaModelConsistency decodes a fully-populated value built from each
+// resource's real schema into its Go model (what Terraform does on
+// Create/Update), then round-trips it through toProto/fromProto and sets it
+// back into state (what happens after every API call).
+func TestSchemaModelConsistency(t *testing.T) {
+ ctx := context.Background()
+ for _, rt := range allResourcesUnderTest() {
+ t.Run(rt.name, func(t *testing.T) {
+ s := resourceSchema(t, rt.resource())
+ objType := s.Type().TerraformType(ctx)
+
+ plan := tfsdk.Plan{Schema: s, Raw: populatedValue(objType)}
+ model := rt.newModel()
+ if d := plan.Get(ctx, model); d.HasError() {
+ t.Fatalf("Plan.Get into %T failed (schema/model mismatch): %v", model, d)
+ }
+
+ // Everything decoded must be settable back into state unchanged.
+ state := tfsdk.State{Schema: s, Raw: tftypes.NewValue(objType, nil)}
+ if d := state.Set(ctx, model); d.HasError() {
+ t.Fatalf("State.Set from decoded %T failed: %v", model, d)
+ }
+
+ if rt.roundTrip == nil {
+ return
+ }
+ back, d := rt.roundTrip(ctx, model)
+ if d.HasError() {
+ t.Fatalf("toProto/fromProto round-trip failed: %v", d)
+ }
+ state = tfsdk.State{Schema: s, Raw: tftypes.NewValue(objType, nil)}
+ if d := state.Set(ctx, back); d.HasError() {
+ t.Fatalf("State.Set after fromProto failed (fromProto produced a value the schema cannot hold): %v", d)
+ }
+ })
+ }
+}
+
+// TestSchemaModelConsistency_AllNull is the complementary case: a config where
+// every optional attribute is omitted must decode and round-trip cleanly too.
+func TestSchemaModelConsistency_AllNull(t *testing.T) {
+ ctx := context.Background()
+ for _, rt := range allResourcesUnderTest() {
+ t.Run(rt.name, func(t *testing.T) {
+ s := resourceSchema(t, rt.resource())
+ objType, ok := s.Type().TerraformType(ctx).(tftypes.Object)
+ if !ok {
+ t.Fatal("schema type is not an object")
+ }
+ vals := map[string]tftypes.Value{}
+ for name, at := range objType.AttributeTypes {
+ vals[name] = tftypes.NewValue(at, nil)
+ }
+ plan := tfsdk.Plan{Schema: s, Raw: tftypes.NewValue(objType, vals)}
+ model := rt.newModel()
+ if d := plan.Get(ctx, model); d.HasError() {
+ t.Fatalf("Plan.Get into %T failed: %v", model, d)
+ }
+ if rt.roundTrip == nil {
+ return
+ }
+ back, d := rt.roundTrip(ctx, model)
+ if d.HasError() {
+ t.Fatalf("toProto/fromProto round-trip failed: %v", d)
+ }
+ state := tfsdk.State{Schema: s, Raw: tftypes.NewValue(objType, nil)}
+ if d := state.Set(ctx, back); d.HasError() {
+ t.Fatalf("State.Set after fromProto failed: %v", d)
+ }
+ })
+ }
+}
diff --git a/internal/provider/utils.go b/internal/provider/utils.go
index eaad13b..bfb5e5d 100644
--- a/internal/provider/utils.go
+++ b/internal/provider/utils.go
@@ -3,23 +3,35 @@ package provider
import (
"context"
"errors"
+ "fmt"
"github.com/hashicorp/terraform-plugin-framework/attr"
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
)
+// valueAs decodes a framework attr.Value into target using the framework's
+// reflection rules (tfsdk.ValueAs). Unlike tftypes.Value.As, this supports
+// tfsdk-tagged structs (e.g. Taint, RawKarpenterSpec) as well as primitives, so
+// it can be used generically for list/map element conversion.
+func valueAs(ctx context.Context, value attr.Value, target any) error {
+ diags := tfsdk.ValueAs(ctx, value, target)
+ if !diags.HasError() {
+ return nil
+ }
+ var errs []error
+ for _, d := range diags.Errors() {
+ errs = append(errs, fmt.Errorf("%s: %s", d.Summary(), d.Detail()))
+ }
+ return errors.Join(errs...)
+}
+
func getElementList[T any, V any](ctx context.Context, values []attr.Value, converter func(ctx context.Context, value V) (T, error)) ([]T, error) {
var elements []T
var errs []error
for _, value := range values {
var v V
- value, err := value.ToTerraformValue(ctx)
- if err != nil {
- errs = append(errs, err)
- continue
- }
- err = value.As(&v)
- if err != nil {
+ if err := valueAs(ctx, value, &v); err != nil {
errs = append(errs, err)
continue
}
@@ -49,13 +61,7 @@ func getElementMap[K comparable, V any, T any](ctx context.Context, values map[K
var errs []error
for key, value := range values {
var v V
- value, err := value.ToTerraformValue(ctx)
- if err != nil {
- errs = append(errs, err)
- continue
- }
- err = value.As(&v)
- if err != nil {
+ if err := valueAs(ctx, value, &v); err != nil {
errs = append(errs, err)
continue
}
diff --git a/internal/provider/workload_policy.go b/internal/provider/workload_policy.go
index 6000f29..7299b84 100644
--- a/internal/provider/workload_policy.go
+++ b/internal/provider/workload_policy.go
@@ -5,6 +5,7 @@ import (
"fmt"
"connectrpc.com/connect"
+ "github.com/hashicorp/terraform-plugin-framework-validators/int64validator"
"github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/attr"
@@ -67,6 +68,29 @@ type WorkloadPolicyResourceModel struct {
CooldownMinutes types.Int32 `tfsdk:"cooldown_minutes"`
EnablePmaxProtection types.Bool `tfsdk:"enable_pmax_protection"`
PmaxRatioThreshold types.Float32 `tfsdk:"pmax_ratio_threshold"`
+
+ EnableInPlaceVerticalScaling types.Bool `tfsdk:"enable_in_place_vertical_scaling"`
+ AllowInPlaceMemoryLimitDecrease types.Bool `tfsdk:"allow_in_place_memory_limit_decrease"`
+ PdbEnabled types.Bool `tfsdk:"pdb_enabled"`
+
+ CpuFloorPercent types.Int64 `tfsdk:"cpu_floor_percent"`
+ CpuCeilingPercent types.Int64 `tfsdk:"cpu_ceiling_percent"`
+ MemoryFloorPercent types.Int64 `tfsdk:"memory_floor_percent"`
+ MemoryCeilingPercent types.Int64 `tfsdk:"memory_ceiling_percent"`
+ CpuLimitFloorPercent types.Int64 `tfsdk:"cpu_limit_floor_percent"`
+ CpuLimitCeilingPercent types.Int64 `tfsdk:"cpu_limit_ceiling_percent"`
+ MemoryLimitFloorPercent types.Int64 `tfsdk:"memory_limit_floor_percent"`
+ MemoryLimitCeilingPercent types.Int64 `tfsdk:"memory_limit_ceiling_percent"`
+
+ JvmHeapOptimizationEnabled types.Bool `tfsdk:"jvm_heap_optimization_enabled"`
+ JvmHeapTargetPercentile types.Float32 `tfsdk:"jvm_heap_target_percentile"`
+ JvmHeapHeadroomMultiplier types.Float32 `tfsdk:"jvm_heap_headroom_multiplier"`
+ JvmNonHeapOverheadPercent types.Float32 `tfsdk:"jvm_non_heap_overhead_percent"`
+ JvmNonHeapOverheadBytes types.Int64 `tfsdk:"jvm_non_heap_overhead_bytes"`
+ JvmMinHeapBytes types.Int64 `tfsdk:"jvm_min_heap_bytes"`
+ JvmMaxHeapBytes types.Int64 `tfsdk:"jvm_max_heap_bytes"`
+ JvmPreferContainerSupport types.Bool `tfsdk:"jvm_prefer_container_support"`
+ JvmCpuStartupFloorMillicores types.Int64 `tfsdk:"jvm_cpu_startup_floor_millicores"`
}
type VerticalScalingOptions struct {
@@ -82,6 +106,8 @@ type VerticalScalingOptions struct {
MinDataPoints types.Int32 `tfsdk:"min_data_points"`
AdjustReqEvenIfNotSet types.Bool `tfsdk:"adjust_req_even_if_not_set"`
LimitsRemovalEnabled types.Bool `tfsdk:"limits_removal_enabled"`
+ RequestUseRss types.Bool `tfsdk:"request_use_rss"`
+ LimitUseRss types.Bool `tfsdk:"limit_use_rss"`
}
type HorizontalScalingOptions struct {
@@ -92,6 +118,11 @@ type HorizontalScalingOptions struct {
PrimaryMetric types.String `tfsdk:"primary_metric"`
MinDataPoints types.Int32 `tfsdk:"min_data_points"`
MaxReplicaChangePercent types.Float32 `tfsdk:"max_replica_change_percent"`
+
+ NetworkTargetThroughputBytesPerSec types.Int64 `tfsdk:"network_target_throughput_bytes_per_sec"`
+ TargetMemoryUtilization types.Float32 `tfsdk:"target_memory_utilization"`
+ CompositeFormula types.String `tfsdk:"composite_formula"`
+ ScaleDownCooldownSeconds types.Int32 `tfsdk:"scale_down_cooldown_seconds"`
}
func (r *WorkloadPolicyResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
@@ -174,6 +205,16 @@ func (r *WorkloadPolicyResource) Schema(ctx context.Context, req resource.Schema
Computed: true,
Default: booldefault.StaticBool(false),
},
+ "request_use_rss": schema.BoolAttribute{
+ Description: "Memory only: size the request from RSS instead of working set",
+ MarkdownDescription: "Memory only: when true, size the memory request recommendation from RSS (resident set size) instead of the default working set. Ignored for CPU/GPU.",
+ Optional: true,
+ },
+ "limit_use_rss": schema.BoolAttribute{
+ Description: "Memory only: derive the limit from an RSS-based recommendation",
+ MarkdownDescription: "Memory only: when true, the limit is derived from an RSS-based recommendation instead of the working-set one (the limit multiplier still applies). Ignored for CPU/GPU.",
+ Optional: true,
+ },
}
}
@@ -249,7 +290,7 @@ func (r *WorkloadPolicyResource) Schema(ctx context.Context, req resource.Schema
listvalidator.SizeAtLeast(1),
listvalidator.NoNullValues(),
listvalidator.UniqueValues(),
- listvalidator.ValueStringsAre(stringvalidator.OneOf("pod_creation", "pod_update")),
+ listvalidator.ValueStringsAre(stringvalidator.OneOf("pod_creation", "pod_update", "pod_evict")),
},
},
"loopback_period_seconds": schema.Int32Attribute{
@@ -314,7 +355,7 @@ func (r *WorkloadPolicyResource) Schema(ctx context.Context, req resource.Schema
Computed: true,
Default: stringdefault.StaticString("cpu"),
Validators: []validator.String{
- stringvalidator.OneOf("cpu", "memory", "gpu", "network"),
+ stringvalidator.OneOf("cpu", "memory", "gpu", "network", "network_ingress", "network_egress"),
},
},
"min_data_points": schema.Int32Attribute{
@@ -327,6 +368,26 @@ func (r *WorkloadPolicyResource) Schema(ctx context.Context, req resource.Schema
Description: "Maximum percent replica change in one step",
Optional: true,
},
+ "network_target_throughput_bytes_per_sec": schema.Int64Attribute{
+ Description: "Target network throughput per replica in bytes/sec",
+ MarkdownDescription: "Target network throughput per replica in bytes/sec. `0` (or unset) auto-detects from P95 + 15% headroom based on the selected metric direction.",
+ Optional: true,
+ },
+ "target_memory_utilization": schema.Float32Attribute{
+ Description: "Target memory utilization for HPA scaling (0.0-1.0)",
+ MarkdownDescription: "Target memory utilization for HPA scaling (0.0-1.0). Defaults to 0.80 server-side when unset.",
+ Optional: true,
+ },
+ "composite_formula": schema.StringAttribute{
+ Description: "Composite formula for multi-metric HPA scaling",
+ MarkdownDescription: "Composite formula for multi-metric HPA scaling. Variables: `cpu`, `memory`, `networkingress`, `networkegress` (each the metric's current/target ratio). Example: `cpu * 0.6 + memory * 0.4`.",
+ Optional: true,
+ },
+ "scale_down_cooldown_seconds": schema.Int32Attribute{
+ Description: "Scale-down cooldown in seconds",
+ MarkdownDescription: "Scale-down cooldown in seconds. Overrides the default Kubernetes stabilization window (300s).",
+ Optional: true,
+ },
},
},
"live_migration_enabled": schema.BoolAttribute{
@@ -347,7 +408,6 @@ func (r *WorkloadPolicyResource) Schema(ctx context.Context, req resource.Schema
),
),
Validators: []validator.List{
- listvalidator.SizeAtLeast(1),
listvalidator.NoNullValues(),
listvalidator.UniqueValues(),
},
@@ -415,6 +475,108 @@ func (r *WorkloadPolicyResource) Schema(ctx context.Context, req resource.Schema
Computed: true,
Default: float32default.StaticFloat32(3.0),
},
+ "enable_in_place_vertical_scaling": schema.BoolAttribute{
+ Description: "Apply vertical recommendations in place (no pod restart) where possible",
+ MarkdownDescription: "When true, vertical recommendations are applied in place (without recreating pods) where the cluster supports it. Default: false.",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "allow_in_place_memory_limit_decrease": schema.BoolAttribute{
+ Description: "Allow in-place memory limit decreases (requires enable_in_place_vertical_scaling)",
+ MarkdownDescription: "Allow in-place memory limit decreases. Only honored when `enable_in_place_vertical_scaling` is true — the server silently forces this to false otherwise, so the provider rejects that combination at plan time. Default: false.",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "pdb_enabled": schema.BoolAttribute{
+ Description: "Respect PodDisruptionBudgets when applying recommendations",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "cpu_floor_percent": schema.Int64Attribute{
+ Description: "Floor for CPU requests as a percent of the initial request (1-100)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 100)},
+ },
+ "cpu_ceiling_percent": schema.Int64Attribute{
+ Description: "Ceiling for CPU requests as a percent of the initial request (1-1000)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 1000)},
+ },
+ "memory_floor_percent": schema.Int64Attribute{
+ Description: "Floor for memory requests as a percent of the initial request (1-100)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 100)},
+ },
+ "memory_ceiling_percent": schema.Int64Attribute{
+ Description: "Ceiling for memory requests as a percent of the initial request (1-1000)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 1000)},
+ },
+ "cpu_limit_floor_percent": schema.Int64Attribute{
+ Description: "Floor for CPU limits as a percent of the initial limit (1-100)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 100)},
+ },
+ "cpu_limit_ceiling_percent": schema.Int64Attribute{
+ Description: "Ceiling for CPU limits as a percent of the initial limit (1-1000)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 1000)},
+ },
+ "memory_limit_floor_percent": schema.Int64Attribute{
+ Description: "Floor for memory limits as a percent of the initial limit (1-100)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 100)},
+ },
+ "memory_limit_ceiling_percent": schema.Int64Attribute{
+ Description: "Ceiling for memory limits as a percent of the initial limit (1-1000)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 1000)},
+ },
+ "jvm_heap_optimization_enabled": schema.BoolAttribute{
+ Description: "Enable JVM heap sizing recommendations",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "jvm_heap_target_percentile": schema.Float32Attribute{
+ Description: "Target percentile for JVM heap sizing (0.0-1.0)",
+ Optional: true,
+ },
+ "jvm_heap_headroom_multiplier": schema.Float32Attribute{
+ Description: "Headroom multiplier applied to the JVM heap recommendation",
+ Optional: true,
+ },
+ "jvm_non_heap_overhead_percent": schema.Float32Attribute{
+ Description: "Non-heap overhead as a fraction of heap",
+ Optional: true,
+ },
+ "jvm_non_heap_overhead_bytes": schema.Int64Attribute{
+ Description: "Fixed non-heap overhead in bytes",
+ Optional: true,
+ },
+ "jvm_min_heap_bytes": schema.Int64Attribute{
+ Description: "Lower bound for the JVM heap recommendation in bytes",
+ Optional: true,
+ },
+ "jvm_max_heap_bytes": schema.Int64Attribute{
+ Description: "Upper bound for the JVM heap recommendation in bytes",
+ Optional: true,
+ },
+ "jvm_prefer_container_support": schema.BoolAttribute{
+ Description: "Prefer container-aware JVM flags (UseContainerSupport) over explicit -Xmx",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "jvm_cpu_startup_floor_millicores": schema.Int64Attribute{
+ Description: "CPU floor during JVM startup, in millicores",
+ MarkdownDescription: "CPU floor during JVM startup, in millicores. Unset inherits the system default (75m); explicit `0` disables the floor.",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.AtLeast(0)},
+ },
},
}
}
@@ -449,6 +611,9 @@ func (r *WorkloadPolicyResource) Create(ctx context.Context, req resource.Create
}
policy := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId)
+ if resp.Diagnostics.HasError() {
+ return
+ }
createWorkloadPolicyReq := &apiv1.CreateWorkloadRecommendationPolicyRequest{
TeamId: r.client.TeamId,
@@ -491,12 +656,16 @@ func (r *WorkloadPolicyResource) Read(ctx context.Context, req resource.ReadRequ
getWorkloadPolicyResp, err := r.client.RecommendationClient.GetWorkloadRecommendationPolicy(ctx, connect.NewRequest(getWorkloadPolicyReq))
if err != nil {
+ if connect.CodeOf(err) == connect.CodeNotFound {
+ resp.State.RemoveResource(ctx)
+ return
+ }
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to get workload policy, got error: %s", err))
return
}
if getWorkloadPolicyResp.Msg.Policy == nil {
- resp.Diagnostics.AddError("Client Error", "Workload policy not found")
+ resp.State.RemoveResource(ctx)
return
}
@@ -516,9 +685,14 @@ func (r *WorkloadPolicyResource) Update(ctx context.Context, req resource.Update
return
}
+ policy := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId)
+ if resp.Diagnostics.HasError() {
+ return
+ }
+
updateWorkloadPolicyReq := &apiv1.UpdateWorkloadRecommendationPolicyRequest{
TeamId: r.client.TeamId,
- Policy: data.toProto(ctx, &resp.Diagnostics, r.client.TeamId),
+ Policy: policy,
}
updateWorkloadPolicyResp, err := r.client.RecommendationClient.UpdateWorkloadRecommendationPolicy(ctx, connect.NewRequest(updateWorkloadPolicyReq))
@@ -554,7 +728,7 @@ func (r *WorkloadPolicyResource) Delete(ctx context.Context, req resource.Delete
}
_, err := r.client.RecommendationClient.DeleteWorkloadRecommendationPolicy(ctx, connect.NewRequest(deleteWorkloadPolicyReq))
- if err != nil {
+ if err != nil && connect.CodeOf(err) != connect.CodeNotFound {
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to delete workload policy, got error: %s", err))
return
}
@@ -603,6 +777,14 @@ func (m *WorkloadPolicyResourceModel) toProto(ctx context.Context, diags *diag.D
return nil
}
+ if m.AllowInPlaceMemoryLimitDecrease.ValueBool() && !m.EnableInPlaceVerticalScaling.ValueBool() {
+ diags.AddError(
+ "Invalid Configuration",
+ "allow_in_place_memory_limit_decrease requires enable_in_place_vertical_scaling = true (the server silently forces it to false otherwise).",
+ )
+ return nil
+ }
+
return &apiv1.WorkloadRecommendationPolicy{
PolicyId: m.Id.ValueString(),
TeamId: teamId,
@@ -630,6 +812,29 @@ func (m *WorkloadPolicyResourceModel) toProto(ctx context.Context, diags *diag.D
CooldownMinutes: m.CooldownMinutes.ValueInt32Pointer(),
EnablePmaxProtection: m.EnablePmaxProtection.ValueBool(),
PmaxRatioThreshold: m.PmaxRatioThreshold.ValueFloat32Pointer(),
+
+ EnableInPlaceVerticalScaling: m.EnableInPlaceVerticalScaling.ValueBool(),
+ AllowInPlaceMemoryLimitDecrease: m.AllowInPlaceMemoryLimitDecrease.ValueBool(),
+ PdbEnabled: m.PdbEnabled.ValueBool(),
+
+ CpuFloorPercent: m.CpuFloorPercent.ValueInt64Pointer(),
+ CpuCeilingPercent: m.CpuCeilingPercent.ValueInt64Pointer(),
+ MemoryFloorPercent: m.MemoryFloorPercent.ValueInt64Pointer(),
+ MemoryCeilingPercent: m.MemoryCeilingPercent.ValueInt64Pointer(),
+ CpuLimitFloorPercent: m.CpuLimitFloorPercent.ValueInt64Pointer(),
+ CpuLimitCeilingPercent: m.CpuLimitCeilingPercent.ValueInt64Pointer(),
+ MemoryLimitFloorPercent: m.MemoryLimitFloorPercent.ValueInt64Pointer(),
+ MemoryLimitCeilingPercent: m.MemoryLimitCeilingPercent.ValueInt64Pointer(),
+
+ JvmHeapOptimizationEnabled: m.JvmHeapOptimizationEnabled.ValueBool(),
+ JvmHeapTargetPercentile: m.JvmHeapTargetPercentile.ValueFloat32Pointer(),
+ JvmHeapHeadroomMultiplier: m.JvmHeapHeadroomMultiplier.ValueFloat32Pointer(),
+ JvmNonHeapOverheadPercent: m.JvmNonHeapOverheadPercent.ValueFloat32Pointer(),
+ JvmNonHeapOverheadBytes: m.JvmNonHeapOverheadBytes.ValueInt64Pointer(),
+ JvmMinHeapBytes: m.JvmMinHeapBytes.ValueInt64Pointer(),
+ JvmMaxHeapBytes: m.JvmMaxHeapBytes.ValueInt64Pointer(),
+ JvmPreferContainerSupport: m.JvmPreferContainerSupport.ValueBool(),
+ JvmCpuStartupFloorMillicores: m.JvmCpuStartupFloorMillicores.ValueInt64Pointer(),
}
}
@@ -677,11 +882,11 @@ func (m *WorkloadPolicyResourceModel) fromProto(policy *apiv1.WorkloadRecommenda
m.StartupPeriodSeconds = types.Int64Value(*policy.StartupPeriodSeconds)
}
- m.CPUVerticalScaling.fromProto(policy.CpuVerticalScaling)
- m.MemoryVerticalScaling.fromProto(policy.MemoryVerticalScaling)
- m.GPUVerticalScaling.fromProto(policy.GpuVerticalScaling)
- m.GPUVRAMVerticalScaling.fromProto(policy.GpuVramVerticalScaling)
- m.HorizontalScaling.fromProto(policy.HorizontalScaling)
+ m.CPUVerticalScaling = verticalScalingOptionsFromProto(policy.CpuVerticalScaling)
+ m.MemoryVerticalScaling = verticalScalingOptionsFromProto(policy.MemoryVerticalScaling)
+ m.GPUVerticalScaling = verticalScalingOptionsFromProto(policy.GpuVerticalScaling)
+ m.GPUVRAMVerticalScaling = verticalScalingOptionsFromProto(policy.GpuVramVerticalScaling)
+ m.HorizontalScaling = horizontalScalingOptionsFromProto(policy.HorizontalScaling)
m.LiveMigrationEnabled = types.BoolValue(policy.LiveMigrationEnabled)
var schedulerPlugins []attr.Value
@@ -719,6 +924,29 @@ func (m *WorkloadPolicyResourceModel) fromProto(policy *apiv1.WorkloadRecommenda
if policy.PmaxRatioThreshold != nil {
m.PmaxRatioThreshold = types.Float32Value(*policy.PmaxRatioThreshold)
}
+
+ m.EnableInPlaceVerticalScaling = types.BoolValue(policy.EnableInPlaceVerticalScaling)
+ m.AllowInPlaceMemoryLimitDecrease = types.BoolValue(policy.AllowInPlaceMemoryLimitDecrease)
+ m.PdbEnabled = types.BoolValue(policy.PdbEnabled)
+
+ m.CpuFloorPercent = types.Int64PointerValue(policy.CpuFloorPercent)
+ m.CpuCeilingPercent = types.Int64PointerValue(policy.CpuCeilingPercent)
+ m.MemoryFloorPercent = types.Int64PointerValue(policy.MemoryFloorPercent)
+ m.MemoryCeilingPercent = types.Int64PointerValue(policy.MemoryCeilingPercent)
+ m.CpuLimitFloorPercent = types.Int64PointerValue(policy.CpuLimitFloorPercent)
+ m.CpuLimitCeilingPercent = types.Int64PointerValue(policy.CpuLimitCeilingPercent)
+ m.MemoryLimitFloorPercent = types.Int64PointerValue(policy.MemoryLimitFloorPercent)
+ m.MemoryLimitCeilingPercent = types.Int64PointerValue(policy.MemoryLimitCeilingPercent)
+
+ m.JvmHeapOptimizationEnabled = types.BoolValue(policy.JvmHeapOptimizationEnabled)
+ m.JvmHeapTargetPercentile = types.Float32PointerValue(policy.JvmHeapTargetPercentile)
+ m.JvmHeapHeadroomMultiplier = types.Float32PointerValue(policy.JvmHeapHeadroomMultiplier)
+ m.JvmNonHeapOverheadPercent = types.Float32PointerValue(policy.JvmNonHeapOverheadPercent)
+ m.JvmNonHeapOverheadBytes = types.Int64PointerValue(policy.JvmNonHeapOverheadBytes)
+ m.JvmMinHeapBytes = types.Int64PointerValue(policy.JvmMinHeapBytes)
+ m.JvmMaxHeapBytes = types.Int64PointerValue(policy.JvmMaxHeapBytes)
+ m.JvmPreferContainerSupport = types.BoolValue(policy.JvmPreferContainerSupport)
+ m.JvmCpuStartupFloorMillicores = types.Int64PointerValue(policy.JvmCpuStartupFloorMillicores)
}
func (o *VerticalScalingOptions) toProto() *apiv1.VerticalScalingOptimizationTarget {
@@ -738,17 +966,16 @@ func (o *VerticalScalingOptions) toProto() *apiv1.VerticalScalingOptimizationTar
MinDataPoints: o.MinDataPoints.ValueInt32Pointer(),
AdjustReqEvenIfNotSet: o.AdjustReqEvenIfNotSet.ValueBool(),
LimitsRemovalEnabled: o.LimitsRemovalEnabled.ValueBool(),
+ RequestUseRss: o.RequestUseRss.ValueBoolPointer(),
+ LimitUseRss: o.LimitUseRss.ValueBoolPointer(),
}
}
-func (o *VerticalScalingOptions) fromProto(target *apiv1.VerticalScalingOptimizationTarget) {
+func verticalScalingOptionsFromProto(target *apiv1.VerticalScalingOptimizationTarget) *VerticalScalingOptions {
if target == nil {
- o = nil
- return
- }
- if o == nil {
- o = &VerticalScalingOptions{}
+ return nil
}
+ o := &VerticalScalingOptions{}
o.Enabled = types.BoolValue(target.Enabled)
if target.MinRequest != nil {
@@ -780,6 +1007,9 @@ func (o *VerticalScalingOptions) fromProto(target *apiv1.VerticalScalingOptimiza
}
o.AdjustReqEvenIfNotSet = types.BoolValue(target.AdjustReqEvenIfNotSet)
o.LimitsRemovalEnabled = types.BoolValue(target.LimitsRemovalEnabled)
+ o.RequestUseRss = types.BoolPointerValue(target.RequestUseRss)
+ o.LimitUseRss = types.BoolPointerValue(target.LimitUseRss)
+ return o
}
func (o *HorizontalScalingOptions) toProto() *apiv1.HorizontalScalingOptimizationTarget {
@@ -794,17 +1024,19 @@ func (o *HorizontalScalingOptions) toProto() *apiv1.HorizontalScalingOptimizatio
PrimaryMetric: o.toHPAMetric(),
MinDataPoints: o.MinDataPoints.ValueInt32Pointer(),
MaxReplicaChangePercent: o.MaxReplicaChangePercent.ValueFloat32Pointer(),
+
+ NetworkTargetThroughputBytesPerSec: o.NetworkTargetThroughputBytesPerSec.ValueInt64Pointer(),
+ TargetMemoryUtilization: o.TargetMemoryUtilization.ValueFloat32Pointer(),
+ CompositeFormula: o.CompositeFormula.ValueStringPointer(),
+ ScaleDownCooldownSeconds: o.ScaleDownCooldownSeconds.ValueInt32Pointer(),
}
}
-func (o *HorizontalScalingOptions) fromProto(target *apiv1.HorizontalScalingOptimizationTarget) {
+func horizontalScalingOptionsFromProto(target *apiv1.HorizontalScalingOptimizationTarget) *HorizontalScalingOptions {
if target == nil {
- o = nil
- return
- }
- if o == nil {
- o = &HorizontalScalingOptions{}
+ return nil
}
+ o := &HorizontalScalingOptions{}
o.Enabled = types.BoolValue(target.Enabled)
if target.MinReplicas != nil {
o.MinReplicas = types.Int32Value(*target.MinReplicas)
@@ -815,13 +1047,20 @@ func (o *HorizontalScalingOptions) fromProto(target *apiv1.HorizontalScalingOpti
if target.TargetUtilization != nil {
o.TargetUtilization = types.Float32Value(*target.TargetUtilization)
}
- o.PrimaryMetric = types.StringValue(o.fromHPAMetric(target.GetPrimaryMetric()))
+ if target.PrimaryMetric != nil {
+ o.PrimaryMetric = types.StringValue(o.fromHPAMetric(*target.PrimaryMetric))
+ }
if target.MinDataPoints != nil {
o.MinDataPoints = types.Int32Value(*target.MinDataPoints)
}
if target.MaxReplicaChangePercent != nil {
o.MaxReplicaChangePercent = types.Float32Value(*target.MaxReplicaChangePercent)
}
+ o.NetworkTargetThroughputBytesPerSec = types.Int64PointerValue(target.NetworkTargetThroughputBytesPerSec)
+ o.TargetMemoryUtilization = types.Float32PointerValue(target.TargetMemoryUtilization)
+ o.CompositeFormula = types.StringPointerValue(target.CompositeFormula)
+ o.ScaleDownCooldownSeconds = types.Int32PointerValue(target.ScaleDownCooldownSeconds)
+ return o
}
func (o *HorizontalScalingOptions) toHPAMetric() *apiv1.HPAMetricType {
diff --git a/internal/provider/workload_policy_target.go b/internal/provider/workload_policy_target.go
index acf6640..fc83071 100644
--- a/internal/provider/workload_policy_target.go
+++ b/internal/provider/workload_policy_target.go
@@ -40,20 +40,23 @@ type WorkloadPolicyTargetResource struct {
// ExampleResourceModel describes the resource data model.
type WorkloadPolicyTargetResourceModel struct {
- Id types.String `tfsdk:"id"`
- PolicyId types.String `tfsdk:"policy_id"`
- Name types.String `tfsdk:"name"`
- Description types.String `tfsdk:"description"`
- Priority types.Int32 `tfsdk:"priority"`
- Enabled types.Bool `tfsdk:"enabled"`
- NamespaceSelector *LabelSelector `tfsdk:"namespace_selector"`
- WorkloadSelector *LabelSelector `tfsdk:"workload_selector"`
- KindFilter types.List `tfsdk:"kind_filter"`
- NamePattern *RegexPattern `tfsdk:"name_pattern"`
- NamespacePattern *RegexPattern `tfsdk:"namespace_pattern"`
- WorkloadNames types.List `tfsdk:"workload_names"`
- NodeGroupNames types.List `tfsdk:"node_group_names"`
- ClusterIds types.List `tfsdk:"cluster_ids"`
+ Id types.String `tfsdk:"id"`
+ PolicyId types.String `tfsdk:"policy_id"`
+ Name types.String `tfsdk:"name"`
+ Description types.String `tfsdk:"description"`
+ Priority types.Int32 `tfsdk:"priority"`
+ Enabled types.Bool `tfsdk:"enabled"`
+ NamespaceSelector *LabelSelector `tfsdk:"namespace_selector"`
+ WorkloadSelector *LabelSelector `tfsdk:"workload_selector"`
+ KindFilter types.List `tfsdk:"kind_filter"`
+ NamePattern *RegexPattern `tfsdk:"name_pattern"`
+ NamespacePattern *RegexPattern `tfsdk:"namespace_pattern"`
+ WorkloadNames types.List `tfsdk:"workload_names"`
+ WorkloadNamesNotIn types.List `tfsdk:"workload_names_not_in"`
+ KindFilterNotIn types.List `tfsdk:"kind_filter_not_in"`
+ AnnotationSelector *LabelSelector `tfsdk:"annotation_selector"`
+ NodeGroupNames types.List `tfsdk:"node_group_names"`
+ ClusterIds types.List `tfsdk:"cluster_ids"`
}
type LabelSelector struct {
@@ -216,13 +219,36 @@ func (r *WorkloadPolicyTargetResource) Schema(ctx context.Context, req resource.
Computed: true,
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
},
+ "workload_names_not_in": schema.ListAttribute{
+ Description: "Explicit list of workload names to exclude",
+ MarkdownDescription: "Explicit list of workload names to exclude from matching.",
+ Optional: true,
+ ElementType: types.StringType,
+ Computed: true,
+ Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
+ },
+ "kind_filter_not_in": schema.ListAttribute{
+ Description: "Kubernetes kinds to exclude from matching",
+ MarkdownDescription: "Kubernetes kinds to exclude from matching. Same allowed values as `kind_filter`.",
+ Optional: true,
+ ElementType: types.StringType,
+ Computed: true,
+ Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
+ },
+ "annotation_selector": schema.SingleNestedAttribute{
+ Description: "Select workloads by annotations",
+ MarkdownDescription: "Select workloads by annotations. Uses the same semantics as label selectors, evaluated against workload annotations.",
+ Optional: true,
+ Attributes: labelSelectorAttributes,
+ },
"node_group_names": schema.ListAttribute{
- Description: "Restrict matching to specific node groups",
- MarkdownDescription: "Restrict matching to specific node groups by name",
+ Description: "Restrict matching to specific node groups (deprecated upstream)",
+ MarkdownDescription: "Restrict matching to specific node groups by name. Deprecated upstream — unused by any active target and removed from the UI.",
Optional: true,
ElementType: types.StringType,
Computed: true,
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
+ DeprecationMessage: "node_group_names is deprecated by the DevZero API and no longer evaluated.",
},
"cluster_ids": schema.ListAttribute{
Description: "Clusters where this target should apply",
@@ -298,21 +324,42 @@ func (r *WorkloadPolicyTargetResource) Create(ctx context.Context, req resource.
return
}
+ workloadNamesNotIn, err := getStringList(ctx, data.WorkloadNamesNotIn.Elements())
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to convert workload names (not in): %s", err))
+ return
+ }
+
+ kindFiltersNotIn, err := getKindFilters(ctx, data.KindFilterNotIn.Elements())
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to convert kind filter (not in): %s", err))
+ return
+ }
+
+ annotationSelector, err := data.AnnotationSelector.toProto(ctx)
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to convert annotation selector: %s", err))
+ return
+ }
+
createWorkloadPolicyTargetReq := &apiv1.CreateWorkloadPolicyTargetRequest{
- TeamId: r.client.TeamId,
- PolicyId: data.PolicyId.ValueString(),
- Name: data.Name.ValueString(),
- Description: data.Description.ValueString(),
- Priority: data.Priority.ValueInt32(),
- Enabled: data.Enabled.ValueBool(),
- NamespaceSelector: namespaceSelector,
- WorkloadSelector: workloadSelector,
- KindFilter: kindFilters,
- NamePattern: data.NamePattern.toProto(),
- NamespacePattern: data.NamespacePattern.toProto(),
- WorkloadNames: workloadNames,
- NodeGroupNames: nodeGroupNames,
- ClusterIds: clusterIds,
+ TeamId: r.client.TeamId,
+ PolicyId: data.PolicyId.ValueString(),
+ Name: data.Name.ValueString(),
+ Description: data.Description.ValueString(),
+ Priority: data.Priority.ValueInt32(),
+ Enabled: data.Enabled.ValueBool(),
+ NamespaceSelector: namespaceSelector,
+ WorkloadSelector: workloadSelector,
+ KindFilter: kindFilters,
+ NamePattern: data.NamePattern.toProto(),
+ NamespacePattern: data.NamespacePattern.toProto(),
+ WorkloadNames: workloadNames,
+ WorkloadNamesNotIn: workloadNamesNotIn,
+ KindFilterNotIn: kindFiltersNotIn,
+ AnnotationSelector: annotationSelector,
+ NodeGroupNames: nodeGroupNames, //nolint:staticcheck // deprecated upstream; still sent for compatibility
+ ClusterIds: clusterIds,
}
createWorkloadPolicyTargetResp, err := r.client.RecommendationClient.CreateWorkloadPolicyTarget(ctx, connect.NewRequest(createWorkloadPolicyTargetReq))
@@ -352,12 +399,16 @@ func (r *WorkloadPolicyTargetResource) Read(ctx context.Context, req resource.Re
getWorkloadPolicyTargetResp, err := r.client.RecommendationClient.GetWorkloadPolicyTarget(ctx, connect.NewRequest(getWorkloadPolicyTargetReq))
if err != nil {
- resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to get cluster, got error: %s", err))
+ if connect.CodeOf(err) == connect.CodeNotFound {
+ resp.State.RemoveResource(ctx)
+ return
+ }
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to get workload policy target, got error: %s", err))
return
}
if getWorkloadPolicyTargetResp.Msg.Target == nil {
- resp.Diagnostics.AddError("Client Error", "Workload policy target not found")
+ resp.State.RemoveResource(ctx)
return
}
@@ -412,22 +463,43 @@ func (r *WorkloadPolicyTargetResource) Update(ctx context.Context, req resource.
return
}
+ workloadNamesNotIn, err := getStringList(ctx, data.WorkloadNamesNotIn.Elements())
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to convert workload names (not in): %s", err))
+ return
+ }
+
+ kindFiltersNotIn, err := getKindFilters(ctx, data.KindFilterNotIn.Elements())
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to convert kind filter (not in): %s", err))
+ return
+ }
+
+ annotationSelector, err := data.AnnotationSelector.toProto(ctx)
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to convert annotation selector: %s", err))
+ return
+ }
+
updateWorkloadPolicyTargetReq := &apiv1.UpdateWorkloadPolicyTargetRequest{
- TeamId: r.client.TeamId,
- TargetId: data.Id.ValueString(),
- PolicyId: data.PolicyId.ValueStringPointer(),
- Name: data.Name.ValueString(),
- Description: data.Description.ValueString(),
- Priority: data.Priority.ValueInt32(),
- Enabled: data.Enabled.ValueBool(),
- NamespaceSelector: namespaceSelector,
- WorkloadSelector: workloadSelector,
- KindFilter: kindFilters,
- NamePattern: data.NamePattern.toProto(),
- NamespacePattern: data.NamespacePattern.toProto(),
- WorkloadNames: workloadNames,
- NodeGroupNames: nodeGroupNames,
- ClusterIds: clusterIds,
+ TeamId: r.client.TeamId,
+ TargetId: data.Id.ValueString(),
+ PolicyId: data.PolicyId.ValueStringPointer(),
+ Name: data.Name.ValueString(),
+ Description: data.Description.ValueString(),
+ Priority: data.Priority.ValueInt32(),
+ Enabled: data.Enabled.ValueBool(),
+ NamespaceSelector: namespaceSelector,
+ WorkloadSelector: workloadSelector,
+ KindFilter: kindFilters,
+ NamePattern: data.NamePattern.toProto(),
+ NamespacePattern: data.NamespacePattern.toProto(),
+ WorkloadNames: workloadNames,
+ WorkloadNamesNotIn: workloadNamesNotIn,
+ KindFilterNotIn: kindFiltersNotIn,
+ AnnotationSelector: annotationSelector,
+ NodeGroupNames: nodeGroupNames, //nolint:staticcheck // deprecated upstream; still sent for compatibility
+ ClusterIds: clusterIds,
}
updateWorkloadPolicyTargetResp, err := r.client.RecommendationClient.UpdateWorkloadPolicyTarget(ctx, connect.NewRequest(updateWorkloadPolicyTargetReq))
@@ -463,8 +535,8 @@ func (r *WorkloadPolicyTargetResource) Delete(ctx context.Context, req resource.
}
_, err := r.client.RecommendationClient.DeleteWorkloadPolicyTarget(ctx, connect.NewRequest(deleteWorkloadPolicyTargetReq))
- if err != nil {
- resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to delete cluster, got error: %s", err))
+ if err != nil && connect.CodeOf(err) != connect.CodeNotFound {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to delete workload policy target, got error: %s", err))
return
}
}
@@ -636,24 +708,24 @@ func (m *WorkloadPolicyTargetResourceModel) fromProto(target *apiv1.WorkloadPoli
m.Description = types.StringValue(target.Description)
m.Priority = types.Int32Value(target.Priority)
m.Enabled = types.BoolValue(target.Enabled)
- m.NamespaceSelector.fromProto(target.NamespaceSelector)
- m.WorkloadSelector.fromProto(target.WorkloadSelector)
+ m.NamespaceSelector = labelSelectorModelFromProto(target.NamespaceSelector)
+ m.WorkloadSelector = labelSelectorModelFromProto(target.WorkloadSelector)
m.KindFilter = types.ListValueMust(types.StringType, fromKindFilter(target.KindFilter))
- m.NamePattern.fromProto(target.NamePattern)
- m.NamespacePattern.fromProto(target.NamespacePattern)
+ m.NamePattern = regexPatternModelFromProto(target.NamePattern)
+ m.NamespacePattern = regexPatternModelFromProto(target.NamespacePattern)
m.WorkloadNames = types.ListValueMust(types.StringType, fromStringList(target.WorkloadNames))
- m.NodeGroupNames = types.ListValueMust(types.StringType, fromStringList(target.NodeGroupNames))
+ m.WorkloadNamesNotIn = types.ListValueMust(types.StringType, fromStringList(target.WorkloadNamesNotIn))
+ m.KindFilterNotIn = types.ListValueMust(types.StringType, fromKindFilter(target.KindFilterNotIn))
+ m.AnnotationSelector = labelSelectorModelFromProto(target.AnnotationSelector)
+ m.NodeGroupNames = types.ListValueMust(types.StringType, fromStringList(target.NodeGroupNames)) //nolint:staticcheck // deprecated upstream; still read back
m.ClusterIds = types.ListValueMust(types.StringType, fromStringList(target.ClusterIds))
}
-func (m *LabelSelector) fromProto(selector *apiv1.LabelSelector) {
+func labelSelectorModelFromProto(selector *apiv1.LabelSelector) *LabelSelector {
if selector == nil {
- m = nil
- return
- }
- if m == nil {
- m = &LabelSelector{}
+ return nil
}
+ m := &LabelSelector{}
// Handle match_labels: if empty, set to null instead of empty map
if len(selector.MatchLabels) == 0 {
@@ -665,25 +737,13 @@ func (m *LabelSelector) fromProto(selector *apiv1.LabelSelector) {
// Manually convert match expressions from proto to Terraform types
var matchExpressions []attr.Value
for _, expr := range selector.MatchExpressions {
- // Convert operator enum to string
- var operatorStr string
- switch expr.Operator {
- case apiv1.LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_IN:
- operatorStr = "In"
- case apiv1.LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_NOT_IN:
- operatorStr = "NotIn"
- case apiv1.LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_EXISTS:
- operatorStr = "Exists"
- case apiv1.LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_DOES_NOT_EXIST:
- operatorStr = "DoesNotExist"
- case apiv1.LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_GT:
- operatorStr = "Gt"
- case apiv1.LabelSelectorOperator_LABEL_SELECTOR_OPERATOR_LT:
- operatorStr = "Lt"
- }
+ operatorStr := labelSelectorOperatorToString(expr.Operator)
// Convert values to Terraform list
- values := types.ListValueMust(types.StringType, fromStringList(expr.Values))
+ values := types.ListNull(types.StringType)
+ if len(expr.Values) > 0 {
+ values = types.ListValueMust(types.StringType, fromStringList(expr.Values))
+ }
// Build the match expression object
matchExpr := types.ObjectValueMust(
@@ -703,16 +763,19 @@ func (m *LabelSelector) fromProto(selector *apiv1.LabelSelector) {
} else {
m.MatchExpressions = types.ListValueMust(types.ObjectType{AttrTypes: MatchExpression{}.AttrTypes()}, matchExpressions)
}
+ return m
}
-func (m *RegexPattern) fromProto(pattern *apiv1.RegexPattern) {
+func regexPatternModelFromProto(pattern *apiv1.RegexPattern) *RegexPattern {
if pattern == nil {
- m = nil
- return
- }
- if m == nil {
- m = &RegexPattern{}
+ return nil
}
+ m := &RegexPattern{}
m.Pattern = types.StringValue(pattern.Pattern)
- m.Flags = types.StringValue(pattern.Flags)
+ if pattern.Flags == "" {
+ m.Flags = types.StringNull()
+ } else {
+ m.Flags = types.StringValue(pattern.Flags)
+ }
+ return m
}
diff --git a/internal/provider/workload_policy_target_test.go b/internal/provider/workload_policy_target_test.go
index 29006b7..fe88579 100644
--- a/internal/provider/workload_policy_target_test.go
+++ b/internal/provider/workload_policy_target_test.go
@@ -181,7 +181,8 @@ func TestWorkloadPolicyTargetResourceModel(t *testing.T) {
map[string]attr.Value{
"key": types.StringValue("version"),
"operator": types.StringValue("Exists"),
- "values": types.ListValueMust(types.StringType, []attr.Value{}),
+ // Exists takes no values; the provider round-trips absent values as null.
+ "values": types.ListNull(types.StringType),
},
),
},
@@ -342,8 +343,7 @@ func TestWorkloadPolicyTargetResourceModel(t *testing.T) {
Flags: "i",
}
- pattern := &RegexPattern{}
- pattern.fromProto(protoPattern)
+ pattern := regexPatternModelFromProto(protoPattern)
if pattern.Pattern.ValueString() != "^prod-" {
t.Errorf("Expected pattern '^prod-', got %s", pattern.Pattern.ValueString())
}
@@ -361,8 +361,7 @@ func TestWorkloadPolicyTargetResourceModel(t *testing.T) {
}
// Convert from proto
- selector := &LabelSelector{}
- selector.fromProto(proto)
+ selector := labelSelectorModelFromProto(proto)
// Verify that empty collections are converted to null
if !selector.MatchLabels.IsNull() {
@@ -422,7 +421,8 @@ func TestWorkloadPolicyTargetResourceModel(t *testing.T) {
map[string]attr.Value{
"key": types.StringValue("version"),
"operator": types.StringValue("Exists"),
- "values": types.ListValueMust(types.StringType, []attr.Value{}),
+ // Exists takes no values; the provider round-trips absent values as null.
+ "values": types.ListNull(types.StringType),
},
),
},
@@ -437,8 +437,7 @@ func TestWorkloadPolicyTargetResourceModel(t *testing.T) {
}
// Convert back from proto
- converted := &LabelSelector{}
- converted.fromProto(proto)
+ converted := labelSelectorModelFromProto(proto)
// Verify match labels
if !original.MatchLabels.Equal(converted.MatchLabels) {
diff --git a/internal/provider/workload_rule.go b/internal/provider/workload_rule.go
index 80263b6..f51282b 100644
--- a/internal/provider/workload_rule.go
+++ b/internal/provider/workload_rule.go
@@ -5,6 +5,8 @@ import (
"fmt"
"connectrpc.com/connect"
+ "github.com/hashicorp/terraform-plugin-framework-validators/int32validator"
+ "github.com/hashicorp/terraform-plugin-framework-validators/int64validator"
"github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/attr"
@@ -56,6 +58,8 @@ type WorkloadRuleResourceModel struct {
LiveMigrationEnabled types.Bool `tfsdk:"live_migration_enabled"`
UseInPlaceVerticalScaling types.Bool `tfsdk:"use_in_place_vertical_scaling"`
Containers []ContainerRuleModel `tfsdk:"containers"`
+ Disabled types.Bool `tfsdk:"disabled"`
+ LookbackPeriodSeconds types.Int32 `tfsdk:"lookback_period_seconds"`
}
type ResourceRuleConfigModel struct {
@@ -68,15 +72,20 @@ type ResourceRuleConfigModel struct {
MaxScaleUpPercent types.Float32 `tfsdk:"max_scale_up_percent"`
MaxScaleDownPercent types.Float32 `tfsdk:"max_scale_down_percent"`
LimitsRemovalEnabled types.Bool `tfsdk:"limits_removal_enabled"`
+ InitialRequest types.Int64 `tfsdk:"initial_request"`
+ FloorPercent types.Int64 `tfsdk:"floor_percent"`
+ CeilingPercent types.Int64 `tfsdk:"ceiling_percent"`
+ InitialLimit types.Int64 `tfsdk:"initial_limit"`
+ LimitFloorPercent types.Int64 `tfsdk:"limit_floor_percent"`
+ LimitCeilingPercent types.Int64 `tfsdk:"limit_ceiling_percent"`
+ RequestUseRss types.Bool `tfsdk:"request_use_rss"`
+ LimitUseRss types.Bool `tfsdk:"limit_use_rss"`
}
type HPARuleConfigModel struct {
Enabled types.Bool `tfsdk:"enabled"`
MinReplicas types.Int32 `tfsdk:"min_replicas"`
MaxReplicas types.Int32 `tfsdk:"max_replicas"`
- TargetUtilization types.Float32 `tfsdk:"target_utilization"`
- TargetMemoryUtilization types.Float32 `tfsdk:"target_memory_utilization"`
- PrimaryMetric types.String `tfsdk:"primary_metric"`
MaxReplicaChangePercent types.Float32 `tfsdk:"max_replica_change_percent"`
ScaleDownCooldownSeconds types.Int32 `tfsdk:"scale_down_cooldown_seconds"`
Metrics []HPAMetricTriggerModel `tfsdk:"metrics"`
@@ -93,6 +102,7 @@ type HPAMetricTriggerModel struct {
Metadata types.Map `tfsdk:"metadata"`
ServerAddress types.String `tfsdk:"server_address"`
Query types.String `tfsdk:"query"`
+ ConnectorId types.String `tfsdk:"connector_id"`
}
type HPAFallbackModel struct {
@@ -143,6 +153,8 @@ type ContainerResourceConfigModel struct {
LimitsAdjustmentEnabled types.Bool `tfsdk:"limits_adjustment_enabled"`
TargetPercentile types.Float32 `tfsdk:"target_percentile"`
LimitsRemovalEnabled types.Bool `tfsdk:"limits_removal_enabled"`
+ RequestUseRss types.Bool `tfsdk:"request_use_rss"`
+ LimitUseRss types.Bool `tfsdk:"limit_use_rss"`
}
func hpaScalingRulesAttributes() map[string]schema.Attribute {
@@ -233,6 +245,42 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Computed: true,
Default: booldefault.StaticBool(false),
},
+ "initial_request": schema.Int64Attribute{
+ Description: "Baseline request the floor/ceiling percents are computed against",
+ Optional: true,
+ },
+ "floor_percent": schema.Int64Attribute{
+ Description: "Floor for the request as a percent of initial_request (1-100)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 100)},
+ },
+ "ceiling_percent": schema.Int64Attribute{
+ Description: "Ceiling for the request as a percent of initial_request (1-1000)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 1000)},
+ },
+ "initial_limit": schema.Int64Attribute{
+ Description: "Baseline limit the limit floor/ceiling percents are computed against",
+ Optional: true,
+ },
+ "limit_floor_percent": schema.Int64Attribute{
+ Description: "Floor for the limit as a percent of initial_limit (1-100)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 100)},
+ },
+ "limit_ceiling_percent": schema.Int64Attribute{
+ Description: "Ceiling for the limit as a percent of initial_limit (1-1000)",
+ Optional: true,
+ Validators: []validator.Int64{int64validator.Between(1, 1000)},
+ },
+ "request_use_rss": schema.BoolAttribute{
+ Description: "Memory only: size the request from RSS instead of working set",
+ Optional: true,
+ },
+ "limit_use_rss": schema.BoolAttribute{
+ Description: "Memory only: derive the limit from an RSS-based recommendation",
+ Optional: true,
+ },
}
}
@@ -272,6 +320,14 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Computed: true,
Default: booldefault.StaticBool(false),
},
+ "request_use_rss": schema.BoolAttribute{
+ Description: "Memory only: size the request from RSS instead of working set",
+ Optional: true,
+ },
+ "limit_use_rss": schema.BoolAttribute{
+ Description: "Memory only: derive the limit from an RSS-based recommendation",
+ Optional: true,
+ },
}
}
@@ -344,21 +400,6 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Description: "Maximum number of replicas",
Optional: true,
},
- "target_utilization": schema.Float32Attribute{
- Description: "Target CPU utilization ratio (0-1)",
- Optional: true,
- },
- "target_memory_utilization": schema.Float32Attribute{
- Description: "Target memory utilization ratio (0-1), tuned independently of CPU",
- Optional: true,
- },
- "primary_metric": schema.StringAttribute{
- Description: "Primary metric for HPA. One of: 'cpu', 'memory', 'gpu', 'network_ingress', 'network_egress'",
- Optional: true,
- Validators: []validator.String{
- stringvalidator.OneOf("cpu", "memory", "gpu", "network_ingress", "network_egress"),
- },
- },
"max_replica_change_percent": schema.Float32Attribute{
Description: "Maximum percentage change in replica count per cycle",
Optional: true,
@@ -372,7 +413,7 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Optional: true,
},
"metrics": schema.ListNestedAttribute{
- Description: "Additional metric triggers (e.g. Prometheus). CPU/Memory/Network triggers are auto-generated from primary_metric.",
+ Description: "HPA metric triggers (CPU, Memory, Network*, or external such as prometheus/kafka). Replaces the removed target_utilization/primary_metric fields.",
Optional: true,
NestedObject: schema.NestedAttributeObject{
Attributes: map[string]schema.Attribute{
@@ -405,6 +446,10 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Description: "PromQL query string. Packed into metadata by the service layer.",
Optional: true,
},
+ "connector_id": schema.StringAttribute{
+ Description: "HPA connector ID to source this metric's connection settings from",
+ Optional: true,
+ },
},
},
},
@@ -513,7 +558,7 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Validators: []validator.List{
listvalidator.NoNullValues(),
listvalidator.UniqueValues(),
- listvalidator.ValueStringsAre(stringvalidator.OneOf("pod_creation", "pod_update")),
+ listvalidator.ValueStringsAre(stringvalidator.OneOf("pod_creation", "pod_update", "pod_evict")),
},
},
"scheduler_plugins": schema.ListAttribute{
@@ -541,6 +586,19 @@ func (r *WorkloadRuleResource) Schema(ctx context.Context, req resource.SchemaRe
Computed: true,
Default: booldefault.StaticBool(false),
},
+ "disabled": schema.BoolAttribute{
+ Description: "Create the rule in a disabled state",
+ MarkdownDescription: "Whether the rule is disabled. A disabled rule exists but is not evaluated. Changing this after creation uses the ToggleWorkloadRuleDisabled API (the upsert API rejects `disabled` on update).",
+ Optional: true,
+ Computed: true,
+ Default: booldefault.StaticBool(false),
+ },
+ "lookback_period_seconds": schema.Int32Attribute{
+ Description: "Per-rule override of the metrics lookback window (seconds)",
+ MarkdownDescription: "Per-rule override of the metrics lookback window in seconds. Unset inherits the team default (7 days). Minimum 3600 (1h), maximum 2592000 (30d); higher tiers may be capped server-side.",
+ Optional: true,
+ Validators: []validator.Int32{int32validator.Between(3600, 2592000)},
+ },
"containers": schema.ListNestedAttribute{
Description: "Per-container resource rule configurations. When empty, workload-level rules apply to all containers.",
Optional: true,
@@ -597,7 +655,7 @@ func (r *WorkloadRuleResource) Create(ctx context.Context, req resource.CreateRe
return
}
- upsertReq := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId)
+ upsertReq := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId, true)
if resp.Diagnostics.HasError() {
return
}
@@ -634,11 +692,15 @@ func (r *WorkloadRuleResource) Read(ctx context.Context, req resource.ReadReques
RuleId: data.Id.ValueString(),
}))
if err != nil {
+ if connect.CodeOf(err) == connect.CodeNotFound {
+ resp.State.RemoveResource(ctx)
+ return
+ }
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to get workload rule, got error: %s", err))
return
}
if getRuleResp.Msg.Rule == nil {
- resp.Diagnostics.AddError("Client Error", "Workload rule not found")
+ resp.State.RemoveResource(ctx)
return
}
@@ -657,7 +719,13 @@ func (r *WorkloadRuleResource) Update(ctx context.Context, req resource.UpdateRe
return
}
- upsertReq := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId)
+ var state WorkloadRuleResourceModel
+ resp.Diagnostics.Append(req.State.Get(ctx, &state)...)
+ if resp.Diagnostics.HasError() {
+ return
+ }
+
+ upsertReq := data.toProto(ctx, &resp.Diagnostics, r.client.TeamId, false)
if resp.Diagnostics.HasError() {
return
}
@@ -672,6 +740,24 @@ func (r *WorkloadRuleResource) Update(ctx context.Context, req resource.UpdateRe
return
}
+ // disabled cannot be sent through the upsert on update; use the toggle RPC.
+ if !data.Disabled.IsNull() && !data.Disabled.IsUnknown() && data.Disabled.ValueBool() != state.Disabled.ValueBool() {
+ toggleResp, err := r.client.RecommendationClient.ToggleWorkloadRuleDisabled(ctx, connect.NewRequest(&apiv1.ToggleWorkloadRuleDisabledRequest{
+ TeamId: r.client.TeamId,
+ RuleId: upsertResp.Msg.Rule.RuleId,
+ Disabled: data.Disabled.ValueBool(),
+ }))
+ if err != nil {
+ resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to toggle workload rule disabled state, got error: %s", err))
+ return
+ }
+ if toggleResp.Msg.Rule != nil {
+ upsertResp.Msg.Rule.Disabled = toggleResp.Msg.Rule.Disabled
+ } else {
+ upsertResp.Msg.Rule.Disabled = data.Disabled.ValueBool()
+ }
+ }
+
plan := data
data.fromProto(upsertResp.Msg.Rule)
data.preserveNullsFrom(&plan)
@@ -691,7 +777,7 @@ func (r *WorkloadRuleResource) Delete(ctx context.Context, req resource.DeleteRe
TeamId: r.client.TeamId,
RuleId: data.Id.ValueString(),
}))
- if err != nil {
+ if err != nil && connect.CodeOf(err) != connect.CodeNotFound {
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to delete workload rule, got error: %s", err))
return
}
@@ -703,7 +789,10 @@ func (r *WorkloadRuleResource) ImportState(ctx context.Context, req resource.Imp
// ---------- toProto / fromProto ----------
-func (m *WorkloadRuleResourceModel) toProto(ctx context.Context, diags *diag.Diagnostics, teamId string) *apiv1.UpsertManualWorkloadRuleRequest {
+// toProto builds the upsert request. includeDisabled must be true only on
+// Create: the server rejects fields.disabled when updating an existing rule
+// (ToggleWorkloadRuleDisabled is the update path, handled in Update).
+func (m *WorkloadRuleResourceModel) toProto(ctx context.Context, diags *diag.Diagnostics, teamId string, includeDisabled bool) *apiv1.UpsertManualWorkloadRuleRequest {
source := apiv1.WorkloadRuleSource_WORKLOAD_RULE_SOURCE_TERRAFORM_MANUAL
if m.AutoGenerate.ValueBool() {
source = apiv1.WorkloadRuleSource_WORKLOAD_RULE_SOURCE_TERRAFORM_AUTO
@@ -744,6 +833,8 @@ func (m *WorkloadRuleResourceModel) toProto(ctx context.Context, diags *diag.Dia
return apiv1.WorkloadDetectionTrigger_DETECTION_TRIGGER_POD_CREATION, nil
case "pod_update":
return apiv1.WorkloadDetectionTrigger_DETECTION_TRIGGER_POD_UPDATE, nil
+ case "pod_evict":
+ return apiv1.WorkloadDetectionTrigger_DETECTION_TRIGGER_POD_EVICT, nil
default:
return apiv1.WorkloadDetectionTrigger_DETECTION_TRIGGER_UNSPECIFIED, fmt.Errorf("invalid detection trigger: %s", value)
}
@@ -789,6 +880,14 @@ func (m *WorkloadRuleResourceModel) toProto(ctx context.Context, diags *diag.Dia
v := m.DefragmentationSchedule.ValueString()
fields.DefragmentationSchedule = &v
}
+ if !m.LookbackPeriodSeconds.IsNull() && !m.LookbackPeriodSeconds.IsUnknown() {
+ v := m.LookbackPeriodSeconds.ValueInt32()
+ fields.LookbackPeriodSeconds = &v
+ }
+ if includeDisabled && !m.Disabled.IsNull() && !m.Disabled.IsUnknown() {
+ v := m.Disabled.ValueBool()
+ fields.Disabled = &v
+ }
req.Fields = fields
return req
@@ -850,6 +949,9 @@ func (m *WorkloadRuleResourceModel) fromProto(r *apiv1.WorkloadRule) {
m.AutoGenerate = types.BoolValue(false)
}
+ m.Disabled = types.BoolValue(r.Disabled)
+ m.LookbackPeriodSeconds = types.Int32PointerValue(r.LookbackPeriodSeconds)
+
m.CpuRule = resourceRuleConfigFromProto(r.CpuRule)
m.MemoryRule = resourceRuleConfigFromProto(r.MemoryRule)
m.GpuRule = resourceRuleConfigFromProto(r.GpuRule)
@@ -892,6 +994,8 @@ func (m *WorkloadRuleResourceModel) fromProto(r *apiv1.WorkloadRule) {
detectionTriggers = append(detectionTriggers, types.StringValue("pod_creation"))
case apiv1.WorkloadDetectionTrigger_DETECTION_TRIGGER_POD_UPDATE:
detectionTriggers = append(detectionTriggers, types.StringValue("pod_update"))
+ case apiv1.WorkloadDetectionTrigger_DETECTION_TRIGGER_POD_EVICT:
+ detectionTriggers = append(detectionTriggers, types.StringValue("pod_evict"))
}
}
m.DetectionTriggers = types.ListValueMust(types.StringType, detectionTriggers)
@@ -948,6 +1052,14 @@ func (m *ResourceRuleConfigModel) toProto() *apiv1.ResourceRuleConfig {
v := m.MaxScaleDownPercent.ValueFloat32()
p.MaxScaleDownPercent = &v
}
+ p.InitialRequest = m.InitialRequest.ValueInt64Pointer()
+ p.FloorPercent = m.FloorPercent.ValueInt64Pointer()
+ p.CeilingPercent = m.CeilingPercent.ValueInt64Pointer()
+ p.InitialLimit = m.InitialLimit.ValueInt64Pointer()
+ p.LimitFloorPercent = m.LimitFloorPercent.ValueInt64Pointer()
+ p.LimitCeilingPercent = m.LimitCeilingPercent.ValueInt64Pointer()
+ p.RequestUseRss = m.RequestUseRss.ValueBoolPointer()
+ p.LimitUseRss = m.LimitUseRss.ValueBoolPointer()
return p
}
@@ -965,6 +1077,14 @@ func resourceRuleConfigFromProto(p *apiv1.ResourceRuleConfig) *ResourceRuleConfi
TargetPercentile: types.Float32Null(),
MaxScaleUpPercent: types.Float32Null(),
MaxScaleDownPercent: types.Float32Null(),
+ InitialRequest: types.Int64PointerValue(p.InitialRequest),
+ FloorPercent: types.Int64PointerValue(p.FloorPercent),
+ CeilingPercent: types.Int64PointerValue(p.CeilingPercent),
+ InitialLimit: types.Int64PointerValue(p.InitialLimit),
+ LimitFloorPercent: types.Int64PointerValue(p.LimitFloorPercent),
+ LimitCeilingPercent: types.Int64PointerValue(p.LimitCeilingPercent),
+ RequestUseRss: types.BoolPointerValue(p.RequestUseRss),
+ LimitUseRss: types.BoolPointerValue(p.LimitUseRss),
}
if p.MinRequest != nil {
m.MinRequest = types.Int64Value(*p.MinRequest)
@@ -1004,17 +1124,6 @@ func (m *HPARuleConfigModel) toProto() *apiv1.HPARuleConfig {
v := m.MaxReplicas.ValueInt32()
p.MaxReplicas = &v
}
- if !m.TargetUtilization.IsNull() && !m.TargetUtilization.IsUnknown() {
- v := m.TargetUtilization.ValueFloat32()
- p.TargetUtilization = &v
- }
- if !m.TargetMemoryUtilization.IsNull() && !m.TargetMemoryUtilization.IsUnknown() {
- v := m.TargetMemoryUtilization.ValueFloat32()
- p.TargetMemoryUtilization = &v
- }
- if !m.PrimaryMetric.IsNull() && !m.PrimaryMetric.IsUnknown() {
- p.PrimaryMetric = wrHPAMetricToProto(m.PrimaryMetric.ValueString())
- }
if !m.MaxReplicaChangePercent.IsNull() && !m.MaxReplicaChangePercent.IsUnknown() {
v := m.MaxReplicaChangePercent.ValueFloat32()
p.MaxReplicaChangePercent = &v
@@ -1047,9 +1156,6 @@ func hpaRuleConfigFromProto(p *apiv1.HPARuleConfig) *HPARuleConfigModel {
Enabled: types.BoolValue(p.Enabled),
MinReplicas: types.Int32Null(),
MaxReplicas: types.Int32Null(),
- TargetUtilization: types.Float32Null(),
- TargetMemoryUtilization: types.Float32Null(),
- PrimaryMetric: types.StringNull(),
MaxReplicaChangePercent: types.Float32Null(),
ScaleDownCooldownSeconds: types.Int32Null(),
CompositeFormula: types.StringNull(),
@@ -1060,15 +1166,6 @@ func hpaRuleConfigFromProto(p *apiv1.HPARuleConfig) *HPARuleConfigModel {
if p.MaxReplicas != nil {
m.MaxReplicas = types.Int32Value(*p.MaxReplicas)
}
- if p.TargetUtilization != nil {
- m.TargetUtilization = types.Float32Value(*p.TargetUtilization)
- }
- if p.TargetMemoryUtilization != nil {
- m.TargetMemoryUtilization = types.Float32Value(*p.TargetMemoryUtilization)
- }
- if p.PrimaryMetric != nil {
- m.PrimaryMetric = types.StringValue(wrHPAMetricFromProto(*p.PrimaryMetric))
- }
if p.MaxReplicaChangePercent != nil {
m.MaxReplicaChangePercent = types.Float32Value(*p.MaxReplicaChangePercent)
}
@@ -1090,42 +1187,6 @@ func hpaRuleConfigFromProto(p *apiv1.HPARuleConfig) *HPARuleConfigModel {
return m
}
-func wrHPAMetricToProto(metric string) *apiv1.HPAMetricType {
- var m apiv1.HPAMetricType
- switch metric {
- case "cpu":
- m = apiv1.HPAMetricType_HPA_METRIC_TYPE_CPU
- case "memory":
- m = apiv1.HPAMetricType_HPA_METRIC_TYPE_MEMORY
- case "gpu":
- m = apiv1.HPAMetricType_HPA_METRIC_TYPE_GPU
- case "network_ingress":
- m = apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_INGRESS
- case "network_egress":
- m = apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_EGRESS
- default:
- return nil
- }
- return &m
-}
-
-func wrHPAMetricFromProto(metric apiv1.HPAMetricType) string {
- switch metric {
- case apiv1.HPAMetricType_HPA_METRIC_TYPE_CPU:
- return "cpu"
- case apiv1.HPAMetricType_HPA_METRIC_TYPE_MEMORY:
- return "memory"
- case apiv1.HPAMetricType_HPA_METRIC_TYPE_GPU:
- return "gpu"
- case apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_INGRESS:
- return "network_ingress"
- case apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_EGRESS:
- return "network_egress"
- default:
- return ""
- }
-}
-
// ---------- EmergencyResponse ----------
func (m *EmergencyResponseModel) toProto() *apiv1.EmergencyResponseConfig {
@@ -1160,12 +1221,12 @@ func emergencyResponseFromProto(p *apiv1.EmergencyResponseConfig) *EmergencyResp
}
return &EmergencyResponseModel{
OomEnabled: types.BoolValue(p.OomEnabled),
- OomMemoryMultiplier: types.Float32Value(p.OomMemoryMultiplier),
+ OomMemoryMultiplier: float32OrNull(p.OomMemoryMultiplier),
OomMaxReactions: types.Int32Value(p.OomMaxReactions),
OomCooldownSeconds: types.Int32Value(p.OomCooldownSeconds),
CpuThrottlingEnabled: types.BoolValue(p.CpuThrottlingEnabled),
- CpuThrottlingThreshold: types.Float32Value(p.CpuThrottlingThreshold),
- CpuThrottlingMultiplier: types.Float32Value(p.CpuThrottlingMultiplier),
+ CpuThrottlingThreshold: float32OrNull(p.CpuThrottlingThreshold),
+ CpuThrottlingMultiplier: float32OrNull(p.CpuThrottlingMultiplier),
}
}
@@ -1228,6 +1289,8 @@ func (m *ContainerResourceConfigModel) toProto() *apiv1.ContainerResourceConfig
v := m.TargetPercentile.ValueFloat32()
p.TargetPercentile = &v
}
+ p.RequestUseRss = m.RequestUseRss.ValueBoolPointer()
+ p.LimitUseRss = m.LimitUseRss.ValueBoolPointer()
return p
}
@@ -1243,6 +1306,8 @@ func containerResourceConfigFromProto(p *apiv1.ContainerResourceConfig) *Contain
MaxRequest: types.Int64Null(),
LimitMultiplier: types.Float32Null(),
TargetPercentile: types.Float32Null(),
+ RequestUseRss: types.BoolPointerValue(p.RequestUseRss),
+ LimitUseRss: types.BoolPointerValue(p.LimitUseRss),
}
if p.MinRequest != nil {
m.MinRequest = types.Int64Value(*p.MinRequest)
@@ -1294,6 +1359,10 @@ func hpaMetricTriggersToProto(ms []HPAMetricTriggerModel) []*apiv1.HPAMetricTrig
v := m.Query.ValueString()
t.Query = &v
}
+ if !m.ConnectorId.IsNull() && !m.ConnectorId.IsUnknown() {
+ v := m.ConnectorId.ValueString()
+ t.ConnectorId = &v
+ }
result[i] = t
}
return result
@@ -1313,6 +1382,7 @@ func hpaMetricTriggersFromProto(ps []*apiv1.HPAMetricTrigger) []HPAMetricTrigger
Metadata: types.MapNull(types.StringType),
ServerAddress: types.StringNull(),
Query: types.StringNull(),
+ ConnectorId: types.StringNull(),
}
if p.TargetUtilization != nil {
m.TargetUtilization = types.StringValue(*p.TargetUtilization)
@@ -1323,15 +1393,28 @@ func hpaMetricTriggersFromProto(ps []*apiv1.HPAMetricTrigger) []HPAMetricTrigger
if p.Weight != nil {
m.Weight = types.StringValue(*p.Weight)
}
- if len(p.Metadata) > 0 {
- m.Metadata = types.MapValueMust(types.StringType, fromStringMap(p.Metadata))
+ // The backend folds server_address/query into metadata["serverAddress"/"query"]
+ // on write and re-derives the dedicated fields on read. Strip the folded keys
+ // so metadata reflects only what the user configured.
+ metadata := make(map[string]string, len(p.Metadata))
+ for k, v := range p.Metadata {
+ if k == "serverAddress" || k == "query" {
+ continue
+ }
+ metadata[k] = v
}
- if p.ServerAddress != nil {
+ if len(metadata) > 0 {
+ m.Metadata = types.MapValueMust(types.StringType, fromStringMap(metadata))
+ }
+ if p.ServerAddress != nil && *p.ServerAddress != "" {
m.ServerAddress = types.StringValue(*p.ServerAddress)
}
- if p.Query != nil {
+ if p.Query != nil && *p.Query != "" {
m.Query = types.StringValue(*p.Query)
}
+ if p.ConnectorId != nil && *p.ConnectorId != "" {
+ m.ConnectorId = types.StringValue(*p.ConnectorId)
+ }
result = append(result, m)
}
return result
@@ -1359,8 +1442,8 @@ func hpaFallbackFromProto(p *apiv1.HPAFallback) *HPAFallbackModel {
}
return &HPAFallbackModel{
Replicas: types.Int32Value(p.Replicas),
- Behavior: types.StringValue(p.Behavior),
- FailureThreshold: types.Int32Value(p.FailureThreshold),
+ Behavior: stringValue(p.Behavior),
+ FailureThreshold: int32OrNull(p.FailureThreshold),
}
}
@@ -1407,8 +1490,8 @@ func hpaScalingRulesFromProto(p *apiv1.HPAScalingRules) *HPAScalingRulesModel {
return nil
}
m := &HPAScalingRulesModel{
- StabilizationWindowSeconds: types.Int32Value(p.StabilizationWindowSeconds),
- SelectPolicy: types.StringValue(p.SelectPolicy),
+ StabilizationWindowSeconds: int32OrNull(p.StabilizationWindowSeconds),
+ SelectPolicy: stringValue(p.SelectPolicy),
}
for _, pol := range p.Policies {
if pol == nil {
@@ -1422,3 +1505,20 @@ func hpaScalingRulesFromProto(p *apiv1.HPAScalingRules) *HPAScalingRulesModel {
}
return m
}
+
+// float32OrNull returns null for the proto zero value so omitted optional
+// attributes round-trip as null instead of producing an
+// "inconsistent result after apply" error.
+func float32OrNull(v float32) types.Float32 {
+ if v == 0 {
+ return types.Float32Null()
+ }
+ return types.Float32Value(v)
+}
+
+func int32OrNull(v int32) types.Int32 {
+ if v == 0 {
+ return types.Int32Null()
+ }
+ return types.Int32Value(v)
+}
diff --git a/internal/provider/workload_rule_test.go b/internal/provider/workload_rule_test.go
index 9b4c9ca..80254cc 100644
--- a/internal/provider/workload_rule_test.go
+++ b/internal/provider/workload_rule_test.go
@@ -255,8 +255,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
Enabled: types.BoolValue(true),
MinReplicas: types.Int32Value(2),
MaxReplicas: types.Int32Value(10),
- TargetUtilization: types.Float32Value(0.7),
- PrimaryMetric: types.StringValue("cpu"),
MaxReplicaChangePercent: types.Float32Value(50.0),
}
@@ -273,12 +271,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
if p.MaxReplicas == nil || *p.MaxReplicas != 10 {
t.Errorf("Expected MaxReplicas=10, got %v", p.MaxReplicas)
}
- if p.TargetUtilization == nil || *p.TargetUtilization != 0.7 {
- t.Errorf("Expected TargetUtilization=0.7, got %v", p.TargetUtilization)
- }
- if p.PrimaryMetric == nil || *p.PrimaryMetric != apiv1.HPAMetricType_HPA_METRIC_TYPE_CPU {
- t.Errorf("Expected PrimaryMetric=CPU, got %v", p.PrimaryMetric)
- }
if p.MaxReplicaChangePercent == nil || *p.MaxReplicaChangePercent != 50.0 {
t.Errorf("Expected MaxReplicaChangePercent=50.0, got %v", p.MaxReplicaChangePercent)
}
@@ -294,16 +286,12 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
t.Run("HPARuleConfigFromProto_AllFields", func(t *testing.T) {
minR := int32(2)
maxR := int32(10)
- util := float32(0.7)
- metric := apiv1.HPAMetricType_HPA_METRIC_TYPE_MEMORY
maxChange := float32(50.0)
p := &apiv1.HPARuleConfig{
Enabled: true,
MinReplicas: &minR,
MaxReplicas: &maxR,
- TargetUtilization: &util,
- PrimaryMetric: &metric,
MaxReplicaChangePercent: &maxChange,
}
@@ -320,12 +308,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
if m.MaxReplicas.ValueInt32() != 10 {
t.Errorf("Expected MaxReplicas=10, got %d", m.MaxReplicas.ValueInt32())
}
- if m.TargetUtilization.ValueFloat32() != 0.7 {
- t.Errorf("Expected TargetUtilization=0.7, got %f", m.TargetUtilization.ValueFloat32())
- }
- if m.PrimaryMetric.ValueString() != "memory" {
- t.Errorf("Expected PrimaryMetric='memory', got %s", m.PrimaryMetric.ValueString())
- }
if m.MaxReplicaChangePercent.ValueFloat32() != 50.0 {
t.Errorf("Expected MaxReplicaChangePercent=50.0, got %f", m.MaxReplicaChangePercent.ValueFloat32())
}
@@ -343,9 +325,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
Enabled: types.BoolValue(true),
MinReplicas: types.Int32Value(1),
MaxReplicas: types.Int32Value(5),
- TargetUtilization: types.Float32Value(0.7),
- TargetMemoryUtilization: types.Float32Value(0.8),
- PrimaryMetric: types.StringValue("cpu"),
MaxReplicaChangePercent: types.Float32Null(),
ScaleDownCooldownSeconds: types.Int32Value(300),
CompositeFormula: types.StringValue(formula),
@@ -389,9 +368,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
if p == nil {
t.Fatal("Expected non-nil proto")
}
- if p.TargetMemoryUtilization == nil || *p.TargetMemoryUtilization != 0.8 {
- t.Errorf("Expected TargetMemoryUtilization=0.8, got %v", p.TargetMemoryUtilization)
- }
if p.ScaleDownCooldownSeconds == nil || *p.ScaleDownCooldownSeconds != 300 {
t.Errorf("Expected ScaleDownCooldownSeconds=300, got %v", p.ScaleDownCooldownSeconds)
}
@@ -449,7 +425,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
})
t.Run("HPARuleConfigFromProto_NewFields", func(t *testing.T) {
- memUtil := float32(0.8)
cooldown := int32(300)
formula := "0.6*cpu + 0.4*memory"
targetVal := "100"
@@ -457,7 +432,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
p := &apiv1.HPARuleConfig{
Enabled: true,
- TargetMemoryUtilization: &memUtil,
ScaleDownCooldownSeconds: &cooldown,
CompositeFormula: &formula,
Metrics: []*apiv1.HPAMetricTrigger{
@@ -486,9 +460,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
if m == nil {
t.Fatal("Expected non-nil model")
}
- if m.TargetMemoryUtilization.ValueFloat32() != 0.8 {
- t.Errorf("Expected TargetMemoryUtilization=0.8, got %f", m.TargetMemoryUtilization.ValueFloat32())
- }
if m.ScaleDownCooldownSeconds.ValueInt32() != 300 {
t.Errorf("Expected ScaleDownCooldownSeconds=300, got %d", m.ScaleDownCooldownSeconds.ValueInt32())
}
@@ -579,56 +550,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
}
})
- // ---------- HPA metric conversions ----------
-
- t.Run("HPAMetricToProto", func(t *testing.T) {
- cases := []struct {
- input string
- expected apiv1.HPAMetricType
- }{
- {"cpu", apiv1.HPAMetricType_HPA_METRIC_TYPE_CPU},
- {"memory", apiv1.HPAMetricType_HPA_METRIC_TYPE_MEMORY},
- {"gpu", apiv1.HPAMetricType_HPA_METRIC_TYPE_GPU},
- {"network_ingress", apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_INGRESS},
- {"network_egress", apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_EGRESS},
- }
- for _, tc := range cases {
- result := wrHPAMetricToProto(tc.input)
- if result == nil {
- t.Errorf("Expected non-nil for %q", tc.input)
- continue
- }
- if *result != tc.expected {
- t.Errorf("Input %q: expected %v, got %v", tc.input, tc.expected, *result)
- }
- }
- if wrHPAMetricToProto("unknown") != nil {
- t.Error("Expected nil for unknown metric")
- }
- })
-
- t.Run("HPAMetricFromProto", func(t *testing.T) {
- cases := []struct {
- input apiv1.HPAMetricType
- expected string
- }{
- {apiv1.HPAMetricType_HPA_METRIC_TYPE_CPU, "cpu"},
- {apiv1.HPAMetricType_HPA_METRIC_TYPE_MEMORY, "memory"},
- {apiv1.HPAMetricType_HPA_METRIC_TYPE_GPU, "gpu"},
- {apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_INGRESS, "network_ingress"},
- {apiv1.HPAMetricType_HPA_METRIC_TYPE_NETWORK_EGRESS, "network_egress"},
- }
- for _, tc := range cases {
- result := wrHPAMetricFromProto(tc.input)
- if result != tc.expected {
- t.Errorf("Input %v: expected %q, got %q", tc.input, tc.expected, result)
- }
- }
- if wrHPAMetricFromProto(apiv1.HPAMetricType_HPA_METRIC_TYPE_UNSPECIFIED) != "" {
- t.Error("Expected empty string for unspecified metric")
- }
- })
-
// ---------- EmergencyResponseModel ----------
t.Run("EmergencyResponseModel_ToProto", func(t *testing.T) {
@@ -938,7 +859,7 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
UseInPlaceVerticalScaling: types.BoolValue(false),
}
- req := m.toProto(ctx, &diags, "team-123")
+ req := m.toProto(ctx, &diags, "team-123", true)
if diags.HasError() {
t.Fatalf("Unexpected error: %v", diags)
}
@@ -1014,7 +935,7 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
Containers: nil,
}
- req := m.toProto(ctx, &diags, "team-456")
+ req := m.toProto(ctx, &diags, "team-456", true)
if diags.HasError() {
t.Fatalf("Unexpected error: %v", diags)
}
@@ -1401,11 +1322,9 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
Name: types.StringValue("my-app"),
AutoGenerate: types.BoolValue(false),
HpaRule: &HPARuleConfigModel{
- Enabled: types.BoolValue(true),
- MinReplicas: types.Int32Value(2),
- MaxReplicas: types.Int32Value(10),
- TargetUtilization: types.Float32Value(0.7),
- PrimaryMetric: types.StringValue("cpu"),
+ Enabled: types.BoolValue(true),
+ MinReplicas: types.Int32Value(2),
+ MaxReplicas: types.Int32Value(10),
},
CpuRule: nil,
MemoryRule: nil,
@@ -1422,7 +1341,7 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
UseInPlaceVerticalScaling: types.BoolValue(false),
}
- req := m.toProto(ctx, &diags, "team-123")
+ req := m.toProto(ctx, &diags, "team-123", true)
if diags.HasError() {
t.Fatalf("Unexpected error: %v", diags)
}
@@ -1461,8 +1380,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
t.Run("WorkloadRuleResourceModel_FromProto_WithHpaRule", func(t *testing.T) {
minR := int32(2)
maxR := int32(10)
- util := float32(0.7)
- metric := apiv1.HPAMetricType_HPA_METRIC_TYPE_CPU
r := &apiv1.WorkloadRule{
RuleId: "rule-hpa",
@@ -1472,11 +1389,9 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
Name: "my-app",
CurrentSource: "manual",
HpaRule: &apiv1.HPARuleConfig{
- Enabled: true,
- MinReplicas: &minR,
- MaxReplicas: &maxR,
- TargetUtilization: &util,
- PrimaryMetric: &metric,
+ Enabled: true,
+ MinReplicas: &minR,
+ MaxReplicas: &maxR,
},
}
@@ -1495,12 +1410,6 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
if m.HpaRule.MaxReplicas.ValueInt32() != 10 {
t.Errorf("Expected MaxReplicas=10, got %d", m.HpaRule.MaxReplicas.ValueInt32())
}
- if m.HpaRule.TargetUtilization.ValueFloat32() != 0.7 {
- t.Errorf("Expected TargetUtilization=0.7, got %f", m.HpaRule.TargetUtilization.ValueFloat32())
- }
- if m.HpaRule.PrimaryMetric.ValueString() != "cpu" {
- t.Errorf("Expected PrimaryMetric='cpu', got %s", m.HpaRule.PrimaryMetric.ValueString())
- }
})
// ---------- Source field (terraform_manual / terraform_auto) ----------
@@ -1526,7 +1435,7 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
UseInPlaceVerticalScaling: types.BoolValue(false),
}
- req := m.toProto(ctx, &diags, "team-1")
+ req := m.toProto(ctx, &diags, "team-1", true)
if diags.HasError() {
t.Fatalf("Unexpected error: %v", diags)
}
@@ -1556,7 +1465,7 @@ func TestWorkloadRuleResourceModel(t *testing.T) {
UseInPlaceVerticalScaling: types.BoolValue(false),
}
- req := m.toProto(ctx, &diags, "team-1")
+ req := m.toProto(ctx, &diags, "team-1", true)
if diags.HasError() {
t.Fatalf("Unexpected error: %v", diags)
}