From 9bdd5d790389f14d5e9cb88de4f44b6189d4e0e4 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Mon, 16 Sep 2024 23:27:57 -0700
Subject: [PATCH 1/8] feat: allow customzation on readyz and livez config
Signed-off-by: Derek Wang
---
api/json-schema/schema.json | 43 +
api/openapi-spec/swagger.json | 43 +
...w.numaproj.io_interstepbufferservices.yaml | 252 +++
.../numaflow.numaproj.io_monovertices.yaml | 252 +++
.../full/numaflow.numaproj.io_pipelines.yaml | 576 ++++++
.../full/numaflow.numaproj.io_vertices.yaml | 288 +++
config/install.yaml | 1368 +++++++++++++++
config/namespace-install.yaml | 1368 +++++++++++++++
docs/APIs.md | 209 +++
.../numaflow/v1alpha1/container_template.go | 38 +
.../v1alpha1/container_template_test.go | 146 ++
pkg/apis/numaflow/v1alpha1/generated.pb.go | 1548 +++++++++++------
pkg/apis/numaflow/v1alpha1/generated.proto | 39 +
.../numaflow/v1alpha1/mono_vertex_types.go | 26 +-
.../v1alpha1/mono_vertex_types_test.go | 24 +
.../numaflow/v1alpha1/openapi_generated.go | 73 +-
pkg/apis/numaflow/v1alpha1/probe.go | 74 +
pkg/apis/numaflow/v1alpha1/probe_test.go | 199 +++
pkg/apis/numaflow/v1alpha1/sink.go | 14 +-
pkg/apis/numaflow/v1alpha1/sink_test.go | 22 +
pkg/apis/numaflow/v1alpha1/source.go | 30 +-
pkg/apis/numaflow/v1alpha1/source_test.go | 62 +-
pkg/apis/numaflow/v1alpha1/udf.go | 15 +-
pkg/apis/numaflow/v1alpha1/udf_test.go | 11 +
.../v1alpha1/user_defined_container.go | 4 +
pkg/apis/numaflow/v1alpha1/vertex_types.go | 27 +-
.../numaflow/v1alpha1/vertex_types_test.go | 24 +
rust/numaflow-models/src/models/container.rs | 6 +
.../src/models/container_template.rs | 6 +
rust/numaflow-models/src/models/mod.rs | 2 +
rust/numaflow-models/src/models/probe.rs | 54 +
31 files changed, 6282 insertions(+), 561 deletions(-)
create mode 100644 pkg/apis/numaflow/v1alpha1/probe.go
create mode 100644 pkg/apis/numaflow/v1alpha1/probe_test.go
create mode 100644 rust/numaflow-models/src/models/probe.rs
diff --git a/api/json-schema/schema.json b/api/json-schema/schema.json
index fefd397d8c..24ca429580 100644
--- a/api/json-schema/schema.json
+++ b/api/json-schema/schema.json
@@ -17939,6 +17939,12 @@
"imagePullPolicy": {
"type": "string"
},
+ "livenessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
+ "readinessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
"resources": {
"$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements"
},
@@ -17972,6 +17978,12 @@
"imagePullPolicy": {
"type": "string"
},
+ "livenessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
+ "readinessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
"resources": {
"$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements"
},
@@ -19739,6 +19751,37 @@
},
"type": "object"
},
+ "io.numaproj.numaflow.v1alpha1.Probe": {
+ "description": "Probe is used to customize the configuration for Readiness and Liveness probes.",
+ "properties": {
+ "failureThreshold": {
+ "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "initialDelaySeconds": {
+ "description": "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ "format": "int32",
+ "type": "integer"
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "successThreshold": {
+ "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "timeoutSeconds": {
+ "description": "Number of seconds after which the probe times out. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
"io.numaproj.numaflow.v1alpha1.RedisBufferService": {
"properties": {
"external": {
diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json
index f688e51c8d..e2e29fbabf 100644
--- a/api/openapi-spec/swagger.json
+++ b/api/openapi-spec/swagger.json
@@ -17944,6 +17944,12 @@
"imagePullPolicy": {
"type": "string"
},
+ "livenessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
+ "readinessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
"resources": {
"$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements"
},
@@ -17977,6 +17983,12 @@
"imagePullPolicy": {
"type": "string"
},
+ "livenessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
+ "readinessProbe": {
+ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Probe"
+ },
"resources": {
"$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements"
},
@@ -19725,6 +19737,37 @@
}
}
},
+ "io.numaproj.numaflow.v1alpha1.Probe": {
+ "description": "Probe is used to customize the configuration for Readiness and Liveness probes.",
+ "type": "object",
+ "properties": {
+ "failureThreshold": {
+ "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "initialDelaySeconds": {
+ "description": "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ "type": "integer",
+ "format": "int32"
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "successThreshold": {
+ "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.",
+ "type": "integer",
+ "format": "int32"
+ },
+ "timeoutSeconds": {
+ "description": "Number of seconds after which the probe times out. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ },
"io.numaproj.numaflow.v1alpha1.RedisBufferService": {
"type": "object",
"properties": {
diff --git a/config/base/crds/full/numaflow.numaproj.io_interstepbufferservices.yaml b/config/base/crds/full/numaflow.numaproj.io_interstepbufferservices.yaml
index acc540cd10..0fb6ff2583 100644
--- a/config/base/crds/full/numaflow.numaproj.io_interstepbufferservices.yaml
+++ b/config/base/crds/full/numaflow.numaproj.io_interstepbufferservices.yaml
@@ -527,6 +527,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -747,6 +783,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -947,6 +1019,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1702,6 +1810,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1891,6 +2035,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2091,6 +2271,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2355,6 +2571,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
diff --git a/config/base/crds/full/numaflow.numaproj.io_monovertices.yaml b/config/base/crds/full/numaflow.numaproj.io_monovertices.yaml
index 02ae281ebd..4d8a23ba14 100644
--- a/config/base/crds/full/numaflow.numaproj.io_monovertices.yaml
+++ b/config/base/crds/full/numaflow.numaproj.io_monovertices.yaml
@@ -532,6 +532,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1108,6 +1144,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1315,6 +1387,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3290,6 +3398,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3727,6 +3871,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -4446,6 +4626,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -4657,6 +4873,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
diff --git a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml
index 40db1f403e..d262a8664b 100644
--- a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml
+++ b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml
@@ -246,6 +246,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1581,6 +1617,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1788,6 +1860,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2491,6 +2599,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3220,6 +3364,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3427,6 +3607,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -4124,6 +4340,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -4331,6 +4583,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -5030,6 +5318,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -5237,6 +5561,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -6210,6 +6570,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -7246,6 +7642,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -7683,6 +8115,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -8402,6 +8870,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -8613,6 +9117,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -8861,6 +9401,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
diff --git a/config/base/crds/full/numaflow.numaproj.io_vertices.yaml b/config/base/crds/full/numaflow.numaproj.io_vertices.yaml
index 1f02fd2b35..a1756ec313 100644
--- a/config/base/crds/full/numaflow.numaproj.io_vertices.yaml
+++ b/config/base/crds/full/numaflow.numaproj.io_vertices.yaml
@@ -532,6 +532,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -816,6 +852,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1797,6 +1869,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2833,6 +2941,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3270,6 +3414,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3989,6 +4169,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -4200,6 +4416,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -4525,6 +4777,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
diff --git a/config/install.yaml b/config/install.yaml
index c3db75767a..c6551b513a 100644
--- a/config/install.yaml
+++ b/config/install.yaml
@@ -526,6 +526,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -746,6 +782,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -946,6 +1018,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1701,6 +1809,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1890,6 +2034,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2090,6 +2270,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2354,6 +2570,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3176,6 +3428,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3752,6 +4040,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3959,6 +4283,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -5934,6 +6294,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -6371,6 +6767,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -7090,6 +7522,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -7301,6 +7769,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -8519,6 +9023,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -9854,6 +10394,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -10061,6 +10637,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -10764,6 +11376,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -11493,6 +12141,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -11700,6 +12384,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -12397,6 +13117,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -12604,6 +13360,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -13303,6 +14095,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -13510,6 +14338,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -14483,6 +15347,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -15519,6 +16419,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -15956,6 +16892,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -16675,6 +17647,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -16886,6 +17894,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -17134,6 +18178,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -18696,6 +19776,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -18980,6 +20096,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -19961,6 +21113,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -20997,6 +22185,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -21434,6 +22658,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -22153,6 +23413,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -22364,6 +23660,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -22689,6 +24021,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
diff --git a/config/namespace-install.yaml b/config/namespace-install.yaml
index 5162dc6ad7..07fc13628d 100644
--- a/config/namespace-install.yaml
+++ b/config/namespace-install.yaml
@@ -526,6 +526,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -746,6 +782,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -946,6 +1018,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1701,6 +1809,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -1890,6 +2034,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2090,6 +2270,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -2354,6 +2570,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3176,6 +3428,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3752,6 +4040,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -3959,6 +4283,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -5934,6 +6294,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -6371,6 +6767,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -7090,6 +7522,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -7301,6 +7769,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -8519,6 +9023,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -9854,6 +10394,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -10061,6 +10637,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -10764,6 +11376,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -11493,6 +12141,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -11700,6 +12384,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -12397,6 +13117,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -12604,6 +13360,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -13303,6 +14095,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -13510,6 +14338,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -14483,6 +15347,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -15519,6 +16419,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -15956,6 +16892,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -16675,6 +17647,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -16886,6 +17894,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -17134,6 +18178,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -18696,6 +19776,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -18980,6 +20096,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -19961,6 +21113,42 @@ spec:
type: array
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -20997,6 +22185,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -21434,6 +22658,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -22153,6 +23413,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -22364,6 +23660,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
@@ -22689,6 +24021,42 @@ spec:
type: string
imagePullPolicy:
type: string
+ livenessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
+ readinessProbe:
+ properties:
+ failureThreshold:
+ format: int32
+ type: integer
+ initialDelaySeconds:
+ format: int32
+ type: integer
+ periodSeconds:
+ format: int32
+ type: integer
+ successThreshold:
+ format: int32
+ type: integer
+ timeoutSeconds:
+ format: int32
+ type: integer
+ type: object
resources:
properties:
claims:
diff --git a/docs/APIs.md b/docs/APIs.md
index d5deaa76b2..7b698883e7 100644
--- a/docs/APIs.md
+++ b/docs/APIs.md
@@ -1597,6 +1597,36 @@ Kubernetes core/v1.PullPolicy
+
+
+
+
+readinessProbe
+ Probe
+ |
+
+
+
+(Optional)
+ |
+
+
+
+
+
+
+
+livenessProbe
+ Probe
+ |
+
+
+
+(Optional)
+ |
+
+
+
@@ -1730,6 +1760,36 @@ Kubernetes core/v1.SecurityContext
+
+
+
+
+readinessProbe
+ Probe
+ |
+
+
+
+(Optional)
+ |
+
+
+
+
+
+
+
+livenessProbe
+ Probe
+ |
+
+
+
+(Optional)
+ |
+
+
+
@@ -8048,6 +8108,155 @@ successfully drained.
+
+
+Probe
+
+
+
+
+(Appears on:
+Container,
+ContainerTemplate)
+
+
+
+
+
+
+Probe is used to customize the configuration for Readiness and Liveness
+probes.
+
+
+
+
+
+
+
+
+
+
+
+
+Field
+ |
+
+
+
+Description
+ |
+
+
+
+
+
+
+
+
+
+
+
+initialDelaySeconds int32
+ |
+
+
+
+(Optional)
+
+
+Number of seconds after the container has started before liveness probes
+are initiated. More info:
+https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+
+
+ |
+
+
+
+
+
+
+
+timeoutSeconds int32
+ |
+
+
+
+(Optional)
+
+
+Number of seconds after which the probe times out. More info:
+https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+
+
+ |
+
+
+
+
+
+
+
+periodSeconds int32
+ |
+
+
+
+(Optional)
+
+
+How often (in seconds) to perform the probe.
+
+
+ |
+
+
+
+
+
+
+
+successThreshold int32
+ |
+
+
+
+(Optional)
+
+
+Minimum consecutive successes for the probe to be considered successful
+after having failed. Defaults to 1. Must be 1 for liveness and startup.
+Minimum value is 1.
+
+
+ |
+
+
+
+
+
+
+
+failureThreshold int32
+ |
+
+
+
+(Optional)
+
+
+Minimum consecutive failures for the probe to be considered failed after
+having succeeded. Defaults to 3. Minimum value is 1.
+
+
+ |
+
+
+
+
+
+
+
RedisBufferService
diff --git a/pkg/apis/numaflow/v1alpha1/container_template.go b/pkg/apis/numaflow/v1alpha1/container_template.go
index 071229114c..5b3ad3270c 100644
--- a/pkg/apis/numaflow/v1alpha1/container_template.go
+++ b/pkg/apis/numaflow/v1alpha1/container_template.go
@@ -33,6 +33,10 @@ type ContainerTemplate struct {
Env []corev1.EnvVar `json:"env,omitempty" protobuf:"bytes,4,rep,name=env"`
// +optional
EnvFrom []corev1.EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,5,rep,name=envFrom"`
+ // +optional
+ ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,6,opt,name=readinessProbe"`
+ // +optional
+ LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,7,opt,name=livenessProbe"`
}
// ApplyToContainer updates the Container with the values from the ContainerTemplate
@@ -48,6 +52,40 @@ func (ct *ContainerTemplate) ApplyToContainer(c *corev1.Container) {
if len(ct.EnvFrom) > 0 {
c.EnvFrom = append(c.EnvFrom, ct.EnvFrom...)
}
+ if rp := ct.ReadinessProbe; rp != nil && c.ReadinessProbe != nil {
+ if rp.InitialDelaySeconds != nil {
+ c.ReadinessProbe.InitialDelaySeconds = *rp.InitialDelaySeconds
+ }
+ if rp.TimeoutSeconds != nil {
+ c.ReadinessProbe.TimeoutSeconds = *rp.TimeoutSeconds
+ }
+ if rp.PeriodSeconds != nil {
+ c.ReadinessProbe.PeriodSeconds = *rp.PeriodSeconds
+ }
+ if rp.FailureThreshold != nil {
+ c.ReadinessProbe.FailureThreshold = *rp.FailureThreshold
+ }
+ if rp.SuccessThreshold != nil {
+ c.ReadinessProbe.SuccessThreshold = *rp.SuccessThreshold
+ }
+ }
+ if lp := ct.LivenessProbe; lp != nil && c.LivenessProbe != nil {
+ if lp.InitialDelaySeconds != nil {
+ c.LivenessProbe.InitialDelaySeconds = *lp.InitialDelaySeconds
+ }
+ if lp.TimeoutSeconds != nil {
+ c.LivenessProbe.TimeoutSeconds = *lp.TimeoutSeconds
+ }
+ if lp.PeriodSeconds != nil {
+ c.LivenessProbe.PeriodSeconds = *lp.PeriodSeconds
+ }
+ if lp.FailureThreshold != nil {
+ c.LivenessProbe.FailureThreshold = *lp.FailureThreshold
+ }
+ if lp.SuccessThreshold != nil {
+ c.LivenessProbe.SuccessThreshold = *lp.SuccessThreshold
+ }
+ }
}
// ApplyToNumaflowContainers updates any numa or init containers with the values from the ContainerTemplate
diff --git a/pkg/apis/numaflow/v1alpha1/container_template_test.go b/pkg/apis/numaflow/v1alpha1/container_template_test.go
index a1e8b8f479..5b835cda72 100644
--- a/pkg/apis/numaflow/v1alpha1/container_template_test.go
+++ b/pkg/apis/numaflow/v1alpha1/container_template_test.go
@@ -22,6 +22,7 @@ import (
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
+ "k8s.io/utils/ptr"
)
var (
@@ -81,3 +82,148 @@ func Test_ApplyToNumaflowContainers(t *testing.T) {
assert.Equal(t, testContainerTemplate.Resources, cs[0].Resources)
assert.NotEqual(t, testContainerTemplate.Resources, cs[1].Resources)
}
+
+func TestApplyProbes(t *testing.T) {
+ tests := []struct {
+ name string
+ template *ContainerTemplate
+ input *corev1.Container
+ expected *corev1.Container
+ }{
+ {
+ name: "Apply ReadinessProbe",
+ template: &ContainerTemplate{
+ ReadinessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](5),
+ TimeoutSeconds: ptr.To[int32](10),
+ PeriodSeconds: ptr.To[int32](15),
+ FailureThreshold: ptr.To[int32](3),
+ SuccessThreshold: ptr.To[int32](1),
+ },
+ },
+ input: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{},
+ },
+ expected: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{
+ InitialDelaySeconds: 5,
+ TimeoutSeconds: 10,
+ PeriodSeconds: 15,
+ FailureThreshold: 3,
+ SuccessThreshold: 1,
+ },
+ },
+ },
+ {
+ name: "Apply LivenessProbe",
+ template: &ContainerTemplate{
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](10),
+ TimeoutSeconds: ptr.To[int32](5),
+ PeriodSeconds: ptr.To[int32](20),
+ FailureThreshold: ptr.To[int32](5),
+ SuccessThreshold: ptr.To[int32](1),
+ },
+ },
+ input: &corev1.Container{
+ LivenessProbe: &corev1.Probe{},
+ },
+ expected: &corev1.Container{
+ LivenessProbe: &corev1.Probe{
+ InitialDelaySeconds: 10,
+ TimeoutSeconds: 5,
+ PeriodSeconds: 20,
+ FailureThreshold: 5,
+ SuccessThreshold: 1,
+ },
+ },
+ },
+ {
+ name: "Apply Both Probes",
+ template: &ContainerTemplate{
+ ReadinessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](5),
+ TimeoutSeconds: ptr.To[int32](10),
+ },
+ LivenessProbe: &Probe{
+ PeriodSeconds: ptr.To[int32](20),
+ FailureThreshold: ptr.To[int32](5),
+ },
+ },
+ input: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{},
+ LivenessProbe: &corev1.Probe{},
+ },
+ expected: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{
+ InitialDelaySeconds: 5,
+ TimeoutSeconds: 10,
+ },
+ LivenessProbe: &corev1.Probe{
+ PeriodSeconds: 20,
+ FailureThreshold: 5,
+ },
+ },
+ },
+ {
+ name: "No Probes in Template",
+ template: &ContainerTemplate{},
+ input: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{InitialDelaySeconds: 30},
+ LivenessProbe: &corev1.Probe{TimeoutSeconds: 15},
+ },
+ expected: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{InitialDelaySeconds: 30},
+ LivenessProbe: &corev1.Probe{TimeoutSeconds: 15},
+ },
+ },
+ {
+ name: "No Probes in Container",
+ template: &ContainerTemplate{
+ ReadinessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](5),
+ TimeoutSeconds: ptr.To[int32](10),
+ },
+ LivenessProbe: &Probe{
+ PeriodSeconds: ptr.To[int32](20),
+ FailureThreshold: ptr.To[int32](5),
+ },
+ },
+ input: &corev1.Container{},
+ expected: &corev1.Container{},
+ },
+ {
+ name: "Partial Probe Updates",
+ template: &ContainerTemplate{
+ ReadinessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](25),
+ },
+ LivenessProbe: &Probe{
+ FailureThreshold: ptr.To[int32](4),
+ },
+ },
+ input: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{TimeoutSeconds: 5},
+ LivenessProbe: &corev1.Probe{PeriodSeconds: 10},
+ },
+ expected: &corev1.Container{
+ ReadinessProbe: &corev1.Probe{
+ InitialDelaySeconds: 25,
+ TimeoutSeconds: 5,
+ },
+ LivenessProbe: &corev1.Probe{
+ PeriodSeconds: 10,
+ FailureThreshold: 4,
+ },
+ },
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ tt.template.ApplyToContainer(tt.input)
+ assert.Equal(t, tt.expected.ReadinessProbe, tt.input.ReadinessProbe)
+ assert.Equal(t, tt.expected.LivenessProbe, tt.input.LivenessProbe)
+ })
+ }
+}
diff --git a/pkg/apis/numaflow/v1alpha1/generated.pb.go b/pkg/apis/numaflow/v1alpha1/generated.pb.go
index 65ac7601e5..138962c4c2 100644
--- a/pkg/apis/numaflow/v1alpha1/generated.pb.go
+++ b/pkg/apis/numaflow/v1alpha1/generated.pb.go
@@ -1702,10 +1702,38 @@ func (m *PipelineStatus) XXX_DiscardUnknown() {
var xxx_messageInfo_PipelineStatus proto.InternalMessageInfo
+func (m *Probe) Reset() { *m = Probe{} }
+func (*Probe) ProtoMessage() {}
+func (*Probe) Descriptor() ([]byte, []int) {
+ return fileDescriptor_9d0d1b17d3865563, []int{59}
+}
+func (m *Probe) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Probe) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+}
+func (m *Probe) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Probe.Merge(m, src)
+}
+func (m *Probe) XXX_Size() int {
+ return m.Size()
+}
+func (m *Probe) XXX_DiscardUnknown() {
+ xxx_messageInfo_Probe.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Probe proto.InternalMessageInfo
+
func (m *RedisBufferService) Reset() { *m = RedisBufferService{} }
func (*RedisBufferService) ProtoMessage() {}
func (*RedisBufferService) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{59}
+ return fileDescriptor_9d0d1b17d3865563, []int{60}
}
func (m *RedisBufferService) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1733,7 +1761,7 @@ var xxx_messageInfo_RedisBufferService proto.InternalMessageInfo
func (m *RedisConfig) Reset() { *m = RedisConfig{} }
func (*RedisConfig) ProtoMessage() {}
func (*RedisConfig) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{60}
+ return fileDescriptor_9d0d1b17d3865563, []int{61}
}
func (m *RedisConfig) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1761,7 +1789,7 @@ var xxx_messageInfo_RedisConfig proto.InternalMessageInfo
func (m *RedisSettings) Reset() { *m = RedisSettings{} }
func (*RedisSettings) ProtoMessage() {}
func (*RedisSettings) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{61}
+ return fileDescriptor_9d0d1b17d3865563, []int{62}
}
func (m *RedisSettings) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1789,7 +1817,7 @@ var xxx_messageInfo_RedisSettings proto.InternalMessageInfo
func (m *RetryStrategy) Reset() { *m = RetryStrategy{} }
func (*RetryStrategy) ProtoMessage() {}
func (*RetryStrategy) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{62}
+ return fileDescriptor_9d0d1b17d3865563, []int{63}
}
func (m *RetryStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1817,7 +1845,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo
func (m *RollingUpdateStrategy) Reset() { *m = RollingUpdateStrategy{} }
func (*RollingUpdateStrategy) ProtoMessage() {}
func (*RollingUpdateStrategy) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{63}
+ return fileDescriptor_9d0d1b17d3865563, []int{64}
}
func (m *RollingUpdateStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1845,7 +1873,7 @@ var xxx_messageInfo_RollingUpdateStrategy proto.InternalMessageInfo
func (m *SASL) Reset() { *m = SASL{} }
func (*SASL) ProtoMessage() {}
func (*SASL) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{64}
+ return fileDescriptor_9d0d1b17d3865563, []int{65}
}
func (m *SASL) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1873,7 +1901,7 @@ var xxx_messageInfo_SASL proto.InternalMessageInfo
func (m *SASLPlain) Reset() { *m = SASLPlain{} }
func (*SASLPlain) ProtoMessage() {}
func (*SASLPlain) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{65}
+ return fileDescriptor_9d0d1b17d3865563, []int{66}
}
func (m *SASLPlain) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1901,7 +1929,7 @@ var xxx_messageInfo_SASLPlain proto.InternalMessageInfo
func (m *Scale) Reset() { *m = Scale{} }
func (*Scale) ProtoMessage() {}
func (*Scale) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{66}
+ return fileDescriptor_9d0d1b17d3865563, []int{67}
}
func (m *Scale) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1929,7 +1957,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo
func (m *ServingSource) Reset() { *m = ServingSource{} }
func (*ServingSource) ProtoMessage() {}
func (*ServingSource) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{67}
+ return fileDescriptor_9d0d1b17d3865563, []int{68}
}
func (m *ServingSource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1957,7 +1985,7 @@ var xxx_messageInfo_ServingSource proto.InternalMessageInfo
func (m *ServingStore) Reset() { *m = ServingStore{} }
func (*ServingStore) ProtoMessage() {}
func (*ServingStore) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{68}
+ return fileDescriptor_9d0d1b17d3865563, []int{69}
}
func (m *ServingStore) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1985,7 +2013,7 @@ var xxx_messageInfo_ServingStore proto.InternalMessageInfo
func (m *SessionWindow) Reset() { *m = SessionWindow{} }
func (*SessionWindow) ProtoMessage() {}
func (*SessionWindow) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{69}
+ return fileDescriptor_9d0d1b17d3865563, []int{70}
}
func (m *SessionWindow) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2013,7 +2041,7 @@ var xxx_messageInfo_SessionWindow proto.InternalMessageInfo
func (m *SideInput) Reset() { *m = SideInput{} }
func (*SideInput) ProtoMessage() {}
func (*SideInput) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{70}
+ return fileDescriptor_9d0d1b17d3865563, []int{71}
}
func (m *SideInput) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2041,7 +2069,7 @@ var xxx_messageInfo_SideInput proto.InternalMessageInfo
func (m *SideInputTrigger) Reset() { *m = SideInputTrigger{} }
func (*SideInputTrigger) ProtoMessage() {}
func (*SideInputTrigger) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{71}
+ return fileDescriptor_9d0d1b17d3865563, []int{72}
}
func (m *SideInputTrigger) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2069,7 +2097,7 @@ var xxx_messageInfo_SideInputTrigger proto.InternalMessageInfo
func (m *SideInputsManagerTemplate) Reset() { *m = SideInputsManagerTemplate{} }
func (*SideInputsManagerTemplate) ProtoMessage() {}
func (*SideInputsManagerTemplate) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{72}
+ return fileDescriptor_9d0d1b17d3865563, []int{73}
}
func (m *SideInputsManagerTemplate) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2097,7 +2125,7 @@ var xxx_messageInfo_SideInputsManagerTemplate proto.InternalMessageInfo
func (m *Sink) Reset() { *m = Sink{} }
func (*Sink) ProtoMessage() {}
func (*Sink) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{73}
+ return fileDescriptor_9d0d1b17d3865563, []int{74}
}
func (m *Sink) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2125,7 +2153,7 @@ var xxx_messageInfo_Sink proto.InternalMessageInfo
func (m *SlidingWindow) Reset() { *m = SlidingWindow{} }
func (*SlidingWindow) ProtoMessage() {}
func (*SlidingWindow) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{74}
+ return fileDescriptor_9d0d1b17d3865563, []int{75}
}
func (m *SlidingWindow) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2153,7 +2181,7 @@ var xxx_messageInfo_SlidingWindow proto.InternalMessageInfo
func (m *Source) Reset() { *m = Source{} }
func (*Source) ProtoMessage() {}
func (*Source) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{75}
+ return fileDescriptor_9d0d1b17d3865563, []int{76}
}
func (m *Source) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2181,7 +2209,7 @@ var xxx_messageInfo_Source proto.InternalMessageInfo
func (m *Status) Reset() { *m = Status{} }
func (*Status) ProtoMessage() {}
func (*Status) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{76}
+ return fileDescriptor_9d0d1b17d3865563, []int{77}
}
func (m *Status) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2209,7 +2237,7 @@ var xxx_messageInfo_Status proto.InternalMessageInfo
func (m *TLS) Reset() { *m = TLS{} }
func (*TLS) ProtoMessage() {}
func (*TLS) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{77}
+ return fileDescriptor_9d0d1b17d3865563, []int{78}
}
func (m *TLS) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2237,7 +2265,7 @@ var xxx_messageInfo_TLS proto.InternalMessageInfo
func (m *TagConditions) Reset() { *m = TagConditions{} }
func (*TagConditions) ProtoMessage() {}
func (*TagConditions) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{78}
+ return fileDescriptor_9d0d1b17d3865563, []int{79}
}
func (m *TagConditions) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2265,7 +2293,7 @@ var xxx_messageInfo_TagConditions proto.InternalMessageInfo
func (m *Templates) Reset() { *m = Templates{} }
func (*Templates) ProtoMessage() {}
func (*Templates) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{79}
+ return fileDescriptor_9d0d1b17d3865563, []int{80}
}
func (m *Templates) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2293,7 +2321,7 @@ var xxx_messageInfo_Templates proto.InternalMessageInfo
func (m *Transformer) Reset() { *m = Transformer{} }
func (*Transformer) ProtoMessage() {}
func (*Transformer) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{80}
+ return fileDescriptor_9d0d1b17d3865563, []int{81}
}
func (m *Transformer) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2321,7 +2349,7 @@ var xxx_messageInfo_Transformer proto.InternalMessageInfo
func (m *UDF) Reset() { *m = UDF{} }
func (*UDF) ProtoMessage() {}
func (*UDF) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{81}
+ return fileDescriptor_9d0d1b17d3865563, []int{82}
}
func (m *UDF) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2349,7 +2377,7 @@ var xxx_messageInfo_UDF proto.InternalMessageInfo
func (m *UDSink) Reset() { *m = UDSink{} }
func (*UDSink) ProtoMessage() {}
func (*UDSink) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{82}
+ return fileDescriptor_9d0d1b17d3865563, []int{83}
}
func (m *UDSink) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2377,7 +2405,7 @@ var xxx_messageInfo_UDSink proto.InternalMessageInfo
func (m *UDSource) Reset() { *m = UDSource{} }
func (*UDSource) ProtoMessage() {}
func (*UDSource) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{83}
+ return fileDescriptor_9d0d1b17d3865563, []int{84}
}
func (m *UDSource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2405,7 +2433,7 @@ var xxx_messageInfo_UDSource proto.InternalMessageInfo
func (m *UDTransformer) Reset() { *m = UDTransformer{} }
func (*UDTransformer) ProtoMessage() {}
func (*UDTransformer) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{84}
+ return fileDescriptor_9d0d1b17d3865563, []int{85}
}
func (m *UDTransformer) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2433,7 +2461,7 @@ var xxx_messageInfo_UDTransformer proto.InternalMessageInfo
func (m *UpdateStrategy) Reset() { *m = UpdateStrategy{} }
func (*UpdateStrategy) ProtoMessage() {}
func (*UpdateStrategy) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{85}
+ return fileDescriptor_9d0d1b17d3865563, []int{86}
}
func (m *UpdateStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2461,7 +2489,7 @@ var xxx_messageInfo_UpdateStrategy proto.InternalMessageInfo
func (m *Vertex) Reset() { *m = Vertex{} }
func (*Vertex) ProtoMessage() {}
func (*Vertex) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{86}
+ return fileDescriptor_9d0d1b17d3865563, []int{87}
}
func (m *Vertex) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2489,7 +2517,7 @@ var xxx_messageInfo_Vertex proto.InternalMessageInfo
func (m *VertexInstance) Reset() { *m = VertexInstance{} }
func (*VertexInstance) ProtoMessage() {}
func (*VertexInstance) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{87}
+ return fileDescriptor_9d0d1b17d3865563, []int{88}
}
func (m *VertexInstance) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2517,7 +2545,7 @@ var xxx_messageInfo_VertexInstance proto.InternalMessageInfo
func (m *VertexLimits) Reset() { *m = VertexLimits{} }
func (*VertexLimits) ProtoMessage() {}
func (*VertexLimits) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{88}
+ return fileDescriptor_9d0d1b17d3865563, []int{89}
}
func (m *VertexLimits) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2545,7 +2573,7 @@ var xxx_messageInfo_VertexLimits proto.InternalMessageInfo
func (m *VertexList) Reset() { *m = VertexList{} }
func (*VertexList) ProtoMessage() {}
func (*VertexList) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{89}
+ return fileDescriptor_9d0d1b17d3865563, []int{90}
}
func (m *VertexList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2573,7 +2601,7 @@ var xxx_messageInfo_VertexList proto.InternalMessageInfo
func (m *VertexSpec) Reset() { *m = VertexSpec{} }
func (*VertexSpec) ProtoMessage() {}
func (*VertexSpec) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{90}
+ return fileDescriptor_9d0d1b17d3865563, []int{91}
}
func (m *VertexSpec) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2601,7 +2629,7 @@ var xxx_messageInfo_VertexSpec proto.InternalMessageInfo
func (m *VertexStatus) Reset() { *m = VertexStatus{} }
func (*VertexStatus) ProtoMessage() {}
func (*VertexStatus) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{91}
+ return fileDescriptor_9d0d1b17d3865563, []int{92}
}
func (m *VertexStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2629,7 +2657,7 @@ var xxx_messageInfo_VertexStatus proto.InternalMessageInfo
func (m *VertexTemplate) Reset() { *m = VertexTemplate{} }
func (*VertexTemplate) ProtoMessage() {}
func (*VertexTemplate) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{92}
+ return fileDescriptor_9d0d1b17d3865563, []int{93}
}
func (m *VertexTemplate) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2657,7 +2685,7 @@ var xxx_messageInfo_VertexTemplate proto.InternalMessageInfo
func (m *Watermark) Reset() { *m = Watermark{} }
func (*Watermark) ProtoMessage() {}
func (*Watermark) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{93}
+ return fileDescriptor_9d0d1b17d3865563, []int{94}
}
func (m *Watermark) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2685,7 +2713,7 @@ var xxx_messageInfo_Watermark proto.InternalMessageInfo
func (m *Window) Reset() { *m = Window{} }
func (*Window) ProtoMessage() {}
func (*Window) Descriptor() ([]byte, []int) {
- return fileDescriptor_9d0d1b17d3865563, []int{94}
+ return fileDescriptor_9d0d1b17d3865563, []int{95}
}
func (m *Window) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -2778,6 +2806,7 @@ func init() {
proto.RegisterType((*PipelineList)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.PipelineList")
proto.RegisterType((*PipelineSpec)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.PipelineSpec")
proto.RegisterType((*PipelineStatus)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.PipelineStatus")
+ proto.RegisterType((*Probe)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Probe")
proto.RegisterType((*RedisBufferService)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.RedisBufferService")
proto.RegisterType((*RedisConfig)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.RedisConfig")
proto.RegisterType((*RedisSettings)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.RedisSettings")
@@ -2822,501 +2851,510 @@ func init() {
}
var fileDescriptor_9d0d1b17d3865563 = []byte{
- // 7889 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x6c, 0x25, 0xd9,
- 0xb5, 0xd6, 0x9c, 0x97, 0xcf, 0x39, 0xeb, 0xf8, 0xd5, 0xbb, 0x1f, 0xe3, 0xee, 0xe9, 0x69, 0xf7,
- 0xad, 0xb9, 0x33, 0xb7, 0x2f, 0xf7, 0x5e, 0x9b, 0xf1, 0x9d, 0x57, 0xee, 0xbd, 0xc9, 0x8c, 0x8f,
- 0xdd, 0x76, 0xbb, 0xdb, 0xee, 0x76, 0xd6, 0xb1, 0x7b, 0x26, 0x77, 0x48, 0x86, 0x72, 0xd5, 0xf6,
- 0x71, 0x8d, 0xeb, 0x54, 0x9d, 0xa9, 0xaa, 0xe3, 0x6e, 0x4f, 0x40, 0x79, 0x0c, 0x68, 0x06, 0x01,
- 0x02, 0xe5, 0x57, 0x24, 0x14, 0x10, 0x08, 0x29, 0x3f, 0xa2, 0xf0, 0x03, 0x29, 0xfc, 0x40, 0x82,
- 0x10, 0x84, 0x20, 0x20, 0x1e, 0x11, 0x42, 0x62, 0xf8, 0x63, 0x11, 0x23, 0x7e, 0x80, 0x04, 0x8a,
- 0x88, 0x20, 0xa1, 0x15, 0x11, 0xb4, 0x5f, 0xf5, 0x3a, 0x75, 0xba, 0xed, 0x53, 0x76, 0x4f, 0x0f,
- 0xcc, 0xbf, 0xaa, 0xbd, 0xd6, 0xfe, 0xd6, 0xae, 0x5d, 0xbb, 0xf6, 0x5e, 0x7b, 0xad, 0xb5, 0x57,
- 0xc1, 0x72, 0xdb, 0x0a, 0x76, 0x7a, 0x5b, 0x33, 0x86, 0xdb, 0x99, 0x75, 0x7a, 0x1d, 0xbd, 0xeb,
- 0xb9, 0xef, 0xf2, 0x8b, 0x6d, 0xdb, 0xbd, 0x37, 0xdb, 0xdd, 0x6d, 0xcf, 0xea, 0x5d, 0xcb, 0x8f,
- 0x4a, 0xf6, 0x5e, 0xd4, 0xed, 0xee, 0x8e, 0xfe, 0xe2, 0x6c, 0x9b, 0x3a, 0xd4, 0xd3, 0x03, 0x6a,
- 0xce, 0x74, 0x3d, 0x37, 0x70, 0xc9, 0xab, 0x11, 0xd0, 0x8c, 0x02, 0x9a, 0x51, 0xd5, 0x66, 0xba,
- 0xbb, 0xed, 0x19, 0x06, 0x14, 0x95, 0x28, 0xa0, 0x4b, 0xbf, 0x17, 0x6b, 0x41, 0xdb, 0x6d, 0xbb,
- 0xb3, 0x1c, 0x6f, 0xab, 0xb7, 0xcd, 0xef, 0xf8, 0x0d, 0xbf, 0x12, 0x72, 0x2e, 0x69, 0xbb, 0xaf,
- 0xf9, 0x33, 0x96, 0xcb, 0x9a, 0x35, 0x6b, 0xb8, 0x1e, 0x9d, 0xdd, 0xeb, 0x6b, 0xcb, 0xa5, 0x97,
- 0x22, 0x9e, 0x8e, 0x6e, 0xec, 0x58, 0x0e, 0xf5, 0xf6, 0xd5, 0xb3, 0xcc, 0x7a, 0xd4, 0x77, 0x7b,
- 0x9e, 0x41, 0x8f, 0x55, 0xcb, 0x9f, 0xed, 0xd0, 0x40, 0xcf, 0x92, 0x35, 0x3b, 0xa8, 0x96, 0xd7,
- 0x73, 0x02, 0xab, 0xd3, 0x2f, 0xe6, 0x95, 0x47, 0x55, 0xf0, 0x8d, 0x1d, 0xda, 0xd1, 0xfb, 0xea,
- 0xfd, 0xfe, 0xa0, 0x7a, 0xbd, 0xc0, 0xb2, 0x67, 0x2d, 0x27, 0xf0, 0x03, 0x2f, 0x5d, 0x49, 0xfb,
- 0x11, 0xc0, 0xd9, 0xf9, 0x2d, 0x3f, 0xf0, 0x74, 0x23, 0x58, 0x77, 0xcd, 0x0d, 0xda, 0xe9, 0xda,
- 0x7a, 0x40, 0xc9, 0x2e, 0xd4, 0xd8, 0x03, 0x99, 0x7a, 0xa0, 0x4f, 0x15, 0xae, 0x16, 0xae, 0x35,
- 0xe6, 0xe6, 0x67, 0x86, 0x7c, 0x81, 0x33, 0x6b, 0x12, 0xa8, 0x39, 0x7a, 0x78, 0x30, 0x5d, 0x53,
- 0x77, 0x18, 0x0a, 0x20, 0xdf, 0x2e, 0xc0, 0xa8, 0xe3, 0x9a, 0xb4, 0x45, 0x6d, 0x6a, 0x04, 0xae,
- 0x37, 0x55, 0xbc, 0x5a, 0xba, 0xd6, 0x98, 0xfb, 0xca, 0xd0, 0x12, 0x33, 0x9e, 0x68, 0xe6, 0x76,
- 0x4c, 0xc0, 0x75, 0x27, 0xf0, 0xf6, 0x9b, 0xe7, 0x7e, 0x7c, 0x30, 0xfd, 0xd4, 0xe1, 0xc1, 0xf4,
- 0x68, 0x9c, 0x84, 0x89, 0x96, 0x90, 0x4d, 0x68, 0x04, 0xae, 0xcd, 0xba, 0xcc, 0x72, 0x1d, 0x7f,
- 0xaa, 0xc4, 0x1b, 0x76, 0x65, 0x46, 0x74, 0x35, 0x13, 0x3f, 0xc3, 0xc6, 0xd8, 0xcc, 0xde, 0x8b,
- 0x33, 0x1b, 0x21, 0x5b, 0xf3, 0xac, 0x04, 0x6e, 0x44, 0x65, 0x3e, 0xc6, 0x71, 0x08, 0x85, 0x09,
- 0x9f, 0x1a, 0x3d, 0xcf, 0x0a, 0xf6, 0x17, 0x5c, 0x27, 0xa0, 0xf7, 0x83, 0xa9, 0x32, 0xef, 0xe5,
- 0x17, 0xb2, 0xa0, 0xd7, 0x5d, 0xb3, 0x95, 0xe4, 0x6e, 0x9e, 0x3d, 0x3c, 0x98, 0x9e, 0x48, 0x15,
- 0x62, 0x1a, 0x93, 0x38, 0x30, 0x69, 0x75, 0xf4, 0x36, 0x5d, 0xef, 0xd9, 0x76, 0x8b, 0x1a, 0x1e,
- 0x0d, 0xfc, 0xa9, 0x0a, 0x7f, 0x84, 0x6b, 0x59, 0x72, 0x56, 0x5d, 0x43, 0xb7, 0xef, 0x6c, 0xbd,
- 0x4b, 0x8d, 0x00, 0xe9, 0x36, 0xf5, 0xa8, 0x63, 0xd0, 0xe6, 0x94, 0x7c, 0x98, 0xc9, 0x95, 0x14,
- 0x12, 0xf6, 0x61, 0x93, 0x65, 0x38, 0xd3, 0xf5, 0x2c, 0x97, 0x37, 0xc1, 0xd6, 0x7d, 0xff, 0xb6,
- 0xde, 0xa1, 0x53, 0x23, 0x57, 0x0b, 0xd7, 0xea, 0xcd, 0x8b, 0x12, 0xe6, 0xcc, 0x7a, 0x9a, 0x01,
- 0xfb, 0xeb, 0x90, 0x6b, 0x50, 0x53, 0x85, 0x53, 0xd5, 0xab, 0x85, 0x6b, 0x15, 0x31, 0x76, 0x54,
- 0x5d, 0x0c, 0xa9, 0x64, 0x09, 0x6a, 0xfa, 0xf6, 0xb6, 0xe5, 0x30, 0xce, 0x1a, 0xef, 0xc2, 0xcb,
- 0x59, 0x8f, 0x36, 0x2f, 0x79, 0x04, 0x8e, 0xba, 0xc3, 0xb0, 0x2e, 0xb9, 0x09, 0xc4, 0xa7, 0xde,
- 0x9e, 0x65, 0xd0, 0x79, 0xc3, 0x70, 0x7b, 0x4e, 0xc0, 0xdb, 0x5e, 0xe7, 0x6d, 0xbf, 0x24, 0xdb,
- 0x4e, 0x5a, 0x7d, 0x1c, 0x98, 0x51, 0x8b, 0xbc, 0x01, 0x93, 0xf2, 0x5b, 0x8d, 0x7a, 0x01, 0x38,
- 0xd2, 0x39, 0xd6, 0x91, 0x98, 0xa2, 0x61, 0x1f, 0x37, 0x31, 0xe1, 0xb2, 0xde, 0x0b, 0xdc, 0x0e,
- 0x83, 0x4c, 0x0a, 0xdd, 0x70, 0x77, 0xa9, 0x33, 0xd5, 0xb8, 0x5a, 0xb8, 0x56, 0x6b, 0x5e, 0x3d,
- 0x3c, 0x98, 0xbe, 0x3c, 0xff, 0x10, 0x3e, 0x7c, 0x28, 0x0a, 0xb9, 0x03, 0x75, 0xd3, 0xf1, 0xd7,
- 0x5d, 0xdb, 0x32, 0xf6, 0xa7, 0x46, 0x79, 0x03, 0x5f, 0x94, 0x8f, 0x5a, 0x5f, 0xbc, 0xdd, 0x12,
- 0x84, 0x07, 0x07, 0xd3, 0x97, 0xfb, 0xa7, 0xd4, 0x99, 0x90, 0x8e, 0x11, 0x06, 0x59, 0xe3, 0x80,
- 0x0b, 0xae, 0xb3, 0x6d, 0xb5, 0xa7, 0xc6, 0xf8, 0xdb, 0xb8, 0x3a, 0x60, 0x40, 0x2f, 0xde, 0x6e,
- 0x09, 0xbe, 0xe6, 0x98, 0x14, 0x27, 0x6e, 0x31, 0x42, 0x20, 0x26, 0x8c, 0xab, 0xc9, 0x78, 0xc1,
- 0xd6, 0xad, 0x8e, 0x3f, 0x35, 0xce, 0x07, 0xef, 0x6f, 0x0e, 0xc0, 0xc4, 0x38, 0x73, 0xf3, 0x82,
- 0x7c, 0x94, 0xf1, 0x44, 0xb1, 0x8f, 0x29, 0xcc, 0x4b, 0xaf, 0xc3, 0x99, 0xbe, 0xb9, 0x81, 0x4c,
- 0x42, 0x69, 0x97, 0xee, 0xf3, 0xa9, 0xaf, 0x8e, 0xec, 0x92, 0x9c, 0x83, 0xca, 0x9e, 0x6e, 0xf7,
- 0xe8, 0x54, 0x91, 0x97, 0x89, 0x9b, 0x3f, 0x28, 0xbe, 0x56, 0xd0, 0xfe, 0x56, 0x09, 0x46, 0xd5,
- 0x8c, 0xd3, 0xb2, 0x9c, 0x5d, 0xf2, 0x26, 0x94, 0x6c, 0xb7, 0x2d, 0xe7, 0xcd, 0x3f, 0x1a, 0x7a,
- 0x16, 0x5b, 0x75, 0xdb, 0xcd, 0xea, 0xe1, 0xc1, 0x74, 0x69, 0xd5, 0x6d, 0x23, 0x43, 0x24, 0x06,
- 0x54, 0x76, 0xf5, 0xed, 0x5d, 0x9d, 0xb7, 0xa1, 0x31, 0xd7, 0x1c, 0x1a, 0xfa, 0x16, 0x43, 0x61,
- 0x6d, 0x6d, 0xd6, 0x0f, 0x0f, 0xa6, 0x2b, 0xfc, 0x16, 0x05, 0x36, 0x71, 0xa1, 0xbe, 0x65, 0xeb,
- 0xc6, 0xee, 0x8e, 0x6b, 0xd3, 0xa9, 0x52, 0x4e, 0x41, 0x4d, 0x85, 0x24, 0x5e, 0x73, 0x78, 0x8b,
- 0x91, 0x0c, 0x62, 0xc0, 0x48, 0xcf, 0xf4, 0x2d, 0x67, 0x57, 0xce, 0x81, 0xaf, 0x0f, 0x2d, 0x6d,
- 0x73, 0x91, 0x3f, 0x13, 0x1c, 0x1e, 0x4c, 0x8f, 0x88, 0x6b, 0x94, 0xd0, 0xda, 0x2f, 0x47, 0x61,
- 0x5c, 0xbd, 0xa4, 0xbb, 0xd4, 0x0b, 0xe8, 0x7d, 0x72, 0x15, 0xca, 0x0e, 0xfb, 0x34, 0xf9, 0x4b,
- 0x6e, 0x8e, 0xca, 0xe1, 0x52, 0xe6, 0x9f, 0x24, 0xa7, 0xb0, 0x96, 0x89, 0xa1, 0x22, 0x3b, 0x7c,
- 0xf8, 0x96, 0xb5, 0x38, 0x8c, 0x68, 0x99, 0xb8, 0x46, 0x09, 0x4d, 0xde, 0x86, 0x32, 0x7f, 0x78,
- 0xd1, 0xd5, 0x9f, 0x1f, 0x5e, 0x04, 0x7b, 0xf4, 0x1a, 0x7b, 0x02, 0xfe, 0xe0, 0x1c, 0x94, 0x0d,
- 0xc5, 0x9e, 0xb9, 0x2d, 0x3b, 0xf6, 0x8f, 0x72, 0x74, 0xec, 0x92, 0x18, 0x8a, 0x9b, 0x8b, 0x4b,
- 0xc8, 0x10, 0xc9, 0x5f, 0x29, 0xc0, 0x19, 0xc3, 0x75, 0x02, 0x9d, 0xe9, 0x19, 0x6a, 0x91, 0x9d,
- 0xaa, 0x70, 0x39, 0x37, 0x87, 0x96, 0xb3, 0x90, 0x46, 0x6c, 0x9e, 0x67, 0x6b, 0x46, 0x5f, 0x31,
- 0xf6, 0xcb, 0x26, 0x7f, 0xad, 0x00, 0xe7, 0xd9, 0x5c, 0xde, 0xc7, 0xcc, 0x57, 0xa0, 0x93, 0x6d,
- 0xd5, 0xc5, 0xc3, 0x83, 0xe9, 0xf3, 0x2b, 0x59, 0xc2, 0x30, 0xbb, 0x0d, 0xac, 0x75, 0x67, 0xf5,
- 0x7e, 0xb5, 0x84, 0xaf, 0x6e, 0x8d, 0xb9, 0xd5, 0x93, 0x54, 0x75, 0x9a, 0xcf, 0xc8, 0xa1, 0x9c,
- 0xa5, 0xd9, 0x61, 0x56, 0x2b, 0xc8, 0x75, 0xa8, 0xee, 0xb9, 0x76, 0xaf, 0x43, 0xfd, 0xa9, 0x1a,
- 0x9f, 0x62, 0x2f, 0x65, 0x4d, 0xb1, 0x77, 0x39, 0x4b, 0x73, 0x42, 0xc2, 0x57, 0xc5, 0xbd, 0x8f,
- 0xaa, 0x2e, 0xb1, 0x60, 0xc4, 0xb6, 0x3a, 0x56, 0xe0, 0xf3, 0x85, 0xb3, 0x31, 0x77, 0x7d, 0xe8,
- 0xc7, 0x12, 0x9f, 0xe8, 0x2a, 0x07, 0x13, 0x5f, 0x8d, 0xb8, 0x46, 0x29, 0x80, 0x4d, 0x85, 0xbe,
- 0xa1, 0xdb, 0x62, 0x61, 0x6d, 0xcc, 0x7d, 0x61, 0xf8, 0xcf, 0x86, 0xa1, 0x34, 0xc7, 0xe4, 0x33,
- 0x55, 0xf8, 0x2d, 0x0a, 0x6c, 0xf2, 0x65, 0x18, 0x4f, 0xbc, 0x4d, 0x7f, 0xaa, 0xc1, 0x7b, 0xe7,
- 0xd9, 0xac, 0xde, 0x09, 0xb9, 0xa2, 0x95, 0x27, 0x31, 0x42, 0x7c, 0x4c, 0x81, 0x91, 0x5b, 0x50,
- 0xf3, 0x2d, 0x93, 0x1a, 0xba, 0xe7, 0x4f, 0x8d, 0x1e, 0x05, 0x78, 0x52, 0x02, 0xd7, 0x5a, 0xb2,
- 0x1a, 0x86, 0x00, 0x64, 0x06, 0xa0, 0xab, 0x7b, 0x81, 0x25, 0x14, 0xd5, 0x31, 0xae, 0x34, 0x8d,
- 0x1f, 0x1e, 0x4c, 0xc3, 0x7a, 0x58, 0x8a, 0x31, 0x0e, 0xc6, 0xcf, 0xea, 0xae, 0x38, 0xdd, 0x5e,
- 0x20, 0x16, 0xd6, 0xba, 0xe0, 0x6f, 0x85, 0xa5, 0x18, 0xe3, 0x20, 0xdf, 0x2f, 0xc0, 0x33, 0xd1,
- 0x6d, 0xff, 0x47, 0x36, 0x71, 0xe2, 0x1f, 0xd9, 0xf4, 0xe1, 0xc1, 0xf4, 0x33, 0xad, 0xc1, 0x22,
- 0xf1, 0x61, 0xed, 0x21, 0x1f, 0x16, 0x60, 0xbc, 0xd7, 0x35, 0xf5, 0x80, 0xb6, 0x02, 0xb6, 0xe3,
- 0x69, 0xef, 0x4f, 0x4d, 0xf2, 0x26, 0x2e, 0x0f, 0x3f, 0x0b, 0x26, 0xe0, 0xa2, 0xd7, 0x9c, 0x2c,
- 0xc7, 0x94, 0x58, 0xed, 0x4d, 0x18, 0x9b, 0xef, 0x05, 0x3b, 0xae, 0x67, 0xbd, 0xcf, 0xd5, 0x7f,
- 0xb2, 0x04, 0x95, 0x80, 0xab, 0x71, 0x42, 0x43, 0x78, 0x3e, 0xeb, 0xa5, 0x0b, 0x95, 0xfa, 0x16,
- 0xdd, 0x57, 0x7a, 0x89, 0x58, 0xa9, 0x85, 0x5a, 0x27, 0xaa, 0x6b, 0x7f, 0xae, 0x00, 0xd5, 0xa6,
- 0x6e, 0xec, 0xba, 0xdb, 0xdb, 0xe4, 0x2d, 0xa8, 0x59, 0x4e, 0x40, 0xbd, 0x3d, 0xdd, 0x96, 0xb0,
- 0x33, 0x31, 0xd8, 0x70, 0x43, 0x18, 0x3d, 0x1e, 0xdb, 0x7d, 0x31, 0x41, 0x8b, 0x3d, 0xb9, 0x6b,
- 0xe1, 0x9a, 0xf1, 0x8a, 0xc4, 0xc0, 0x10, 0x8d, 0x4c, 0x43, 0xc5, 0x0f, 0x68, 0xd7, 0xe7, 0x6b,
- 0xe0, 0x98, 0x68, 0x46, 0x8b, 0x15, 0xa0, 0x28, 0xd7, 0xfe, 0x66, 0x01, 0xea, 0x4d, 0xdd, 0xb7,
- 0x0c, 0xf6, 0x94, 0x64, 0x01, 0xca, 0x3d, 0x9f, 0x7a, 0xc7, 0x7b, 0x36, 0xbe, 0x6c, 0x6d, 0xfa,
- 0xd4, 0x43, 0x5e, 0x99, 0xdc, 0x81, 0x5a, 0x57, 0xf7, 0xfd, 0x7b, 0xae, 0x67, 0xca, 0xa5, 0xf7,
- 0x88, 0x40, 0x62, 0x9b, 0x20, 0xab, 0x62, 0x08, 0xa2, 0x35, 0x20, 0xd2, 0x3d, 0xb4, 0x9f, 0x17,
- 0xe0, 0x6c, 0xb3, 0xb7, 0xbd, 0x4d, 0x3d, 0xa9, 0x15, 0x4b, 0x7d, 0x93, 0x42, 0xc5, 0xa3, 0xa6,
- 0xe5, 0xcb, 0xb6, 0x2f, 0x0e, 0x3d, 0x50, 0x90, 0xa1, 0x48, 0xf5, 0x96, 0xf7, 0x17, 0x2f, 0x40,
- 0x81, 0x4e, 0x7a, 0x50, 0x7f, 0x97, 0xb2, 0xdd, 0x38, 0xd5, 0x3b, 0xf2, 0xe9, 0x6e, 0x0c, 0x2d,
- 0xea, 0x26, 0x0d, 0x5a, 0x1c, 0x29, 0xae, 0x4d, 0x87, 0x85, 0x18, 0x49, 0xd2, 0x7e, 0x54, 0x81,
- 0xd1, 0x05, 0xb7, 0xb3, 0x65, 0x39, 0xd4, 0xbc, 0x6e, 0xb6, 0x29, 0x79, 0x07, 0xca, 0xd4, 0x6c,
- 0x53, 0xf9, 0xb4, 0xc3, 0x2b, 0x1e, 0x0c, 0x2c, 0x52, 0x9f, 0xd8, 0x1d, 0x72, 0x60, 0xb2, 0x0a,
- 0xe3, 0xdb, 0x9e, 0xdb, 0x11, 0x73, 0xf9, 0xc6, 0x7e, 0x57, 0xea, 0xce, 0xcd, 0xdf, 0x54, 0x1f,
- 0xce, 0x52, 0x82, 0xfa, 0xe0, 0x60, 0x1a, 0xa2, 0x3b, 0x4c, 0xd5, 0x25, 0x6f, 0xc1, 0x54, 0x54,
- 0x12, 0x4e, 0x6a, 0x0b, 0x6c, 0x3b, 0xc3, 0x75, 0xa7, 0x4a, 0xf3, 0xf2, 0xe1, 0xc1, 0xf4, 0xd4,
- 0xd2, 0x00, 0x1e, 0x1c, 0x58, 0x9b, 0x4d, 0x15, 0x93, 0x11, 0x51, 0x2c, 0x34, 0x52, 0x65, 0x3a,
- 0xa1, 0x15, 0x8c, 0xef, 0xfb, 0x96, 0x52, 0x22, 0xb0, 0x4f, 0x28, 0x59, 0x82, 0xd1, 0xc0, 0x8d,
- 0xf5, 0x57, 0x85, 0xf7, 0x97, 0xa6, 0x0c, 0x15, 0x1b, 0xee, 0xc0, 0xde, 0x4a, 0xd4, 0x23, 0x08,
- 0x17, 0xd4, 0x7d, 0xaa, 0xa7, 0x46, 0x78, 0x4f, 0x5d, 0x3a, 0x3c, 0x98, 0xbe, 0xb0, 0x91, 0xc9,
- 0x81, 0x03, 0x6a, 0x92, 0x6f, 0x14, 0x60, 0x5c, 0x91, 0x64, 0x1f, 0x55, 0x4f, 0xb2, 0x8f, 0x08,
- 0x1b, 0x11, 0x1b, 0x09, 0x01, 0x98, 0x12, 0xa8, 0xfd, 0xb2, 0x0c, 0xf5, 0x70, 0xaa, 0x27, 0xcf,
- 0x41, 0x85, 0x9b, 0x20, 0xa4, 0x06, 0x1f, 0xae, 0xe1, 0xdc, 0x52, 0x81, 0x82, 0x46, 0x9e, 0x87,
- 0xaa, 0xe1, 0x76, 0x3a, 0xba, 0x63, 0x72, 0xb3, 0x52, 0xbd, 0xd9, 0x60, 0xaa, 0xcb, 0x82, 0x28,
- 0x42, 0x45, 0x23, 0x97, 0xa1, 0xac, 0x7b, 0x6d, 0x61, 0xe1, 0xa9, 0x8b, 0xf9, 0x68, 0xde, 0x6b,
- 0xfb, 0xc8, 0x4b, 0xc9, 0xe7, 0xa0, 0x44, 0x9d, 0xbd, 0xa9, 0xf2, 0x60, 0xdd, 0xe8, 0xba, 0xb3,
- 0x77, 0x57, 0xf7, 0x9a, 0x0d, 0xd9, 0x86, 0xd2, 0x75, 0x67, 0x0f, 0x59, 0x1d, 0xb2, 0x0a, 0x55,
- 0xea, 0xec, 0xb1, 0x77, 0x2f, 0x4d, 0x2f, 0xbf, 0x31, 0xa0, 0x3a, 0x63, 0x91, 0xdb, 0x84, 0x50,
- 0xc3, 0x92, 0xc5, 0xa8, 0x20, 0xc8, 0x97, 0x60, 0x54, 0x28, 0x5b, 0x6b, 0xec, 0x9d, 0xf8, 0x53,
- 0x23, 0x1c, 0x72, 0x7a, 0xb0, 0xb6, 0xc6, 0xf9, 0x22, 0x53, 0x57, 0xac, 0xd0, 0xc7, 0x04, 0x14,
- 0xf9, 0x12, 0xd4, 0xd5, 0xce, 0x58, 0xbd, 0xd9, 0x4c, 0x2b, 0x91, 0xda, 0x4e, 0x23, 0x7d, 0xaf,
- 0x67, 0x79, 0xb4, 0x43, 0x9d, 0xc0, 0x6f, 0x9e, 0x51, 0x76, 0x03, 0x45, 0xf5, 0x31, 0x42, 0x23,
- 0x5b, 0xfd, 0xe6, 0x2e, 0x61, 0xab, 0x79, 0x6e, 0xc0, 0xac, 0x3e, 0x84, 0xad, 0xeb, 0x2b, 0x30,
- 0x11, 0xda, 0xa3, 0xa4, 0x49, 0x43, 0x58, 0x6f, 0x5e, 0x62, 0xd5, 0x57, 0x92, 0xa4, 0x07, 0x07,
- 0xd3, 0xcf, 0x66, 0x18, 0x35, 0x22, 0x06, 0x4c, 0x83, 0x69, 0x3f, 0x2c, 0x41, 0xff, 0x3e, 0x24,
- 0xd9, 0x69, 0x85, 0x93, 0xee, 0xb4, 0xf4, 0x03, 0x89, 0xe9, 0xf3, 0x35, 0x59, 0x2d, 0xff, 0x43,
- 0x65, 0xbd, 0x98, 0xd2, 0x49, 0xbf, 0x98, 0x27, 0xe5, 0xdb, 0xd1, 0x3e, 0x2a, 0xc3, 0xf8, 0xa2,
- 0x4e, 0x3b, 0xae, 0xf3, 0xc8, 0x5d, 0x59, 0xe1, 0x89, 0xd8, 0x95, 0x5d, 0x83, 0x9a, 0x47, 0xbb,
- 0xb6, 0x65, 0xe8, 0x42, 0xf9, 0x92, 0x56, 0x50, 0x94, 0x65, 0x18, 0x52, 0x07, 0xec, 0xc6, 0x4b,
- 0x4f, 0xe4, 0x6e, 0xbc, 0xfc, 0xc9, 0xef, 0xc6, 0xb5, 0x6f, 0x14, 0x81, 0x2b, 0x2a, 0xe4, 0x2a,
- 0x94, 0xd9, 0x22, 0x9c, 0xb6, 0x01, 0xf1, 0x81, 0xc3, 0x29, 0xe4, 0x12, 0x14, 0x03, 0x57, 0x7e,
- 0x79, 0x20, 0xe9, 0xc5, 0x0d, 0x17, 0x8b, 0x81, 0x4b, 0xde, 0x07, 0x30, 0x5c, 0xc7, 0xb4, 0x94,
- 0x73, 0x20, 0xdf, 0x83, 0x2d, 0xb9, 0xde, 0x3d, 0xdd, 0x33, 0x17, 0x42, 0x44, 0xb1, 0x1f, 0x8b,
- 0xee, 0x31, 0x26, 0x8d, 0xbc, 0x0e, 0x23, 0xae, 0xb3, 0xd4, 0xb3, 0x6d, 0xde, 0xa1, 0xf5, 0xe6,
- 0x6f, 0xb1, 0x4d, 0xf2, 0x1d, 0x5e, 0xf2, 0xe0, 0x60, 0xfa, 0xa2, 0xd0, 0x6f, 0xd9, 0xdd, 0x9b,
- 0x9e, 0x15, 0x58, 0x4e, 0x3b, 0xdc, 0x9e, 0xc8, 0x6a, 0xda, 0xb7, 0x0a, 0xd0, 0x58, 0xb2, 0xee,
- 0x53, 0xf3, 0x4d, 0xcb, 0x31, 0xdd, 0x7b, 0x04, 0x61, 0xc4, 0xa6, 0x4e, 0x3b, 0xd8, 0x19, 0x72,
- 0xff, 0x20, 0x76, 0xe9, 0x1c, 0x01, 0x25, 0x12, 0x99, 0x85, 0xba, 0xd0, 0x3e, 0x2d, 0xa7, 0xcd,
- 0xfb, 0xb0, 0x16, 0x4d, 0x7a, 0x2d, 0x45, 0xc0, 0x88, 0x47, 0xdb, 0x87, 0x33, 0x7d, 0xdd, 0x40,
- 0x4c, 0x28, 0x07, 0x7a, 0x5b, 0xcd, 0xaf, 0x4b, 0x43, 0x77, 0xf0, 0x86, 0xde, 0x8e, 0x75, 0x2e,
- 0x5f, 0xe3, 0x37, 0x74, 0xb6, 0xc6, 0x33, 0x74, 0xed, 0x57, 0x05, 0xa8, 0x2d, 0xf5, 0x1c, 0x83,
- 0x6f, 0xd1, 0x1e, 0x6d, 0x1b, 0x54, 0x0a, 0x43, 0x31, 0x53, 0x61, 0xe8, 0xc1, 0xc8, 0xee, 0xbd,
- 0x50, 0xa1, 0x68, 0xcc, 0xad, 0x0d, 0x3f, 0x2a, 0x64, 0x93, 0x66, 0x6e, 0x71, 0x3c, 0xe1, 0xba,
- 0x1a, 0x97, 0x0d, 0x1a, 0xb9, 0xf5, 0x26, 0x17, 0x2a, 0x85, 0x5d, 0xfa, 0x1c, 0x34, 0x62, 0x6c,
- 0xc7, 0xb2, 0x62, 0xff, 0xbd, 0x32, 0x8c, 0x2c, 0xb7, 0x5a, 0xf3, 0xeb, 0x2b, 0xe4, 0x65, 0x68,
- 0x48, 0xaf, 0xc6, 0xed, 0xa8, 0x0f, 0x42, 0xa7, 0x56, 0x2b, 0x22, 0x61, 0x9c, 0x8f, 0xa9, 0x63,
- 0x1e, 0xd5, 0xed, 0x8e, 0xfc, 0x58, 0x42, 0x75, 0x0c, 0x59, 0x21, 0x0a, 0x1a, 0xd1, 0x61, 0x9c,
- 0xed, 0xf0, 0x58, 0x17, 0x8a, 0xdd, 0x9b, 0xfc, 0x6c, 0x8e, 0xb8, 0xbf, 0xe3, 0x4a, 0xe2, 0x66,
- 0x02, 0x00, 0x53, 0x80, 0xe4, 0x35, 0xa8, 0xe9, 0xbd, 0x60, 0x87, 0x2b, 0xd0, 0xe2, 0xdb, 0xb8,
- 0xcc, 0x9d, 0x3e, 0xb2, 0xec, 0xc1, 0xc1, 0xf4, 0xe8, 0x2d, 0x6c, 0xbe, 0xac, 0xee, 0x31, 0xe4,
- 0x66, 0x8d, 0x53, 0x3b, 0x46, 0xd9, 0xb8, 0xca, 0xb1, 0x1b, 0xb7, 0x9e, 0x00, 0xc0, 0x14, 0x20,
- 0x79, 0x1b, 0x46, 0x77, 0xe9, 0x7e, 0xa0, 0x6f, 0x49, 0x01, 0x23, 0xc7, 0x11, 0x30, 0xc9, 0x54,
- 0xb8, 0x5b, 0xb1, 0xea, 0x98, 0x00, 0x23, 0x3e, 0x9c, 0xdb, 0xa5, 0xde, 0x16, 0xf5, 0x5c, 0xb9,
- 0xfb, 0x94, 0x42, 0xaa, 0xc7, 0x11, 0x32, 0x75, 0x78, 0x30, 0x7d, 0xee, 0x56, 0x06, 0x0c, 0x66,
- 0x82, 0x6b, 0xff, 0xbb, 0x08, 0x13, 0xcb, 0xc2, 0xad, 0xec, 0x7a, 0x62, 0x11, 0x26, 0x17, 0xa1,
- 0xe4, 0x75, 0x7b, 0x7c, 0xe4, 0x94, 0x84, 0xe1, 0x18, 0xd7, 0x37, 0x91, 0x95, 0x91, 0xb7, 0xa0,
- 0x66, 0xca, 0x29, 0x43, 0x6e, 0x7e, 0x87, 0x32, 0x54, 0xa8, 0x3b, 0x0c, 0xd1, 0x98, 0xa6, 0xdf,
- 0xf1, 0xdb, 0x2d, 0xeb, 0x7d, 0x2a, 0xf7, 0x83, 0x5c, 0xd3, 0x5f, 0x13, 0x45, 0xa8, 0x68, 0x6c,
- 0x55, 0xdd, 0xa5, 0xfb, 0x62, 0x37, 0x54, 0x8e, 0x56, 0xd5, 0x5b, 0xb2, 0x0c, 0x43, 0x2a, 0x99,
- 0x56, 0x1f, 0x0b, 0x1b, 0x05, 0x65, 0xb1, 0x93, 0xbf, 0xcb, 0x0a, 0xe4, 0x77, 0xc3, 0xa6, 0xcc,
- 0x77, 0xad, 0x20, 0xa0, 0x9e, 0x7c, 0x8d, 0x43, 0x4d, 0x99, 0x37, 0x39, 0x02, 0x4a, 0x24, 0xf2,
- 0x3b, 0x50, 0xe7, 0xe0, 0x4d, 0xdb, 0xdd, 0xe2, 0x2f, 0xae, 0x2e, 0xf6, 0xf4, 0x77, 0x55, 0x21,
- 0x46, 0x74, 0xed, 0xd7, 0x45, 0xb8, 0xb0, 0x4c, 0x03, 0xa1, 0xd5, 0x2c, 0xd2, 0xae, 0xed, 0xee,
- 0x33, 0xd5, 0x12, 0xe9, 0x7b, 0xe4, 0x0d, 0x00, 0xcb, 0xdf, 0x6a, 0xed, 0x19, 0xfc, 0x3b, 0x10,
- 0xdf, 0xf0, 0x55, 0xf9, 0x49, 0xc2, 0x4a, 0xab, 0x29, 0x29, 0x0f, 0x12, 0x77, 0x18, 0xab, 0x13,
- 0x6d, 0xaf, 0x8a, 0x0f, 0xd9, 0x5e, 0xb5, 0x00, 0xba, 0x91, 0x82, 0x5a, 0xe2, 0x9c, 0xbf, 0xaf,
- 0xc4, 0x1c, 0x47, 0x37, 0x8d, 0xc1, 0xe4, 0x51, 0x19, 0x1d, 0x98, 0x34, 0xe9, 0xb6, 0xde, 0xb3,
- 0x83, 0x50, 0xa9, 0x96, 0x1f, 0xf1, 0xd1, 0xf5, 0xf2, 0xd0, 0xe5, 0xbd, 0x98, 0x42, 0xc2, 0x3e,
- 0x6c, 0xed, 0xef, 0x97, 0xe0, 0xd2, 0x32, 0x0d, 0x42, 0x8b, 0x8b, 0x9c, 0x1d, 0x5b, 0x5d, 0x6a,
- 0xb0, 0xb7, 0xf0, 0x61, 0x01, 0x46, 0x6c, 0x7d, 0x8b, 0xda, 0x6c, 0xf5, 0x62, 0x4f, 0xf3, 0xce,
- 0xd0, 0x0b, 0xc1, 0x60, 0x29, 0x33, 0xab, 0x5c, 0x42, 0x6a, 0x69, 0x10, 0x85, 0x28, 0xc5, 0xb3,
- 0x49, 0xdd, 0xb0, 0x7b, 0x7e, 0x40, 0xbd, 0x75, 0xd7, 0x0b, 0xa4, 0x3e, 0x19, 0x4e, 0xea, 0x0b,
- 0x11, 0x09, 0xe3, 0x7c, 0x64, 0x0e, 0xc0, 0xb0, 0x2d, 0xea, 0x04, 0xbc, 0x96, 0xf8, 0xae, 0x88,
- 0x7a, 0xbf, 0x0b, 0x21, 0x05, 0x63, 0x5c, 0x4c, 0x54, 0xc7, 0x75, 0xac, 0xc0, 0x15, 0xa2, 0xca,
- 0x49, 0x51, 0x6b, 0x11, 0x09, 0xe3, 0x7c, 0xbc, 0x1a, 0x0d, 0x3c, 0xcb, 0xf0, 0x79, 0xb5, 0x4a,
- 0xaa, 0x5a, 0x44, 0xc2, 0x38, 0x1f, 0x5b, 0xf3, 0x62, 0xcf, 0x7f, 0xac, 0x35, 0xef, 0x7b, 0x75,
- 0xb8, 0x92, 0xe8, 0xd6, 0x40, 0x0f, 0xe8, 0x76, 0xcf, 0x6e, 0xd1, 0x40, 0xbd, 0xc0, 0x21, 0xd7,
- 0xc2, 0xbf, 0x18, 0xbd, 0x77, 0x11, 0xcc, 0x62, 0x9c, 0xcc, 0x7b, 0xef, 0x6b, 0xe0, 0x91, 0xde,
- 0xfd, 0x2c, 0xd4, 0x1d, 0x3d, 0xf0, 0xf9, 0x87, 0x2b, 0xbf, 0xd1, 0x50, 0x0d, 0xbb, 0xad, 0x08,
- 0x18, 0xf1, 0x90, 0x75, 0x38, 0x27, 0xbb, 0xf8, 0xfa, 0xfd, 0xae, 0xeb, 0x05, 0xd4, 0x13, 0x75,
- 0xe5, 0x72, 0x2a, 0xeb, 0x9e, 0x5b, 0xcb, 0xe0, 0xc1, 0xcc, 0x9a, 0x64, 0x0d, 0xce, 0x1a, 0xc2,
- 0xc1, 0x4f, 0x6d, 0x57, 0x37, 0x15, 0xa0, 0x30, 0x70, 0x85, 0x5b, 0xa3, 0x85, 0x7e, 0x16, 0xcc,
- 0xaa, 0x97, 0x1e, 0xcd, 0x23, 0x43, 0x8d, 0xe6, 0xea, 0x30, 0xa3, 0xb9, 0x36, 0xdc, 0x68, 0xae,
- 0x1f, 0x6d, 0x34, 0xb3, 0x9e, 0x67, 0xe3, 0x88, 0x7a, 0x4c, 0x3d, 0x11, 0x2b, 0x6c, 0x2c, 0x7e,
- 0x24, 0xec, 0xf9, 0x56, 0x06, 0x0f, 0x66, 0xd6, 0x24, 0x5b, 0x70, 0x49, 0x94, 0x5f, 0x77, 0x0c,
- 0x6f, 0xbf, 0xcb, 0x16, 0x9e, 0x18, 0x6e, 0x23, 0x61, 0x61, 0xbc, 0xd4, 0x1a, 0xc8, 0x89, 0x0f,
- 0x41, 0x21, 0x7f, 0x08, 0x63, 0xe2, 0x2d, 0xad, 0xe9, 0x5d, 0x0e, 0x2b, 0xa2, 0x49, 0xce, 0x4b,
- 0xd8, 0xb1, 0x85, 0x38, 0x11, 0x93, 0xbc, 0x64, 0x1e, 0x26, 0xba, 0x7b, 0x06, 0xbb, 0x5c, 0xd9,
- 0xbe, 0x4d, 0xa9, 0x49, 0x4d, 0xee, 0xbe, 0xaa, 0x37, 0x9f, 0x56, 0x86, 0x8e, 0xf5, 0x24, 0x19,
- 0xd3, 0xfc, 0xe4, 0x35, 0x18, 0xf5, 0x03, 0xdd, 0x0b, 0xa4, 0x59, 0x6f, 0x6a, 0x5c, 0x44, 0xdb,
- 0x28, 0xab, 0x57, 0x2b, 0x46, 0xc3, 0x04, 0x67, 0xe6, 0x7a, 0x31, 0x71, 0x7a, 0xeb, 0x45, 0x9e,
- 0xd9, 0xea, 0x9f, 0x15, 0xe1, 0xea, 0x32, 0x0d, 0xd6, 0x5c, 0x47, 0x1a, 0x45, 0xb3, 0x96, 0xfd,
- 0x23, 0xd9, 0x44, 0x93, 0x8b, 0x76, 0xf1, 0x44, 0x17, 0xed, 0xd2, 0x09, 0x2d, 0xda, 0xe5, 0x53,
- 0x5c, 0xb4, 0xff, 0x61, 0x11, 0x9e, 0x4e, 0xf4, 0xe4, 0xba, 0x6b, 0xaa, 0x09, 0xff, 0xb3, 0x0e,
- 0x3c, 0x42, 0x07, 0x3e, 0x10, 0x7a, 0x27, 0x77, 0x6b, 0xa5, 0x34, 0x9e, 0x0f, 0xd2, 0x1a, 0xcf,
- 0xdb, 0x79, 0x56, 0xbe, 0x0c, 0x09, 0x47, 0x5a, 0xf1, 0x6e, 0x02, 0xf1, 0xa4, 0x13, 0x4e, 0x98,
- 0x7e, 0x62, 0x4a, 0x4f, 0x18, 0xce, 0x87, 0x7d, 0x1c, 0x98, 0x51, 0x8b, 0xb4, 0xe0, 0xbc, 0x4f,
- 0x9d, 0xc0, 0x72, 0xa8, 0x9d, 0x84, 0x13, 0xda, 0xd0, 0xb3, 0x12, 0xee, 0x7c, 0x2b, 0x8b, 0x09,
- 0xb3, 0xeb, 0xe6, 0x99, 0x07, 0xfe, 0x25, 0x70, 0x95, 0x53, 0x74, 0xcd, 0x89, 0x69, 0x2c, 0x1f,
- 0xa6, 0x35, 0x96, 0x77, 0xf2, 0xbf, 0xb7, 0xe1, 0xb4, 0x95, 0x39, 0x00, 0xfe, 0x16, 0xe2, 0xea,
- 0x4a, 0xb8, 0x48, 0x63, 0x48, 0xc1, 0x18, 0x17, 0x5b, 0x80, 0x54, 0x3f, 0xc7, 0x35, 0x95, 0x70,
- 0x01, 0x6a, 0xc5, 0x89, 0x98, 0xe4, 0x1d, 0xa8, 0xed, 0x54, 0x86, 0xd6, 0x76, 0x6e, 0x02, 0x49,
- 0x18, 0x1e, 0x05, 0xde, 0x48, 0x32, 0x9a, 0x74, 0xa5, 0x8f, 0x03, 0x33, 0x6a, 0x0d, 0x18, 0xca,
- 0xd5, 0x93, 0x1d, 0xca, 0xb5, 0xe1, 0x87, 0x32, 0x79, 0x07, 0x2e, 0x72, 0x51, 0xb2, 0x7f, 0x92,
- 0xc0, 0x42, 0xef, 0xf9, 0x0d, 0x09, 0x7c, 0x11, 0x07, 0x31, 0xe2, 0x60, 0x0c, 0xf6, 0x7e, 0x0c,
- 0x8f, 0x9a, 0x4c, 0xb8, 0x6e, 0x0f, 0xd6, 0x89, 0x16, 0x32, 0x78, 0x30, 0xb3, 0x26, 0x1b, 0x62,
- 0x01, 0x1b, 0x86, 0xfa, 0x96, 0x4d, 0x4d, 0x19, 0x4d, 0x1b, 0x0e, 0xb1, 0x8d, 0xd5, 0x96, 0xa4,
- 0x60, 0x8c, 0x2b, 0x4b, 0x4d, 0x19, 0x3d, 0xa6, 0x9a, 0xb2, 0xcc, 0xad, 0xf4, 0xdb, 0x09, 0x6d,
- 0x48, 0xea, 0x3a, 0x61, 0x7c, 0xf4, 0x42, 0x9a, 0x01, 0xfb, 0xeb, 0x70, 0x2d, 0xd1, 0xf0, 0xac,
- 0x6e, 0xe0, 0x27, 0xb1, 0xc6, 0x53, 0x5a, 0x62, 0x06, 0x0f, 0x66, 0xd6, 0x64, 0xfa, 0xf9, 0x0e,
- 0xd5, 0xed, 0x60, 0x27, 0x09, 0x38, 0x91, 0xd4, 0xcf, 0x6f, 0xf4, 0xb3, 0x60, 0x56, 0xbd, 0xcc,
- 0x05, 0x69, 0xf2, 0xc9, 0x54, 0xab, 0xbe, 0x59, 0x82, 0x8b, 0xcb, 0x34, 0x08, 0x03, 0x8d, 0x3e,
- 0x33, 0xa3, 0x7c, 0x02, 0x66, 0x94, 0xef, 0x56, 0xe0, 0xec, 0x32, 0x0d, 0xfa, 0xb4, 0xb1, 0xff,
- 0x4f, 0xbb, 0x7f, 0x0d, 0xce, 0x46, 0xb1, 0x6d, 0xad, 0xc0, 0xf5, 0xc4, 0x5a, 0x9e, 0xda, 0x2d,
- 0xb7, 0xfa, 0x59, 0x30, 0xab, 0x1e, 0xf9, 0x12, 0x3c, 0xcd, 0x97, 0x7a, 0xa7, 0x2d, 0xec, 0xb3,
- 0xc2, 0x98, 0x10, 0x3b, 0x9d, 0x31, 0x2d, 0x21, 0x9f, 0x6e, 0x65, 0xb3, 0xe1, 0xa0, 0xfa, 0xe4,
- 0x6b, 0x30, 0xda, 0xb5, 0xba, 0xd4, 0xb6, 0x1c, 0xae, 0x9f, 0xe5, 0x0e, 0x09, 0x59, 0x8f, 0x81,
- 0x45, 0x1b, 0xb8, 0x78, 0x29, 0x26, 0x04, 0x66, 0x8e, 0xd4, 0xda, 0x29, 0x8e, 0xd4, 0xff, 0x51,
- 0x84, 0xea, 0xb2, 0xe7, 0xf6, 0xba, 0xcd, 0x7d, 0xd2, 0x86, 0x91, 0x7b, 0xdc, 0x79, 0x26, 0x5d,
- 0x53, 0xc3, 0xc7, 0x87, 0x0b, 0x1f, 0x5c, 0xa4, 0x12, 0x89, 0x7b, 0x94, 0xf0, 0x6c, 0x10, 0xef,
- 0xd2, 0x7d, 0x6a, 0x4a, 0x1f, 0x5a, 0x38, 0x88, 0x6f, 0xb1, 0x42, 0x14, 0x34, 0xd2, 0x81, 0x09,
- 0xdd, 0xb6, 0xdd, 0x7b, 0xd4, 0x5c, 0xd5, 0x03, 0xea, 0x50, 0x5f, 0xb9, 0x24, 0x8f, 0x6b, 0x96,
- 0xe6, 0x7e, 0xfd, 0xf9, 0x24, 0x14, 0xa6, 0xb1, 0xc9, 0xbb, 0x50, 0xf5, 0x03, 0xd7, 0x53, 0xca,
- 0x56, 0x63, 0x6e, 0x61, 0xf8, 0x97, 0xde, 0xfc, 0x62, 0x4b, 0x40, 0x09, 0x9b, 0xbd, 0xbc, 0x41,
- 0x25, 0x40, 0xfb, 0x4e, 0x01, 0xe0, 0xc6, 0xc6, 0xc6, 0xba, 0x74, 0x2f, 0x98, 0x50, 0xd6, 0x7b,
- 0xa1, 0xa3, 0x72, 0x78, 0x87, 0x60, 0x22, 0x2c, 0x53, 0xfa, 0xf0, 0x7a, 0xc1, 0x0e, 0x72, 0x74,
- 0xf2, 0xdb, 0x50, 0x95, 0x0a, 0xb2, 0xec, 0xf6, 0x30, 0xb4, 0x40, 0x2a, 0xd1, 0xa8, 0xe8, 0xda,
- 0xdf, 0x2d, 0x02, 0xac, 0x98, 0x36, 0x6d, 0xa9, 0x90, 0xfe, 0x7a, 0xb0, 0xe3, 0x51, 0x7f, 0xc7,
- 0xb5, 0xcd, 0x21, 0xbd, 0xa9, 0xdc, 0xe6, 0xbf, 0xa1, 0x40, 0x30, 0xc2, 0x23, 0x26, 0x8c, 0xfa,
- 0x01, 0xed, 0xaa, 0x48, 0xcd, 0x21, 0x9d, 0x28, 0x93, 0xc2, 0x2e, 0x12, 0xe1, 0x60, 0x02, 0x95,
- 0xe8, 0xd0, 0xb0, 0x1c, 0x43, 0x7c, 0x20, 0xcd, 0xfd, 0x21, 0x07, 0xd2, 0x04, 0xdb, 0x71, 0xac,
- 0x44, 0x30, 0x18, 0xc7, 0xd4, 0x7e, 0x56, 0x84, 0x0b, 0x5c, 0x1e, 0x6b, 0x46, 0x22, 0x1e, 0x93,
- 0xfc, 0xe9, 0xbe, 0xe3, 0x87, 0x7f, 0xf2, 0x68, 0xa2, 0xc5, 0xe9, 0xb5, 0x35, 0x1a, 0xe8, 0x91,
- 0x3e, 0x17, 0x95, 0xc5, 0xce, 0x1c, 0xf6, 0xa0, 0xec, 0xb3, 0xf9, 0x4a, 0xf4, 0x5e, 0x6b, 0xe8,
- 0x21, 0x94, 0xfd, 0x00, 0x7c, 0xf6, 0x0a, 0xbd, 0xc6, 0x7c, 0xd6, 0xe2, 0xe2, 0xc8, 0x9f, 0x85,
- 0x11, 0x3f, 0xd0, 0x83, 0x9e, 0xfa, 0x34, 0x37, 0x4f, 0x5a, 0x30, 0x07, 0x8f, 0xe6, 0x11, 0x71,
- 0x8f, 0x52, 0xa8, 0xf6, 0xb3, 0x02, 0x5c, 0xca, 0xae, 0xb8, 0x6a, 0xf9, 0x01, 0xf9, 0x53, 0x7d,
- 0xdd, 0x7e, 0xc4, 0x37, 0xce, 0x6a, 0xf3, 0x4e, 0x0f, 0x23, 0xd4, 0x55, 0x49, 0xac, 0xcb, 0x03,
- 0xa8, 0x58, 0x01, 0xed, 0xa8, 0xfd, 0xe5, 0x9d, 0x13, 0x7e, 0xf4, 0xd8, 0xd2, 0xce, 0xa4, 0xa0,
- 0x10, 0xa6, 0x7d, 0x54, 0x1c, 0xf4, 0xc8, 0x7c, 0xf9, 0xb0, 0x93, 0x31, 0xbf, 0xb7, 0xf2, 0xc5,
- 0xfc, 0x26, 0x1b, 0xd4, 0x1f, 0xfa, 0xfb, 0x67, 0xfa, 0x43, 0x7f, 0xef, 0xe4, 0x0f, 0xfd, 0x4d,
- 0x75, 0xc3, 0xc0, 0x08, 0xe0, 0x8f, 0x4b, 0x70, 0xf9, 0x61, 0xc3, 0x86, 0xad, 0x67, 0x72, 0x74,
- 0xe6, 0x5d, 0xcf, 0x1e, 0x3e, 0x0e, 0xc9, 0x1c, 0x54, 0xba, 0x3b, 0xba, 0xaf, 0x94, 0x32, 0xb5,
- 0x61, 0xa9, 0xac, 0xb3, 0xc2, 0x07, 0x6c, 0xd2, 0xe0, 0xca, 0x1c, 0xbf, 0x45, 0xc1, 0xca, 0xa6,
- 0xe3, 0x0e, 0xf5, 0xfd, 0xc8, 0x26, 0x10, 0x4e, 0xc7, 0x6b, 0xa2, 0x18, 0x15, 0x9d, 0x04, 0x30,
- 0x22, 0x4c, 0xcc, 0x72, 0x65, 0x1a, 0x3e, 0x90, 0x2b, 0x23, 0x4c, 0x3c, 0x7a, 0x28, 0xe9, 0xad,
- 0x90, 0xb2, 0xc8, 0x0c, 0x94, 0x83, 0x28, 0x68, 0x57, 0x6d, 0xcd, 0xcb, 0x19, 0xfa, 0x29, 0xe7,
- 0x63, 0x1b, 0x7b, 0x77, 0x8b, 0x1b, 0xd5, 0x4d, 0xe9, 0x3f, 0xb7, 0x5c, 0x87, 0x2b, 0x64, 0xa5,
- 0x68, 0x63, 0x7f, 0xa7, 0x8f, 0x03, 0x33, 0x6a, 0x69, 0xff, 0xa6, 0x06, 0x17, 0xb2, 0xc7, 0x03,
- 0xeb, 0xb7, 0x3d, 0xea, 0xf9, 0x0c, 0xbb, 0x90, 0xec, 0xb7, 0xbb, 0xa2, 0x18, 0x15, 0xfd, 0x53,
- 0x1d, 0x70, 0xf6, 0xdd, 0x02, 0x5c, 0xf4, 0xa4, 0x8f, 0xe8, 0x71, 0x04, 0x9d, 0x3d, 0x2b, 0xcc,
- 0x19, 0x03, 0x04, 0xe2, 0xe0, 0xb6, 0x90, 0xbf, 0x5d, 0x80, 0xa9, 0x4e, 0xca, 0xce, 0x71, 0x8a,
- 0x27, 0xe8, 0x78, 0x54, 0xfc, 0xda, 0x00, 0x79, 0x38, 0xb0, 0x25, 0xe4, 0x6b, 0xd0, 0xe8, 0xb2,
- 0x71, 0xe1, 0x07, 0xd4, 0x31, 0xd4, 0x21, 0xba, 0xe1, 0xbf, 0xa4, 0xf5, 0x08, 0x2b, 0x3c, 0x41,
- 0xc3, 0xf5, 0x83, 0x18, 0x01, 0xe3, 0x12, 0x9f, 0xf0, 0x23, 0x73, 0xd7, 0xa0, 0xe6, 0xd3, 0x20,
- 0xb0, 0x9c, 0xb6, 0xd8, 0x6f, 0xd4, 0xc5, 0xb7, 0xd2, 0x92, 0x65, 0x18, 0x52, 0xc9, 0xef, 0x40,
- 0x9d, 0xbb, 0x9c, 0xe6, 0xbd, 0xb6, 0x3f, 0x55, 0xe7, 0xe1, 0x62, 0x63, 0x22, 0x00, 0x4e, 0x16,
- 0x62, 0x44, 0x27, 0x2f, 0xc1, 0xe8, 0x16, 0xff, 0x7c, 0xe5, 0x29, 0x6a, 0x61, 0xe3, 0xe2, 0xda,
- 0x5a, 0x33, 0x56, 0x8e, 0x09, 0x2e, 0x32, 0x07, 0x40, 0x43, 0xbf, 0x5c, 0xda, 0x9e, 0x15, 0x79,
- 0xec, 0x30, 0xc6, 0x45, 0x9e, 0x85, 0x52, 0x60, 0xfb, 0xdc, 0x86, 0x55, 0x8b, 0xb6, 0xa0, 0x1b,
- 0xab, 0x2d, 0x64, 0xe5, 0xda, 0xaf, 0x0b, 0x30, 0x91, 0x3a, 0x5c, 0xc2, 0xaa, 0xf4, 0x3c, 0x5b,
- 0x4e, 0x23, 0x61, 0x95, 0x4d, 0x5c, 0x45, 0x56, 0x4e, 0xde, 0x91, 0x6a, 0x79, 0x31, 0x67, 0xc2,
- 0x88, 0xdb, 0x7a, 0xe0, 0x33, 0x3d, 0xbc, 0x4f, 0x23, 0xe7, 0x6e, 0xbe, 0xa8, 0x3d, 0x72, 0x1d,
- 0x88, 0xb9, 0xf9, 0x22, 0x1a, 0x26, 0x38, 0x53, 0x06, 0xbf, 0xf2, 0x51, 0x0c, 0x7e, 0xda, 0xb7,
- 0x8a, 0xb1, 0x1e, 0x90, 0x9a, 0xfd, 0x23, 0x7a, 0xe0, 0x05, 0xb6, 0x80, 0x86, 0x8b, 0x7b, 0x3d,
- 0xbe, 0xfe, 0xf1, 0xc5, 0x58, 0x52, 0xc9, 0x9b, 0xa2, 0xef, 0x4b, 0x39, 0x8f, 0xe5, 0x6e, 0xac,
- 0xb6, 0x44, 0x74, 0x95, 0x7a, 0x6b, 0xe1, 0x2b, 0x28, 0x9f, 0xd2, 0x2b, 0xd0, 0xfe, 0x45, 0x09,
- 0x1a, 0x37, 0xdd, 0xad, 0x4f, 0x49, 0x04, 0x75, 0xf6, 0x32, 0x55, 0xfc, 0x04, 0x97, 0xa9, 0x4d,
- 0x78, 0x3a, 0x08, 0xec, 0x16, 0x35, 0x5c, 0xc7, 0xf4, 0xe7, 0xb7, 0x03, 0xea, 0x2d, 0x59, 0x8e,
- 0xe5, 0xef, 0x50, 0x53, 0xba, 0x93, 0x9e, 0x39, 0x3c, 0x98, 0x7e, 0x7a, 0x63, 0x63, 0x35, 0x8b,
- 0x05, 0x07, 0xd5, 0xe5, 0xd3, 0x86, 0x38, 0x09, 0xc8, 0x4f, 0xca, 0xc8, 0x98, 0x1b, 0x31, 0x6d,
- 0xc4, 0xca, 0x31, 0xc1, 0xa5, 0xfd, 0xa0, 0x08, 0xf5, 0x30, 0x15, 0x00, 0x79, 0x1e, 0xaa, 0x5b,
- 0x9e, 0xbb, 0x4b, 0x3d, 0xe1, 0xb9, 0x93, 0x27, 0x65, 0x9a, 0xa2, 0x08, 0x15, 0x8d, 0x3c, 0x07,
- 0x95, 0xc0, 0xed, 0x5a, 0x46, 0xda, 0xa0, 0xb6, 0xc1, 0x0a, 0x51, 0xd0, 0x4e, 0x6f, 0x80, 0xbf,
- 0x90, 0x50, 0xed, 0xea, 0x03, 0x95, 0xb1, 0xb7, 0xa1, 0xec, 0xeb, 0xbe, 0x2d, 0xd7, 0xd3, 0x1c,
- 0xa7, 0xea, 0xe7, 0x5b, 0xab, 0xf2, 0x54, 0xfd, 0x7c, 0x6b, 0x15, 0x39, 0xa8, 0xf6, 0xcb, 0x22,
- 0x34, 0x44, 0xbf, 0x89, 0x59, 0xe1, 0x24, 0x7b, 0xee, 0x75, 0x1e, 0x4a, 0xe1, 0xf7, 0x3a, 0xd4,
- 0xe3, 0x66, 0x26, 0x39, 0xc9, 0xc5, 0xfd, 0x03, 0x11, 0x31, 0x0c, 0xa7, 0x88, 0x8a, 0x54, 0xd7,
- 0x97, 0x4f, 0xb1, 0xeb, 0x2b, 0x47, 0xea, 0xfa, 0x91, 0xd3, 0xe8, 0xfa, 0x0f, 0x8b, 0x50, 0x5f,
- 0xb5, 0xb6, 0xa9, 0xb1, 0x6f, 0xd8, 0xfc, 0x4c, 0xa0, 0x49, 0x6d, 0x1a, 0xd0, 0x65, 0x4f, 0x37,
- 0xe8, 0x3a, 0xf5, 0x2c, 0x9e, 0x2a, 0x87, 0x7d, 0x1f, 0x7c, 0x06, 0x92, 0x67, 0x02, 0x17, 0x07,
- 0xf0, 0xe0, 0xc0, 0xda, 0x64, 0x05, 0x46, 0x4d, 0xea, 0x5b, 0x1e, 0x35, 0xd7, 0x63, 0x1b, 0x95,
- 0xe7, 0xd5, 0x52, 0xb3, 0x18, 0xa3, 0x3d, 0x38, 0x98, 0x1e, 0x53, 0x06, 0x4a, 0xb1, 0x63, 0x49,
- 0x54, 0x65, 0x9f, 0x7c, 0x57, 0xef, 0xf9, 0x59, 0x6d, 0x8c, 0x7d, 0xf2, 0xeb, 0xd9, 0x2c, 0x38,
- 0xa8, 0xae, 0x56, 0x81, 0xd2, 0xaa, 0xdb, 0xd6, 0x3e, 0x2a, 0x41, 0x98, 0x53, 0x89, 0xfc, 0x85,
- 0x02, 0x34, 0x74, 0xc7, 0x71, 0x03, 0x99, 0xaf, 0x48, 0x78, 0xe0, 0x31, 0x77, 0xea, 0xa6, 0x99,
- 0xf9, 0x08, 0x54, 0x38, 0x6f, 0x43, 0x87, 0x72, 0x8c, 0x82, 0x71, 0xd9, 0xa4, 0x97, 0xf2, 0x27,
- 0xaf, 0xe5, 0x6f, 0xc5, 0x11, 0xbc, 0xc7, 0x97, 0xbe, 0x00, 0x93, 0xe9, 0xc6, 0x1e, 0xc7, 0x1d,
- 0x94, 0xcb, 0x31, 0x5f, 0x04, 0x88, 0x62, 0x4a, 0x1e, 0x83, 0x11, 0xcb, 0x4a, 0x18, 0xb1, 0x86,
- 0x3f, 0xd8, 0x1e, 0x35, 0x7a, 0xa0, 0xe1, 0xea, 0xbd, 0x94, 0xe1, 0x6a, 0xe5, 0x24, 0x84, 0x3d,
- 0xdc, 0x58, 0xf5, 0x77, 0x0a, 0x30, 0x19, 0x31, 0xcb, 0x13, 0xb2, 0xaf, 0xc2, 0x98, 0x47, 0x75,
- 0xb3, 0xa9, 0x07, 0xc6, 0x0e, 0x0f, 0xf5, 0x2e, 0xf0, 0xd8, 0xec, 0x33, 0x87, 0x07, 0xd3, 0x63,
- 0x18, 0x27, 0x60, 0x92, 0x8f, 0xe8, 0xd0, 0x60, 0x05, 0x1b, 0x56, 0x87, 0xba, 0xbd, 0x60, 0x48,
- 0xab, 0x29, 0xdf, 0xb0, 0x60, 0x04, 0x83, 0x71, 0x4c, 0xed, 0xe3, 0x02, 0x8c, 0xc7, 0x1b, 0x7c,
- 0xea, 0x16, 0xb5, 0x9d, 0xa4, 0x45, 0x6d, 0xe1, 0x04, 0xde, 0xc9, 0x00, 0x2b, 0xda, 0x07, 0x10,
- 0x7f, 0x34, 0x6e, 0x39, 0x8b, 0x1b, 0x0b, 0x0a, 0x0f, 0x35, 0x16, 0x7c, 0xfa, 0xd3, 0xe8, 0x0c,
- 0xd2, 0x72, 0xcb, 0x4f, 0xb0, 0x96, 0xfb, 0x49, 0xe6, 0xe2, 0x89, 0xe5, 0x93, 0x19, 0xc9, 0x91,
- 0x4f, 0xa6, 0x13, 0xe6, 0x93, 0xa9, 0x9e, 0xd8, 0xa4, 0x73, 0x94, 0x9c, 0x32, 0xb5, 0xc7, 0x9a,
- 0x53, 0xa6, 0x7e, 0x5a, 0x39, 0x65, 0x20, 0x6f, 0x4e, 0x99, 0x0f, 0x0a, 0x30, 0x6e, 0x26, 0x4e,
- 0xcc, 0x72, 0xdb, 0x42, 0x9e, 0xa5, 0x26, 0x79, 0x00, 0x57, 0x1c, 0x99, 0x4a, 0x96, 0x61, 0x4a,
- 0x64, 0x56, 0x26, 0x97, 0xd1, 0x4f, 0x26, 0x93, 0xcb, 0x2f, 0xaa, 0xf1, 0x15, 0xe9, 0x71, 0x1b,
- 0xcd, 0x5f, 0x49, 0x1a, 0xcd, 0xaf, 0xa6, 0x8d, 0xe6, 0x13, 0xb1, 0x78, 0xd6, 0xb8, 0xe1, 0xfc,
- 0x77, 0x63, 0x13, 0x75, 0x89, 0xe7, 0x70, 0x09, 0xdf, 0x79, 0xc6, 0x64, 0x3d, 0x0f, 0x13, 0x52,
- 0x7b, 0x55, 0x44, 0x3e, 0xcb, 0x8d, 0x45, 0x61, 0x4e, 0x8b, 0x49, 0x32, 0xa6, 0xf9, 0x99, 0x40,
- 0x5f, 0xa5, 0xf2, 0x14, 0x5b, 0x85, 0x68, 0x90, 0xa9, 0x34, 0x9b, 0x21, 0x07, 0xdb, 0x56, 0x78,
- 0x54, 0xf7, 0xa5, 0xe9, 0x3b, 0xb6, 0xad, 0x40, 0x5e, 0x8a, 0x92, 0x1a, 0xb7, 0xff, 0x57, 0x1f,
- 0x61, 0xff, 0xd7, 0xa1, 0x61, 0xeb, 0x7e, 0x20, 0xde, 0xa6, 0x29, 0x3f, 0xe7, 0x3f, 0x71, 0xb4,
- 0x85, 0x97, 0x2d, 0xe6, 0x91, 0x76, 0xbb, 0x1a, 0xc1, 0x60, 0x1c, 0x93, 0x98, 0x30, 0xca, 0x6e,
- 0xf9, 0xa7, 0x6d, 0xce, 0x07, 0x32, 0xe1, 0xd5, 0x71, 0x64, 0x84, 0x66, 0xab, 0xd5, 0x18, 0x0e,
- 0x26, 0x50, 0x07, 0xb8, 0x08, 0x60, 0x18, 0x17, 0x01, 0xf9, 0x43, 0xa1, 0x39, 0xed, 0x87, 0xaf,
- 0xb5, 0xc1, 0x5f, 0x6b, 0x18, 0x22, 0x89, 0x71, 0x22, 0x26, 0x79, 0xd9, 0xa8, 0xe8, 0xc9, 0x6e,
- 0x50, 0xd5, 0x47, 0x93, 0xa3, 0x62, 0x33, 0x49, 0xc6, 0x34, 0x3f, 0x59, 0x87, 0x73, 0x61, 0x51,
- 0xbc, 0x19, 0x63, 0x1c, 0x27, 0x8c, 0x59, 0xdb, 0xcc, 0xe0, 0xc1, 0xcc, 0x9a, 0xfc, 0x10, 0x48,
- 0xcf, 0xf3, 0xa8, 0x13, 0xdc, 0xd0, 0xfd, 0x1d, 0x19, 0xfc, 0x16, 0x1d, 0x02, 0x89, 0x48, 0x18,
- 0xe7, 0x23, 0x73, 0x00, 0x02, 0x8e, 0xd7, 0x9a, 0x48, 0xc6, 0x97, 0x6e, 0x86, 0x14, 0x8c, 0x71,
- 0x69, 0x1f, 0xd4, 0xa1, 0x71, 0x5b, 0x0f, 0xac, 0x3d, 0xca, 0xfd, 0x79, 0xa7, 0xe3, 0x54, 0xf9,
- 0xeb, 0x05, 0xb8, 0x90, 0x0c, 0xda, 0x3c, 0x45, 0xcf, 0x0a, 0x4f, 0x01, 0x83, 0x99, 0xd2, 0x70,
- 0x40, 0x2b, 0xb8, 0x8f, 0xa5, 0x2f, 0x06, 0xf4, 0xb4, 0x7d, 0x2c, 0xad, 0x41, 0x02, 0x71, 0x70,
- 0x5b, 0x3e, 0x2d, 0x3e, 0x96, 0x27, 0x3b, 0x67, 0x61, 0xca, 0x03, 0x54, 0x7d, 0x62, 0x3c, 0x40,
- 0xb5, 0x27, 0x42, 0xed, 0xee, 0xc6, 0x3c, 0x40, 0xf5, 0x9c, 0x91, 0x48, 0xf2, 0x9c, 0x83, 0x40,
- 0x1b, 0xe4, 0x49, 0xe2, 0x29, 0x0a, 0x94, 0x65, 0x9e, 0x69, 0xab, 0x5b, 0xba, 0x6f, 0x19, 0x52,
- 0xed, 0xc8, 0x91, 0xa3, 0x55, 0xe5, 0x6e, 0x13, 0x01, 0x0b, 0xfc, 0x16, 0x05, 0x76, 0x94, 0xaa,
- 0xae, 0x98, 0x2b, 0x55, 0x1d, 0x59, 0x80, 0xb2, 0xb3, 0x4b, 0xf7, 0x8f, 0x77, 0xd8, 0x9f, 0xef,
- 0xc2, 0x6e, 0xdf, 0xa2, 0xfb, 0xc8, 0x2b, 0x6b, 0x3f, 0x28, 0x02, 0xb0, 0xc7, 0x3f, 0x9a, 0x2f,
- 0xe6, 0xb7, 0xa1, 0xea, 0xf7, 0xb8, 0xd5, 0x44, 0x2a, 0x4c, 0x51, 0xf8, 0x96, 0x28, 0x46, 0x45,
- 0x27, 0xcf, 0x41, 0xe5, 0xbd, 0x1e, 0xed, 0xa9, 0xc0, 0x82, 0x50, 0x71, 0xff, 0x22, 0x2b, 0x44,
- 0x41, 0x3b, 0x3d, 0xbb, 0xaa, 0xf2, 0xd9, 0x54, 0x4e, 0xcb, 0x67, 0x53, 0x87, 0xea, 0x6d, 0x97,
- 0x47, 0x83, 0x6a, 0xff, 0xb5, 0x08, 0x10, 0x45, 0xdb, 0x91, 0xef, 0x14, 0xe0, 0x7c, 0xf8, 0xc1,
- 0x05, 0x62, 0xff, 0xc5, 0xd3, 0x22, 0xe7, 0xf6, 0xdf, 0x64, 0x7d, 0xec, 0x7c, 0x06, 0x5a, 0xcf,
- 0x12, 0x87, 0xd9, 0xad, 0x20, 0x08, 0x35, 0xda, 0xe9, 0x06, 0xfb, 0x8b, 0x96, 0x27, 0x47, 0x60,
- 0x66, 0x50, 0xe7, 0x75, 0xc9, 0x23, 0xaa, 0x4a, 0x23, 0x01, 0xff, 0x88, 0x14, 0x05, 0x43, 0x1c,
- 0xb2, 0x03, 0x35, 0xc7, 0x7d, 0xc7, 0x67, 0xdd, 0x21, 0x87, 0xe3, 0x1b, 0xc3, 0x77, 0xb9, 0xe8,
- 0x56, 0x61, 0xef, 0x97, 0x37, 0x58, 0x75, 0x64, 0x67, 0x7f, 0xbb, 0x08, 0x67, 0x33, 0xfa, 0x81,
- 0xbc, 0x01, 0x93, 0x32, 0xb0, 0x31, 0xca, 0x0f, 0x5e, 0x88, 0xf2, 0x83, 0xb7, 0x52, 0x34, 0xec,
- 0xe3, 0x26, 0xef, 0x00, 0xe8, 0x86, 0x41, 0x7d, 0x7f, 0xcd, 0x35, 0xd5, 0x7e, 0xe0, 0x75, 0xa6,
- 0xbe, 0xcc, 0x87, 0xa5, 0x0f, 0x0e, 0xa6, 0x7f, 0x2f, 0x2b, 0x56, 0x39, 0xd5, 0xcf, 0x51, 0x05,
- 0x8c, 0x41, 0x92, 0xaf, 0x00, 0x88, 0x4d, 0x78, 0x98, 0x4e, 0xe1, 0x11, 0x96, 0xab, 0x19, 0x95,
- 0xb8, 0x6a, 0xe6, 0x8b, 0x3d, 0xdd, 0x09, 0xac, 0x60, 0x5f, 0x64, 0xaf, 0xb9, 0x1b, 0xa2, 0x60,
- 0x0c, 0x51, 0xfb, 0xa7, 0x45, 0xa8, 0x29, 0x9b, 0xf9, 0x63, 0x30, 0x94, 0xb6, 0x13, 0x86, 0xd2,
- 0x13, 0x8a, 0x4e, 0xce, 0x32, 0x93, 0xba, 0x29, 0x33, 0xe9, 0x72, 0x7e, 0x51, 0x0f, 0x37, 0x92,
- 0x7e, 0xbf, 0x08, 0xe3, 0x8a, 0x35, 0xaf, 0x89, 0xf4, 0xf3, 0x30, 0x21, 0xa2, 0x0a, 0xd6, 0xf4,
- 0xfb, 0x22, 0x91, 0x0f, 0xef, 0xb0, 0xb2, 0x08, 0x08, 0x6e, 0x26, 0x49, 0x98, 0xe6, 0x65, 0xc3,
- 0x5a, 0x14, 0x6d, 0xb2, 0x4d, 0x98, 0xf0, 0x43, 0x8a, 0xfd, 0x26, 0x1f, 0xd6, 0xcd, 0x14, 0x0d,
- 0xfb, 0xb8, 0xd3, 0x36, 0xda, 0xf2, 0x29, 0xd8, 0x68, 0xff, 0x5d, 0x01, 0x46, 0xa3, 0xfe, 0x3a,
- 0x75, 0x0b, 0xed, 0x76, 0xd2, 0x42, 0x3b, 0x9f, 0x7b, 0x38, 0x0c, 0xb0, 0xcf, 0xfe, 0xe5, 0x2a,
- 0x24, 0x82, 0xe4, 0xc9, 0x16, 0x5c, 0xb2, 0x32, 0x43, 0xfd, 0x62, 0xb3, 0x4d, 0x78, 0xea, 0x7b,
- 0x65, 0x20, 0x27, 0x3e, 0x04, 0x85, 0xf4, 0xa0, 0xb6, 0x47, 0xbd, 0xc0, 0x32, 0xa8, 0x7a, 0xbe,
- 0xe5, 0xdc, 0x2a, 0x99, 0xb4, 0x42, 0x87, 0x7d, 0x7a, 0x57, 0x0a, 0xc0, 0x50, 0x14, 0xd9, 0x82,
- 0x0a, 0x35, 0xdb, 0x54, 0xa5, 0x56, 0xca, 0x99, 0xb8, 0x34, 0xec, 0x4f, 0x76, 0xe7, 0xa3, 0x80,
- 0x26, 0x3e, 0xd4, 0x6d, 0xe5, 0x65, 0x94, 0xe3, 0x70, 0x78, 0x05, 0x2b, 0xf4, 0x57, 0x46, 0x59,
- 0x17, 0xc2, 0x22, 0x8c, 0xe4, 0x90, 0xdd, 0xd0, 0xdc, 0x59, 0x39, 0xa1, 0xc9, 0xe3, 0x21, 0xc6,
- 0x4e, 0x1f, 0xea, 0xf7, 0xf4, 0x80, 0x7a, 0x1d, 0xdd, 0xdb, 0x95, 0xbb, 0x8d, 0xe1, 0x9f, 0xf0,
- 0x4d, 0x85, 0x14, 0x3d, 0x61, 0x58, 0x84, 0x91, 0x1c, 0xe2, 0x42, 0x3d, 0x90, 0xea, 0xb3, 0xb2,
- 0xe9, 0x0e, 0x2f, 0x54, 0x29, 0xe2, 0xbe, 0x0c, 0x96, 0x57, 0xb7, 0x18, 0xc9, 0x20, 0x7b, 0x89,
- 0x2c, 0xd7, 0x22, 0xb7, 0x79, 0x33, 0x87, 0x6f, 0x40, 0x42, 0x45, 0xcb, 0x4d, 0x76, 0xb6, 0x6c,
- 0xed, 0x7f, 0x56, 0xa2, 0x69, 0xf9, 0x71, 0xdb, 0x09, 0x5f, 0x4a, 0xda, 0x09, 0xaf, 0xa4, 0xed,
- 0x84, 0x29, 0x67, 0xf5, 0xf1, 0xc3, 0x6b, 0x53, 0xe6, 0xb5, 0xf2, 0x29, 0x98, 0xd7, 0x5e, 0x84,
- 0xc6, 0x1e, 0x9f, 0x09, 0x44, 0x9e, 0xa6, 0x0a, 0x5f, 0x46, 0xf8, 0xcc, 0x7e, 0x37, 0x2a, 0xc6,
- 0x38, 0x0f, 0xab, 0x22, 0xff, 0xeb, 0x11, 0x26, 0xba, 0x95, 0x55, 0x5a, 0x51, 0x31, 0xc6, 0x79,
- 0x78, 0x64, 0x9e, 0xe5, 0xec, 0x8a, 0x0a, 0x55, 0x5e, 0x41, 0x44, 0xe6, 0xa9, 0x42, 0x8c, 0xe8,
- 0xe4, 0x1a, 0xd4, 0x7a, 0xe6, 0xb6, 0xe0, 0xad, 0x71, 0x5e, 0xae, 0x61, 0x6e, 0x2e, 0x2e, 0xc9,
- 0xbc, 0x51, 0x8a, 0xca, 0x5a, 0xd2, 0xd1, 0xbb, 0x8a, 0xc0, 0xf7, 0x86, 0xb2, 0x25, 0x6b, 0x51,
- 0x31, 0xc6, 0x79, 0xc8, 0x1f, 0xc0, 0xb8, 0x47, 0xcd, 0x9e, 0x41, 0xc3, 0x5a, 0xc0, 0x6b, 0x11,
- 0xf1, 0x03, 0x93, 0x38, 0x05, 0x53, 0x9c, 0x03, 0x8c, 0x84, 0x8d, 0xa1, 0x8c, 0x84, 0x5f, 0x80,
- 0x71, 0xd3, 0xd3, 0x2d, 0x87, 0x9a, 0x77, 0x1c, 0x1e, 0x91, 0x20, 0xe3, 0x03, 0x43, 0x0b, 0xf9,
- 0x62, 0x82, 0x8a, 0x29, 0x6e, 0xed, 0xbf, 0x17, 0x80, 0xf4, 0x47, 0xc2, 0x93, 0x1d, 0x18, 0x71,
- 0xb8, 0xf5, 0x2c, 0x77, 0x6a, 0xed, 0x98, 0x11, 0x4e, 0x4c, 0x6b, 0xb2, 0x40, 0xe2, 0x13, 0x07,
- 0x6a, 0xf4, 0x7e, 0x40, 0x3d, 0x27, 0x3c, 0x19, 0x73, 0x32, 0x69, 0xbc, 0xc5, 0x6e, 0x42, 0x22,
- 0x63, 0x28, 0x43, 0xfb, 0x79, 0x11, 0x1a, 0x31, 0xbe, 0x47, 0x6d, 0x4a, 0xf9, 0xe1, 0x7c, 0x61,
- 0xb4, 0xda, 0xf4, 0x6c, 0xf9, 0x85, 0xc6, 0x0e, 0xe7, 0x4b, 0x12, 0xae, 0x62, 0x9c, 0x8f, 0xcc,
- 0x01, 0x74, 0x74, 0x3f, 0xa0, 0x1e, 0x5f, 0xbd, 0x53, 0x47, 0xe2, 0xd7, 0x42, 0x0a, 0xc6, 0xb8,
- 0xc8, 0x55, 0x99, 0x88, 0xbd, 0x9c, 0x4c, 0x61, 0x38, 0x20, 0xcb, 0x7a, 0xe5, 0x04, 0xb2, 0xac,
- 0x93, 0x36, 0x4c, 0xaa, 0x56, 0x2b, 0xea, 0xf1, 0x12, 0xdc, 0x89, 0xfd, 0x4f, 0x0a, 0x02, 0xfb,
- 0x40, 0xb5, 0x1f, 0x14, 0x60, 0x2c, 0x61, 0x32, 0x11, 0xc9, 0x07, 0xd5, 0x39, 0x8e, 0x44, 0xf2,
- 0xc1, 0xd8, 0xf1, 0x8b, 0x17, 0x60, 0x44, 0x74, 0x50, 0x3a, 0x3c, 0x53, 0x74, 0x21, 0x4a, 0x2a,
- 0x9b, 0x0b, 0xa5, 0x51, 0x36, 0x3d, 0x17, 0x4a, 0xab, 0x2d, 0x2a, 0xba, 0xf0, 0x75, 0x88, 0xd6,
- 0xc9, 0x9e, 0x8e, 0xf9, 0x3a, 0x44, 0x39, 0x86, 0x1c, 0xda, 0x0f, 0x79, 0xbb, 0x03, 0x6f, 0x3f,
- 0xdc, 0x0b, 0xb6, 0xa1, 0x2a, 0x43, 0xf2, 0xe4, 0xa7, 0xf1, 0x46, 0x0e, 0x3b, 0x0e, 0xc7, 0x91,
- 0xc1, 0x67, 0xba, 0xb1, 0x7b, 0x67, 0x7b, 0x1b, 0x15, 0x3a, 0xb9, 0x0e, 0x75, 0xd7, 0x59, 0xd2,
- 0x2d, 0xbb, 0xe7, 0xa9, 0x95, 0xe1, 0xb7, 0xd8, 0x5c, 0x77, 0x47, 0x15, 0x3e, 0x38, 0x98, 0xbe,
- 0x10, 0xde, 0x24, 0x1a, 0x89, 0x51, 0x4d, 0xed, 0xcf, 0x17, 0xe0, 0x3c, 0xba, 0xb6, 0x6d, 0x39,
- 0xed, 0xa4, 0xb3, 0x8c, 0xd8, 0x30, 0xde, 0xd1, 0xef, 0x6f, 0x3a, 0xfa, 0x9e, 0x6e, 0xd9, 0xfa,
- 0x96, 0x4d, 0x1f, 0xb9, 0x97, 0xeb, 0x05, 0x96, 0x3d, 0x23, 0x7e, 0x4c, 0x37, 0xb3, 0xe2, 0x04,
- 0x77, 0xbc, 0x56, 0xe0, 0x59, 0x4e, 0x5b, 0x4c, 0x7a, 0x6b, 0x09, 0x2c, 0x4c, 0x61, 0x6b, 0xbf,
- 0x28, 0x01, 0x0f, 0x0b, 0x23, 0xaf, 0x42, 0xbd, 0x43, 0x8d, 0x1d, 0xdd, 0xb1, 0x7c, 0x95, 0xc6,
- 0xf5, 0x22, 0x7b, 0xae, 0x35, 0x55, 0xf8, 0x80, 0xbd, 0x8a, 0xf9, 0xd6, 0x2a, 0x3f, 0x79, 0x11,
- 0xf1, 0x12, 0x03, 0x46, 0xda, 0xbe, 0xaf, 0x77, 0xad, 0xdc, 0x51, 0x09, 0x22, 0x6d, 0xa6, 0x98,
- 0x8e, 0xc4, 0x35, 0x4a, 0x68, 0x62, 0x40, 0xa5, 0x6b, 0xeb, 0x96, 0x93, 0xfb, 0x47, 0x4a, 0xec,
- 0x09, 0xd6, 0x19, 0x92, 0x30, 0xae, 0xf1, 0x4b, 0x14, 0xd8, 0xa4, 0x07, 0x0d, 0xdf, 0xf0, 0xf4,
- 0x8e, 0xbf, 0xa3, 0xcf, 0xbd, 0xfc, 0x4a, 0x6e, 0x75, 0x35, 0x12, 0x25, 0x56, 0xcf, 0x05, 0x9c,
- 0x5f, 0x6b, 0xdd, 0x98, 0x9f, 0x7b, 0xf9, 0x15, 0x8c, 0xcb, 0x89, 0x8b, 0x7d, 0xf9, 0xc5, 0x39,
- 0x39, 0x83, 0x9c, 0xb8, 0xd8, 0x97, 0x5f, 0x9c, 0xc3, 0xb8, 0x1c, 0xed, 0x7f, 0x15, 0xa0, 0x1e,
- 0xf2, 0x92, 0x4d, 0x00, 0x36, 0x97, 0xc9, 0x44, 0x97, 0xc7, 0xfa, 0xe9, 0x04, 0xb7, 0x4f, 0x6c,
- 0x86, 0x95, 0x31, 0x06, 0x94, 0x91, 0x09, 0xb4, 0x78, 0xd2, 0x99, 0x40, 0x67, 0xa1, 0xbe, 0xa3,
- 0x3b, 0xa6, 0xbf, 0xa3, 0xef, 0x8a, 0x29, 0x3d, 0x96, 0x1b, 0xf7, 0x86, 0x22, 0x60, 0xc4, 0xa3,
- 0xfd, 0xe3, 0x11, 0x10, 0xa1, 0x04, 0x6c, 0xd2, 0x31, 0x2d, 0x5f, 0xc4, 0xb2, 0x17, 0x78, 0xcd,
- 0x70, 0xd2, 0x59, 0x94, 0xe5, 0x18, 0x72, 0x90, 0x8b, 0x50, 0xea, 0x58, 0x8e, 0xf4, 0x3d, 0x71,
- 0xd3, 0xe3, 0x9a, 0xe5, 0x20, 0x2b, 0xe3, 0x24, 0xfd, 0xbe, 0x0c, 0x43, 0x14, 0x24, 0xfd, 0x3e,
- 0xb2, 0x32, 0xf2, 0x79, 0x98, 0xb0, 0x5d, 0x77, 0x97, 0x4d, 0x1f, 0x2a, 0x5a, 0x51, 0xf8, 0x81,
- 0xb9, 0x31, 0x60, 0x35, 0x49, 0xc2, 0x34, 0x2f, 0xd9, 0x84, 0xa7, 0xdf, 0xa7, 0x9e, 0x2b, 0xe7,
- 0xcb, 0x96, 0x4d, 0x69, 0x57, 0xc1, 0x08, 0x65, 0x8e, 0x07, 0x3d, 0xfe, 0x71, 0x36, 0x0b, 0x0e,
- 0xaa, 0xcb, 0xc3, 0xa7, 0x75, 0xaf, 0x4d, 0x83, 0x75, 0xcf, 0x35, 0xa8, 0xef, 0x5b, 0x4e, 0x5b,
- 0xc1, 0x8e, 0x44, 0xb0, 0x1b, 0xd9, 0x2c, 0x38, 0xa8, 0x2e, 0x79, 0x0b, 0xa6, 0x04, 0x49, 0xa8,
- 0x2d, 0xf3, 0x62, 0x9a, 0xb1, 0x6c, 0xf5, 0xff, 0xc1, 0x31, 0xe1, 0xe1, 0xd9, 0x18, 0xc0, 0x83,
- 0x03, 0x6b, 0x93, 0x9b, 0x30, 0xa9, 0xfc, 0x7b, 0xeb, 0xd4, 0x6b, 0x85, 0xe1, 0x25, 0x63, 0xcd,
- 0x2b, 0x6c, 0xe7, 0xbd, 0x48, 0xbb, 0x1e, 0x35, 0xe2, 0x7e, 0x52, 0xc5, 0x85, 0x7d, 0xf5, 0x08,
- 0xc2, 0x05, 0x1e, 0x43, 0xb2, 0xd9, 0x5d, 0x70, 0x5d, 0xdb, 0x74, 0xef, 0x39, 0xea, 0xd9, 0x85,
- 0x8a, 0xc9, 0x5d, 0x7a, 0xad, 0x4c, 0x0e, 0x1c, 0x50, 0x93, 0x3d, 0x39, 0xa7, 0x2c, 0xba, 0xf7,
- 0x9c, 0x34, 0x2a, 0x44, 0x4f, 0xde, 0x1a, 0xc0, 0x83, 0x03, 0x6b, 0x93, 0x25, 0x20, 0xe9, 0x27,
- 0xd8, 0xec, 0x4a, 0xa7, 0xf3, 0x05, 0x91, 0xb3, 0x26, 0x4d, 0xc5, 0x8c, 0x1a, 0x64, 0x15, 0xce,
- 0xa5, 0x4b, 0x99, 0x38, 0xe9, 0x7f, 0xe6, 0xd9, 0x6a, 0x31, 0x83, 0x8e, 0x99, 0xb5, 0xb4, 0x7f,
- 0x52, 0x84, 0xb1, 0x44, 0x92, 0x83, 0x27, 0xee, 0x30, 0x39, 0xdb, 0x0b, 0x74, 0xfc, 0xf6, 0xca,
- 0xe2, 0x0d, 0xaa, 0x9b, 0xd4, 0xbb, 0x45, 0x55, 0x42, 0x0a, 0xb1, 0x2c, 0x26, 0x28, 0x98, 0xe2,
- 0x24, 0xdb, 0x50, 0x11, 0x96, 0xed, 0xbc, 0xbf, 0x2f, 0x51, 0x7d, 0xc4, 0xcd, 0xdb, 0xf2, 0x9f,
- 0x3f, 0xae, 0x47, 0x51, 0xc0, 0x6b, 0x01, 0x8c, 0xc6, 0x39, 0xd8, 0x44, 0x12, 0xa9, 0xbd, 0xd5,
- 0x84, 0xca, 0xbb, 0x02, 0xa5, 0x20, 0x18, 0xf6, 0x98, 0xba, 0xf0, 0x94, 0x6c, 0xac, 0x22, 0xc3,
- 0xd0, 0xb6, 0xd9, 0xbb, 0xf3, 0x7d, 0xcb, 0x75, 0x64, 0xce, 0xf2, 0x4d, 0xa8, 0x06, 0xd2, 0x58,
- 0x38, 0xdc, 0x31, 0x7b, 0xae, 0x2b, 0x29, 0x43, 0xa1, 0xc2, 0xd2, 0xfe, 0x7d, 0x11, 0xea, 0xe1,
- 0xc6, 0xfe, 0x08, 0xb9, 0xc0, 0x5d, 0xa8, 0x87, 0x31, 0x70, 0xb9, 0xff, 0xcd, 0x18, 0x85, 0x66,
- 0xf1, 0xbd, 0x68, 0x78, 0x8b, 0x91, 0x8c, 0x78, 0x7c, 0x5d, 0x29, 0x47, 0x7c, 0x5d, 0x17, 0xaa,
- 0x81, 0x67, 0xb5, 0xdb, 0x72, 0x97, 0x90, 0x27, 0xc0, 0x2e, 0xec, 0xae, 0x0d, 0x01, 0x28, 0x7b,
- 0x56, 0xdc, 0xa0, 0x12, 0xa3, 0xbd, 0x0b, 0x93, 0x69, 0x4e, 0xae, 0x42, 0x1b, 0x3b, 0xd4, 0xec,
- 0xd9, 0xaa, 0x8f, 0x23, 0x15, 0x5a, 0x96, 0x63, 0xc8, 0xc1, 0xb6, 0xe1, 0xec, 0x35, 0xbd, 0xef,
- 0x3a, 0x4a, 0x8d, 0xe5, 0xbb, 0x91, 0x0d, 0x59, 0x86, 0x21, 0x55, 0xfb, 0x2f, 0x25, 0xb8, 0x18,
- 0x99, 0x67, 0xd6, 0x74, 0x47, 0x6f, 0x1f, 0xe1, 0x87, 0x7c, 0x9f, 0x1d, 0x5c, 0x3a, 0xee, 0x0f,
- 0x1d, 0x4a, 0x4f, 0xc0, 0x0f, 0x1d, 0xfe, 0x4f, 0x11, 0x78, 0xbc, 0x2e, 0xf9, 0x1a, 0x8c, 0xea,
- 0xb1, 0x7f, 0xb1, 0xca, 0xd7, 0x79, 0x3d, 0xf7, 0xeb, 0xe4, 0x61, 0xc1, 0x61, 0xc8, 0x56, 0xbc,
- 0x14, 0x13, 0x02, 0x89, 0x0b, 0xb5, 0x6d, 0xdd, 0xb6, 0x99, 0x2e, 0x94, 0xdb, 0xdd, 0x94, 0x10,
- 0xce, 0x87, 0xf9, 0x92, 0x84, 0xc6, 0x50, 0x08, 0xf9, 0xa0, 0x00, 0x63, 0x5e, 0x7c, 0xbb, 0x26,
- 0x5f, 0x48, 0x9e, 0x60, 0x84, 0x18, 0x5a, 0x3c, 0x40, 0x2c, 0xbe, 0x27, 0x4c, 0xca, 0xd4, 0xfe,
- 0x73, 0x01, 0xc6, 0x5a, 0xb6, 0x65, 0x5a, 0x4e, 0xfb, 0x14, 0xff, 0x27, 0x71, 0x07, 0x2a, 0xbe,
- 0x6d, 0x99, 0x74, 0xc8, 0xd5, 0x44, 0xac, 0x63, 0x0c, 0x00, 0x05, 0x4e, 0xf2, 0x07, 0x15, 0xa5,
- 0x23, 0xfc, 0xa0, 0xe2, 0x57, 0x23, 0x20, 0x23, 0xcf, 0x49, 0x0f, 0xea, 0x6d, 0x95, 0xf7, 0x5e,
- 0x3e, 0xe3, 0x8d, 0x1c, 0x39, 0x13, 0x13, 0x19, 0xf4, 0xc5, 0xdc, 0x1f, 0x16, 0x62, 0x24, 0x89,
- 0xd0, 0xe4, 0x4f, 0x80, 0x17, 0x73, 0xfe, 0x04, 0x58, 0x88, 0xeb, 0xff, 0x0d, 0xb0, 0x0e, 0xe5,
- 0x9d, 0x20, 0xe8, 0xca, 0xc1, 0x34, 0xfc, 0xd1, 0x82, 0x28, 0x6d, 0x8f, 0xd0, 0x89, 0xd8, 0x3d,
- 0x72, 0x68, 0x26, 0xc2, 0xd1, 0xc3, 0x5f, 0xad, 0x2d, 0xe4, 0x0a, 0x7c, 0x88, 0x8b, 0x60, 0xf7,
- 0xc8, 0xa1, 0xc9, 0x57, 0xa1, 0x11, 0x78, 0xba, 0xe3, 0x6f, 0xbb, 0x5e, 0x87, 0x7a, 0x72, 0x8f,
- 0xba, 0x94, 0xe3, 0x3f, 0xb8, 0x1b, 0x11, 0x9a, 0xf0, 0xa8, 0x26, 0x8a, 0x30, 0x2e, 0x8d, 0xec,
- 0x42, 0xad, 0x67, 0x8a, 0x86, 0x49, 0x33, 0xd8, 0x7c, 0x9e, 0x5f, 0x1b, 0xc7, 0xc2, 0x1a, 0xd4,
- 0x1d, 0x86, 0x02, 0x92, 0x7f, 0x15, 0xac, 0x9e, 0xd4, 0x5f, 0x05, 0xe3, 0xa3, 0x31, 0x2b, 0xa7,
- 0x08, 0xe9, 0x48, 0xbd, 0xd6, 0x69, 0xcb, 0xa8, 0xac, 0xa5, 0xdc, 0x2a, 0xa7, 0x10, 0xd9, 0x08,
- 0x75, 0x63, 0xa7, 0x8d, 0x4a, 0x86, 0xd6, 0x01, 0xe9, 0xed, 0x20, 0x46, 0xe2, 0xdf, 0x3b, 0xe2,
- 0xa0, 0xdb, 0xec, 0xd1, 0xe6, 0x83, 0xf0, 0x27, 0x30, 0xb1, 0xdc, 0xdf, 0x99, 0x3f, 0xd9, 0xd1,
- 0xfe, 0x43, 0x11, 0x4a, 0x1b, 0xab, 0x2d, 0x91, 0xcf, 0x93, 0xff, 0xd8, 0x8a, 0xb6, 0x76, 0xad,
- 0xee, 0x5d, 0xea, 0x59, 0xdb, 0xfb, 0x72, 0xeb, 0x1d, 0xcb, 0xe7, 0x99, 0xe6, 0xc0, 0x8c, 0x5a,
- 0xe4, 0x6d, 0x18, 0x35, 0xf4, 0x05, 0xea, 0x05, 0xc3, 0x18, 0x16, 0xf8, 0x89, 0xde, 0x85, 0xf9,
- 0xa8, 0x3a, 0x26, 0xc0, 0xc8, 0x26, 0x80, 0x11, 0x41, 0x97, 0x8e, 0x6d, 0x0e, 0x89, 0x01, 0xc7,
- 0x80, 0x08, 0x42, 0x7d, 0x97, 0xb1, 0x72, 0xd4, 0xf2, 0x71, 0x50, 0xf9, 0xc8, 0xb9, 0xa5, 0xea,
- 0x62, 0x04, 0xa3, 0x39, 0x30, 0x96, 0xf8, 0x21, 0x0f, 0xf9, 0x1c, 0xd4, 0xdc, 0x6e, 0x6c, 0x3a,
- 0xad, 0xf3, 0xf8, 0xcf, 0xda, 0x1d, 0x59, 0xf6, 0xe0, 0x60, 0x7a, 0x6c, 0xd5, 0x6d, 0x5b, 0x86,
- 0x2a, 0xc0, 0x90, 0x9d, 0x68, 0x30, 0xc2, 0x8f, 0xe1, 0xa9, 0xdf, 0xf1, 0xf0, 0xb5, 0x83, 0xff,
- 0x31, 0xc3, 0x47, 0x49, 0xd1, 0xbe, 0x5e, 0x86, 0xc8, 0x47, 0x48, 0x7c, 0x18, 0x11, 0xc7, 0x0c,
- 0xe4, 0xcc, 0x7d, 0xaa, 0x27, 0x1a, 0xa4, 0x28, 0xd2, 0x86, 0xd2, 0xbb, 0xee, 0x56, 0xee, 0x89,
- 0x3b, 0x76, 0xfe, 0x5e, 0xd8, 0xca, 0x62, 0x05, 0xc8, 0x24, 0x90, 0xbf, 0x51, 0x80, 0x33, 0x7e,
- 0x5a, 0xf5, 0x95, 0xc3, 0x01, 0xf3, 0xeb, 0xf8, 0x69, 0x65, 0x5a, 0x06, 0xea, 0x0e, 0x22, 0x63,
- 0x7f, 0x5b, 0x58, 0xff, 0x0b, 0xe7, 0x9d, 0x1c, 0x4e, 0xcb, 0x39, 0x7f, 0x22, 0x99, 0xec, 0xff,
- 0x64, 0x19, 0x4a, 0x51, 0xda, 0x37, 0x8b, 0xd0, 0x88, 0xcd, 0xd6, 0xb9, 0xff, 0xf2, 0x74, 0x3f,
- 0xf5, 0x97, 0xa7, 0xf5, 0xe1, 0x7d, 0xd9, 0x51, 0xab, 0x4e, 0xfb, 0x47, 0x4f, 0xff, 0xbc, 0x08,
- 0xa5, 0xcd, 0xc5, 0xa5, 0xe4, 0xa6, 0xb5, 0xf0, 0x18, 0x36, 0xad, 0x3b, 0x50, 0xdd, 0xea, 0x59,
- 0x76, 0x60, 0x39, 0xb9, 0x33, 0x84, 0xa8, 0x9f, 0x62, 0x49, 0x5f, 0x87, 0x40, 0x45, 0x05, 0x4f,
- 0xda, 0x50, 0x6d, 0x8b, 0x14, 0x8d, 0xb9, 0x23, 0xfc, 0x64, 0xaa, 0x47, 0x21, 0x48, 0xde, 0xa0,
- 0x42, 0xd7, 0xf6, 0x61, 0x64, 0x73, 0x51, 0xaa, 0xfd, 0x8f, 0xb7, 0x37, 0xb5, 0xaf, 0x42, 0xa8,
- 0x05, 0x3c, 0x7e, 0xe1, 0xff, 0xad, 0x00, 0x49, 0xc5, 0xe7, 0xf1, 0x8f, 0xa6, 0xdd, 0xf4, 0x68,
- 0x5a, 0x3c, 0x89, 0x8f, 0x2f, 0x7b, 0x40, 0x69, 0xff, 0xb6, 0x00, 0xa9, 0xb3, 0x61, 0xe4, 0x15,
- 0x99, 0xed, 0x2b, 0x19, 0x4a, 0xa5, 0xb2, 0x7d, 0x91, 0x24, 0x77, 0x2c, 0xeb, 0xd7, 0x87, 0x6c,
- 0xbb, 0x16, 0x77, 0xa0, 0xc9, 0xe6, 0xdf, 0x1e, 0x7e, 0xbb, 0x96, 0xe5, 0x8e, 0x93, 0xe1, 0x7e,
- 0x71, 0x12, 0x26, 0xe5, 0x6a, 0xff, 0xa8, 0x08, 0x23, 0x8f, 0xed, 0xa8, 0x3a, 0x4d, 0x44, 0x60,
- 0x2e, 0xe4, 0x9c, 0xed, 0x07, 0xc6, 0x5f, 0x76, 0x52, 0xf1, 0x97, 0x79, 0xff, 0x4d, 0xfc, 0x88,
- 0xe8, 0xcb, 0x7f, 0x5d, 0x00, 0xb9, 0xd6, 0xac, 0x38, 0x7e, 0xa0, 0x3b, 0x06, 0x25, 0x46, 0xb8,
- 0xb0, 0xe5, 0x0d, 0xf3, 0x91, 0xa1, 0x70, 0x42, 0x97, 0xe1, 0xd7, 0x6a, 0x21, 0x23, 0xbf, 0x0b,
- 0xb5, 0x1d, 0xd7, 0x0f, 0xf8, 0xe2, 0x55, 0x4c, 0x9a, 0xcc, 0x6e, 0xc8, 0x72, 0x0c, 0x39, 0xd2,
- 0xee, 0xec, 0xca, 0x60, 0x77, 0xb6, 0xf6, 0xbd, 0x22, 0x8c, 0x7e, 0x5a, 0xce, 0xdb, 0x67, 0xc5,
- 0xab, 0x96, 0x72, 0xc6, 0xab, 0x96, 0x8f, 0x13, 0xaf, 0xaa, 0xfd, 0xa4, 0x00, 0xf0, 0xd8, 0x0e,
- 0xfb, 0x9b, 0xc9, 0x50, 0xd2, 0xdc, 0xe3, 0x2a, 0x3b, 0x90, 0xf4, 0x1f, 0x54, 0xd4, 0x23, 0xf1,
- 0x30, 0xd2, 0x0f, 0x0b, 0x30, 0xae, 0x27, 0x42, 0x33, 0x73, 0xeb, 0xcb, 0xa9, 0x48, 0xcf, 0x30,
- 0xb2, 0x28, 0x59, 0x8e, 0x29, 0xb1, 0xe4, 0xb5, 0x28, 0xd1, 0xf4, 0xed, 0x68, 0xd8, 0xf7, 0x65,
- 0x88, 0xe6, 0xba, 0x5b, 0x82, 0xf3, 0x11, 0xa1, 0xb0, 0xa5, 0x13, 0x09, 0x85, 0x8d, 0x1f, 0xf2,
- 0x2b, 0x3f, 0xf4, 0x90, 0xdf, 0x1e, 0xd4, 0xb7, 0x3d, 0xb7, 0xc3, 0xa3, 0x4d, 0xe5, 0x5f, 0x8d,
- 0xaf, 0xe7, 0x58, 0x28, 0xa3, 0xff, 0xf9, 0x47, 0x86, 0xab, 0x25, 0x85, 0x8f, 0x91, 0x28, 0x6e,
- 0xeb, 0x77, 0x85, 0xd4, 0x91, 0x93, 0x94, 0x1a, 0xce, 0x25, 0x1b, 0x02, 0x1d, 0x95, 0x98, 0x64,
- 0x84, 0x69, 0xf5, 0xf1, 0x44, 0x98, 0x6a, 0x7f, 0xa9, 0xaa, 0x26, 0xb0, 0x27, 0x2e, 0xa7, 0xe9,
- 0x67, 0x47, 0xb3, 0xdb, 0xb4, 0xef, 0xdc, 0x74, 0xed, 0x31, 0x9e, 0x9b, 0xae, 0x9f, 0xcc, 0xb9,
- 0x69, 0xc8, 0x77, 0x6e, 0xba, 0x71, 0x42, 0xe7, 0xa6, 0x47, 0x4f, 0xea, 0xdc, 0xf4, 0xd8, 0x50,
- 0xe7, 0xa6, 0xc7, 0x8f, 0x74, 0x6e, 0xfa, 0xa0, 0x04, 0xa9, 0xcd, 0xf8, 0x67, 0x8e, 0xb7, 0xff,
- 0xa7, 0x1c, 0x6f, 0x1f, 0x15, 0x21, 0x9a, 0x88, 0x8f, 0x19, 0x98, 0xf4, 0x16, 0xd4, 0x3a, 0xfa,
- 0xfd, 0x45, 0x6a, 0xeb, 0xfb, 0x79, 0x7e, 0x05, 0xbc, 0x26, 0x31, 0x30, 0x44, 0x23, 0x3e, 0x80,
- 0x15, 0xa6, 0xe3, 0xcf, 0xed, 0xc2, 0x88, 0x32, 0xfb, 0x0b, 0x23, 0x69, 0x74, 0x8f, 0x31, 0x31,
- 0xda, 0xbf, 0x2a, 0x82, 0xfc, 0x6f, 0x03, 0xa1, 0x50, 0xd9, 0xb6, 0xee, 0x53, 0x33, 0x77, 0xb8,
- 0x73, 0xec, 0x07, 0xed, 0xc2, 0x47, 0xc3, 0x0b, 0x50, 0xa0, 0x73, 0xe3, 0xbb, 0xf0, 0xb9, 0xc9,
- 0xfe, 0xcb, 0x61, 0x7c, 0x8f, 0xfb, 0xee, 0xa4, 0xf1, 0x5d, 0x14, 0xa1, 0x92, 0x21, 0x6c, 0xfd,
- 0x3c, 0xfc, 0x22, 0xb7, 0x8b, 0x31, 0x11, 0xc6, 0xa1, 0x6c, 0xfd, 0xbe, 0x48, 0x9c, 0x20, 0x65,
- 0x34, 0xbf, 0xfc, 0xe3, 0x9f, 0x5e, 0x79, 0xea, 0x27, 0x3f, 0xbd, 0xf2, 0xd4, 0xc7, 0x3f, 0xbd,
- 0xf2, 0xd4, 0xd7, 0x0f, 0xaf, 0x14, 0x7e, 0x7c, 0x78, 0xa5, 0xf0, 0x93, 0xc3, 0x2b, 0x85, 0x8f,
- 0x0f, 0xaf, 0x14, 0xfe, 0xe3, 0xe1, 0x95, 0xc2, 0x5f, 0xfd, 0x4f, 0x57, 0x9e, 0xfa, 0xe3, 0x57,
- 0xa3, 0x26, 0xcc, 0xaa, 0x26, 0xcc, 0x2a, 0x81, 0xb3, 0xdd, 0xdd, 0xf6, 0x2c, 0x6b, 0x42, 0x54,
- 0xa2, 0x9a, 0xf0, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc4, 0xe2, 0xd0, 0x0e, 0xda, 0x9a, 0x00,
- 0x00,
+ // 8046 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5d, 0x6c, 0x24, 0x57,
+ 0x76, 0x9e, 0xfa, 0xbf, 0xfb, 0x34, 0xff, 0x74, 0x67, 0x34, 0xe2, 0xcc, 0x4a, 0xd3, 0xe3, 0x5a,
+ 0xef, 0x7a, 0x1c, 0xdb, 0x64, 0x44, 0xaf, 0xb4, 0x5a, 0xdb, 0xbb, 0x12, 0x9b, 0x1c, 0x72, 0x38,
+ 0x43, 0xce, 0x70, 0x4f, 0x93, 0x23, 0xad, 0x15, 0xaf, 0x52, 0xac, 0xba, 0x6c, 0x96, 0x58, 0x5d,
+ 0xd5, 0x5b, 0x55, 0xcd, 0x19, 0xca, 0x09, 0xd6, 0xb6, 0x12, 0x68, 0x83, 0x24, 0x48, 0xe0, 0x27,
+ 0x03, 0x81, 0x13, 0x24, 0x08, 0xe0, 0x07, 0xc3, 0x79, 0x08, 0xb2, 0x79, 0x08, 0x90, 0x1f, 0x07,
+ 0x41, 0xb2, 0xf9, 0x5f, 0x04, 0x01, 0xb2, 0x79, 0x21, 0xb2, 0x0c, 0xf2, 0x90, 0x00, 0x0e, 0x8c,
+ 0x18, 0x89, 0x9d, 0x81, 0x11, 0x07, 0xf7, 0xaf, 0xfe, 0xba, 0x7a, 0x86, 0xec, 0x6a, 0x8e, 0x46,
+ 0x89, 0xde, 0xba, 0xef, 0x39, 0xf7, 0x3b, 0xb7, 0x6e, 0xdd, 0xba, 0xf7, 0xdc, 0x73, 0xce, 0x3d,
+ 0x17, 0xd6, 0xbb, 0x56, 0x70, 0x30, 0xd8, 0x5b, 0x30, 0xdc, 0xde, 0xa2, 0x33, 0xe8, 0xe9, 0x7d,
+ 0xcf, 0xfd, 0x80, 0xff, 0xd8, 0xb7, 0xdd, 0x87, 0x8b, 0xfd, 0xc3, 0xee, 0xa2, 0xde, 0xb7, 0xfc,
+ 0xa8, 0xe4, 0xe8, 0x35, 0xdd, 0xee, 0x1f, 0xe8, 0xaf, 0x2d, 0x76, 0xa9, 0x43, 0x3d, 0x3d, 0xa0,
+ 0xe6, 0x42, 0xdf, 0x73, 0x03, 0x97, 0x7c, 0x39, 0x02, 0x5a, 0x50, 0x40, 0x0b, 0xaa, 0xda, 0x42,
+ 0xff, 0xb0, 0xbb, 0xc0, 0x80, 0xa2, 0x12, 0x05, 0x74, 0xed, 0xa7, 0x62, 0x2d, 0xe8, 0xba, 0x5d,
+ 0x77, 0x91, 0xe3, 0xed, 0x0d, 0xf6, 0xf9, 0x3f, 0xfe, 0x87, 0xff, 0x12, 0x72, 0xae, 0x69, 0x87,
+ 0x6f, 0xfa, 0x0b, 0x96, 0xcb, 0x9a, 0xb5, 0x68, 0xb8, 0x1e, 0x5d, 0x3c, 0x1a, 0x6a, 0xcb, 0xb5,
+ 0x2f, 0x45, 0x3c, 0x3d, 0xdd, 0x38, 0xb0, 0x1c, 0xea, 0x1d, 0xab, 0x67, 0x59, 0xf4, 0xa8, 0xef,
+ 0x0e, 0x3c, 0x83, 0x9e, 0xab, 0x96, 0xbf, 0xd8, 0xa3, 0x81, 0x9e, 0x25, 0x6b, 0x71, 0x54, 0x2d,
+ 0x6f, 0xe0, 0x04, 0x56, 0x6f, 0x58, 0xcc, 0x1b, 0x4f, 0xab, 0xe0, 0x1b, 0x07, 0xb4, 0xa7, 0x0f,
+ 0xd5, 0xfb, 0xe9, 0x51, 0xf5, 0x06, 0x81, 0x65, 0x2f, 0x5a, 0x4e, 0xe0, 0x07, 0x5e, 0xba, 0x92,
+ 0xf6, 0xdb, 0x00, 0x97, 0x96, 0xf7, 0xfc, 0xc0, 0xd3, 0x8d, 0x60, 0xdb, 0x35, 0x77, 0x68, 0xaf,
+ 0x6f, 0xeb, 0x01, 0x25, 0x87, 0x50, 0x67, 0x0f, 0x64, 0xea, 0x81, 0x3e, 0x5f, 0xb8, 0x51, 0xb8,
+ 0xd9, 0x5c, 0x5a, 0x5e, 0x18, 0xf3, 0x05, 0x2e, 0x6c, 0x49, 0xa0, 0xf6, 0xd4, 0xe9, 0x49, 0xab,
+ 0xae, 0xfe, 0x61, 0x28, 0x80, 0xfc, 0x5a, 0x01, 0xa6, 0x1c, 0xd7, 0xa4, 0x1d, 0x6a, 0x53, 0x23,
+ 0x70, 0xbd, 0xf9, 0xe2, 0x8d, 0xd2, 0xcd, 0xe6, 0xd2, 0x37, 0xc7, 0x96, 0x98, 0xf1, 0x44, 0x0b,
+ 0xf7, 0x62, 0x02, 0x6e, 0x39, 0x81, 0x77, 0xdc, 0xbe, 0xfc, 0xbd, 0x93, 0xd6, 0x0b, 0xa7, 0x27,
+ 0xad, 0xa9, 0x38, 0x09, 0x13, 0x2d, 0x21, 0xbb, 0xd0, 0x0c, 0x5c, 0x9b, 0x75, 0x99, 0xe5, 0x3a,
+ 0xfe, 0x7c, 0x89, 0x37, 0xec, 0xfa, 0x82, 0xe8, 0x6a, 0x26, 0x7e, 0x81, 0x8d, 0xb1, 0x85, 0xa3,
+ 0xd7, 0x16, 0x76, 0x42, 0xb6, 0xf6, 0x25, 0x09, 0xdc, 0x8c, 0xca, 0x7c, 0x8c, 0xe3, 0x10, 0x0a,
+ 0xb3, 0x3e, 0x35, 0x06, 0x9e, 0x15, 0x1c, 0xaf, 0xb8, 0x4e, 0x40, 0x1f, 0x05, 0xf3, 0x65, 0xde,
+ 0xcb, 0x5f, 0xcc, 0x82, 0xde, 0x76, 0xcd, 0x4e, 0x92, 0xbb, 0x7d, 0xe9, 0xf4, 0xa4, 0x35, 0x9b,
+ 0x2a, 0xc4, 0x34, 0x26, 0x71, 0x60, 0xce, 0xea, 0xe9, 0x5d, 0xba, 0x3d, 0xb0, 0xed, 0x0e, 0x35,
+ 0x3c, 0x1a, 0xf8, 0xf3, 0x15, 0xfe, 0x08, 0x37, 0xb3, 0xe4, 0x6c, 0xba, 0x86, 0x6e, 0xdf, 0xdf,
+ 0xfb, 0x80, 0x1a, 0x01, 0xd2, 0x7d, 0xea, 0x51, 0xc7, 0xa0, 0xed, 0x79, 0xf9, 0x30, 0x73, 0x1b,
+ 0x29, 0x24, 0x1c, 0xc2, 0x26, 0xeb, 0xf0, 0x62, 0xdf, 0xb3, 0x5c, 0xde, 0x04, 0x5b, 0xf7, 0xfd,
+ 0x7b, 0x7a, 0x8f, 0xce, 0x57, 0x6f, 0x14, 0x6e, 0x36, 0xda, 0x57, 0x25, 0xcc, 0x8b, 0xdb, 0x69,
+ 0x06, 0x1c, 0xae, 0x43, 0x6e, 0x42, 0x5d, 0x15, 0xce, 0xd7, 0x6e, 0x14, 0x6e, 0x56, 0xc4, 0xd8,
+ 0x51, 0x75, 0x31, 0xa4, 0x92, 0x35, 0xa8, 0xeb, 0xfb, 0xfb, 0x96, 0xc3, 0x38, 0xeb, 0xbc, 0x0b,
+ 0x5f, 0xc9, 0x7a, 0xb4, 0x65, 0xc9, 0x23, 0x70, 0xd4, 0x3f, 0x0c, 0xeb, 0x92, 0x3b, 0x40, 0x7c,
+ 0xea, 0x1d, 0x59, 0x06, 0x5d, 0x36, 0x0c, 0x77, 0xe0, 0x04, 0xbc, 0xed, 0x0d, 0xde, 0xf6, 0x6b,
+ 0xb2, 0xed, 0xa4, 0x33, 0xc4, 0x81, 0x19, 0xb5, 0xc8, 0xdb, 0x30, 0x27, 0xbf, 0xd5, 0xa8, 0x17,
+ 0x80, 0x23, 0x5d, 0x66, 0x1d, 0x89, 0x29, 0x1a, 0x0e, 0x71, 0x13, 0x13, 0x5e, 0xd1, 0x07, 0x81,
+ 0xdb, 0x63, 0x90, 0x49, 0xa1, 0x3b, 0xee, 0x21, 0x75, 0xe6, 0x9b, 0x37, 0x0a, 0x37, 0xeb, 0xed,
+ 0x1b, 0xa7, 0x27, 0xad, 0x57, 0x96, 0x9f, 0xc0, 0x87, 0x4f, 0x44, 0x21, 0xf7, 0xa1, 0x61, 0x3a,
+ 0xfe, 0xb6, 0x6b, 0x5b, 0xc6, 0xf1, 0xfc, 0x14, 0x6f, 0xe0, 0x6b, 0xf2, 0x51, 0x1b, 0xab, 0xf7,
+ 0x3a, 0x82, 0xf0, 0xf8, 0xa4, 0xf5, 0xca, 0xf0, 0x94, 0xba, 0x10, 0xd2, 0x31, 0xc2, 0x20, 0x5b,
+ 0x1c, 0x70, 0xc5, 0x75, 0xf6, 0xad, 0xee, 0xfc, 0x34, 0x7f, 0x1b, 0x37, 0x46, 0x0c, 0xe8, 0xd5,
+ 0x7b, 0x1d, 0xc1, 0xd7, 0x9e, 0x96, 0xe2, 0xc4, 0x5f, 0x8c, 0x10, 0x88, 0x09, 0x33, 0x6a, 0x32,
+ 0x5e, 0xb1, 0x75, 0xab, 0xe7, 0xcf, 0xcf, 0xf0, 0xc1, 0xfb, 0xa3, 0x23, 0x30, 0x31, 0xce, 0xdc,
+ 0xbe, 0x22, 0x1f, 0x65, 0x26, 0x51, 0xec, 0x63, 0x0a, 0xf3, 0xda, 0x5b, 0xf0, 0xe2, 0xd0, 0xdc,
+ 0x40, 0xe6, 0xa0, 0x74, 0x48, 0x8f, 0xf9, 0xd4, 0xd7, 0x40, 0xf6, 0x93, 0x5c, 0x86, 0xca, 0x91,
+ 0x6e, 0x0f, 0xe8, 0x7c, 0x91, 0x97, 0x89, 0x3f, 0x3f, 0x53, 0x7c, 0xb3, 0xa0, 0xfd, 0x8d, 0x12,
+ 0x4c, 0xa9, 0x19, 0xa7, 0x63, 0x39, 0x87, 0xe4, 0x1d, 0x28, 0xd9, 0x6e, 0x57, 0xce, 0x9b, 0x3f,
+ 0x37, 0xf6, 0x2c, 0xb6, 0xe9, 0x76, 0xdb, 0xb5, 0xd3, 0x93, 0x56, 0x69, 0xd3, 0xed, 0x22, 0x43,
+ 0x24, 0x06, 0x54, 0x0e, 0xf5, 0xfd, 0x43, 0x9d, 0xb7, 0xa1, 0xb9, 0xd4, 0x1e, 0x1b, 0xfa, 0x2e,
+ 0x43, 0x61, 0x6d, 0x6d, 0x37, 0x4e, 0x4f, 0x5a, 0x15, 0xfe, 0x17, 0x05, 0x36, 0x71, 0xa1, 0xb1,
+ 0x67, 0xeb, 0xc6, 0xe1, 0x81, 0x6b, 0xd3, 0xf9, 0x52, 0x4e, 0x41, 0x6d, 0x85, 0x24, 0x5e, 0x73,
+ 0xf8, 0x17, 0x23, 0x19, 0xc4, 0x80, 0xea, 0xc0, 0xf4, 0x2d, 0xe7, 0x50, 0xce, 0x81, 0x6f, 0x8d,
+ 0x2d, 0x6d, 0x77, 0x95, 0x3f, 0x13, 0x9c, 0x9e, 0xb4, 0xaa, 0xe2, 0x37, 0x4a, 0x68, 0xed, 0x0f,
+ 0xa6, 0x60, 0x46, 0xbd, 0xa4, 0x07, 0xd4, 0x0b, 0xe8, 0x23, 0x72, 0x03, 0xca, 0x0e, 0xfb, 0x34,
+ 0xf9, 0x4b, 0x6e, 0x4f, 0xc9, 0xe1, 0x52, 0xe6, 0x9f, 0x24, 0xa7, 0xb0, 0x96, 0x89, 0xa1, 0x22,
+ 0x3b, 0x7c, 0xfc, 0x96, 0x75, 0x38, 0x8c, 0x68, 0x99, 0xf8, 0x8d, 0x12, 0x9a, 0xbc, 0x07, 0x65,
+ 0xfe, 0xf0, 0xa2, 0xab, 0xbf, 0x3a, 0xbe, 0x08, 0xf6, 0xe8, 0x75, 0xf6, 0x04, 0xfc, 0xc1, 0x39,
+ 0x28, 0x1b, 0x8a, 0x03, 0x73, 0x5f, 0x76, 0xec, 0xcf, 0xe5, 0xe8, 0xd8, 0x35, 0x31, 0x14, 0x77,
+ 0x57, 0xd7, 0x90, 0x21, 0x92, 0xbf, 0x54, 0x80, 0x17, 0x0d, 0xd7, 0x09, 0x74, 0xa6, 0x67, 0xa8,
+ 0x45, 0x76, 0xbe, 0xc2, 0xe5, 0xdc, 0x19, 0x5b, 0xce, 0x4a, 0x1a, 0xb1, 0xfd, 0x12, 0x5b, 0x33,
+ 0x86, 0x8a, 0x71, 0x58, 0x36, 0xf9, 0x2b, 0x05, 0x78, 0x89, 0xcd, 0xe5, 0x43, 0xcc, 0x7c, 0x05,
+ 0x9a, 0x6c, 0xab, 0xae, 0x9e, 0x9e, 0xb4, 0x5e, 0xda, 0xc8, 0x12, 0x86, 0xd9, 0x6d, 0x60, 0xad,
+ 0xbb, 0xa4, 0x0f, 0xab, 0x25, 0x7c, 0x75, 0x6b, 0x2e, 0x6d, 0x4e, 0x52, 0xd5, 0x69, 0x7f, 0x4e,
+ 0x0e, 0xe5, 0x2c, 0xcd, 0x0e, 0xb3, 0x5a, 0x41, 0x6e, 0x41, 0xed, 0xc8, 0xb5, 0x07, 0x3d, 0xea,
+ 0xcf, 0xd7, 0xf9, 0x14, 0x7b, 0x2d, 0x6b, 0x8a, 0x7d, 0xc0, 0x59, 0xda, 0xb3, 0x12, 0xbe, 0x26,
+ 0xfe, 0xfb, 0xa8, 0xea, 0x12, 0x0b, 0xaa, 0xb6, 0xd5, 0xb3, 0x02, 0x9f, 0x2f, 0x9c, 0xcd, 0xa5,
+ 0x5b, 0x63, 0x3f, 0x96, 0xf8, 0x44, 0x37, 0x39, 0x98, 0xf8, 0x6a, 0xc4, 0x6f, 0x94, 0x02, 0xd8,
+ 0x54, 0xe8, 0x1b, 0xba, 0x2d, 0x16, 0xd6, 0xe6, 0xd2, 0xd7, 0xc6, 0xff, 0x6c, 0x18, 0x4a, 0x7b,
+ 0x5a, 0x3e, 0x53, 0x85, 0xff, 0x45, 0x81, 0x4d, 0x7e, 0x01, 0x66, 0x12, 0x6f, 0xd3, 0x9f, 0x6f,
+ 0xf2, 0xde, 0x79, 0x35, 0xab, 0x77, 0x42, 0xae, 0x68, 0xe5, 0x49, 0x8c, 0x10, 0x1f, 0x53, 0x60,
+ 0xe4, 0x2e, 0xd4, 0x7d, 0xcb, 0xa4, 0x86, 0xee, 0xf9, 0xf3, 0x53, 0x67, 0x01, 0x9e, 0x93, 0xc0,
+ 0xf5, 0x8e, 0xac, 0x86, 0x21, 0x00, 0x59, 0x00, 0xe8, 0xeb, 0x5e, 0x60, 0x09, 0x45, 0x75, 0x9a,
+ 0x2b, 0x4d, 0x33, 0xa7, 0x27, 0x2d, 0xd8, 0x0e, 0x4b, 0x31, 0xc6, 0xc1, 0xf8, 0x59, 0xdd, 0x0d,
+ 0xa7, 0x3f, 0x08, 0xc4, 0xc2, 0xda, 0x10, 0xfc, 0x9d, 0xb0, 0x14, 0x63, 0x1c, 0xe4, 0xb7, 0x0a,
+ 0xf0, 0xb9, 0xe8, 0xef, 0xf0, 0x47, 0x36, 0x3b, 0xf1, 0x8f, 0xac, 0x75, 0x7a, 0xd2, 0xfa, 0x5c,
+ 0x67, 0xb4, 0x48, 0x7c, 0x52, 0x7b, 0xc8, 0xc7, 0x05, 0x98, 0x19, 0xf4, 0x4d, 0x3d, 0xa0, 0x9d,
+ 0x80, 0xed, 0x78, 0xba, 0xc7, 0xf3, 0x73, 0xbc, 0x89, 0xeb, 0xe3, 0xcf, 0x82, 0x09, 0xb8, 0xe8,
+ 0x35, 0x27, 0xcb, 0x31, 0x25, 0x56, 0x7b, 0x07, 0xa6, 0x97, 0x07, 0xc1, 0x81, 0xeb, 0x59, 0x1f,
+ 0x72, 0xf5, 0x9f, 0xac, 0x41, 0x25, 0xe0, 0x6a, 0x9c, 0xd0, 0x10, 0xbe, 0x90, 0xf5, 0xd2, 0x85,
+ 0x4a, 0x7d, 0x97, 0x1e, 0x2b, 0xbd, 0x44, 0xac, 0xd4, 0x42, 0xad, 0x13, 0xd5, 0xb5, 0x3f, 0x53,
+ 0x80, 0x5a, 0x5b, 0x37, 0x0e, 0xdd, 0xfd, 0x7d, 0xf2, 0x2e, 0xd4, 0x2d, 0x27, 0xa0, 0xde, 0x91,
+ 0x6e, 0x4b, 0xd8, 0x85, 0x18, 0x6c, 0xb8, 0x21, 0x8c, 0x1e, 0x8f, 0xed, 0xbe, 0x98, 0xa0, 0xd5,
+ 0x81, 0xdc, 0xb5, 0x70, 0xcd, 0x78, 0x43, 0x62, 0x60, 0x88, 0x46, 0x5a, 0x50, 0xf1, 0x03, 0xda,
+ 0xf7, 0xf9, 0x1a, 0x38, 0x2d, 0x9a, 0xd1, 0x61, 0x05, 0x28, 0xca, 0xb5, 0xbf, 0x5e, 0x80, 0x46,
+ 0x5b, 0xf7, 0x2d, 0x83, 0x3d, 0x25, 0x59, 0x81, 0xf2, 0xc0, 0xa7, 0xde, 0xf9, 0x9e, 0x8d, 0x2f,
+ 0x5b, 0xbb, 0x3e, 0xf5, 0x90, 0x57, 0x26, 0xf7, 0xa1, 0xde, 0xd7, 0x7d, 0xff, 0xa1, 0xeb, 0x99,
+ 0x72, 0xe9, 0x3d, 0x23, 0x90, 0xd8, 0x26, 0xc8, 0xaa, 0x18, 0x82, 0x68, 0x4d, 0x88, 0x74, 0x0f,
+ 0xed, 0xf7, 0x0a, 0x70, 0xa9, 0x3d, 0xd8, 0xdf, 0xa7, 0x9e, 0xd4, 0x8a, 0xa5, 0xbe, 0x49, 0xa1,
+ 0xe2, 0x51, 0xd3, 0xf2, 0x65, 0xdb, 0x57, 0xc7, 0x1e, 0x28, 0xc8, 0x50, 0xa4, 0x7a, 0xcb, 0xfb,
+ 0x8b, 0x17, 0xa0, 0x40, 0x27, 0x03, 0x68, 0x7c, 0x40, 0xd9, 0x6e, 0x9c, 0xea, 0x3d, 0xf9, 0x74,
+ 0xb7, 0xc7, 0x16, 0x75, 0x87, 0x06, 0x1d, 0x8e, 0x14, 0xd7, 0xa6, 0xc3, 0x42, 0x8c, 0x24, 0x69,
+ 0xbf, 0x5d, 0x81, 0xa9, 0x15, 0xb7, 0xb7, 0x67, 0x39, 0xd4, 0xbc, 0x65, 0x76, 0x29, 0x79, 0x1f,
+ 0xca, 0xd4, 0xec, 0x52, 0xf9, 0xb4, 0xe3, 0x2b, 0x1e, 0x0c, 0x2c, 0x52, 0x9f, 0xd8, 0x3f, 0xe4,
+ 0xc0, 0x64, 0x13, 0x66, 0xf6, 0x3d, 0xb7, 0x27, 0xe6, 0xf2, 0x9d, 0xe3, 0xbe, 0xd4, 0x9d, 0xdb,
+ 0x3f, 0xaa, 0x3e, 0x9c, 0xb5, 0x04, 0xf5, 0xf1, 0x49, 0x0b, 0xa2, 0x7f, 0x98, 0xaa, 0x4b, 0xde,
+ 0x85, 0xf9, 0xa8, 0x24, 0x9c, 0xd4, 0x56, 0xd8, 0x76, 0x86, 0xeb, 0x4e, 0x95, 0xf6, 0x2b, 0xa7,
+ 0x27, 0xad, 0xf9, 0xb5, 0x11, 0x3c, 0x38, 0xb2, 0x36, 0x9b, 0x2a, 0xe6, 0x22, 0xa2, 0x58, 0x68,
+ 0xa4, 0xca, 0x34, 0xa1, 0x15, 0x8c, 0xef, 0xfb, 0xd6, 0x52, 0x22, 0x70, 0x48, 0x28, 0x59, 0x83,
+ 0xa9, 0xc0, 0x8d, 0xf5, 0x57, 0x85, 0xf7, 0x97, 0xa6, 0x0c, 0x15, 0x3b, 0xee, 0xc8, 0xde, 0x4a,
+ 0xd4, 0x23, 0x08, 0x57, 0xd4, 0xff, 0x54, 0x4f, 0x55, 0x79, 0x4f, 0x5d, 0x3b, 0x3d, 0x69, 0x5d,
+ 0xd9, 0xc9, 0xe4, 0xc0, 0x11, 0x35, 0xc9, 0x2f, 0x17, 0x60, 0x46, 0x91, 0x64, 0x1f, 0xd5, 0x26,
+ 0xd9, 0x47, 0x84, 0x8d, 0x88, 0x9d, 0x84, 0x00, 0x4c, 0x09, 0xd4, 0x7e, 0xa7, 0x0a, 0x8d, 0x70,
+ 0xaa, 0x27, 0x9f, 0x87, 0x0a, 0x37, 0x41, 0x48, 0x0d, 0x3e, 0x5c, 0xc3, 0xb9, 0xa5, 0x02, 0x05,
+ 0x8d, 0x7c, 0x01, 0x6a, 0x86, 0xdb, 0xeb, 0xe9, 0x8e, 0xc9, 0xcd, 0x4a, 0x8d, 0x76, 0x93, 0xa9,
+ 0x2e, 0x2b, 0xa2, 0x08, 0x15, 0x8d, 0xbc, 0x02, 0x65, 0xdd, 0xeb, 0x0a, 0x0b, 0x4f, 0x43, 0xcc,
+ 0x47, 0xcb, 0x5e, 0xd7, 0x47, 0x5e, 0x4a, 0xbe, 0x02, 0x25, 0xea, 0x1c, 0xcd, 0x97, 0x47, 0xeb,
+ 0x46, 0xb7, 0x9c, 0xa3, 0x07, 0xba, 0xd7, 0x6e, 0xca, 0x36, 0x94, 0x6e, 0x39, 0x47, 0xc8, 0xea,
+ 0x90, 0x4d, 0xa8, 0x51, 0xe7, 0x88, 0xbd, 0x7b, 0x69, 0x7a, 0xf9, 0x91, 0x11, 0xd5, 0x19, 0x8b,
+ 0xdc, 0x26, 0x84, 0x1a, 0x96, 0x2c, 0x46, 0x05, 0x41, 0xbe, 0x01, 0x53, 0x42, 0xd9, 0xda, 0x62,
+ 0xef, 0xc4, 0x9f, 0xaf, 0x72, 0xc8, 0xd6, 0x68, 0x6d, 0x8d, 0xf3, 0x45, 0xa6, 0xae, 0x58, 0xa1,
+ 0x8f, 0x09, 0x28, 0xf2, 0x0d, 0x68, 0xa8, 0x9d, 0xb1, 0x7a, 0xb3, 0x99, 0x56, 0x22, 0xb5, 0x9d,
+ 0x46, 0xfa, 0xad, 0x81, 0xe5, 0xd1, 0x1e, 0x75, 0x02, 0xbf, 0xfd, 0xa2, 0xb2, 0x1b, 0x28, 0xaa,
+ 0x8f, 0x11, 0x1a, 0xd9, 0x1b, 0x36, 0x77, 0x09, 0x5b, 0xcd, 0xe7, 0x47, 0xcc, 0xea, 0x63, 0xd8,
+ 0xba, 0xbe, 0x09, 0xb3, 0xa1, 0x3d, 0x4a, 0x9a, 0x34, 0x84, 0xf5, 0xe6, 0x4b, 0xac, 0xfa, 0x46,
+ 0x92, 0xf4, 0xf8, 0xa4, 0xf5, 0x6a, 0x86, 0x51, 0x23, 0x62, 0xc0, 0x34, 0x18, 0xf9, 0x10, 0x66,
+ 0x3c, 0xaa, 0x9b, 0x96, 0x43, 0x7d, 0x7f, 0xdb, 0x73, 0xf7, 0xf2, 0x6b, 0x9e, 0x1c, 0x45, 0x0c,
+ 0x7b, 0x4c, 0x20, 0x63, 0x4a, 0x12, 0x79, 0x08, 0xd3, 0xb6, 0x75, 0x44, 0x23, 0xd1, 0xcd, 0x89,
+ 0x88, 0x7e, 0xf1, 0xf4, 0xa4, 0x35, 0xbd, 0x19, 0x07, 0xc6, 0xa4, 0x1c, 0xed, 0xef, 0x54, 0x60,
+ 0x78, 0xf3, 0x95, 0x1c, 0x29, 0x85, 0x49, 0x8f, 0x94, 0xf4, 0x5b, 0x14, 0x6b, 0xc6, 0x9b, 0xb2,
+ 0xda, 0x04, 0xde, 0x64, 0xc6, 0x68, 0x2c, 0x4d, 0x7a, 0x34, 0x3e, 0x37, 0x13, 0xc6, 0xf0, 0xb0,
+ 0xad, 0x7e, 0x72, 0xc3, 0xb6, 0xf6, 0x8c, 0x86, 0xed, 0x77, 0xca, 0x30, 0xb3, 0xaa, 0xd3, 0x9e,
+ 0xeb, 0x3c, 0x75, 0xff, 0x5d, 0x78, 0x2e, 0xf6, 0xdf, 0x37, 0xa1, 0xee, 0xd1, 0xbe, 0x6d, 0x19,
+ 0xba, 0x50, 0xb3, 0xa5, 0xbd, 0x1b, 0x65, 0x19, 0x86, 0xd4, 0x11, 0x76, 0x97, 0xd2, 0x73, 0x69,
+ 0x77, 0x29, 0x7f, 0xf2, 0x76, 0x17, 0xed, 0x97, 0x8b, 0xc0, 0x55, 0x52, 0x72, 0x03, 0xca, 0x4c,
+ 0xdd, 0x4a, 0x5b, 0xfb, 0xf8, 0xd7, 0xc2, 0x29, 0xe4, 0x1a, 0x14, 0x03, 0x57, 0x4e, 0x37, 0x20,
+ 0xe9, 0xc5, 0x1d, 0x17, 0x8b, 0x81, 0x4b, 0x3e, 0x04, 0x30, 0x5c, 0xc7, 0xb4, 0x94, 0x1b, 0x28,
+ 0xdf, 0x83, 0xad, 0xb9, 0xde, 0x43, 0xdd, 0x33, 0x57, 0x42, 0x44, 0xb1, 0xf3, 0x8e, 0xfe, 0x63,
+ 0x4c, 0x1a, 0x79, 0x0b, 0xaa, 0xae, 0xb3, 0x36, 0xb0, 0x6d, 0xde, 0xa1, 0x8d, 0xf6, 0x8f, 0x9d,
+ 0x9e, 0xb4, 0xaa, 0xf7, 0x79, 0xc9, 0xe3, 0x93, 0xd6, 0x55, 0xb1, 0x93, 0x61, 0xff, 0xde, 0xf1,
+ 0xac, 0xc0, 0x72, 0xba, 0xe1, 0x46, 0x54, 0x56, 0xd3, 0x7e, 0xb5, 0x00, 0xcd, 0x35, 0xeb, 0x11,
+ 0x35, 0xdf, 0xb1, 0x1c, 0xd3, 0x7d, 0x48, 0x10, 0xaa, 0x36, 0x75, 0xba, 0xc1, 0xc1, 0x98, 0x3b,
+ 0x45, 0x61, 0x8f, 0xe1, 0x08, 0x28, 0x91, 0xc8, 0x22, 0x34, 0xc4, 0x3e, 0xc3, 0x72, 0xba, 0xbc,
+ 0x0f, 0xeb, 0xd1, 0x4c, 0xdf, 0x51, 0x04, 0x8c, 0x78, 0xb4, 0x63, 0x78, 0x71, 0xa8, 0x1b, 0x88,
+ 0x09, 0xe5, 0x40, 0xef, 0xaa, 0x45, 0x65, 0x6d, 0xec, 0x0e, 0xde, 0xd1, 0xbb, 0xb1, 0xce, 0xe5,
+ 0xda, 0xdc, 0x8e, 0xce, 0xb4, 0x39, 0x86, 0xae, 0xfd, 0x61, 0x01, 0xea, 0x6b, 0x03, 0xc7, 0xe0,
+ 0x9b, 0xf1, 0xa7, 0x5b, 0x81, 0x95, 0x6a, 0x58, 0xcc, 0x54, 0x0d, 0x07, 0x50, 0x3d, 0x7c, 0x18,
+ 0xaa, 0x8e, 0xcd, 0xa5, 0xad, 0xf1, 0x47, 0x85, 0x6c, 0xd2, 0xc2, 0x5d, 0x8e, 0x27, 0x9c, 0x94,
+ 0x33, 0xb2, 0x41, 0xd5, 0xbb, 0xef, 0x70, 0xa1, 0x52, 0xd8, 0xb5, 0xaf, 0x40, 0x33, 0xc6, 0x76,
+ 0x2e, 0x7f, 0xc5, 0xdf, 0x2d, 0x43, 0x75, 0xbd, 0xd3, 0x59, 0xde, 0xde, 0x20, 0xaf, 0x43, 0x53,
+ 0xfa, 0xaf, 0xee, 0x45, 0x7d, 0x10, 0xba, 0x2f, 0x3b, 0x11, 0x09, 0xe3, 0x7c, 0x4c, 0xf1, 0xf6,
+ 0xa8, 0x6e, 0xf7, 0xe4, 0xc7, 0x12, 0x2a, 0xde, 0xc8, 0x0a, 0x51, 0xd0, 0x88, 0x0e, 0x33, 0x6c,
+ 0x2f, 0xcf, 0xba, 0x50, 0xec, 0xd3, 0xe5, 0x67, 0x73, 0xc6, 0x9d, 0x3c, 0x5f, 0x60, 0x76, 0x13,
+ 0x00, 0x98, 0x02, 0x24, 0x6f, 0x42, 0x5d, 0x1f, 0x04, 0x07, 0x7c, 0xab, 0x24, 0xbe, 0x8d, 0x57,
+ 0xb8, 0x7b, 0x4f, 0x96, 0x3d, 0x3e, 0x69, 0x4d, 0xdd, 0xc5, 0xf6, 0xeb, 0xea, 0x3f, 0x86, 0xdc,
+ 0xac, 0x71, 0xca, 0x36, 0x20, 0x1b, 0x57, 0x39, 0x77, 0xe3, 0xb6, 0x13, 0x00, 0x98, 0x02, 0x24,
+ 0xef, 0xc1, 0xd4, 0x21, 0x3d, 0x0e, 0xf4, 0x3d, 0x29, 0xa0, 0x7a, 0x1e, 0x01, 0x73, 0x4c, 0x59,
+ 0xbf, 0x1b, 0xab, 0x8e, 0x09, 0x30, 0xe2, 0xc3, 0xe5, 0x43, 0xea, 0xed, 0x51, 0xcf, 0x95, 0x76,
+ 0x06, 0x29, 0xa4, 0x76, 0x1e, 0x21, 0xf3, 0xa7, 0x27, 0xad, 0xcb, 0x77, 0x33, 0x60, 0x30, 0x13,
+ 0x5c, 0xfb, 0xdf, 0x45, 0x98, 0x5d, 0x17, 0x01, 0x04, 0xae, 0x27, 0x34, 0x0f, 0x72, 0x15, 0x4a,
+ 0x5e, 0x7f, 0xc0, 0x47, 0x4e, 0x49, 0xb8, 0x08, 0x70, 0x7b, 0x17, 0x59, 0x19, 0x79, 0x17, 0xea,
+ 0xa6, 0x9c, 0x32, 0xa4, 0x99, 0x63, 0x2c, 0x93, 0x94, 0xfa, 0x87, 0x21, 0x1a, 0xdb, 0xd3, 0xf5,
+ 0xfc, 0x6e, 0xc7, 0xfa, 0x90, 0xca, 0x9d, 0x3f, 0xdf, 0xd3, 0x6d, 0x89, 0x22, 0x54, 0x34, 0xb6,
+ 0xaa, 0x1e, 0xd2, 0x63, 0xb1, 0xef, 0x2d, 0x47, 0xab, 0xea, 0x5d, 0x59, 0x86, 0x21, 0x95, 0xb4,
+ 0xd4, 0xc7, 0xc2, 0x46, 0x41, 0x59, 0xd8, 0x6c, 0x1e, 0xb0, 0x02, 0xf9, 0xdd, 0xb0, 0x29, 0xf3,
+ 0x03, 0x2b, 0x08, 0xa8, 0x27, 0x5f, 0xe3, 0x58, 0x53, 0xe6, 0x1d, 0x8e, 0x80, 0x12, 0x89, 0xfc,
+ 0x04, 0x34, 0x38, 0x78, 0xdb, 0x76, 0xf7, 0xf8, 0x8b, 0x6b, 0x08, 0xeb, 0xcd, 0x03, 0x55, 0x88,
+ 0x11, 0x5d, 0xfb, 0xa3, 0x22, 0x5c, 0x59, 0xa7, 0x81, 0xd0, 0x6a, 0x56, 0x69, 0xdf, 0x76, 0x8f,
+ 0x99, 0x3e, 0x8d, 0xf4, 0x5b, 0xe4, 0x6d, 0x00, 0xcb, 0xdf, 0xeb, 0x1c, 0x19, 0xfc, 0x3b, 0x10,
+ 0xdf, 0xf0, 0x0d, 0xf9, 0x49, 0xc2, 0x46, 0xa7, 0x2d, 0x29, 0x8f, 0x13, 0xff, 0x30, 0x56, 0x27,
+ 0xda, 0x48, 0x17, 0x9f, 0xb0, 0x91, 0xee, 0x00, 0xf4, 0x23, 0xad, 0xbc, 0xc4, 0x39, 0x7f, 0x5a,
+ 0x89, 0x39, 0x8f, 0x42, 0x1e, 0x83, 0xc9, 0xa3, 0x27, 0x3b, 0x30, 0x67, 0xd2, 0x7d, 0x7d, 0x60,
+ 0x07, 0xe1, 0x4e, 0x42, 0x7e, 0xc4, 0x67, 0xdf, 0x8c, 0x84, 0xc1, 0x0d, 0xab, 0x29, 0x24, 0x1c,
+ 0xc2, 0xd6, 0xfe, 0x5e, 0x09, 0xae, 0xad, 0xd3, 0x20, 0xb4, 0xad, 0xc9, 0xd9, 0xb1, 0xd3, 0xa7,
+ 0x06, 0x7b, 0x0b, 0x1f, 0x17, 0xa0, 0x6a, 0xeb, 0x7b, 0xd4, 0x66, 0xab, 0x17, 0x7b, 0x9a, 0xf7,
+ 0xc7, 0x5e, 0x08, 0x46, 0x4b, 0x59, 0xd8, 0xe4, 0x12, 0x52, 0x4b, 0x83, 0x28, 0x44, 0x29, 0x9e,
+ 0x4d, 0xea, 0x86, 0x3d, 0xf0, 0x03, 0xea, 0x6d, 0xbb, 0x5e, 0x20, 0xf5, 0xc9, 0x70, 0x52, 0x5f,
+ 0x89, 0x48, 0x18, 0xe7, 0x23, 0x4b, 0x00, 0x86, 0x6d, 0x51, 0x27, 0xe0, 0xb5, 0xc4, 0x77, 0x45,
+ 0xd4, 0xfb, 0x5d, 0x09, 0x29, 0x18, 0xe3, 0x62, 0xa2, 0x7a, 0xae, 0x63, 0x05, 0xae, 0x10, 0x55,
+ 0x4e, 0x8a, 0xda, 0x8a, 0x48, 0x18, 0xe7, 0xe3, 0xd5, 0x68, 0xe0, 0x59, 0x86, 0xcf, 0xab, 0x55,
+ 0x52, 0xd5, 0x22, 0x12, 0xc6, 0xf9, 0xd8, 0x9a, 0x17, 0x7b, 0xfe, 0x73, 0xad, 0x79, 0xbf, 0xd9,
+ 0x80, 0xeb, 0x89, 0x6e, 0x0d, 0xf4, 0x80, 0xee, 0x0f, 0xec, 0x0e, 0x0d, 0xd4, 0x0b, 0x1c, 0x73,
+ 0x2d, 0xfc, 0xf3, 0xd1, 0x7b, 0x17, 0x61, 0x4b, 0xc6, 0x64, 0xde, 0xfb, 0x50, 0x03, 0xcf, 0xf4,
+ 0xee, 0x17, 0xa1, 0xe1, 0xe8, 0x81, 0xcf, 0x3f, 0x5c, 0xf9, 0x8d, 0x86, 0x6a, 0xd8, 0x3d, 0x45,
+ 0xc0, 0x88, 0x87, 0x6c, 0xc3, 0x65, 0xd9, 0xc5, 0xb7, 0x1e, 0xf5, 0x5d, 0x2f, 0xa0, 0x9e, 0xa8,
+ 0x2b, 0x97, 0x53, 0x59, 0xf7, 0xf2, 0x56, 0x06, 0x0f, 0x66, 0xd6, 0x24, 0x5b, 0x70, 0xc9, 0x10,
+ 0xa1, 0x1c, 0xd4, 0x76, 0x75, 0x53, 0x01, 0x0a, 0x53, 0x66, 0xb8, 0x35, 0x5a, 0x19, 0x66, 0xc1,
+ 0xac, 0x7a, 0xe9, 0xd1, 0x5c, 0x1d, 0x6b, 0x34, 0xd7, 0xc6, 0x19, 0xcd, 0xf5, 0xf1, 0x46, 0x73,
+ 0xe3, 0x6c, 0xa3, 0x99, 0xf5, 0x3c, 0x1b, 0x47, 0xd4, 0x63, 0xea, 0x89, 0x58, 0x61, 0x63, 0x91,
+ 0x42, 0x61, 0xcf, 0x77, 0x32, 0x78, 0x30, 0xb3, 0x26, 0xd9, 0x83, 0x6b, 0xa2, 0xfc, 0x96, 0x63,
+ 0x78, 0xc7, 0x7d, 0xb6, 0xf0, 0xc4, 0x70, 0x9b, 0x09, 0x5b, 0xf2, 0xb5, 0xce, 0x48, 0x4e, 0x7c,
+ 0x02, 0x0a, 0xf9, 0x59, 0x98, 0x16, 0x6f, 0x69, 0x4b, 0xef, 0x73, 0x58, 0x11, 0x37, 0xf4, 0x92,
+ 0x84, 0x9d, 0x5e, 0x89, 0x13, 0x31, 0xc9, 0x4b, 0x96, 0x61, 0xb6, 0x7f, 0x64, 0xb0, 0x9f, 0x1b,
+ 0xfb, 0xf7, 0x28, 0x35, 0xa9, 0xc9, 0x1d, 0x95, 0x8d, 0xf6, 0xcb, 0xca, 0xba, 0xb3, 0x9d, 0x24,
+ 0x63, 0x9a, 0x9f, 0xbc, 0x09, 0x53, 0x7e, 0xa0, 0x7b, 0x81, 0x34, 0xe0, 0xce, 0xcf, 0x88, 0xb8,
+ 0x2a, 0x65, 0xdf, 0xec, 0xc4, 0x68, 0x98, 0xe0, 0xcc, 0x5c, 0x2f, 0x66, 0x2f, 0x6e, 0xbd, 0xc8,
+ 0x33, 0x5b, 0xfd, 0xb3, 0x22, 0xdc, 0x58, 0xa7, 0xc1, 0x96, 0xeb, 0x48, 0xf3, 0x77, 0xd6, 0xb2,
+ 0x7f, 0x26, 0xeb, 0x77, 0x72, 0xd1, 0x2e, 0x4e, 0x74, 0xd1, 0x2e, 0x4d, 0x68, 0xd1, 0x2e, 0x5f,
+ 0xe0, 0xa2, 0xfd, 0x0f, 0x8a, 0xf0, 0x72, 0xa2, 0x27, 0xb7, 0x5d, 0x53, 0x4d, 0xf8, 0x9f, 0x75,
+ 0xe0, 0x19, 0x3a, 0xf0, 0xb1, 0xd0, 0x3b, 0xb9, 0x03, 0x33, 0xa5, 0xf1, 0x7c, 0x94, 0xd6, 0x78,
+ 0xde, 0xcb, 0xb3, 0xf2, 0x65, 0x48, 0x38, 0xd3, 0x8a, 0x77, 0x07, 0x88, 0x27, 0xdd, 0xad, 0xc2,
+ 0xf4, 0x13, 0x53, 0x7a, 0xc2, 0xc0, 0x4d, 0x1c, 0xe2, 0xc0, 0x8c, 0x5a, 0xa4, 0x03, 0x2f, 0xf9,
+ 0xd4, 0x09, 0x2c, 0x87, 0xda, 0x49, 0x38, 0xa1, 0x0d, 0xbd, 0x2a, 0xe1, 0x5e, 0xea, 0x64, 0x31,
+ 0x61, 0x76, 0xdd, 0x3c, 0xf3, 0xc0, 0xbf, 0x02, 0xae, 0x72, 0x8a, 0xae, 0x99, 0x98, 0xc6, 0xf2,
+ 0x71, 0x5a, 0x63, 0x79, 0x3f, 0xff, 0x7b, 0x1b, 0x4f, 0x5b, 0x59, 0x02, 0xe0, 0x6f, 0x21, 0xae,
+ 0xae, 0x84, 0x8b, 0x34, 0x86, 0x14, 0x8c, 0x71, 0xb1, 0x05, 0x48, 0xf5, 0x73, 0x5c, 0x53, 0x09,
+ 0x17, 0xa0, 0x4e, 0x9c, 0x88, 0x49, 0xde, 0x91, 0xda, 0x4e, 0x65, 0x6c, 0x6d, 0xe7, 0x0e, 0x90,
+ 0x84, 0xe1, 0x51, 0xe0, 0x55, 0x93, 0x71, 0xc3, 0x1b, 0x43, 0x1c, 0x98, 0x51, 0x6b, 0xc4, 0x50,
+ 0xae, 0x4d, 0x76, 0x28, 0xd7, 0xc7, 0x1f, 0xca, 0xe4, 0x7d, 0xb8, 0xca, 0x45, 0xc9, 0xfe, 0x49,
+ 0x02, 0x0b, 0xbd, 0xe7, 0x47, 0x24, 0xf0, 0x55, 0x1c, 0xc5, 0x88, 0xa3, 0x31, 0xd8, 0xfb, 0x31,
+ 0x3c, 0x6a, 0x32, 0xe1, 0xba, 0x3d, 0x5a, 0x27, 0x5a, 0xc9, 0xe0, 0xc1, 0xcc, 0x9a, 0x6c, 0x88,
+ 0x05, 0x6c, 0x18, 0xea, 0x7b, 0x36, 0x35, 0x65, 0xdc, 0x74, 0x38, 0xc4, 0x76, 0x36, 0x3b, 0x92,
+ 0x82, 0x31, 0xae, 0x2c, 0x35, 0x65, 0xea, 0x9c, 0x6a, 0xca, 0x3a, 0xb7, 0xd2, 0xef, 0x27, 0xb4,
+ 0x21, 0xa9, 0xeb, 0x84, 0x91, 0xf0, 0x2b, 0x69, 0x06, 0x1c, 0xae, 0xc3, 0xb5, 0x44, 0xc3, 0xb3,
+ 0xfa, 0x81, 0x9f, 0xc4, 0x9a, 0x49, 0x69, 0x89, 0x19, 0x3c, 0x98, 0x59, 0x93, 0xe9, 0xe7, 0x07,
+ 0x54, 0xb7, 0x83, 0x83, 0x24, 0xe0, 0x6c, 0x52, 0x3f, 0xbf, 0x3d, 0xcc, 0x82, 0x59, 0xf5, 0x32,
+ 0x17, 0xa4, 0xb9, 0xe7, 0x53, 0xad, 0xfa, 0x95, 0x12, 0x5c, 0x5d, 0xa7, 0x41, 0x18, 0x52, 0xf6,
+ 0x99, 0x19, 0xe5, 0x13, 0x30, 0xa3, 0xfc, 0x46, 0x05, 0x2e, 0xad, 0xd3, 0x60, 0x48, 0x1b, 0xfb,
+ 0xff, 0xb4, 0xfb, 0xb7, 0xe0, 0x52, 0x14, 0xc5, 0xd8, 0x09, 0x5c, 0x4f, 0xac, 0xe5, 0xa9, 0xdd,
+ 0x72, 0x67, 0x98, 0x05, 0xb3, 0xea, 0x91, 0x6f, 0xc0, 0xcb, 0x7c, 0xa9, 0x77, 0xba, 0xc2, 0x3e,
+ 0x2b, 0x8c, 0x09, 0xb1, 0x73, 0x38, 0x2d, 0x09, 0xf9, 0x72, 0x27, 0x9b, 0x0d, 0x47, 0xd5, 0x27,
+ 0xdf, 0x86, 0xa9, 0xbe, 0xd5, 0xa7, 0xb6, 0xe5, 0x70, 0xfd, 0x2c, 0x77, 0xf0, 0xcf, 0x76, 0x0c,
+ 0x2c, 0xda, 0xc0, 0xc5, 0x4b, 0x31, 0x21, 0x30, 0x73, 0xa4, 0xd6, 0x2f, 0x70, 0xa4, 0xfe, 0x8f,
+ 0x22, 0xd4, 0xd6, 0x3d, 0x77, 0xd0, 0x6f, 0x1f, 0x93, 0x2e, 0x54, 0x1f, 0x72, 0xe7, 0x99, 0x74,
+ 0x4d, 0x8d, 0x7f, 0x12, 0x40, 0xf8, 0xe0, 0x22, 0x95, 0x48, 0xfc, 0x47, 0x09, 0xcf, 0x06, 0xf1,
+ 0x21, 0x3d, 0xa6, 0xa6, 0xf4, 0xa1, 0x85, 0x83, 0xf8, 0x2e, 0x2b, 0x44, 0x41, 0x23, 0x3d, 0x98,
+ 0xd5, 0x6d, 0xdb, 0x7d, 0x48, 0xcd, 0x4d, 0x3d, 0xe0, 0x7e, 0x6f, 0xe9, 0x5b, 0x39, 0xaf, 0x59,
+ 0x9a, 0x07, 0x33, 0x2c, 0x27, 0xa1, 0x30, 0x8d, 0x4d, 0x3e, 0x80, 0x9a, 0x1f, 0xb8, 0x9e, 0x52,
+ 0xb6, 0x9a, 0x4b, 0x2b, 0xe3, 0xbf, 0xf4, 0xf6, 0xd7, 0x3b, 0x02, 0x4a, 0xd8, 0xec, 0xe5, 0x1f,
+ 0x54, 0x02, 0xb4, 0x5f, 0x2f, 0x00, 0xdc, 0xde, 0xd9, 0xd9, 0x96, 0xee, 0x05, 0x13, 0xca, 0xfa,
+ 0x20, 0x74, 0x54, 0x8e, 0xef, 0x10, 0x4c, 0x04, 0xe0, 0x4a, 0x1f, 0xde, 0x20, 0x38, 0x40, 0x8e,
+ 0x4e, 0x7e, 0x1c, 0x6a, 0x52, 0x41, 0x96, 0xdd, 0x1e, 0xc6, 0x53, 0x48, 0x25, 0x1a, 0x15, 0x5d,
+ 0xfb, 0xdb, 0x45, 0x80, 0x0d, 0xd3, 0xa6, 0x1d, 0x75, 0x78, 0xa3, 0x11, 0x1c, 0x78, 0xd4, 0x3f,
+ 0x70, 0x6d, 0x73, 0x4c, 0x6f, 0x2a, 0xb7, 0xf9, 0xef, 0x28, 0x10, 0x8c, 0xf0, 0x88, 0x09, 0x53,
+ 0x7e, 0x40, 0xfb, 0x2a, 0x26, 0x77, 0x4c, 0x27, 0xca, 0x9c, 0xb0, 0x8b, 0x44, 0x38, 0x98, 0x40,
+ 0x25, 0x3a, 0x34, 0x2d, 0xc7, 0x10, 0x1f, 0x48, 0xfb, 0x78, 0xcc, 0x81, 0x34, 0xcb, 0x76, 0x1c,
+ 0x1b, 0x11, 0x0c, 0xc6, 0x31, 0xb5, 0xdf, 0x2d, 0xc2, 0x15, 0x2e, 0x8f, 0x35, 0x23, 0x11, 0x79,
+ 0x4b, 0xfe, 0xe4, 0xd0, 0x41, 0xd3, 0x3f, 0x7e, 0x36, 0xd1, 0xe2, 0x9c, 0xe2, 0x16, 0x0d, 0xf4,
+ 0x48, 0x9f, 0x8b, 0xca, 0x62, 0xa7, 0x4b, 0x07, 0x50, 0xf6, 0xd9, 0x7c, 0x25, 0x7a, 0xaf, 0x33,
+ 0xf6, 0x10, 0xca, 0x7e, 0x00, 0x3e, 0x7b, 0x85, 0x5e, 0x63, 0x3e, 0x6b, 0x71, 0x71, 0xe4, 0x4f,
+ 0x43, 0xd5, 0x0f, 0xf4, 0x60, 0xa0, 0x3e, 0xcd, 0xdd, 0x49, 0x0b, 0xe6, 0xe0, 0xd1, 0x3c, 0x22,
+ 0xfe, 0xa3, 0x14, 0xaa, 0xfd, 0x6e, 0x01, 0xae, 0x65, 0x57, 0xdc, 0xb4, 0xfc, 0x80, 0xfc, 0x89,
+ 0xa1, 0x6e, 0x3f, 0xe3, 0x1b, 0x67, 0xb5, 0x79, 0xa7, 0x87, 0x67, 0x11, 0x54, 0x49, 0xac, 0xcb,
+ 0x03, 0xa8, 0x58, 0x01, 0xed, 0xa9, 0xfd, 0xe5, 0xfd, 0x09, 0x3f, 0x7a, 0x6c, 0x69, 0x67, 0x52,
+ 0x50, 0x08, 0xd3, 0xbe, 0x53, 0x1c, 0xf5, 0xc8, 0x7c, 0xf9, 0xb0, 0x93, 0xd1, 0xdd, 0x77, 0xf3,
+ 0x45, 0x77, 0x27, 0x1b, 0x34, 0x1c, 0xe4, 0xfd, 0xa7, 0x86, 0x83, 0xbc, 0xef, 0xe7, 0x0f, 0xf2,
+ 0x4e, 0x75, 0xc3, 0xc8, 0x58, 0xef, 0x1f, 0x94, 0xe0, 0x95, 0x27, 0x0d, 0x1b, 0xb6, 0x9e, 0xc9,
+ 0xd1, 0x99, 0x77, 0x3d, 0x7b, 0xf2, 0x38, 0x24, 0x4b, 0x50, 0xe9, 0x1f, 0xe8, 0xbe, 0x52, 0xca,
+ 0xd4, 0x86, 0xa5, 0xb2, 0xcd, 0x0a, 0x1f, 0xb3, 0x49, 0x83, 0x2b, 0x73, 0xfc, 0x2f, 0x0a, 0x56,
+ 0x36, 0x1d, 0xf7, 0xa8, 0xef, 0x47, 0x36, 0x81, 0x70, 0x3a, 0xde, 0x12, 0xc5, 0xa8, 0xe8, 0x24,
+ 0x80, 0xaa, 0x30, 0x31, 0xcb, 0x95, 0x69, 0xfc, 0x40, 0xae, 0x8c, 0x03, 0x01, 0xd1, 0x43, 0x49,
+ 0x6f, 0x85, 0x94, 0x45, 0x16, 0xa0, 0x1c, 0x44, 0xe1, 0xd9, 0x6a, 0x6b, 0x5e, 0xce, 0xd0, 0x4f,
+ 0x39, 0x1f, 0xdb, 0xd8, 0xbb, 0x7b, 0xdc, 0xa8, 0x6e, 0x4a, 0xff, 0xb9, 0xe5, 0x3a, 0x5c, 0x21,
+ 0x2b, 0x45, 0x1b, 0xfb, 0xfb, 0x43, 0x1c, 0x98, 0x51, 0x4b, 0xfb, 0xb7, 0x75, 0xb8, 0x92, 0x3d,
+ 0x1e, 0x58, 0xbf, 0x1d, 0x51, 0xcf, 0x67, 0xd8, 0x85, 0x64, 0xbf, 0x3d, 0x10, 0xc5, 0xa8, 0xe8,
+ 0x9f, 0xea, 0x80, 0xb3, 0xdf, 0x28, 0xc0, 0x55, 0x4f, 0xfa, 0x88, 0x9e, 0x45, 0xd0, 0xd9, 0xab,
+ 0xc2, 0x9c, 0x31, 0x42, 0x20, 0x8e, 0x6e, 0x0b, 0xf9, 0x9b, 0x05, 0x98, 0xef, 0xa5, 0xec, 0x1c,
+ 0x17, 0x78, 0x56, 0x92, 0x9f, 0x7f, 0xd8, 0x1a, 0x21, 0x0f, 0x47, 0xb6, 0x84, 0x7c, 0x1b, 0x9a,
+ 0x7d, 0x36, 0x2e, 0xfc, 0x80, 0x3a, 0x86, 0x0a, 0x10, 0x1d, 0xff, 0x4b, 0xda, 0x8e, 0xb0, 0xc2,
+ 0xb3, 0x52, 0x5c, 0x3f, 0x88, 0x11, 0x30, 0x2e, 0xf1, 0x39, 0x3f, 0x1c, 0x79, 0x13, 0xea, 0x3e,
+ 0x0d, 0x02, 0xcb, 0xe9, 0x8a, 0xfd, 0x46, 0x43, 0x7c, 0x2b, 0x1d, 0x59, 0x86, 0x21, 0x95, 0xfc,
+ 0x04, 0x34, 0xb8, 0xcb, 0x69, 0xd9, 0xeb, 0xfa, 0xf3, 0x0d, 0x1e, 0x2e, 0x36, 0x2d, 0x02, 0xe0,
+ 0x64, 0x21, 0x46, 0x74, 0xf2, 0x25, 0x98, 0xda, 0xe3, 0x9f, 0xaf, 0x3c, 0x2f, 0x2f, 0x6c, 0x5c,
+ 0x5c, 0x5b, 0x6b, 0xc7, 0xca, 0x31, 0xc1, 0x45, 0x96, 0x00, 0x68, 0xe8, 0x97, 0x4b, 0xdb, 0xb3,
+ 0x22, 0x8f, 0x1d, 0xc6, 0xb8, 0xc8, 0xab, 0x50, 0x0a, 0x6c, 0x9f, 0xdb, 0xb0, 0xea, 0xd1, 0x16,
+ 0x74, 0x67, 0xb3, 0x83, 0xac, 0x5c, 0xfb, 0xa3, 0x02, 0xcc, 0xa6, 0x8e, 0x11, 0xb1, 0x2a, 0x03,
+ 0xcf, 0x96, 0xd3, 0x48, 0x58, 0x65, 0x17, 0x37, 0x91, 0x95, 0x93, 0xf7, 0xa5, 0x5a, 0x5e, 0xcc,
+ 0x99, 0x1a, 0xe4, 0x9e, 0x1e, 0xf8, 0x4c, 0x0f, 0x1f, 0xd2, 0xc8, 0xb9, 0x9b, 0x2f, 0x6a, 0x8f,
+ 0x5c, 0x07, 0x62, 0x6e, 0xbe, 0x88, 0x86, 0x09, 0xce, 0x94, 0xc1, 0xaf, 0x7c, 0x16, 0x83, 0x9f,
+ 0xf6, 0xab, 0xc5, 0x58, 0x0f, 0x48, 0xcd, 0xfe, 0x29, 0x3d, 0xf0, 0x45, 0xb6, 0x80, 0x86, 0x8b,
+ 0x7b, 0x23, 0xbe, 0xfe, 0xf1, 0xc5, 0x58, 0x52, 0xc9, 0x3b, 0xa2, 0xef, 0x4b, 0x39, 0x0f, 0x60,
+ 0xef, 0x6c, 0x76, 0x44, 0x74, 0x95, 0x7a, 0x6b, 0xe1, 0x2b, 0x28, 0x5f, 0xd0, 0x2b, 0xd0, 0xfe,
+ 0x45, 0x09, 0x9a, 0x77, 0xdc, 0xbd, 0x4f, 0x49, 0x04, 0x75, 0xf6, 0x32, 0x55, 0xfc, 0x04, 0x97,
+ 0xa9, 0x5d, 0x78, 0x39, 0x08, 0xec, 0x0e, 0x35, 0x5c, 0xc7, 0xf4, 0x97, 0xf7, 0x03, 0xea, 0xad,
+ 0x59, 0x8e, 0xe5, 0x1f, 0x50, 0x53, 0xba, 0x93, 0x3e, 0x77, 0x7a, 0xd2, 0x7a, 0x79, 0x67, 0x67,
+ 0x33, 0x8b, 0x05, 0x47, 0xd5, 0xe5, 0xd3, 0x86, 0x38, 0xf3, 0xc9, 0xcf, 0x44, 0xc9, 0x98, 0x1b,
+ 0x31, 0x6d, 0xc4, 0xca, 0x31, 0xc1, 0xa5, 0x7d, 0xb7, 0x08, 0x8d, 0x30, 0xe9, 0x03, 0xf9, 0x02,
+ 0xd4, 0xf6, 0x3c, 0xf7, 0x90, 0x7a, 0xc2, 0x73, 0x27, 0xcf, 0x44, 0xb5, 0x45, 0x11, 0x2a, 0x1a,
+ 0xf9, 0x3c, 0x54, 0x02, 0xb7, 0x6f, 0x19, 0x69, 0x83, 0xda, 0x0e, 0x2b, 0x44, 0x41, 0xbb, 0xb8,
+ 0x01, 0xfe, 0xc5, 0x84, 0x6a, 0xd7, 0x18, 0xa9, 0x8c, 0xbd, 0x07, 0x65, 0x5f, 0xf7, 0x6d, 0xb9,
+ 0x9e, 0xe6, 0xc8, 0x9f, 0xb0, 0xdc, 0xd9, 0x94, 0xf9, 0x13, 0x96, 0x3b, 0x9b, 0xc8, 0x41, 0xb5,
+ 0x3f, 0x28, 0x42, 0x53, 0xf4, 0x9b, 0x98, 0x15, 0x26, 0xd9, 0x73, 0x6f, 0xf1, 0x50, 0x0a, 0x7f,
+ 0xd0, 0xa3, 0x1e, 0x37, 0x33, 0xc9, 0x49, 0x2e, 0xee, 0x1f, 0x88, 0x88, 0x61, 0x38, 0x45, 0x54,
+ 0xa4, 0xba, 0xbe, 0x7c, 0x81, 0x5d, 0x5f, 0x39, 0x53, 0xd7, 0x57, 0x2f, 0xa2, 0xeb, 0x3f, 0x2e,
+ 0x42, 0x63, 0xd3, 0xda, 0xa7, 0xc6, 0xb1, 0x61, 0xf3, 0xd3, 0x9f, 0x26, 0xb5, 0x69, 0x40, 0xd7,
+ 0x3d, 0xdd, 0xa0, 0xdb, 0xd4, 0xb3, 0x78, 0x52, 0x24, 0xf6, 0x7d, 0xf0, 0x19, 0x48, 0x9e, 0xfe,
+ 0x5c, 0x1d, 0xc1, 0x83, 0x23, 0x6b, 0x93, 0x0d, 0x98, 0x32, 0xa9, 0x6f, 0x79, 0xd4, 0xdc, 0x8e,
+ 0x6d, 0x54, 0xbe, 0xa0, 0x96, 0x9a, 0xd5, 0x18, 0xed, 0xf1, 0x49, 0x6b, 0x5a, 0x19, 0x28, 0xc5,
+ 0x8e, 0x25, 0x51, 0x95, 0x7d, 0xf2, 0x7d, 0x7d, 0xe0, 0x67, 0xb5, 0x31, 0xf6, 0xc9, 0x6f, 0x67,
+ 0xb3, 0xe0, 0xa8, 0xba, 0x5a, 0x05, 0x4a, 0x9b, 0x6e, 0x57, 0xfb, 0x4e, 0x09, 0xc2, 0xec, 0x59,
+ 0xe4, 0xcf, 0x15, 0xa0, 0xa9, 0x3b, 0x8e, 0x1b, 0xc8, 0xcc, 0x54, 0xc2, 0x03, 0x8f, 0xb9, 0x93,
+ 0x74, 0x2d, 0x2c, 0x47, 0xa0, 0xc2, 0x79, 0x1b, 0x3a, 0x94, 0x63, 0x14, 0x8c, 0xcb, 0x26, 0x83,
+ 0x94, 0x3f, 0x79, 0x2b, 0x7f, 0x2b, 0xce, 0xe0, 0x3d, 0xbe, 0xf6, 0x35, 0x98, 0x4b, 0x37, 0xf6,
+ 0x3c, 0xee, 0xa0, 0x5c, 0x8e, 0xf9, 0x22, 0x40, 0x14, 0x53, 0xf2, 0x0c, 0x8c, 0x58, 0x56, 0xc2,
+ 0x88, 0x35, 0x7e, 0x0a, 0x83, 0xa8, 0xd1, 0x23, 0x0d, 0x57, 0xdf, 0x4a, 0x19, 0xae, 0x36, 0x26,
+ 0x21, 0xec, 0xc9, 0xc6, 0xaa, 0xbf, 0x55, 0x80, 0xb9, 0x88, 0x59, 0x9e, 0x85, 0xfe, 0x32, 0x4c,
+ 0x7b, 0x54, 0x37, 0xdb, 0x7a, 0x60, 0x1c, 0xf0, 0x50, 0xef, 0x02, 0x8f, 0xcd, 0xe6, 0xa7, 0xbf,
+ 0x30, 0x4e, 0xc0, 0x24, 0x1f, 0xd1, 0xa1, 0xc9, 0x0a, 0x76, 0xac, 0x1e, 0x75, 0x07, 0xc1, 0x98,
+ 0x56, 0x53, 0xbe, 0x61, 0xc1, 0x08, 0x06, 0xe3, 0x98, 0xda, 0x0f, 0x0a, 0x30, 0x13, 0x6f, 0xf0,
+ 0x85, 0x5b, 0xd4, 0x0e, 0x92, 0x16, 0xb5, 0x95, 0x09, 0xbc, 0x93, 0x11, 0x56, 0xb4, 0x8f, 0x20,
+ 0xfe, 0x68, 0xdc, 0x72, 0x16, 0x37, 0x16, 0x14, 0x9e, 0x68, 0x2c, 0xf8, 0xf4, 0x27, 0x4c, 0x1a,
+ 0xa5, 0xe5, 0x96, 0x9f, 0x63, 0x2d, 0xf7, 0x93, 0xcc, 0xba, 0x14, 0xcb, 0x1c, 0x54, 0xcd, 0x91,
+ 0x39, 0xa8, 0x17, 0x66, 0x0e, 0xaa, 0x4d, 0x6c, 0xd2, 0x39, 0x4b, 0xf6, 0xa0, 0xfa, 0x33, 0xcd,
+ 0x1e, 0xd4, 0xb8, 0xa8, 0xec, 0x41, 0x90, 0x37, 0x7b, 0xd0, 0x47, 0x05, 0x98, 0x31, 0x13, 0x27,
+ 0x66, 0xe5, 0x19, 0xf3, 0xf1, 0x97, 0x9a, 0xe4, 0x01, 0x5c, 0x71, 0x64, 0x2a, 0x59, 0x86, 0x29,
+ 0x91, 0x59, 0x39, 0x7b, 0xa6, 0x3e, 0x99, 0x9c, 0x3d, 0xbf, 0x5f, 0x8b, 0xaf, 0x48, 0xcf, 0xda,
+ 0x68, 0xfe, 0x46, 0xd2, 0x68, 0x7e, 0x23, 0x6d, 0x34, 0x9f, 0x8d, 0xc5, 0xb3, 0xc6, 0x0d, 0xe7,
+ 0x3f, 0x19, 0x9b, 0xa8, 0x4b, 0x3c, 0x5b, 0x4f, 0xf8, 0xce, 0x33, 0x26, 0xeb, 0x65, 0x98, 0x95,
+ 0xda, 0xab, 0x22, 0xf2, 0x59, 0x6e, 0x3a, 0x0a, 0x73, 0x5a, 0x4d, 0x92, 0x31, 0xcd, 0xcf, 0x04,
+ 0xfa, 0x2a, 0x69, 0xab, 0xd8, 0x2a, 0x44, 0x83, 0x4c, 0x25, 0x54, 0x0d, 0x39, 0xd8, 0xb6, 0xc2,
+ 0xa3, 0xba, 0x2f, 0x4d, 0xdf, 0xb1, 0x6d, 0x05, 0xf2, 0x52, 0x94, 0xd4, 0xb8, 0xfd, 0xbf, 0xf6,
+ 0x14, 0xfb, 0xbf, 0x0e, 0x4d, 0x5b, 0xf7, 0x03, 0xf1, 0x36, 0x4d, 0xf9, 0x39, 0xff, 0xb1, 0xb3,
+ 0x2d, 0xbc, 0x6c, 0x31, 0x8f, 0xb4, 0xdb, 0xcd, 0x08, 0x06, 0xe3, 0x98, 0xc4, 0x84, 0x29, 0xf6,
+ 0x97, 0x7f, 0xda, 0xe6, 0x72, 0x20, 0x53, 0x9b, 0x9d, 0x47, 0x46, 0x68, 0xb6, 0xda, 0x8c, 0xe1,
+ 0x60, 0x02, 0x75, 0x84, 0x8b, 0x00, 0xc6, 0x71, 0x11, 0x90, 0x9f, 0x15, 0x9a, 0xd3, 0x71, 0xf8,
+ 0x5a, 0x9b, 0xfc, 0xb5, 0x86, 0x21, 0x92, 0x18, 0x27, 0x62, 0x92, 0x97, 0x8d, 0x8a, 0x81, 0xec,
+ 0x06, 0x55, 0x7d, 0x2a, 0x39, 0x2a, 0x76, 0x93, 0x64, 0x4c, 0xf3, 0x93, 0x6d, 0xb8, 0x1c, 0x16,
+ 0xc5, 0x9b, 0x31, 0xcd, 0x71, 0xc2, 0x98, 0xb5, 0xdd, 0x0c, 0x1e, 0xcc, 0xac, 0xc9, 0x0f, 0x81,
+ 0x0c, 0x3c, 0x8f, 0x3a, 0xc1, 0x6d, 0xdd, 0x3f, 0x90, 0xc1, 0x6f, 0xd1, 0x21, 0x90, 0x88, 0x84,
+ 0x71, 0x3e, 0xb2, 0x04, 0x20, 0xe0, 0x78, 0xad, 0xd9, 0x64, 0x7c, 0xe9, 0x6e, 0x48, 0xc1, 0x18,
+ 0x97, 0xf6, 0x51, 0x03, 0x9a, 0xf7, 0xf4, 0xc0, 0x3a, 0xa2, 0xdc, 0x9f, 0x77, 0x31, 0x4e, 0x95,
+ 0xbf, 0x5a, 0x80, 0x2b, 0xc9, 0xa0, 0xcd, 0x0b, 0xf4, 0xac, 0xf0, 0x64, 0x3f, 0x98, 0x29, 0x0d,
+ 0x47, 0xb4, 0x82, 0xfb, 0x58, 0x86, 0x62, 0x40, 0x2f, 0xda, 0xc7, 0xd2, 0x19, 0x25, 0x10, 0x47,
+ 0xb7, 0xe5, 0xd3, 0xe2, 0x63, 0x79, 0xbe, 0xb3, 0x53, 0xa6, 0x3c, 0x40, 0xb5, 0xe7, 0xc6, 0x03,
+ 0x54, 0x7f, 0x2e, 0xd4, 0xee, 0x7e, 0xcc, 0x03, 0xd4, 0xc8, 0x19, 0x89, 0x24, 0xcf, 0x39, 0x08,
+ 0xb4, 0x51, 0x9e, 0x24, 0x9e, 0xa2, 0x40, 0x59, 0xe6, 0x99, 0xb6, 0xba, 0xa7, 0xfb, 0x96, 0x21,
+ 0xd5, 0x8e, 0x1c, 0xd9, 0x78, 0x55, 0x96, 0x3e, 0x11, 0xb0, 0xc0, 0xff, 0xa2, 0xc0, 0x8e, 0x92,
+ 0x12, 0x16, 0x73, 0x25, 0x25, 0x24, 0x2b, 0x50, 0x76, 0x0e, 0xe9, 0xf1, 0xf9, 0x0e, 0xfb, 0xf3,
+ 0x5d, 0xd8, 0xbd, 0xbb, 0xf4, 0x18, 0x79, 0x65, 0xed, 0xbb, 0x45, 0x00, 0xf6, 0xf8, 0x67, 0xf3,
+ 0xc5, 0xfc, 0x38, 0xd4, 0xfc, 0x01, 0xb7, 0x9a, 0x48, 0x85, 0x29, 0x0a, 0xdf, 0x12, 0xc5, 0xa8,
+ 0xe8, 0xe4, 0xf3, 0x50, 0xf9, 0xd6, 0x80, 0x0e, 0x54, 0x60, 0x41, 0xa8, 0xb8, 0x7f, 0x9d, 0x15,
+ 0xa2, 0xa0, 0x5d, 0x9c, 0x5d, 0x55, 0xf9, 0x6c, 0x2a, 0x17, 0xe5, 0xb3, 0x69, 0x40, 0xed, 0x9e,
+ 0xcb, 0xa3, 0x41, 0xb5, 0xff, 0x56, 0x04, 0x88, 0xa2, 0xed, 0xc8, 0xaf, 0x17, 0xe0, 0xa5, 0xf0,
+ 0x83, 0x0b, 0xc4, 0xfe, 0x8b, 0x27, 0xc0, 0xce, 0xed, 0xbf, 0xc9, 0xfa, 0xd8, 0xf9, 0x0c, 0xb4,
+ 0x9d, 0x25, 0x0e, 0xb3, 0x5b, 0x41, 0x10, 0xea, 0xb4, 0xd7, 0x0f, 0x8e, 0x57, 0x2d, 0x4f, 0x8e,
+ 0xc0, 0xcc, 0xa0, 0xce, 0x5b, 0x92, 0x47, 0x54, 0x95, 0x46, 0x02, 0xfe, 0x11, 0x29, 0x0a, 0x86,
+ 0x38, 0xe4, 0x00, 0xea, 0x8e, 0xfb, 0xbe, 0xcf, 0xba, 0x43, 0x0e, 0xc7, 0xb7, 0xc7, 0xef, 0x72,
+ 0xd1, 0xad, 0xc2, 0xde, 0x2f, 0xff, 0x60, 0xcd, 0x91, 0x9d, 0xfd, 0x6b, 0x45, 0xb8, 0x94, 0xd1,
+ 0x0f, 0xe4, 0x6d, 0x98, 0x93, 0x81, 0x8d, 0x51, 0x26, 0xf8, 0x42, 0x94, 0x09, 0xbe, 0x93, 0xa2,
+ 0xe1, 0x10, 0x37, 0x79, 0x1f, 0x40, 0x37, 0x0c, 0xea, 0xfb, 0x5b, 0xae, 0xa9, 0xf6, 0x03, 0x6f,
+ 0x31, 0xf5, 0x65, 0x39, 0x2c, 0x7d, 0x7c, 0xd2, 0xfa, 0xa9, 0xac, 0x58, 0xe5, 0x54, 0x3f, 0x47,
+ 0x15, 0x30, 0x06, 0x49, 0xbe, 0x09, 0x20, 0x36, 0xe1, 0x61, 0x3a, 0x85, 0xa7, 0x58, 0xae, 0x16,
+ 0x54, 0xb6, 0xae, 0x85, 0xaf, 0x0f, 0x74, 0x27, 0xb0, 0x82, 0x63, 0x91, 0xbd, 0xe6, 0x41, 0x88,
+ 0x82, 0x31, 0x44, 0xed, 0x9f, 0x16, 0xa1, 0xae, 0x6c, 0xe6, 0xcf, 0xc0, 0x50, 0xda, 0x4d, 0x18,
+ 0x4a, 0x27, 0x14, 0x9d, 0x9c, 0x65, 0x26, 0x75, 0x53, 0x66, 0xd2, 0xf5, 0xfc, 0xa2, 0x9e, 0x6c,
+ 0x24, 0xfd, 0xad, 0x22, 0xcc, 0x28, 0xd6, 0xbc, 0x26, 0xd2, 0xaf, 0xc2, 0xac, 0x88, 0x2a, 0xd8,
+ 0xd2, 0x1f, 0x89, 0x44, 0x3e, 0xbc, 0xc3, 0xca, 0x22, 0x20, 0xb8, 0x9d, 0x24, 0x61, 0x9a, 0x97,
+ 0x0d, 0x6b, 0x51, 0xb4, 0xcb, 0x36, 0x61, 0xc2, 0x0f, 0x29, 0xf6, 0x9b, 0x7c, 0x58, 0xb7, 0x53,
+ 0x34, 0x1c, 0xe2, 0x4e, 0xdb, 0x68, 0xcb, 0x17, 0x60, 0xa3, 0xfd, 0xf7, 0x05, 0x98, 0x8a, 0xfa,
+ 0xeb, 0xc2, 0x2d, 0xb4, 0xfb, 0x49, 0x0b, 0xed, 0x72, 0xee, 0xe1, 0x30, 0xc2, 0x3e, 0xfb, 0x17,
+ 0x6b, 0x90, 0x08, 0x92, 0x27, 0x7b, 0x70, 0xcd, 0xca, 0x0c, 0xf5, 0x8b, 0xcd, 0x36, 0xe1, 0xa9,
+ 0xef, 0x8d, 0x91, 0x9c, 0xf8, 0x04, 0x14, 0x32, 0x80, 0xfa, 0x11, 0xf5, 0x02, 0xcb, 0xa0, 0xea,
+ 0xf9, 0xd6, 0x73, 0xab, 0x64, 0xd2, 0x0a, 0x1d, 0xf6, 0xe9, 0x03, 0x29, 0x00, 0x43, 0x51, 0x64,
+ 0x0f, 0x2a, 0xd4, 0xec, 0x52, 0x95, 0x5a, 0x29, 0x67, 0x8a, 0xda, 0xb0, 0x3f, 0xd9, 0x3f, 0x1f,
+ 0x05, 0x34, 0xf1, 0xa1, 0x61, 0x2b, 0x2f, 0xa3, 0x1c, 0x87, 0xe3, 0x2b, 0x58, 0xa1, 0xbf, 0x32,
+ 0xca, 0xba, 0x10, 0x16, 0x61, 0x24, 0x87, 0x1c, 0x86, 0xe6, 0xce, 0xca, 0x84, 0x26, 0x8f, 0x27,
+ 0x18, 0x3b, 0x7d, 0x68, 0x3c, 0xd4, 0x03, 0xea, 0xf5, 0x74, 0xef, 0x50, 0xee, 0x36, 0xc6, 0x7f,
+ 0xc2, 0x77, 0x14, 0x52, 0xf4, 0x84, 0x61, 0x11, 0x46, 0x72, 0x88, 0x0b, 0x8d, 0x40, 0xaa, 0xcf,
+ 0xca, 0xa6, 0x3b, 0xbe, 0x50, 0xa5, 0x88, 0xfb, 0x32, 0x58, 0x5e, 0xfd, 0xc5, 0x48, 0x06, 0x39,
+ 0x4a, 0xe4, 0x33, 0x17, 0x59, 0xec, 0xdb, 0x39, 0x7c, 0x03, 0x12, 0x2a, 0x5a, 0x6e, 0xb2, 0xf3,
+ 0xa2, 0x6b, 0xff, 0xb3, 0x12, 0x4d, 0xcb, 0xcf, 0xda, 0x4e, 0xf8, 0xa5, 0xa4, 0x9d, 0xf0, 0x7a,
+ 0xda, 0x4e, 0x98, 0x72, 0x56, 0x9f, 0x3f, 0xbc, 0x36, 0x65, 0x5e, 0x2b, 0x5f, 0x80, 0x79, 0xed,
+ 0x35, 0x68, 0x1e, 0xf1, 0x99, 0x40, 0xe4, 0x69, 0xaa, 0xf0, 0x65, 0x84, 0xcf, 0xec, 0x0f, 0xa2,
+ 0x62, 0x8c, 0xf3, 0xb0, 0x2a, 0xf2, 0x06, 0x97, 0x30, 0xa5, 0xb1, 0xac, 0xd2, 0x89, 0x8a, 0x31,
+ 0xce, 0xc3, 0x23, 0xf3, 0x2c, 0xe7, 0x50, 0x54, 0xa8, 0xf1, 0x0a, 0x22, 0x32, 0x4f, 0x15, 0x62,
+ 0x44, 0x27, 0x37, 0xa1, 0x3e, 0x30, 0xf7, 0x05, 0x6f, 0x9d, 0xf3, 0x72, 0x0d, 0x73, 0x77, 0x75,
+ 0x4d, 0xe6, 0x8d, 0x52, 0x54, 0xd6, 0x92, 0x9e, 0xde, 0x57, 0x04, 0xbe, 0x37, 0x94, 0x2d, 0xd9,
+ 0x8a, 0x8a, 0x31, 0xce, 0x43, 0x7e, 0x06, 0x66, 0x3c, 0x6a, 0x0e, 0x0c, 0x1a, 0xd6, 0x02, 0x5e,
+ 0x4b, 0x26, 0xd4, 0x8c, 0x53, 0x30, 0xc5, 0x39, 0xc2, 0x48, 0xd8, 0x1c, 0xcb, 0x48, 0xf8, 0x35,
+ 0x98, 0x31, 0x3d, 0xdd, 0x72, 0xa8, 0x79, 0xdf, 0xe1, 0x11, 0x09, 0x32, 0x3e, 0x30, 0xb4, 0x90,
+ 0xaf, 0x26, 0xa8, 0x98, 0xe2, 0xd6, 0xfe, 0x65, 0x11, 0x2a, 0x22, 0xcd, 0xe7, 0x06, 0x5c, 0xb2,
+ 0x1c, 0x2b, 0xb0, 0x74, 0x7b, 0x95, 0xda, 0xfa, 0x71, 0x32, 0x2a, 0xe3, 0x65, 0xb6, 0xd1, 0xde,
+ 0x18, 0x26, 0x63, 0x56, 0x1d, 0xd6, 0x39, 0x81, 0x58, 0xbe, 0x15, 0x8a, 0xb0, 0xa3, 0x89, 0xdc,
+ 0xd0, 0x09, 0x0a, 0xa6, 0x38, 0x99, 0x32, 0xd4, 0xcf, 0x08, 0xb9, 0xe0, 0xca, 0x50, 0x32, 0xd0,
+ 0x22, 0xc9, 0xc7, 0x95, 0xf4, 0x01, 0x57, 0x88, 0xc3, 0x53, 0x38, 0x32, 0xaa, 0x4a, 0x28, 0xe9,
+ 0x29, 0x1a, 0x0e, 0x71, 0x33, 0x84, 0x7d, 0xdd, 0xb2, 0x07, 0x1e, 0x8d, 0x10, 0x2a, 0x11, 0xc2,
+ 0x5a, 0x8a, 0x86, 0x43, 0xdc, 0xda, 0x7f, 0x2f, 0x00, 0x19, 0x3e, 0x57, 0x40, 0x0e, 0xa0, 0xea,
+ 0x70, 0x5b, 0x64, 0xee, 0x94, 0xf4, 0x31, 0x93, 0xa6, 0x58, 0x24, 0x64, 0x81, 0xc4, 0x27, 0x0e,
+ 0xd4, 0xe9, 0xa3, 0x80, 0x7a, 0x4e, 0x78, 0xce, 0x68, 0x32, 0xe9, 0xef, 0xc5, 0xde, 0x4c, 0x22,
+ 0x63, 0x28, 0x43, 0xfb, 0xbd, 0x22, 0x34, 0x63, 0x7c, 0x4f, 0xdb, 0xe2, 0xf3, 0x54, 0x07, 0xc2,
+ 0x04, 0xb8, 0xeb, 0xd9, 0x72, 0xbe, 0x8b, 0xa5, 0x3a, 0x90, 0x24, 0xdc, 0xc4, 0x38, 0x1f, 0x59,
+ 0x02, 0xe8, 0xe9, 0x7e, 0x40, 0x3d, 0xae, 0x0b, 0xa5, 0x12, 0x0c, 0x6c, 0x85, 0x14, 0x8c, 0x71,
+ 0x91, 0x1b, 0xf2, 0x02, 0x83, 0x72, 0x32, 0x21, 0xe4, 0x88, 0xdb, 0x09, 0x2a, 0x13, 0xb8, 0x9d,
+ 0x80, 0x74, 0x61, 0x4e, 0xb5, 0x5a, 0x51, 0xcf, 0x97, 0x2e, 0x50, 0x0c, 0xd4, 0x14, 0x04, 0x0e,
+ 0x81, 0x6a, 0xdf, 0x2d, 0xc0, 0x74, 0xc2, 0x00, 0x25, 0x52, 0x39, 0xaa, 0x53, 0x31, 0x89, 0x54,
+ 0x8e, 0xb1, 0xc3, 0x2c, 0x5f, 0x84, 0xaa, 0xe8, 0xa0, 0x74, 0xb0, 0xab, 0xe8, 0x42, 0x94, 0x54,
+ 0xb6, 0xb2, 0x48, 0x13, 0x77, 0x7a, 0x65, 0x91, 0x36, 0x70, 0x54, 0x74, 0xe1, 0x39, 0x12, 0xad,
+ 0x93, 0x3d, 0x1d, 0xf3, 0x1c, 0x89, 0x72, 0x0c, 0x39, 0xb4, 0x7f, 0xc8, 0xdb, 0x1d, 0x78, 0xc7,
+ 0xe1, 0xce, 0xba, 0x0b, 0x35, 0x19, 0xe0, 0x28, 0x3f, 0x8d, 0xb7, 0x73, 0x58, 0xc5, 0x38, 0x8e,
+ 0x0c, 0xe5, 0xd3, 0x8d, 0xc3, 0xfb, 0xfb, 0xfb, 0xa8, 0xd0, 0xc9, 0x2d, 0x68, 0xb8, 0x8e, 0xfc,
+ 0x82, 0xe5, 0xe3, 0xff, 0x18, 0x5b, 0x39, 0xee, 0xab, 0xc2, 0xc7, 0x27, 0xad, 0x2b, 0xe1, 0x9f,
+ 0x44, 0x23, 0x31, 0xaa, 0xa9, 0xfd, 0xd9, 0x02, 0xbc, 0x84, 0xae, 0x6d, 0x5b, 0x4e, 0x37, 0xe9,
+ 0x7a, 0x24, 0x36, 0xcc, 0xf4, 0xf4, 0x47, 0xbb, 0x8e, 0x7e, 0xa4, 0x5b, 0xb6, 0xbe, 0x67, 0xd3,
+ 0xa7, 0xee, 0x8c, 0x07, 0x81, 0x65, 0x2f, 0x88, 0x0b, 0x1d, 0x17, 0x36, 0x9c, 0xe0, 0xbe, 0xd7,
+ 0x09, 0x3c, 0xcb, 0xe9, 0x8a, 0x59, 0x72, 0x2b, 0x81, 0x85, 0x29, 0x6c, 0xed, 0xf7, 0x4b, 0xc0,
+ 0x83, 0xec, 0xc8, 0x97, 0xa1, 0xd1, 0xa3, 0xc6, 0x81, 0xee, 0x58, 0xbe, 0x4a, 0x8a, 0x7b, 0x95,
+ 0x3d, 0xd7, 0x96, 0x2a, 0x7c, 0xcc, 0x5e, 0xc5, 0x72, 0x67, 0x93, 0x9f, 0x63, 0x89, 0x78, 0x89,
+ 0x01, 0xd5, 0xae, 0xef, 0xeb, 0x7d, 0x2b, 0x77, 0x8c, 0x87, 0x48, 0x42, 0x2a, 0xa6, 0x23, 0xf1,
+ 0x1b, 0x25, 0x34, 0x31, 0xa0, 0xd2, 0xb7, 0x75, 0xcb, 0xc9, 0x7d, 0x01, 0x19, 0x7b, 0x82, 0x6d,
+ 0x86, 0x24, 0x4c, 0x95, 0xfc, 0x27, 0x0a, 0x6c, 0x32, 0x80, 0xa6, 0x6f, 0x78, 0x7a, 0xcf, 0x3f,
+ 0xd0, 0x97, 0x5e, 0x7f, 0x23, 0xb7, 0xf2, 0x1f, 0x89, 0x12, 0xba, 0xc8, 0x0a, 0x2e, 0x6f, 0x75,
+ 0x6e, 0x2f, 0x2f, 0xbd, 0xfe, 0x06, 0xc6, 0xe5, 0xc4, 0xc5, 0xbe, 0xfe, 0xda, 0x92, 0x9c, 0x41,
+ 0x26, 0x2e, 0xf6, 0xf5, 0xd7, 0x96, 0x30, 0x2e, 0x47, 0xfb, 0x5f, 0x05, 0x68, 0x84, 0xbc, 0x64,
+ 0x17, 0x80, 0xcd, 0x65, 0x32, 0x6d, 0xe8, 0xb9, 0x2e, 0x6b, 0xe1, 0xd6, 0x9e, 0xdd, 0xb0, 0x32,
+ 0xc6, 0x80, 0x32, 0xf2, 0xaa, 0x16, 0x27, 0x9d, 0x57, 0x75, 0x11, 0x1a, 0x07, 0xba, 0x63, 0xfa,
+ 0x07, 0xfa, 0xa1, 0x98, 0xd2, 0x63, 0x99, 0x86, 0x6f, 0x2b, 0x02, 0x46, 0x3c, 0xda, 0x3f, 0xae,
+ 0x82, 0x08, 0xcc, 0x60, 0x93, 0x8e, 0x69, 0xf9, 0xe2, 0x64, 0x40, 0x81, 0xd7, 0x0c, 0x27, 0x9d,
+ 0x55, 0x59, 0x8e, 0x21, 0x07, 0xb9, 0x0a, 0xa5, 0x9e, 0xe5, 0x48, 0x0d, 0x84, 0x1b, 0x72, 0xb7,
+ 0x2c, 0x07, 0x59, 0x19, 0x27, 0xe9, 0x8f, 0xa4, 0x86, 0x21, 0x48, 0xfa, 0x23, 0x64, 0x65, 0xe4,
+ 0xab, 0x30, 0x6b, 0xbb, 0xee, 0x21, 0x9b, 0x3e, 0x94, 0x22, 0x22, 0xbc, 0xea, 0xdc, 0xb4, 0xb2,
+ 0x99, 0x24, 0x61, 0x9a, 0x97, 0xec, 0xc2, 0xcb, 0x1f, 0x52, 0xcf, 0x95, 0xf3, 0x65, 0xc7, 0xa6,
+ 0xb4, 0xaf, 0x60, 0x84, 0x6a, 0xcc, 0x43, 0x48, 0x7f, 0x3e, 0x9b, 0x05, 0x47, 0xd5, 0xe5, 0xc1,
+ 0xe8, 0xba, 0xd7, 0xa5, 0xc1, 0xb6, 0xe7, 0x32, 0xdd, 0xc5, 0x72, 0xba, 0x0a, 0xb6, 0x1a, 0xc1,
+ 0xee, 0x64, 0xb3, 0xe0, 0xa8, 0xba, 0xe4, 0x5d, 0x98, 0x17, 0x24, 0xa1, 0xb6, 0x2c, 0x8b, 0x69,
+ 0xc6, 0xb2, 0xd5, 0xbd, 0x9d, 0xd3, 0xc2, 0x5f, 0xb6, 0x33, 0x82, 0x07, 0x47, 0xd6, 0x26, 0x77,
+ 0x60, 0x4e, 0x79, 0x4b, 0xb7, 0xa9, 0xd7, 0x09, 0x83, 0x75, 0xa6, 0xdb, 0xd7, 0x4f, 0x4f, 0x5a,
+ 0xd7, 0x56, 0x69, 0xdf, 0xa3, 0x46, 0xdc, 0xeb, 0xac, 0xb8, 0x70, 0xa8, 0x1e, 0x41, 0xb8, 0xc2,
+ 0x23, 0x72, 0x76, 0xfb, 0x2b, 0xae, 0x6b, 0x9b, 0xee, 0x43, 0x47, 0x3d, 0xbb, 0x50, 0xd8, 0xb9,
+ 0x83, 0xb4, 0x93, 0xc9, 0x81, 0x23, 0x6a, 0xb2, 0x27, 0xe7, 0x94, 0x55, 0xf7, 0xa1, 0x93, 0x46,
+ 0x85, 0xe8, 0xc9, 0x3b, 0x23, 0x78, 0x70, 0x64, 0x6d, 0xb2, 0x06, 0x24, 0xfd, 0x04, 0xbb, 0x7d,
+ 0xe9, 0xc2, 0xbf, 0x22, 0x32, 0x00, 0xa5, 0xa9, 0x98, 0x51, 0x83, 0x6c, 0xc2, 0xe5, 0x74, 0x29,
+ 0x13, 0x27, 0xbd, 0xf9, 0x3c, 0xf7, 0x2f, 0x66, 0xd0, 0x31, 0xb3, 0x96, 0xf6, 0x4f, 0x8a, 0x30,
+ 0x9d, 0x48, 0x19, 0xf1, 0xdc, 0x1d, 0xcd, 0x67, 0x9b, 0x87, 0x9e, 0xdf, 0xdd, 0x58, 0xbd, 0x4d,
+ 0x75, 0x93, 0x7a, 0x77, 0xa9, 0x4a, 0xef, 0x21, 0x96, 0xc5, 0x04, 0x05, 0x53, 0x9c, 0x64, 0x1f,
+ 0x2a, 0xc2, 0x4f, 0x90, 0xf7, 0xda, 0x1f, 0xd5, 0x47, 0xdc, 0x59, 0x20, 0xef, 0xca, 0x72, 0x3d,
+ 0x8a, 0x02, 0x5e, 0x0b, 0x60, 0x2a, 0xce, 0xc1, 0x26, 0x92, 0x48, 0xed, 0xad, 0x25, 0x54, 0xde,
+ 0x0d, 0x28, 0x05, 0xc1, 0xb8, 0x87, 0xfe, 0x85, 0xdf, 0x69, 0x67, 0x13, 0x19, 0x86, 0xb6, 0xcf,
+ 0xde, 0x9d, 0xef, 0x5b, 0xae, 0x23, 0x33, 0xc0, 0xef, 0x42, 0x4d, 0xee, 0x9e, 0xc6, 0x4c, 0x5a,
+ 0xc0, 0x75, 0x25, 0x65, 0x76, 0x55, 0x58, 0xda, 0x7f, 0x28, 0x42, 0x23, 0x34, 0x93, 0x9c, 0x21,
+ 0xb3, 0xba, 0x0b, 0x8d, 0x30, 0xa2, 0x30, 0xf7, 0x9d, 0xa6, 0x51, 0xa0, 0x1b, 0xdf, 0xd9, 0x87,
+ 0x7f, 0x31, 0x92, 0x11, 0x8f, 0x56, 0x2c, 0xe5, 0x88, 0x56, 0xec, 0x43, 0x2d, 0xf0, 0xac, 0x6e,
+ 0x57, 0xee, 0x12, 0xf2, 0x84, 0x2b, 0x86, 0xdd, 0xb5, 0x23, 0x00, 0x65, 0xcf, 0x8a, 0x3f, 0xa8,
+ 0xc4, 0x68, 0x1f, 0xc0, 0x5c, 0x9a, 0x93, 0xab, 0xd0, 0xc6, 0x01, 0x35, 0x07, 0xb6, 0xea, 0xe3,
+ 0x48, 0x85, 0x96, 0xe5, 0x18, 0x72, 0x90, 0x9b, 0x50, 0x67, 0xaf, 0xe9, 0x43, 0xd7, 0x51, 0x6a,
+ 0x2c, 0xdf, 0x8d, 0xec, 0xc8, 0x32, 0x0c, 0xa9, 0xda, 0x7f, 0x2d, 0xc1, 0xd5, 0xc8, 0xd8, 0xb5,
+ 0xa5, 0x3b, 0x7a, 0xf7, 0x0c, 0x17, 0x59, 0x7e, 0x76, 0x0c, 0xec, 0xbc, 0xd7, 0x63, 0x94, 0x9e,
+ 0x83, 0xeb, 0x31, 0xfe, 0x4f, 0x11, 0x78, 0xf4, 0x33, 0xf9, 0x36, 0x4c, 0xe9, 0xb1, 0x3b, 0x8c,
+ 0xe5, 0xeb, 0xbc, 0x95, 0xfb, 0x75, 0xf2, 0x20, 0xeb, 0x30, 0x00, 0x2e, 0x5e, 0x8a, 0x09, 0x81,
+ 0xc4, 0x85, 0xfa, 0xbe, 0x6e, 0xdb, 0x4c, 0x17, 0xca, 0xed, 0xbc, 0x4b, 0x08, 0xe7, 0xc3, 0x7c,
+ 0x4d, 0x42, 0x63, 0x28, 0x84, 0x7c, 0x54, 0x80, 0x69, 0x2f, 0xbe, 0x5d, 0x93, 0x2f, 0x24, 0x4f,
+ 0x68, 0x47, 0x0c, 0x2d, 0x1e, 0x6e, 0x17, 0xdf, 0x13, 0x26, 0x65, 0x6a, 0xff, 0xa5, 0x00, 0xd3,
+ 0x1d, 0xdb, 0x32, 0x2d, 0xa7, 0x7b, 0x81, 0xb7, 0x73, 0xdc, 0x87, 0x8a, 0x6f, 0x5b, 0x26, 0x1d,
+ 0x73, 0x35, 0x11, 0xeb, 0x18, 0x03, 0x40, 0x81, 0x93, 0xbc, 0xee, 0xa3, 0x74, 0x86, 0xeb, 0x3e,
+ 0xfe, 0xb0, 0x0a, 0x32, 0x8e, 0x9f, 0x0c, 0xa0, 0xd1, 0x55, 0xb7, 0x08, 0xc8, 0x67, 0xbc, 0x9d,
+ 0x23, 0x03, 0x65, 0xe2, 0x3e, 0x02, 0x31, 0xf7, 0x87, 0x85, 0x18, 0x49, 0x22, 0x34, 0x79, 0x79,
+ 0xf6, 0x6a, 0xce, 0xcb, 0xb3, 0x85, 0xb8, 0xe1, 0xeb, 0xb3, 0x75, 0x28, 0x1f, 0x04, 0x41, 0x5f,
+ 0x0e, 0xa6, 0xf1, 0x0f, 0x6a, 0x44, 0x49, 0x90, 0x84, 0x4e, 0xc4, 0xfe, 0x23, 0x87, 0x66, 0x22,
+ 0x1c, 0x3d, 0xbc, 0xa2, 0x70, 0x25, 0x57, 0x18, 0x49, 0x5c, 0x04, 0xfb, 0x8f, 0x1c, 0x9a, 0xfc,
+ 0x22, 0x34, 0x03, 0x4f, 0x77, 0xfc, 0x7d, 0xd7, 0xeb, 0x51, 0x4f, 0xee, 0x51, 0xd7, 0x72, 0xdc,
+ 0x1f, 0xbd, 0x13, 0xa1, 0x09, 0x93, 0x6c, 0xa2, 0x08, 0xe3, 0xd2, 0xc8, 0x21, 0xd4, 0x07, 0xa6,
+ 0x68, 0x98, 0x34, 0x83, 0x2d, 0xe7, 0xb9, 0x12, 0x3c, 0x16, 0x24, 0xa2, 0xfe, 0x61, 0x28, 0x20,
+ 0x79, 0x1b, 0x67, 0x6d, 0x52, 0xb7, 0x71, 0xc6, 0x47, 0x63, 0x56, 0x86, 0x16, 0xd2, 0x93, 0x7a,
+ 0xad, 0xd3, 0x95, 0x31, 0x6e, 0x6b, 0xb9, 0x55, 0x4e, 0x21, 0xb2, 0x19, 0xea, 0xc6, 0x4e, 0x17,
+ 0x95, 0x0c, 0xad, 0x07, 0xd2, 0x77, 0x44, 0x8c, 0xc4, 0x4d, 0x46, 0xe2, 0xd8, 0xe0, 0xe2, 0xd9,
+ 0xe6, 0x83, 0xf0, 0x4a, 0x9d, 0x58, 0x26, 0xf5, 0xcc, 0x2b, 0x8b, 0xb4, 0xff, 0x58, 0x84, 0xd2,
+ 0xce, 0x66, 0x47, 0x64, 0x47, 0xe5, 0x77, 0xa3, 0xd1, 0xce, 0xa1, 0xd5, 0x7f, 0x40, 0x3d, 0x6b,
+ 0xff, 0x58, 0x6e, 0xbd, 0x63, 0xd9, 0x51, 0xd3, 0x1c, 0x98, 0x51, 0x8b, 0xbc, 0x07, 0x53, 0x86,
+ 0xbe, 0x42, 0xbd, 0x60, 0x1c, 0xc3, 0x02, 0x3f, 0x1f, 0xbd, 0xb2, 0x1c, 0x55, 0xc7, 0x04, 0x18,
+ 0xd9, 0x05, 0x30, 0x22, 0xe8, 0xd2, 0xb9, 0xcd, 0x21, 0x31, 0xe0, 0x18, 0x10, 0x41, 0x68, 0x1c,
+ 0x32, 0x56, 0x8e, 0x5a, 0x3e, 0x0f, 0x2a, 0x1f, 0x39, 0x77, 0x55, 0x5d, 0x8c, 0x60, 0x34, 0x07,
+ 0xa6, 0x13, 0xd7, 0x1b, 0x91, 0xaf, 0x40, 0xdd, 0xed, 0xc7, 0xa6, 0xd3, 0x06, 0x8f, 0xa6, 0xad,
+ 0xdf, 0x97, 0x65, 0x8f, 0x4f, 0x5a, 0xd3, 0x9b, 0x6e, 0xd7, 0x32, 0x54, 0x01, 0x86, 0xec, 0x44,
+ 0x83, 0x2a, 0x3f, 0xd4, 0xa8, 0x2e, 0x37, 0xe2, 0x6b, 0x07, 0xbf, 0x7f, 0xc4, 0x47, 0x49, 0xd1,
+ 0x7e, 0xa9, 0x0c, 0x91, 0xc7, 0x95, 0xf8, 0x50, 0x15, 0x87, 0x36, 0xe4, 0xcc, 0x7d, 0xa1, 0xe7,
+ 0x43, 0xa4, 0x28, 0xd2, 0x85, 0xd2, 0x07, 0xee, 0x5e, 0xee, 0x89, 0x3b, 0x96, 0xcd, 0x40, 0xd8,
+ 0xca, 0x62, 0x05, 0xc8, 0x24, 0x90, 0xbf, 0x56, 0x80, 0x17, 0xfd, 0xb4, 0xea, 0x2b, 0x87, 0x03,
+ 0xe6, 0xd7, 0xf1, 0xd3, 0xca, 0xb4, 0x0c, 0x7b, 0x1e, 0x45, 0xc6, 0xe1, 0xb6, 0xb0, 0xfe, 0x17,
+ 0xae, 0x50, 0x39, 0x9c, 0xd6, 0x73, 0x5e, 0xbe, 0x9a, 0xec, 0xff, 0x64, 0x19, 0x4a, 0x51, 0xda,
+ 0xaf, 0x14, 0xa1, 0x19, 0x9b, 0xad, 0x73, 0xdf, 0x99, 0xf5, 0x28, 0x75, 0x67, 0xd6, 0xf6, 0xf8,
+ 0x91, 0x01, 0x51, 0xab, 0x2e, 0xfa, 0xda, 0xac, 0x7f, 0x5e, 0x84, 0xd2, 0xee, 0xea, 0x5a, 0x72,
+ 0xd3, 0x5a, 0x78, 0x06, 0x9b, 0xd6, 0x03, 0xa8, 0xed, 0x0d, 0x2c, 0x3b, 0xb0, 0x9c, 0xdc, 0xf9,
+ 0x56, 0xd4, 0x15, 0x63, 0xd2, 0xd7, 0x21, 0x50, 0x51, 0xc1, 0x93, 0x2e, 0xd4, 0xba, 0x22, 0xe1,
+ 0x65, 0xee, 0x78, 0x49, 0x99, 0x38, 0x53, 0x08, 0x92, 0x7f, 0x50, 0xa1, 0x6b, 0xc7, 0x50, 0xdd,
+ 0x5d, 0x95, 0x6a, 0xff, 0xb3, 0xed, 0x4d, 0xed, 0x17, 0x21, 0xd4, 0x02, 0x9e, 0xbd, 0xf0, 0xdf,
+ 0x29, 0x40, 0x52, 0xf1, 0x79, 0xf6, 0xa3, 0xe9, 0x30, 0x3d, 0x9a, 0x56, 0x27, 0xf1, 0xf1, 0x65,
+ 0x0f, 0x28, 0xed, 0xdf, 0x15, 0x20, 0x75, 0xd2, 0x8e, 0xbc, 0x21, 0x73, 0xa7, 0x25, 0x03, 0xd3,
+ 0x54, 0xee, 0x34, 0x92, 0xe4, 0x8e, 0xe5, 0x50, 0xfb, 0x98, 0x6d, 0xd7, 0xe2, 0x0e, 0x34, 0xd9,
+ 0xfc, 0x7b, 0xe3, 0x6f, 0xd7, 0xb2, 0xdc, 0x71, 0x32, 0x78, 0x32, 0x4e, 0xc2, 0xa4, 0x5c, 0xed,
+ 0x1f, 0x15, 0xa1, 0xfa, 0xcc, 0x0e, 0xfe, 0xd3, 0x44, 0x3c, 0xeb, 0x4a, 0xce, 0xd9, 0x7e, 0x64,
+ 0x34, 0x6b, 0x2f, 0x15, 0xcd, 0x9a, 0xf7, 0x4e, 0xef, 0xa7, 0xc4, 0xb2, 0xfe, 0x9b, 0x02, 0xc8,
+ 0xb5, 0x66, 0xc3, 0xf1, 0x03, 0xdd, 0x31, 0x28, 0x31, 0xc2, 0x85, 0x2d, 0x6f, 0xd0, 0x94, 0x0c,
+ 0x2c, 0x14, 0xba, 0x0c, 0xff, 0xad, 0x16, 0x32, 0xf2, 0x93, 0x50, 0x3f, 0x70, 0xfd, 0x80, 0x2f,
+ 0x5e, 0xc5, 0xa4, 0xc9, 0xec, 0xb6, 0x2c, 0xc7, 0x90, 0x23, 0xed, 0xce, 0xae, 0x8c, 0x76, 0x67,
+ 0x6b, 0xbf, 0x59, 0x84, 0xa9, 0x4f, 0x4b, 0xf6, 0x82, 0xac, 0xe8, 0xdf, 0x52, 0xce, 0xe8, 0xdf,
+ 0xf2, 0x79, 0xa2, 0x7f, 0xb5, 0xef, 0x17, 0x00, 0x9e, 0x59, 0xea, 0x04, 0x33, 0x19, 0x98, 0x9b,
+ 0x7b, 0x5c, 0x65, 0x87, 0xe5, 0xfe, 0xfd, 0x8a, 0x7a, 0x24, 0x1e, 0x94, 0xfb, 0x71, 0x01, 0x66,
+ 0xf4, 0x44, 0xa0, 0x6b, 0x6e, 0x7d, 0x39, 0x15, 0x37, 0x1b, 0xc6, 0x69, 0x25, 0xcb, 0x31, 0x25,
+ 0x96, 0xbc, 0x19, 0xa5, 0xed, 0xbe, 0x17, 0x0d, 0xfb, 0xa1, 0x7c, 0xdb, 0x5c, 0x77, 0x4b, 0x70,
+ 0x3e, 0x25, 0xb0, 0xb8, 0x34, 0x91, 0xc0, 0xe2, 0xf8, 0x91, 0xc9, 0xf2, 0x13, 0x8f, 0x4c, 0x1e,
+ 0x41, 0x63, 0xdf, 0x73, 0x7b, 0x3c, 0x76, 0x57, 0x5e, 0x8c, 0x7d, 0x2b, 0xc7, 0x42, 0xd9, 0xdb,
+ 0xb3, 0x1c, 0x6a, 0xf2, 0xb8, 0xe0, 0xd0, 0x70, 0xb5, 0xa6, 0xf0, 0x31, 0x12, 0xc5, 0x6d, 0xfd,
+ 0xae, 0x90, 0x5a, 0x9d, 0xa4, 0xd4, 0x70, 0x2e, 0xd9, 0x11, 0xe8, 0xa8, 0xc4, 0x24, 0xe3, 0x75,
+ 0x6b, 0xcf, 0x26, 0x5e, 0x57, 0xfb, 0x0b, 0x35, 0x35, 0x81, 0x3d, 0x77, 0x19, 0x62, 0x3f, 0x3b,
+ 0xe8, 0xde, 0xa5, 0x43, 0xa7, 0xd0, 0xeb, 0xcf, 0xf0, 0x14, 0x7a, 0x63, 0x32, 0xa7, 0xd0, 0x21,
+ 0xdf, 0x29, 0xf4, 0xe6, 0x84, 0x4e, 0xa1, 0x4f, 0x4d, 0xea, 0x14, 0xfa, 0xf4, 0x58, 0xa7, 0xd0,
+ 0x67, 0xce, 0x74, 0x0a, 0xfd, 0xa4, 0x04, 0xa9, 0xcd, 0xf8, 0x67, 0x8e, 0xb7, 0xff, 0xa7, 0x1c,
+ 0x6f, 0xdf, 0x29, 0x42, 0x34, 0x11, 0x9f, 0x33, 0x30, 0xe9, 0x5d, 0xa8, 0xf7, 0xf4, 0x47, 0x3c,
+ 0x70, 0x3a, 0xcf, 0xc5, 0xca, 0x5b, 0x12, 0x03, 0x43, 0x34, 0xe2, 0x03, 0x58, 0xe1, 0xe5, 0x06,
+ 0xb9, 0x5d, 0x18, 0xd1, 0x3d, 0x09, 0xc2, 0x48, 0x1a, 0xfd, 0xc7, 0x98, 0x18, 0xed, 0x5f, 0x17,
+ 0x41, 0xde, 0x82, 0x41, 0x28, 0x54, 0xf6, 0xad, 0x47, 0xd4, 0xcc, 0x1d, 0xee, 0x1c, 0xbb, 0xee,
+ 0x5e, 0xf8, 0x68, 0x78, 0x01, 0x0a, 0x74, 0x6e, 0x7c, 0x17, 0x3e, 0x37, 0xd9, 0x7f, 0x39, 0x8c,
+ 0xef, 0x71, 0xdf, 0x9d, 0x34, 0xbe, 0x8b, 0x22, 0x54, 0x32, 0x84, 0xad, 0x9f, 0x87, 0x5f, 0xe4,
+ 0x76, 0x31, 0x26, 0xc2, 0x38, 0x94, 0xad, 0xdf, 0x17, 0x69, 0x28, 0xa4, 0x8c, 0xf6, 0x2f, 0x7c,
+ 0xef, 0x87, 0xd7, 0x5f, 0xf8, 0xfe, 0x0f, 0xaf, 0xbf, 0xf0, 0x83, 0x1f, 0x5e, 0x7f, 0xe1, 0x97,
+ 0x4e, 0xaf, 0x17, 0xbe, 0x77, 0x7a, 0xbd, 0xf0, 0xfd, 0xd3, 0xeb, 0x85, 0x1f, 0x9c, 0x5e, 0x2f,
+ 0xfc, 0xa7, 0xd3, 0xeb, 0x85, 0xbf, 0xfc, 0x9f, 0xaf, 0xbf, 0xf0, 0xf3, 0x5f, 0x8e, 0x9a, 0xb0,
+ 0xa8, 0x9a, 0xb0, 0xa8, 0x04, 0x2e, 0xf6, 0x0f, 0xbb, 0x8b, 0xac, 0x09, 0x51, 0x89, 0x6a, 0xc2,
+ 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xea, 0x57, 0x1d, 0x48, 0x12, 0x9e, 0x00, 0x00,
}
func (m *AbstractPodTemplate) Marshal() (dAtA []byte, err error) {
@@ -4053,6 +4091,30 @@ func (m *Container) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ if m.LivenessProbe != nil {
+ {
+ size, err := m.LivenessProbe.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x5a
+ }
+ if m.ReadinessProbe != nil {
+ {
+ size, err := m.ReadinessProbe.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x52
+ }
if m.ImagePullPolicy != nil {
i -= len(*m.ImagePullPolicy)
copy(dAtA[i:], *m.ImagePullPolicy)
@@ -4170,6 +4232,30 @@ func (m *ContainerTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ if m.LivenessProbe != nil {
+ {
+ size, err := m.LivenessProbe.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if m.ReadinessProbe != nil {
+ {
+ size, err := m.ReadinessProbe.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
if len(m.EnvFrom) > 0 {
for iNdEx := len(m.EnvFrom) - 1; iNdEx >= 0; iNdEx-- {
{
@@ -7380,6 +7466,54 @@ func (m *PipelineStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *Probe) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Probe) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Probe) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.FailureThreshold != nil {
+ i = encodeVarintGenerated(dAtA, i, uint64(*m.FailureThreshold))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.SuccessThreshold != nil {
+ i = encodeVarintGenerated(dAtA, i, uint64(*m.SuccessThreshold))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.PeriodSeconds != nil {
+ i = encodeVarintGenerated(dAtA, i, uint64(*m.PeriodSeconds))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.TimeoutSeconds != nil {
+ i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.InitialDelaySeconds != nil {
+ i = encodeVarintGenerated(dAtA, i, uint64(*m.InitialDelaySeconds))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *RedisBufferService) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -9715,6 +9849,14 @@ func (m *Container) Size() (n int) {
l = len(*m.ImagePullPolicy)
n += 1 + l + sovGenerated(uint64(l))
}
+ if m.ReadinessProbe != nil {
+ l = m.ReadinessProbe.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ if m.LivenessProbe != nil {
+ l = m.LivenessProbe.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -9744,6 +9886,14 @@ func (m *ContainerTemplate) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
}
}
+ if m.ReadinessProbe != nil {
+ l = m.ReadinessProbe.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ if m.LivenessProbe != nil {
+ l = m.LivenessProbe.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -10892,6 +11042,30 @@ func (m *PipelineStatus) Size() (n int) {
return n
}
+func (m *Probe) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.InitialDelaySeconds != nil {
+ n += 1 + sovGenerated(uint64(*m.InitialDelaySeconds))
+ }
+ if m.TimeoutSeconds != nil {
+ n += 1 + sovGenerated(uint64(*m.TimeoutSeconds))
+ }
+ if m.PeriodSeconds != nil {
+ n += 1 + sovGenerated(uint64(*m.PeriodSeconds))
+ }
+ if m.SuccessThreshold != nil {
+ n += 1 + sovGenerated(uint64(*m.SuccessThreshold))
+ }
+ if m.FailureThreshold != nil {
+ n += 1 + sovGenerated(uint64(*m.FailureThreshold))
+ }
+ return n
+}
+
func (m *RedisBufferService) Size() (n int) {
if m == nil {
return 0
@@ -11838,6 +12012,8 @@ func (this *Container) String() string {
`Resources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Resources), "ResourceRequirements", "v1.ResourceRequirements", 1), `&`, ``, 1) + `,`,
`SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "SecurityContext", "v1.SecurityContext", 1) + `,`,
`ImagePullPolicy:` + valueToStringGenerated(this.ImagePullPolicy) + `,`,
+ `ReadinessProbe:` + strings.Replace(this.ReadinessProbe.String(), "Probe", "Probe", 1) + `,`,
+ `LivenessProbe:` + strings.Replace(this.LivenessProbe.String(), "Probe", "Probe", 1) + `,`,
`}`,
}, "")
return s
@@ -11862,6 +12038,8 @@ func (this *ContainerTemplate) String() string {
`SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "SecurityContext", "v1.SecurityContext", 1) + `,`,
`Env:` + repeatedStringForEnv + `,`,
`EnvFrom:` + repeatedStringForEnvFrom + `,`,
+ `ReadinessProbe:` + strings.Replace(this.ReadinessProbe.String(), "Probe", "Probe", 1) + `,`,
+ `LivenessProbe:` + strings.Replace(this.LivenessProbe.String(), "Probe", "Probe", 1) + `,`,
`}`,
}, "")
return s
@@ -12679,6 +12857,20 @@ func (this *PipelineStatus) String() string {
}, "")
return s
}
+func (this *Probe) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Probe{`,
+ `InitialDelaySeconds:` + valueToStringGenerated(this.InitialDelaySeconds) + `,`,
+ `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
+ `PeriodSeconds:` + valueToStringGenerated(this.PeriodSeconds) + `,`,
+ `SuccessThreshold:` + valueToStringGenerated(this.SuccessThreshold) + `,`,
+ `FailureThreshold:` + valueToStringGenerated(this.FailureThreshold) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *RedisBufferService) String() string {
if this == nil {
return "nil"
@@ -15624,6 +15816,78 @@ func (m *Container) Unmarshal(dAtA []byte) error {
s := k8s_io_api_core_v1.PullPolicy(dAtA[iNdEx:postIndex])
m.ImagePullPolicy = &s
iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadinessProbe", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ReadinessProbe == nil {
+ m.ReadinessProbe = &Probe{}
+ }
+ if err := m.ReadinessProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LivenessProbe", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LivenessProbe == nil {
+ m.LivenessProbe = &Probe{}
+ }
+ if err := m.LivenessProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -15843,6 +16107,78 @@ func (m *ContainerTemplate) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadinessProbe", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ReadinessProbe == nil {
+ m.ReadinessProbe = &Probe{}
+ }
+ if err := m.ReadinessProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LivenessProbe", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LivenessProbe == nil {
+ m.LivenessProbe = &Probe{}
+ }
+ if err := m.LivenessProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -26300,6 +26636,156 @@ func (m *PipelineStatus) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *Probe) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Probe: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Probe: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InitialDelaySeconds", wireType)
+ }
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.InitialDelaySeconds = &v
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType)
+ }
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.TimeoutSeconds = &v
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PeriodSeconds", wireType)
+ }
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.PeriodSeconds = &v
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SuccessThreshold", wireType)
+ }
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SuccessThreshold = &v
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FailureThreshold", wireType)
+ }
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.FailureThreshold = &v
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *RedisBufferService) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
diff --git a/pkg/apis/numaflow/v1alpha1/generated.proto b/pkg/apis/numaflow/v1alpha1/generated.proto
index 70936b9d47..035f4cf46b 100644
--- a/pkg/apis/numaflow/v1alpha1/generated.proto
+++ b/pkg/apis/numaflow/v1alpha1/generated.proto
@@ -304,6 +304,12 @@ message Container {
// +optional
optional string imagePullPolicy = 9;
+
+ // +optional
+ optional Probe readinessProbe = 10;
+
+ // +optional
+ optional Probe livenessProbe = 11;
}
// ContainerTemplate defines customized spec for a container
@@ -322,6 +328,12 @@ message ContainerTemplate {
// +optional
repeated k8s.io.api.core.v1.EnvFromSource envFrom = 5;
+
+ // +optional
+ optional Probe readinessProbe = 6;
+
+ // +optional
+ optional Probe livenessProbe = 7;
}
message DaemonTemplate {
@@ -1240,6 +1252,33 @@ message PipelineStatus {
optional bool drainedOnPause = 12;
}
+// Probe is used to customize the configuration for Readiness and Liveness probes.
+message Probe {
+ // Number of seconds after the container has started before liveness probes are initiated.
+ // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+ // +optional
+ optional int32 initialDelaySeconds = 1;
+
+ // Number of seconds after which the probe times out.
+ // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+ // +optional
+ optional int32 timeoutSeconds = 2;
+
+ // How often (in seconds) to perform the probe.
+ // +optional
+ optional int32 periodSeconds = 3;
+
+ // Minimum consecutive successes for the probe to be considered successful after having failed.
+ // Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
+ // +optional
+ optional int32 successThreshold = 4;
+
+ // Minimum consecutive failures for the probe to be considered failed after having succeeded.
+ // Defaults to 3. Minimum value is 1.
+ // +optional
+ optional int32 failureThreshold = 5;
+}
+
message RedisBufferService {
// Native brings up a native Redis service
optional NativeRedis native = 1;
diff --git a/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go b/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go
index 934d497878..f88d82e010 100644
--- a/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go
+++ b/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go
@@ -345,6 +345,18 @@ func (mv MonoVertex) GetPodSpec(req GetMonoVertexPodSpecReq) (*corev1.PodSpec, e
volumeMounts: volumeMounts,
})
+ var readyzInitDeploy, readyzPeriodSeconds, readyzTimeoutSeconds, readyzFailureThreshold int32 = 5, 10, 30, 6 // default values
+ var liveZInitDeploy, liveZPeriodSeconds, liveZTimeoutSeconds, liveZFailureThreshold int32 = 20, 60, 30, 5 // default values
+ if x := mv.Spec.ContainerTemplate; x != nil {
+ readyzInitDeploy = GetProbeInitialDelaySecondsOr(x.ReadinessProbe, readyzInitDeploy)
+ readyzPeriodSeconds = GetProbePeriodSecondsOr(x.ReadinessProbe, readyzPeriodSeconds)
+ readyzTimeoutSeconds = GetProbeTimeoutSecondsOr(x.ReadinessProbe, readyzTimeoutSeconds)
+ readyzFailureThreshold = GetProbeFailureThresholdOr(x.ReadinessProbe, readyzFailureThreshold)
+ liveZInitDeploy = GetProbeInitialDelaySecondsOr(x.LivenessProbe, liveZInitDeploy)
+ liveZPeriodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, liveZPeriodSeconds)
+ liveZTimeoutSeconds = GetProbeTimeoutSecondsOr(x.LivenessProbe, liveZTimeoutSeconds)
+ liveZFailureThreshold = GetProbeFailureThresholdOr(x.LivenessProbe, liveZFailureThreshold)
+ }
containers[0].ReadinessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
@@ -353,9 +365,10 @@ func (mv MonoVertex) GetPodSpec(req GetMonoVertexPodSpecReq) (*corev1.PodSpec, e
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 3,
- PeriodSeconds: 3,
- TimeoutSeconds: 1,
+ InitialDelaySeconds: readyzInitDeploy,
+ PeriodSeconds: readyzPeriodSeconds,
+ TimeoutSeconds: readyzTimeoutSeconds,
+ FailureThreshold: readyzFailureThreshold,
}
containers[0].LivenessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
@@ -365,9 +378,10 @@ func (mv MonoVertex) GetPodSpec(req GetMonoVertexPodSpecReq) (*corev1.PodSpec, e
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 20,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: liveZInitDeploy,
+ PeriodSeconds: liveZPeriodSeconds,
+ TimeoutSeconds: liveZTimeoutSeconds,
+ FailureThreshold: liveZFailureThreshold,
}
containers[0].Ports = []corev1.ContainerPort{
{Name: MonoVertexMetricsPortName, ContainerPort: MonoVertexMetricsPort},
diff --git a/pkg/apis/numaflow/v1alpha1/mono_vertex_types_test.go b/pkg/apis/numaflow/v1alpha1/mono_vertex_types_test.go
index 665acd8b32..ae6a62c09d 100644
--- a/pkg/apis/numaflow/v1alpha1/mono_vertex_types_test.go
+++ b/pkg/apis/numaflow/v1alpha1/mono_vertex_types_test.go
@@ -34,6 +34,20 @@ var (
Namespace: "default",
},
Spec: MonoVertexSpec{
+ ContainerTemplate: &ContainerTemplate{
+ ReadinessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](24),
+ PeriodSeconds: ptr.To[int32](25),
+ FailureThreshold: ptr.To[int32](2),
+ TimeoutSeconds: ptr.To[int32](21),
+ },
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](14),
+ PeriodSeconds: ptr.To[int32](15),
+ FailureThreshold: ptr.To[int32](1),
+ TimeoutSeconds: ptr.To[int32](11),
+ },
+ },
Scale: Scale{
Min: ptr.To[int32](2),
Max: ptr.To[int32](4),
@@ -195,6 +209,16 @@ func TestMonoVertexGetPodSpec(t *testing.T) {
}
assert.Contains(t, envNames, "ENV_VAR_NAME")
assert.Contains(t, envNames, EnvMonoVertexObject)
+ assert.NotNil(t, podSpec.Containers[0].ReadinessProbe)
+ assert.Equal(t, int32(24), podSpec.Containers[0].ReadinessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(25), podSpec.Containers[0].ReadinessProbe.PeriodSeconds)
+ assert.Equal(t, int32(2), podSpec.Containers[0].ReadinessProbe.FailureThreshold)
+ assert.Equal(t, int32(21), podSpec.Containers[0].ReadinessProbe.TimeoutSeconds)
+ assert.NotNil(t, podSpec.Containers[0].LivenessProbe)
+ assert.Equal(t, int32(14), podSpec.Containers[0].LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(15), podSpec.Containers[0].LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(1), podSpec.Containers[0].LivenessProbe.FailureThreshold)
+ assert.Equal(t, int32(11), podSpec.Containers[0].LivenessProbe.TimeoutSeconds)
})
}
diff --git a/pkg/apis/numaflow/v1alpha1/openapi_generated.go b/pkg/apis/numaflow/v1alpha1/openapi_generated.go
index 5987162567..bd59769897 100644
--- a/pkg/apis/numaflow/v1alpha1/openapi_generated.go
+++ b/pkg/apis/numaflow/v1alpha1/openapi_generated.go
@@ -89,6 +89,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineList": schema_pkg_apis_numaflow_v1alpha1_PipelineList(ref),
"github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineSpec": schema_pkg_apis_numaflow_v1alpha1_PipelineSpec(ref),
"github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineStatus": schema_pkg_apis_numaflow_v1alpha1_PipelineStatus(ref),
+ "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe": schema_pkg_apis_numaflow_v1alpha1_Probe(ref),
"github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.RedisBufferService": schema_pkg_apis_numaflow_v1alpha1_RedisBufferService(ref),
"github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.RedisConfig": schema_pkg_apis_numaflow_v1alpha1_RedisConfig(ref),
"github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.RedisSettings": schema_pkg_apis_numaflow_v1alpha1_RedisSettings(ref),
@@ -890,11 +891,21 @@ func schema_pkg_apis_numaflow_v1alpha1_Container(ref common.ReferenceCallback) c
Format: "",
},
},
+ "readinessProbe": {
+ SchemaProps: spec.SchemaProps{
+ Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe"),
+ },
+ },
+ "livenessProbe": {
+ SchemaProps: spec.SchemaProps{
+ Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe"),
+ },
+ },
},
},
},
Dependencies: []string{
- "k8s.io/api/core/v1.EnvFromSource", "k8s.io/api/core/v1.EnvVar", "k8s.io/api/core/v1.ResourceRequirements", "k8s.io/api/core/v1.SecurityContext", "k8s.io/api/core/v1.VolumeMount"},
+ "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe", "k8s.io/api/core/v1.EnvFromSource", "k8s.io/api/core/v1.EnvVar", "k8s.io/api/core/v1.ResourceRequirements", "k8s.io/api/core/v1.SecurityContext", "k8s.io/api/core/v1.VolumeMount"},
}
}
@@ -948,11 +959,21 @@ func schema_pkg_apis_numaflow_v1alpha1_ContainerTemplate(ref common.ReferenceCal
},
},
},
+ "readinessProbe": {
+ SchemaProps: spec.SchemaProps{
+ Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe"),
+ },
+ },
+ "livenessProbe": {
+ SchemaProps: spec.SchemaProps{
+ Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe"),
+ },
+ },
},
},
},
Dependencies: []string{
- "k8s.io/api/core/v1.EnvFromSource", "k8s.io/api/core/v1.EnvVar", "k8s.io/api/core/v1.ResourceRequirements", "k8s.io/api/core/v1.SecurityContext"},
+ "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Probe", "k8s.io/api/core/v1.EnvFromSource", "k8s.io/api/core/v1.EnvVar", "k8s.io/api/core/v1.ResourceRequirements", "k8s.io/api/core/v1.SecurityContext"},
}
}
@@ -4171,6 +4192,54 @@ func schema_pkg_apis_numaflow_v1alpha1_PipelineStatus(ref common.ReferenceCallba
}
}
+func schema_pkg_apis_numaflow_v1alpha1_Probe(ref common.ReferenceCallback) common.OpenAPIDefinition {
+ return common.OpenAPIDefinition{
+ Schema: spec.Schema{
+ SchemaProps: spec.SchemaProps{
+ Description: "Probe is used to customize the configuration for Readiness and Liveness probes.",
+ Type: []string{"object"},
+ Properties: map[string]spec.Schema{
+ "initialDelaySeconds": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ Type: []string{"integer"},
+ Format: "int32",
+ },
+ },
+ "timeoutSeconds": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Number of seconds after which the probe times out. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ Type: []string{"integer"},
+ Format: "int32",
+ },
+ },
+ "periodSeconds": {
+ SchemaProps: spec.SchemaProps{
+ Description: "How often (in seconds) to perform the probe.",
+ Type: []string{"integer"},
+ Format: "int32",
+ },
+ },
+ "successThreshold": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.",
+ Type: []string{"integer"},
+ Format: "int32",
+ },
+ },
+ "failureThreshold": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.",
+ Type: []string{"integer"},
+ Format: "int32",
+ },
+ },
+ },
+ },
+ },
+ }
+}
+
func schema_pkg_apis_numaflow_v1alpha1_RedisBufferService(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
diff --git a/pkg/apis/numaflow/v1alpha1/probe.go b/pkg/apis/numaflow/v1alpha1/probe.go
new file mode 100644
index 0000000000..44c2801f94
--- /dev/null
+++ b/pkg/apis/numaflow/v1alpha1/probe.go
@@ -0,0 +1,74 @@
+/*
+Copyright 2022 The Numaproj Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1alpha1
+
+// Probe is used to customize the configuration for Readiness and Liveness probes.
+type Probe struct {
+ // Number of seconds after the container has started before liveness probes are initiated.
+ // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+ // +optional
+ InitialDelaySeconds *int32 `json:"initialDelaySeconds,omitempty" protobuf:"varint,1,opt,name=initialDelaySeconds"`
+ // Number of seconds after which the probe times out.
+ // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+ // +optional
+ TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,2,opt,name=timeoutSeconds"`
+ // How often (in seconds) to perform the probe.
+ // +optional
+ PeriodSeconds *int32 `json:"periodSeconds,omitempty" protobuf:"varint,3,opt,name=periodSeconds"`
+ // Minimum consecutive successes for the probe to be considered successful after having failed.
+ // Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
+ // +optional
+ SuccessThreshold *int32 `json:"successThreshold,omitempty" protobuf:"varint,4,opt,name=successThreshold"`
+ // Minimum consecutive failures for the probe to be considered failed after having succeeded.
+ // Defaults to 3. Minimum value is 1.
+ // +optional
+ FailureThreshold *int32 `json:"failureThreshold,omitempty" protobuf:"varint,5,opt,name=failureThreshold"`
+}
+
+func GetProbeInitialDelaySecondsOr(probe *Probe, defaultValue int32) int32 {
+ if probe == nil || probe.InitialDelaySeconds == nil {
+ return defaultValue
+ }
+ return *probe.InitialDelaySeconds
+}
+
+func GetProbeTimeoutSecondsOr(probe *Probe, defaultValue int32) int32 {
+ if probe == nil || probe.TimeoutSeconds == nil {
+ return defaultValue
+ }
+ return *probe.TimeoutSeconds
+}
+
+func GetProbePeriodSecondsOr(probe *Probe, defaultValue int32) int32 {
+ if probe == nil || probe.PeriodSeconds == nil {
+ return defaultValue
+ }
+ return *probe.PeriodSeconds
+}
+
+func GetProbeSuccessThresholdOr(probe *Probe, defaultValue int32) int32 {
+ if probe == nil || probe.SuccessThreshold == nil {
+ return defaultValue
+ }
+ return *probe.SuccessThreshold
+}
+func GetProbeFailureThresholdOr(probe *Probe, defaultValue int32) int32 {
+ if probe == nil || probe.FailureThreshold == nil {
+ return defaultValue
+ }
+ return *probe.FailureThreshold
+}
diff --git a/pkg/apis/numaflow/v1alpha1/probe_test.go b/pkg/apis/numaflow/v1alpha1/probe_test.go
new file mode 100644
index 0000000000..8383944451
--- /dev/null
+++ b/pkg/apis/numaflow/v1alpha1/probe_test.go
@@ -0,0 +1,199 @@
+/*
+Copyright 2022 The Numaproj Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1alpha1
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "k8s.io/utils/ptr"
+)
+
+func TestGetProbeInitialDelaySecondsOr(t *testing.T) {
+ tests := []struct {
+ name string
+ probe *Probe
+ defaultValue int32
+ expected int32
+ }{
+ {
+ name: "nil probe",
+ probe: nil,
+ defaultValue: 10,
+ expected: 10,
+ },
+ {
+ name: "nil InitialDelaySeconds",
+ probe: &Probe{},
+ defaultValue: 5,
+ expected: 5,
+ },
+ {
+ name: "non-nil InitialDelaySeconds",
+ probe: &Probe{InitialDelaySeconds: ptr.To[int32](15)},
+ defaultValue: 10,
+ expected: 15,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ result := GetProbeInitialDelaySecondsOr(tt.probe, tt.defaultValue)
+ assert.Equal(t, tt.expected, result)
+ })
+ }
+}
+
+func TestGetProbeTimeoutSeconds(t *testing.T) {
+ tests := []struct {
+ name string
+ probe *Probe
+ defaultValue int32
+ expected int32
+ }{
+ {
+ name: "nil probe",
+ probe: nil,
+ defaultValue: 5,
+ expected: 5,
+ },
+ {
+ name: "nil TimeoutSeconds",
+ probe: &Probe{},
+ defaultValue: 3,
+ expected: 3,
+ },
+ {
+ name: "non-nil TimeoutSeconds",
+ probe: &Probe{TimeoutSeconds: ptr.To[int32](8)},
+ defaultValue: 5,
+ expected: 8,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ result := GetProbeTimeoutSecondsOr(tt.probe, tt.defaultValue)
+ assert.Equal(t, tt.expected, result)
+ })
+ }
+}
+
+func TestGetProbePeriodSeconds(t *testing.T) {
+ tests := []struct {
+ name string
+ probe *Probe
+ defaultValue int32
+ expected int32
+ }{
+ {
+ name: "nil probe",
+ probe: nil,
+ defaultValue: 10,
+ expected: 10,
+ },
+ {
+ name: "nil PeriodSeconds",
+ probe: &Probe{},
+ defaultValue: 15,
+ expected: 15,
+ },
+ {
+ name: "non-nil PeriodSeconds",
+ probe: &Probe{PeriodSeconds: ptr.To[int32](20)},
+ defaultValue: 10,
+ expected: 20,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ result := GetProbePeriodSecondsOr(tt.probe, tt.defaultValue)
+ assert.Equal(t, tt.expected, result)
+ })
+ }
+}
+
+func TestGetProbeSuccessThreshold(t *testing.T) {
+ tests := []struct {
+ name string
+ probe *Probe
+ defaultValue int32
+ expected int32
+ }{
+ {
+ name: "nil probe",
+ probe: nil,
+ defaultValue: 1,
+ expected: 1,
+ },
+ {
+ name: "nil SuccessThreshold",
+ probe: &Probe{},
+ defaultValue: 2,
+ expected: 2,
+ },
+ {
+ name: "non-nil SuccessThreshold",
+ probe: &Probe{SuccessThreshold: ptr.To[int32](3)},
+ defaultValue: 1,
+ expected: 3,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ result := GetProbeSuccessThresholdOr(tt.probe, tt.defaultValue)
+ assert.Equal(t, tt.expected, result)
+ })
+ }
+}
+
+func TestGetProbeFailureThreshold(t *testing.T) {
+ tests := []struct {
+ name string
+ probe *Probe
+ defaultValue int32
+ expected int32
+ }{
+ {
+ name: "nil probe",
+ probe: nil,
+ defaultValue: 3,
+ expected: 3,
+ },
+ {
+ name: "nil FailureThreshold",
+ probe: &Probe{},
+ defaultValue: 5,
+ expected: 5,
+ },
+ {
+ name: "non-nil FailureThreshold",
+ probe: &Probe{FailureThreshold: ptr.To[int32](7)},
+ defaultValue: 3,
+ expected: 7,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ result := GetProbeFailureThresholdOr(tt.probe, tt.defaultValue)
+ assert.Equal(t, tt.expected, result)
+ })
+ }
+}
diff --git a/pkg/apis/numaflow/v1alpha1/sink.go b/pkg/apis/numaflow/v1alpha1/sink.go
index d596a079e6..3e2665c1e7 100644
--- a/pkg/apis/numaflow/v1alpha1/sink.go
+++ b/pkg/apis/numaflow/v1alpha1/sink.go
@@ -92,9 +92,10 @@ func (s Sink) getUDSinkContainer(mainContainerReq getContainerReq) corev1.Contai
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 30,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: GetProbeInitialDelaySecondsOr(x.LivenessProbe, 30),
+ PeriodSeconds: GetProbePeriodSecondsOr(x.LivenessProbe, 60),
+ TimeoutSeconds: GetProbeTimeoutSecondsOr(x.LivenessProbe, 30),
+ FailureThreshold: GetProbeFailureThresholdOr(x.LivenessProbe, 5),
}
return container
}
@@ -126,9 +127,10 @@ func (s Sink) getFallbackUDSinkContainer(mainContainerReq getContainerReq) corev
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 30,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: GetProbeInitialDelaySecondsOr(x.LivenessProbe, 30),
+ PeriodSeconds: GetProbePeriodSecondsOr(x.LivenessProbe, 60),
+ TimeoutSeconds: GetProbeTimeoutSecondsOr(x.LivenessProbe, 30),
+ FailureThreshold: GetProbeFailureThresholdOr(x.LivenessProbe, 5),
}
return container
}
diff --git a/pkg/apis/numaflow/v1alpha1/sink_test.go b/pkg/apis/numaflow/v1alpha1/sink_test.go
index 0fe7f002af..f63cb751bd 100644
--- a/pkg/apis/numaflow/v1alpha1/sink_test.go
+++ b/pkg/apis/numaflow/v1alpha1/sink_test.go
@@ -22,6 +22,7 @@ import (
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
resource "k8s.io/apimachinery/pkg/api/resource"
+ "k8s.io/utils/ptr"
)
func Test_Sink_getContainers(t *testing.T) {
@@ -52,6 +53,12 @@ func Test_Sink_getUDSinkContainer(t *testing.T) {
EnvFrom: []corev1.EnvFromSource{{ConfigMapRef: &corev1.ConfigMapEnvSource{
LocalObjectReference: corev1.LocalObjectReference{Name: "test-cm"},
}}},
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](10),
+ TimeoutSeconds: ptr.To[int32](15),
+ PeriodSeconds: ptr.To[int32](14),
+ FailureThreshold: ptr.To[int32](5),
+ },
},
},
},
@@ -78,6 +85,10 @@ func Test_Sink_getUDSinkContainer(t *testing.T) {
})
assert.Equal(t, testImagePullPolicy, c.ImagePullPolicy)
assert.True(t, c.LivenessProbe != nil)
+ assert.Equal(t, int32(10), c.LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(15), c.LivenessProbe.TimeoutSeconds)
+ assert.Equal(t, int32(14), c.LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(5), c.LivenessProbe.FailureThreshold)
}
func Test_Sink_getFallbackUDSinkContainer(t *testing.T) {
@@ -103,6 +114,12 @@ func Test_Sink_getFallbackUDSinkContainer(t *testing.T) {
EnvFrom: []corev1.EnvFromSource{{ConfigMapRef: &corev1.ConfigMapEnvSource{
LocalObjectReference: corev1.LocalObjectReference{Name: "test-cm"},
}}},
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](20),
+ TimeoutSeconds: ptr.To[int32](25),
+ PeriodSeconds: ptr.To[int32](24),
+ FailureThreshold: ptr.To[int32](10),
+ },
},
},
},
@@ -122,6 +139,11 @@ func Test_Sink_getFallbackUDSinkContainer(t *testing.T) {
envs[e.Name] = e.Value
}
assert.Equal(t, envs[EnvUDContainerType], UDContainerFallbackSink)
+ assert.True(t, c.LivenessProbe != nil)
+ assert.Equal(t, int32(20), c.LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(25), c.LivenessProbe.TimeoutSeconds)
+ assert.Equal(t, int32(24), c.LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(10), c.LivenessProbe.FailureThreshold)
x.UDSink.Container.ImagePullPolicy = &testImagePullPolicy
c = x.getUDSinkContainer(getContainerReq{
image: "main-image",
diff --git a/pkg/apis/numaflow/v1alpha1/source.go b/pkg/apis/numaflow/v1alpha1/source.go
index bc78831ff6..887d1ac286 100644
--- a/pkg/apis/numaflow/v1alpha1/source.go
+++ b/pkg/apis/numaflow/v1alpha1/source.go
@@ -102,6 +102,14 @@ func (s Source) getUDTransformerContainer(mainContainerReq getContainerReq) core
}
}
container := c.build()
+
+ var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = 30, 60, 30, 5
+ if x := s.UDTransformer.Container; x != nil {
+ initialDelaySeconds = GetProbeInitialDelaySecondsOr(x.LivenessProbe, initialDelaySeconds)
+ periodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, periodSeconds)
+ timeoutSeconds = GetProbeTimeoutSecondsOr(x.LivenessProbe, timeoutSeconds)
+ failureThreshold = GetProbeFailureThresholdOr(x.LivenessProbe, failureThreshold)
+ }
container.LivenessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
@@ -110,9 +118,10 @@ func (s Source) getUDTransformerContainer(mainContainerReq getContainerReq) core
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 30,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: initialDelaySeconds,
+ PeriodSeconds: periodSeconds,
+ TimeoutSeconds: timeoutSeconds,
+ FailureThreshold: failureThreshold,
}
return container
}
@@ -139,6 +148,14 @@ func (s Source) getUDSourceContainer(mainContainerReq getContainerReq) corev1.Co
}
}
container := c.build()
+
+ var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = 30, 60, 30, 5
+ if x := s.UDSource.Container; x != nil {
+ initialDelaySeconds = GetProbeInitialDelaySecondsOr(x.LivenessProbe, initialDelaySeconds)
+ periodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, periodSeconds)
+ timeoutSeconds = GetProbeTimeoutSecondsOr(x.LivenessProbe, timeoutSeconds)
+ failureThreshold = GetProbeFailureThresholdOr(x.LivenessProbe, failureThreshold)
+ }
container.LivenessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
@@ -147,9 +164,10 @@ func (s Source) getUDSourceContainer(mainContainerReq getContainerReq) corev1.Co
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 30,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: initialDelaySeconds,
+ PeriodSeconds: periodSeconds,
+ TimeoutSeconds: timeoutSeconds,
+ FailureThreshold: failureThreshold,
}
return container
}
diff --git a/pkg/apis/numaflow/v1alpha1/source_test.go b/pkg/apis/numaflow/v1alpha1/source_test.go
index d762eef84a..01f26f2cd6 100644
--- a/pkg/apis/numaflow/v1alpha1/source_test.go
+++ b/pkg/apis/numaflow/v1alpha1/source_test.go
@@ -23,12 +23,36 @@ import (
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
+ "k8s.io/utils/ptr"
)
var testImagePullPolicy = corev1.PullNever
func TestSource_getContainers(t *testing.T) {
x := Source{
+ UDSource: &UDSource{
+ Container: &Container{
+ Image: "my-image-s",
+ VolumeMounts: []corev1.VolumeMount{{Name: "my-vm"}},
+ Command: []string{"my-cmd-s"},
+ Args: []string{"my-arg-s"},
+ Env: []corev1.EnvVar{{Name: "my-envvar-s"}},
+ EnvFrom: []corev1.EnvFromSource{{ConfigMapRef: &corev1.ConfigMapEnvSource{
+ LocalObjectReference: corev1.LocalObjectReference{Name: "test-cm"},
+ }}},
+ Resources: corev1.ResourceRequirements{
+ Requests: map[corev1.ResourceName]resource.Quantity{
+ "cpu": resource.MustParse("2"),
+ },
+ },
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](10),
+ TimeoutSeconds: ptr.To[int32](15),
+ PeriodSeconds: ptr.To[int32](14),
+ FailureThreshold: ptr.To[int32](5),
+ },
+ },
+ },
UDTransformer: &UDTransformer{
Container: &Container{
Image: "my-image",
@@ -44,6 +68,12 @@ func TestSource_getContainers(t *testing.T) {
"cpu": resource.MustParse("2"),
},
},
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](20),
+ TimeoutSeconds: ptr.To[int32](25),
+ PeriodSeconds: ptr.To[int32](24),
+ FailureThreshold: ptr.To[int32](5),
+ },
},
},
}
@@ -51,8 +81,33 @@ func TestSource_getContainers(t *testing.T) {
image: "main-image",
})
assert.NoError(t, err)
- assert.Equal(t, 2, len(c))
+ assert.Equal(t, 3, len(c))
assert.Equal(t, "main-image", c[0].Image)
+
+ assert.Equal(t, x.UDSource.Container.Image, c[2].Image)
+ assert.Contains(t, c[2].VolumeMounts, c[2].VolumeMounts[0])
+ assert.Equal(t, x.UDSource.Container.Command, c[2].Command)
+ assert.Equal(t, x.UDSource.Container.Args, c[2].Args)
+ envsUDSource := map[string]string{}
+ for _, e := range c[2].Env {
+ envsUDSource[e.Name] = e.Value
+ }
+ assert.Equal(t, envsUDSource[EnvUDContainerType], UDContainerSource)
+ assert.Equal(t, x.UDSource.Container.EnvFrom, c[2].EnvFrom)
+ assert.Equal(t, corev1.ResourceRequirements{Requests: map[corev1.ResourceName]resource.Quantity{"cpu": resource.MustParse("2")}}, c[2].Resources)
+ assert.Equal(t, c[0].ImagePullPolicy, c[2].ImagePullPolicy)
+ assert.NotNil(t, c[1].LivenessProbe)
+ assert.Equal(t, int32(10), c[2].LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(15), c[2].LivenessProbe.TimeoutSeconds)
+ assert.Equal(t, int32(14), c[2].LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(5), c[2].LivenessProbe.FailureThreshold)
+ x.UDSource.Container.ImagePullPolicy = &testImagePullPolicy
+ c, _ = x.getContainers(getContainerReq{
+ image: "main-image",
+ imagePullPolicy: corev1.PullAlways,
+ })
+ assert.Equal(t, testImagePullPolicy, c[2].ImagePullPolicy)
+
assert.Equal(t, x.UDTransformer.Container.Image, c[1].Image)
assert.Contains(t, c[1].VolumeMounts, c[1].VolumeMounts[0])
assert.Equal(t, x.UDTransformer.Container.Command, c[1].Command)
@@ -65,6 +120,11 @@ func TestSource_getContainers(t *testing.T) {
assert.Equal(t, x.UDTransformer.Container.EnvFrom, c[1].EnvFrom)
assert.Equal(t, corev1.ResourceRequirements{Requests: map[corev1.ResourceName]resource.Quantity{"cpu": resource.MustParse("2")}}, c[1].Resources)
assert.Equal(t, c[0].ImagePullPolicy, c[1].ImagePullPolicy)
+ assert.NotNil(t, c[1].LivenessProbe)
+ assert.Equal(t, int32(20), c[1].LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(25), c[1].LivenessProbe.TimeoutSeconds)
+ assert.Equal(t, int32(24), c[1].LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(5), c[1].LivenessProbe.FailureThreshold)
x.UDTransformer.Container.ImagePullPolicy = &testImagePullPolicy
c, _ = x.getContainers(getContainerReq{
image: "main-image",
diff --git a/pkg/apis/numaflow/v1alpha1/udf.go b/pkg/apis/numaflow/v1alpha1/udf.go
index c29d54b2cb..a403d98131 100644
--- a/pkg/apis/numaflow/v1alpha1/udf.go
+++ b/pkg/apis/numaflow/v1alpha1/udf.go
@@ -98,6 +98,14 @@ func (in UDF) getUDFContainer(mainContainerReq getContainerReq) corev1.Container
}
c = c.appendEnv(corev1.EnvVar{Name: EnvUDContainerType, Value: UDContainerFunction})
container := c.build()
+
+ var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = 30, 60, 30, 5
+ if x := in.Container; x != nil {
+ initialDelaySeconds = GetProbeInitialDelaySecondsOr(x.LivenessProbe, initialDelaySeconds)
+ periodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, periodSeconds)
+ timeoutSeconds = GetProbeTimeoutSecondsOr(x.LivenessProbe, timeoutSeconds)
+ failureThreshold = GetProbeFailureThresholdOr(x.LivenessProbe, failureThreshold)
+ }
container.LivenessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
@@ -106,9 +114,10 @@ func (in UDF) getUDFContainer(mainContainerReq getContainerReq) corev1.Container
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 30,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: initialDelaySeconds,
+ PeriodSeconds: periodSeconds,
+ TimeoutSeconds: timeoutSeconds,
+ FailureThreshold: failureThreshold,
}
return container
}
diff --git a/pkg/apis/numaflow/v1alpha1/udf_test.go b/pkg/apis/numaflow/v1alpha1/udf_test.go
index f96e9c3756..0bb8e3862a 100644
--- a/pkg/apis/numaflow/v1alpha1/udf_test.go
+++ b/pkg/apis/numaflow/v1alpha1/udf_test.go
@@ -22,6 +22,7 @@ import (
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
+ "k8s.io/utils/ptr"
)
func TestUDF_getContainers(t *testing.T) {
@@ -40,6 +41,12 @@ func TestUDF_getContainers(t *testing.T) {
"cpu": resource.MustParse("2"),
},
},
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](10),
+ TimeoutSeconds: ptr.To[int32](15),
+ PeriodSeconds: ptr.To[int32](14),
+ FailureThreshold: ptr.To[int32](5),
+ },
},
}
c, err := x.getContainers(getContainerReq{
@@ -68,6 +75,10 @@ func TestUDF_getContainers(t *testing.T) {
})
assert.Equal(t, testImagePullPolicy, c[1].ImagePullPolicy)
assert.True(t, c[1].LivenessProbe != nil)
+ assert.Equal(t, int32(10), c[1].LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(15), c[1].LivenessProbe.TimeoutSeconds)
+ assert.Equal(t, int32(14), c[1].LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(5), c[1].LivenessProbe.FailureThreshold)
}
func Test_getUDFContainer(t *testing.T) {
diff --git a/pkg/apis/numaflow/v1alpha1/user_defined_container.go b/pkg/apis/numaflow/v1alpha1/user_defined_container.go
index 369a6d3eb3..5e8746097e 100644
--- a/pkg/apis/numaflow/v1alpha1/user_defined_container.go
+++ b/pkg/apis/numaflow/v1alpha1/user_defined_container.go
@@ -38,4 +38,8 @@ type Container struct {
SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty" protobuf:"bytes,8,opt,name=securityContext"`
// +optional
ImagePullPolicy *corev1.PullPolicy `json:"imagePullPolicy,omitempty" protobuf:"bytes,9,opt,name=imagePullPolicy,casttype=PullPolicy"`
+ // +optional
+ ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,10,opt,name=readinessProbe"`
+ // +optional
+ LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
}
diff --git a/pkg/apis/numaflow/v1alpha1/vertex_types.go b/pkg/apis/numaflow/v1alpha1/vertex_types.go
index 965e9f4bcc..c717affc81 100644
--- a/pkg/apis/numaflow/v1alpha1/vertex_types.go
+++ b/pkg/apis/numaflow/v1alpha1/vertex_types.go
@@ -253,6 +253,18 @@ func (v Vertex) GetPodSpec(req GetVertexPodSpecReq) (*corev1.PodSpec, error) {
return nil, err
}
+ var readyzInitDeploy, readyzPeriodSeconds, readyzTimeoutSeconds, readyzFailureThreshold int32 = 5, 10, 30, 6 // default values
+ var liveZInitDeploy, liveZPeriodSeconds, liveZTimeoutSeconds, liveZFailureThreshold int32 = 20, 60, 30, 5 // default values
+ if x := v.Spec.ContainerTemplate; x != nil {
+ readyzInitDeploy = GetProbeInitialDelaySecondsOr(x.ReadinessProbe, readyzInitDeploy)
+ readyzPeriodSeconds = GetProbePeriodSecondsOr(x.ReadinessProbe, readyzPeriodSeconds)
+ readyzTimeoutSeconds = GetProbeTimeoutSecondsOr(x.ReadinessProbe, readyzTimeoutSeconds)
+ readyzFailureThreshold = GetProbeFailureThresholdOr(x.ReadinessProbe, readyzFailureThreshold)
+ liveZInitDeploy = GetProbeInitialDelaySecondsOr(x.LivenessProbe, liveZInitDeploy)
+ liveZPeriodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, liveZPeriodSeconds)
+ liveZTimeoutSeconds = GetProbeTimeoutSecondsOr(x.LivenessProbe, liveZTimeoutSeconds)
+ liveZFailureThreshold = GetProbeFailureThresholdOr(x.LivenessProbe, liveZFailureThreshold)
+ }
containers[0].ReadinessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
@@ -261,10 +273,12 @@ func (v Vertex) GetPodSpec(req GetVertexPodSpecReq) (*corev1.PodSpec, error) {
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 3,
- PeriodSeconds: 3,
- TimeoutSeconds: 1,
+ InitialDelaySeconds: readyzInitDeploy,
+ PeriodSeconds: readyzPeriodSeconds,
+ TimeoutSeconds: readyzTimeoutSeconds,
+ FailureThreshold: readyzFailureThreshold,
}
+
containers[0].LivenessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
@@ -273,9 +287,10 @@ func (v Vertex) GetPodSpec(req GetVertexPodSpecReq) (*corev1.PodSpec, error) {
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: 20,
- PeriodSeconds: 60,
- TimeoutSeconds: 30,
+ InitialDelaySeconds: liveZInitDeploy,
+ PeriodSeconds: liveZPeriodSeconds,
+ TimeoutSeconds: liveZTimeoutSeconds,
+ FailureThreshold: liveZFailureThreshold,
}
containers[0].Ports = []corev1.ContainerPort{
{Name: VertexMetricsPortName, ContainerPort: VertexMetricsPort},
diff --git a/pkg/apis/numaflow/v1alpha1/vertex_types_test.go b/pkg/apis/numaflow/v1alpha1/vertex_types_test.go
index 1f5572c424..83384cf624 100644
--- a/pkg/apis/numaflow/v1alpha1/vertex_types_test.go
+++ b/pkg/apis/numaflow/v1alpha1/vertex_types_test.go
@@ -286,6 +286,20 @@ func TestGetPodSpec(t *testing.T) {
t.Run("test sink", func(t *testing.T) {
testObj := testVertex.DeepCopy()
testObj.Spec.Sink = &Sink{}
+ testObj.Spec.ContainerTemplate = &ContainerTemplate{
+ ReadinessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](24),
+ PeriodSeconds: ptr.To[int32](25),
+ FailureThreshold: ptr.To[int32](2),
+ TimeoutSeconds: ptr.To[int32](21),
+ },
+ LivenessProbe: &Probe{
+ InitialDelaySeconds: ptr.To[int32](14),
+ PeriodSeconds: ptr.To[int32](15),
+ FailureThreshold: ptr.To[int32](2),
+ TimeoutSeconds: ptr.To[int32](11),
+ },
+ }
s, err := testObj.GetPodSpec(req)
assert.NoError(t, err)
assert.Equal(t, 1, len(s.Containers))
@@ -294,10 +308,20 @@ func TestGetPodSpec(t *testing.T) {
assert.Equal(t, corev1.PullIfNotPresent, s.Containers[0].ImagePullPolicy)
assert.NotNil(t, s.Containers[0].ReadinessProbe)
assert.NotNil(t, s.Containers[0].ReadinessProbe.HTTPGet)
+ assert.Equal(t, "/readyz", s.Containers[0].ReadinessProbe.HTTPGet.Path)
+ assert.Equal(t, int32(24), s.Containers[0].ReadinessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(25), s.Containers[0].ReadinessProbe.PeriodSeconds)
+ assert.Equal(t, int32(2), s.Containers[0].ReadinessProbe.FailureThreshold)
+ assert.Equal(t, int32(21), s.Containers[0].ReadinessProbe.TimeoutSeconds)
assert.Equal(t, corev1.URISchemeHTTPS, s.Containers[0].ReadinessProbe.HTTPGet.Scheme)
assert.Equal(t, VertexMetricsPort, s.Containers[0].ReadinessProbe.HTTPGet.Port.IntValue())
assert.NotNil(t, s.Containers[0].LivenessProbe)
assert.NotNil(t, s.Containers[0].LivenessProbe.HTTPGet)
+ assert.Equal(t, "/livez", s.Containers[0].LivenessProbe.HTTPGet.Path)
+ assert.Equal(t, int32(14), s.Containers[0].LivenessProbe.InitialDelaySeconds)
+ assert.Equal(t, int32(15), s.Containers[0].LivenessProbe.PeriodSeconds)
+ assert.Equal(t, int32(2), s.Containers[0].LivenessProbe.FailureThreshold)
+ assert.Equal(t, int32(11), s.Containers[0].LivenessProbe.TimeoutSeconds)
assert.Equal(t, corev1.URISchemeHTTPS, s.Containers[0].LivenessProbe.HTTPGet.Scheme)
assert.Equal(t, VertexMetricsPort, s.Containers[0].LivenessProbe.HTTPGet.Port.IntValue())
assert.Equal(t, 1, len(s.Containers[0].Ports))
diff --git a/rust/numaflow-models/src/models/container.rs b/rust/numaflow-models/src/models/container.rs
index 69f3206a00..3599d6a243 100644
--- a/rust/numaflow-models/src/models/container.rs
+++ b/rust/numaflow-models/src/models/container.rs
@@ -32,6 +32,10 @@ pub struct Container {
pub image: Option,
#[serde(rename = "imagePullPolicy", skip_serializing_if = "Option::is_none")]
pub image_pull_policy: Option,
+ #[serde(rename = "livenessProbe", skip_serializing_if = "Option::is_none")]
+ pub liveness_probe: Option>,
+ #[serde(rename = "readinessProbe", skip_serializing_if = "Option::is_none")]
+ pub readiness_probe: Option>,
#[serde(rename = "resources", skip_serializing_if = "Option::is_none")]
pub resources: Option,
#[serde(rename = "securityContext", skip_serializing_if = "Option::is_none")]
@@ -50,6 +54,8 @@ impl Container {
env_from: None,
image: None,
image_pull_policy: None,
+ liveness_probe: None,
+ readiness_probe: None,
resources: None,
security_context: None,
volume_mounts: None,
diff --git a/rust/numaflow-models/src/models/container_template.rs b/rust/numaflow-models/src/models/container_template.rs
index 71bd4e068c..2b478cadf1 100644
--- a/rust/numaflow-models/src/models/container_template.rs
+++ b/rust/numaflow-models/src/models/container_template.rs
@@ -26,6 +26,10 @@ pub struct ContainerTemplate {
pub env_from: Option>,
#[serde(rename = "imagePullPolicy", skip_serializing_if = "Option::is_none")]
pub image_pull_policy: Option,
+ #[serde(rename = "livenessProbe", skip_serializing_if = "Option::is_none")]
+ pub liveness_probe: Option>,
+ #[serde(rename = "readinessProbe", skip_serializing_if = "Option::is_none")]
+ pub readiness_probe: Option>,
#[serde(rename = "resources", skip_serializing_if = "Option::is_none")]
pub resources: Option,
#[serde(rename = "securityContext", skip_serializing_if = "Option::is_none")]
@@ -39,6 +43,8 @@ impl ContainerTemplate {
env: None,
env_from: None,
image_pull_policy: None,
+ liveness_probe: None,
+ readiness_probe: None,
resources: None,
security_context: None,
}
diff --git a/rust/numaflow-models/src/models/mod.rs b/rust/numaflow-models/src/models/mod.rs
index 29846575d2..423e21fd9c 100644
--- a/rust/numaflow-models/src/models/mod.rs
+++ b/rust/numaflow-models/src/models/mod.rs
@@ -120,6 +120,8 @@ pub mod pipeline_spec;
pub use self::pipeline_spec::PipelineSpec;
pub mod pipeline_status;
pub use self::pipeline_status::PipelineStatus;
+pub mod probe;
+pub use self::probe::Probe;
pub mod redis_buffer_service;
pub use self::redis_buffer_service::RedisBufferService;
pub mod redis_config;
diff --git a/rust/numaflow-models/src/models/probe.rs b/rust/numaflow-models/src/models/probe.rs
new file mode 100644
index 0000000000..9980e9ea79
--- /dev/null
+++ b/rust/numaflow-models/src/models/probe.rs
@@ -0,0 +1,54 @@
+/*
+Copyright 2022 The Numaproj Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by Openapi Generator. DO NOT EDIT.
+
+/// Probe : Probe is used to customize the configuration for Readiness and Liveness probes.
+
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Probe {
+ /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
+ #[serde(rename = "failureThreshold", skip_serializing_if = "Option::is_none")]
+ pub failure_threshold: Option,
+ /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+ #[serde(
+ rename = "initialDelaySeconds",
+ skip_serializing_if = "Option::is_none"
+ )]
+ pub initial_delay_seconds: Option,
+ /// How often (in seconds) to perform the probe.
+ #[serde(rename = "periodSeconds", skip_serializing_if = "Option::is_none")]
+ pub period_seconds: Option,
+ /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
+ #[serde(rename = "successThreshold", skip_serializing_if = "Option::is_none")]
+ pub success_threshold: Option,
+ /// Number of seconds after which the probe times out. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
+ #[serde(rename = "timeoutSeconds", skip_serializing_if = "Option::is_none")]
+ pub timeout_seconds: Option,
+}
+
+impl Probe {
+ /// Probe is used to customize the configuration for Readiness and Liveness probes.
+ pub fn new() -> Probe {
+ Probe {
+ failure_threshold: None,
+ initial_delay_seconds: None,
+ period_seconds: None,
+ success_threshold: None,
+ timeout_seconds: None,
+ }
+ }
+}
From faa5df3bbe80776ba3970530eb76155326f4ff18 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Tue, 17 Sep 2024 13:01:19 -0700
Subject: [PATCH 2/8] docs
Signed-off-by: Derek Wang
---
.../configuration/liveness-and-readiness.md | 117 ++++++++++++++++++
mkdocs.yml | 1 +
2 files changed, 118 insertions(+)
create mode 100644 docs/user-guide/reference/configuration/liveness-and-readiness.md
diff --git a/docs/user-guide/reference/configuration/liveness-and-readiness.md b/docs/user-guide/reference/configuration/liveness-and-readiness.md
new file mode 100644
index 0000000000..507ca6fec8
--- /dev/null
+++ b/docs/user-guide/reference/configuration/liveness-and-readiness.md
@@ -0,0 +1,117 @@
+# Liveness and Readiness
+
+`Liveness` and `Readiness` probes have been pre-configured in the pods orchestrated in Numaflow, including the containers of `Vertex` and `MonoVertex` pods. For these probes, the probe handlers are not allowed to be customized, but the other configurations are.
+
+- `initialDelaySeconds`
+- `timeoutSeconds`
+- `periodSeconds`
+- `successThreshold`
+- `failureThreshold`
+
+Here is an example for `Pipeline` customization, similar configuration can be applied to containers including `udf`, `udsource`, `transformer`, `udsink` and `fb-udsink`.
+
+```yaml
+apiVersion: numaflow.numaproj.io/v1alpha1
+kind: Pipeline
+metadata:
+ name: my-pipeline
+spec:
+ vertices:
+ - name: my-source
+ containerTemplate: # For "numa" container
+ readinessProbe:
+ initialDelaySeconds: 30
+ periodSeconds: 60
+ livenessProbe:
+ initialDelaySeconds: 60
+ periodSeconds: 120
+ volumes:
+ - name: my-udsource-config
+ configMap:
+ name: udsource-config
+ source:
+ udsource:
+ container:
+ image: my-source:latest
+ volumeMounts:
+ - mountPath: /path/to/my-source-config
+ name: my-udsource-config
+ # For User-Defined source
+ livenessProbe:
+ initialDelaySeconds: 40
+ failureThreshold: 5
+ - name: my-udf
+ containerTemplate: # For "numa" container
+ readinessProbe:
+ initialDelaySeconds: 20
+ periodSeconds: 60
+ livenessProbe:
+ initialDelaySeconds: 180
+ periodSeconds: 60
+ timeoutSeconds: 50
+ volumes:
+ - name: my-udf-config
+ configMap:
+ name: udf-config
+ udf:
+ container:
+ image: my-function:latest
+ volumeMounts:
+ - mountPath: /path/to/my-function-config
+ name: my-udf-config
+ # For "udf"
+ livenessProbe:
+ initialDelaySeconds: 40
+ failureThreshold: 5
+```
+
+The customization for `numa` container is also available with a [Vertex Template](./pipeline-customization#vertices) defined in `spec.templates.vertex`, which is going to be applied to all the vertices of a pipeline.
+
+A `MonoVertex` example is as below.
+
+```yaml
+apiVersion: numaflow.numaproj.io/v1alpha1
+kind: MonoVertex
+metadata:
+ name: simple-mono-vertex
+spec:
+ containerTemplate: # For "numa" container
+ readinessProbe:
+ initialDelaySeconds: 20
+ periodSeconds: 60
+ livenessProbe:
+ initialDelaySeconds: 180
+ periodSeconds: 60
+ source:
+ udsource:
+ container:
+ image: quay.io/numaio/numaflow-java/source-simple-source:stable
+ # For User-Defined source
+ livenessProbe:
+ initialDelaySeconds: 40
+ failureThreshold: 5
+ timeoutSeconds: 40
+ transformer:
+ container:
+ image: quay.io/numaio/numaflow-rs/source-transformer-now:stable
+ # For transformer
+ livenessProbe:
+ initialDelaySeconds: 40
+ failureThreshold: 5
+ sink:
+ udsink:
+ container:
+ image: quay.io/numaio/numaflow-java/simple-sink:stable
+ # For User-Defined Sink
+ livenessProbe:
+ initialDelaySeconds: 40
+ failureThreshold: 5
+ fallback:
+ udsink:
+ container:
+ image: my-sink:latest
+ # # For Fallback Sink
+ livenessProbe:
+ initialDelaySeconds: 40
+ failureThreshold: 5
+```
diff --git a/mkdocs.yml b/mkdocs.yml
index 55dac8b1c1..1118c1ff43 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -101,6 +101,7 @@ nav:
- user-guide/reference/configuration/labels-and-annotations.md
- user-guide/reference/configuration/init-containers.md
- user-guide/reference/configuration/sidecar-containers.md
+ - user-guide/reference/configuration/liveness-and-readiness.md
- user-guide/reference/configuration/pipeline-customization.md
- user-guide/reference/configuration/istio.md
- user-guide/reference/configuration/max-message-size.md
From b53eb23a65f15c569fba5b141b53be301ab2c410 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Tue, 17 Sep 2024 13:10:41 -0700
Subject: [PATCH 3/8] .
Signed-off-by: Derek Wang
---
.../reference/configuration/liveness-and-readiness.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/user-guide/reference/configuration/liveness-and-readiness.md b/docs/user-guide/reference/configuration/liveness-and-readiness.md
index 507ca6fec8..f4a3dd5d0f 100644
--- a/docs/user-guide/reference/configuration/liveness-and-readiness.md
+++ b/docs/user-guide/reference/configuration/liveness-and-readiness.md
@@ -65,7 +65,7 @@ spec:
failureThreshold: 5
```
-The customization for `numa` container is also available with a [Vertex Template](./pipeline-customization#vertices) defined in `spec.templates.vertex`, which is going to be applied to all the vertices of a pipeline.
+The customization for `numa` container is also available with a [Vertex Template](./pipeline-customization.md#vertices) defined in `spec.templates.vertex`, which is going to be applied to all the vertices of a pipeline.
A `MonoVertex` example is as below.
From 3fd78e8f7837c187e9a794bfd55b1e607cf37d53 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Tue, 17 Sep 2024 15:20:14 -0700
Subject: [PATCH 4/8] fix test cases
Signed-off-by: Derek Wang
---
test/e2e/functional_test.go | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/test/e2e/functional_test.go b/test/e2e/functional_test.go
index 2d0989ac7e..1c72af9229 100644
--- a/test/e2e/functional_test.go
+++ b/test/e2e/functional_test.go
@@ -316,12 +316,12 @@ func (s *FunctionalSuite) TestFallbackSink() {
defer w.DeletePipelineAndWait()
pipelineName := "simple-fallback"
- // send a message to the pipeline
- w.SendMessageTo(pipelineName, "in", NewHttpPostRequest().WithBody([]byte("fallback-message")))
-
// wait for all the pods to come up
w.Expect().VertexPodsRunning()
+ // send a message to the pipeline
+ w.SendMessageTo(pipelineName, "in", NewHttpPostRequest().WithBody([]byte("fallback-message")))
+
w.Expect().RedisSinkContains("simple-fallback-output", "fallback-message")
}
From d563a2e23f29fe4a3e6158691fafa81e0d5643d3 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Tue, 17 Sep 2024 15:38:01 -0700
Subject: [PATCH 5/8] check pods ready
Signed-off-by: Derek Wang
---
test/fixtures/util.go | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/test/fixtures/util.go b/test/fixtures/util.go
index c88d28d1af..13a4026384 100644
--- a/test/fixtures/util.go
+++ b/test/fixtures/util.go
@@ -310,7 +310,7 @@ func WaitForVertexPodRunning(kubeClient kubernetes.Interface, vertexClient flowp
}
ok = ok && len(podList.Items) > 0 && len(podList.Items) == vertexList.Items[0].GetReplicas() // pod number should equal to desired replicas
for _, p := range podList.Items {
- ok = ok && p.Status.Phase == corev1.PodRunning
+ ok = ok && isPodReady(p)
}
if ok {
return nil
@@ -319,6 +319,18 @@ func WaitForVertexPodRunning(kubeClient kubernetes.Interface, vertexClient flowp
}
}
+func isPodReady(pod corev1.Pod) bool {
+ if pod.Status.Phase != corev1.PodRunning {
+ return false
+ }
+ for _, c := range pod.Status.ContainerStatuses {
+ if !c.Ready {
+ return false
+ }
+ }
+ return true
+}
+
func WaitForVertexPodScalingTo(kubeClient kubernetes.Interface, vertexClient flowpkg.VertexInterface, namespace, pipelineName, vertexName string, timeout time.Duration, size int) error {
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
From f85da6a3d656fa20a612826dc43ced3cce5b40e8 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Wed, 18 Sep 2024 16:31:56 -0700
Subject: [PATCH 6/8] contants
Signed-off-by: Derek Wang
---
pkg/apis/numaflow/v1alpha1/const.go | 14 ++++++++++++++
pkg/apis/numaflow/v1alpha1/mono_vertex_types.go | 4 ++--
pkg/apis/numaflow/v1alpha1/sink.go | 16 ++++++++--------
pkg/apis/numaflow/v1alpha1/source.go | 4 ++--
pkg/apis/numaflow/v1alpha1/udf.go | 2 +-
pkg/apis/numaflow/v1alpha1/vertex_types.go | 4 ++--
6 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/pkg/apis/numaflow/v1alpha1/const.go b/pkg/apis/numaflow/v1alpha1/const.go
index e36ec9bd34..f65e2a5bd7 100644
--- a/pkg/apis/numaflow/v1alpha1/const.go
+++ b/pkg/apis/numaflow/v1alpha1/const.go
@@ -265,6 +265,20 @@ const (
// This strategy argues for robustness in operations, aiming
// to minimize the chances of data loss or failed deliveries in transient failure scenarios.
DefaultOnFailureRetryStrategy = OnFailureRetry
+
+ // Defeault values for readiness and liveness probes
+ NumaContainerReadyzInitialDelaySeconds = 5
+ NumaContainerReadyzPeriodSeconds = 10
+ NumaContainerReadyzTimeoutSeconds = 30
+ NumaContainerReadyzFailureThreshold = 6
+ NumaContainerLivezInitialDelaySeconds = 20
+ NumaContainerLivezPeriodSeconds = 60
+ NumaContainerLivezTimeoutSeconds = 30
+ NumaContainerLivezFailureThreshold = 5
+ UDContainerLivezInitialDelaySeconds = 30
+ UDContainerLivezPeriodSeconds = 60
+ UDContainerLivezTimeoutSeconds = 30
+ UDContainerLivezFailureThreshold = 5
)
var (
diff --git a/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go b/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go
index f88d82e010..e3b8e28f64 100644
--- a/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go
+++ b/pkg/apis/numaflow/v1alpha1/mono_vertex_types.go
@@ -345,8 +345,8 @@ func (mv MonoVertex) GetPodSpec(req GetMonoVertexPodSpecReq) (*corev1.PodSpec, e
volumeMounts: volumeMounts,
})
- var readyzInitDeploy, readyzPeriodSeconds, readyzTimeoutSeconds, readyzFailureThreshold int32 = 5, 10, 30, 6 // default values
- var liveZInitDeploy, liveZPeriodSeconds, liveZTimeoutSeconds, liveZFailureThreshold int32 = 20, 60, 30, 5 // default values
+ var readyzInitDeploy, readyzPeriodSeconds, readyzTimeoutSeconds, readyzFailureThreshold int32 = NumaContainerReadyzInitialDelaySeconds, NumaContainerReadyzPeriodSeconds, NumaContainerReadyzTimeoutSeconds, NumaContainerReadyzFailureThreshold
+ var liveZInitDeploy, liveZPeriodSeconds, liveZTimeoutSeconds, liveZFailureThreshold int32 = NumaContainerLivezInitialDelaySeconds, NumaContainerLivezPeriodSeconds, NumaContainerLivezTimeoutSeconds, NumaContainerLivezFailureThreshold
if x := mv.Spec.ContainerTemplate; x != nil {
readyzInitDeploy = GetProbeInitialDelaySecondsOr(x.ReadinessProbe, readyzInitDeploy)
readyzPeriodSeconds = GetProbePeriodSecondsOr(x.ReadinessProbe, readyzPeriodSeconds)
diff --git a/pkg/apis/numaflow/v1alpha1/sink.go b/pkg/apis/numaflow/v1alpha1/sink.go
index 3e2665c1e7..d35f323e9e 100644
--- a/pkg/apis/numaflow/v1alpha1/sink.go
+++ b/pkg/apis/numaflow/v1alpha1/sink.go
@@ -92,10 +92,10 @@ func (s Sink) getUDSinkContainer(mainContainerReq getContainerReq) corev1.Contai
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: GetProbeInitialDelaySecondsOr(x.LivenessProbe, 30),
- PeriodSeconds: GetProbePeriodSecondsOr(x.LivenessProbe, 60),
- TimeoutSeconds: GetProbeTimeoutSecondsOr(x.LivenessProbe, 30),
- FailureThreshold: GetProbeFailureThresholdOr(x.LivenessProbe, 5),
+ InitialDelaySeconds: GetProbeInitialDelaySecondsOr(x.LivenessProbe, UDContainerLivezInitialDelaySeconds),
+ PeriodSeconds: GetProbePeriodSecondsOr(x.LivenessProbe, UDContainerLivezPeriodSeconds),
+ TimeoutSeconds: GetProbeTimeoutSecondsOr(x.LivenessProbe, UDContainerLivezTimeoutSeconds),
+ FailureThreshold: GetProbeFailureThresholdOr(x.LivenessProbe, UDContainerLivezFailureThreshold),
}
return container
}
@@ -127,10 +127,10 @@ func (s Sink) getFallbackUDSinkContainer(mainContainerReq getContainerReq) corev
Scheme: corev1.URISchemeHTTPS,
},
},
- InitialDelaySeconds: GetProbeInitialDelaySecondsOr(x.LivenessProbe, 30),
- PeriodSeconds: GetProbePeriodSecondsOr(x.LivenessProbe, 60),
- TimeoutSeconds: GetProbeTimeoutSecondsOr(x.LivenessProbe, 30),
- FailureThreshold: GetProbeFailureThresholdOr(x.LivenessProbe, 5),
+ InitialDelaySeconds: GetProbeInitialDelaySecondsOr(x.LivenessProbe, UDContainerLivezInitialDelaySeconds),
+ PeriodSeconds: GetProbePeriodSecondsOr(x.LivenessProbe, UDContainerLivezPeriodSeconds),
+ TimeoutSeconds: GetProbeTimeoutSecondsOr(x.LivenessProbe, UDContainerLivezTimeoutSeconds),
+ FailureThreshold: GetProbeFailureThresholdOr(x.LivenessProbe, UDContainerLivezFailureThreshold),
}
return container
}
diff --git a/pkg/apis/numaflow/v1alpha1/source.go b/pkg/apis/numaflow/v1alpha1/source.go
index 887d1ac286..b89016d9c2 100644
--- a/pkg/apis/numaflow/v1alpha1/source.go
+++ b/pkg/apis/numaflow/v1alpha1/source.go
@@ -103,7 +103,7 @@ func (s Source) getUDTransformerContainer(mainContainerReq getContainerReq) core
}
container := c.build()
- var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = 30, 60, 30, 5
+ var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = UDContainerLivezInitialDelaySeconds, UDContainerLivezPeriodSeconds, UDContainerLivezTimeoutSeconds, UDContainerLivezFailureThreshold
if x := s.UDTransformer.Container; x != nil {
initialDelaySeconds = GetProbeInitialDelaySecondsOr(x.LivenessProbe, initialDelaySeconds)
periodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, periodSeconds)
@@ -149,7 +149,7 @@ func (s Source) getUDSourceContainer(mainContainerReq getContainerReq) corev1.Co
}
container := c.build()
- var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = 30, 60, 30, 5
+ var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = UDContainerLivezInitialDelaySeconds, UDContainerLivezPeriodSeconds, UDContainerLivezTimeoutSeconds, UDContainerLivezFailureThreshold
if x := s.UDSource.Container; x != nil {
initialDelaySeconds = GetProbeInitialDelaySecondsOr(x.LivenessProbe, initialDelaySeconds)
periodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, periodSeconds)
diff --git a/pkg/apis/numaflow/v1alpha1/udf.go b/pkg/apis/numaflow/v1alpha1/udf.go
index a403d98131..23e9bcf085 100644
--- a/pkg/apis/numaflow/v1alpha1/udf.go
+++ b/pkg/apis/numaflow/v1alpha1/udf.go
@@ -99,7 +99,7 @@ func (in UDF) getUDFContainer(mainContainerReq getContainerReq) corev1.Container
c = c.appendEnv(corev1.EnvVar{Name: EnvUDContainerType, Value: UDContainerFunction})
container := c.build()
- var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = 30, 60, 30, 5
+ var initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold int32 = UDContainerLivezInitialDelaySeconds, UDContainerLivezPeriodSeconds, UDContainerLivezTimeoutSeconds, UDContainerLivezFailureThreshold
if x := in.Container; x != nil {
initialDelaySeconds = GetProbeInitialDelaySecondsOr(x.LivenessProbe, initialDelaySeconds)
periodSeconds = GetProbePeriodSecondsOr(x.LivenessProbe, periodSeconds)
diff --git a/pkg/apis/numaflow/v1alpha1/vertex_types.go b/pkg/apis/numaflow/v1alpha1/vertex_types.go
index c717affc81..f403d074c3 100644
--- a/pkg/apis/numaflow/v1alpha1/vertex_types.go
+++ b/pkg/apis/numaflow/v1alpha1/vertex_types.go
@@ -253,8 +253,8 @@ func (v Vertex) GetPodSpec(req GetVertexPodSpecReq) (*corev1.PodSpec, error) {
return nil, err
}
- var readyzInitDeploy, readyzPeriodSeconds, readyzTimeoutSeconds, readyzFailureThreshold int32 = 5, 10, 30, 6 // default values
- var liveZInitDeploy, liveZPeriodSeconds, liveZTimeoutSeconds, liveZFailureThreshold int32 = 20, 60, 30, 5 // default values
+ var readyzInitDeploy, readyzPeriodSeconds, readyzTimeoutSeconds, readyzFailureThreshold int32 = NumaContainerReadyzInitialDelaySeconds, NumaContainerReadyzPeriodSeconds, NumaContainerReadyzTimeoutSeconds, NumaContainerReadyzFailureThreshold
+ var liveZInitDeploy, liveZPeriodSeconds, liveZTimeoutSeconds, liveZFailureThreshold int32 = NumaContainerLivezInitialDelaySeconds, NumaContainerLivezPeriodSeconds, NumaContainerLivezTimeoutSeconds, NumaContainerLivezFailureThreshold
if x := v.Spec.ContainerTemplate; x != nil {
readyzInitDeploy = GetProbeInitialDelaySecondsOr(x.ReadinessProbe, readyzInitDeploy)
readyzPeriodSeconds = GetProbePeriodSecondsOr(x.ReadinessProbe, readyzPeriodSeconds)
From 2a88943311c102b9a7874ef514b7e91908825091 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Wed, 18 Sep 2024 23:45:58 -0700
Subject: [PATCH 7/8] fix port conflict problem
Signed-off-by: Derek Wang
---
pkg/shared/clients/nats/test/server.go | 1 +
pkg/sources/nats/nats_test.go | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/pkg/shared/clients/nats/test/server.go b/pkg/shared/clients/nats/test/server.go
index af3c25036e..556a7390c2 100644
--- a/pkg/shared/clients/nats/test/server.go
+++ b/pkg/shared/clients/nats/test/server.go
@@ -27,6 +27,7 @@ import (
func RunNatsServer(t *testing.T) *server.Server {
t.Helper()
opts := natstestserver.DefaultTestOptions
+ opts.Port = 4223
return natstestserver.RunServer(&opts)
}
diff --git a/pkg/sources/nats/nats_test.go b/pkg/sources/nats/nats_test.go
index 739d215018..db4a0c25b7 100644
--- a/pkg/sources/nats/nats_test.go
+++ b/pkg/sources/nats/nats_test.go
@@ -68,7 +68,7 @@ func Test_Single(t *testing.T) {
server := natstest.RunNatsServer(t)
defer server.Shutdown()
- url := "127.0.0.1"
+ url := server.ClientURL()
testSubject := "test-single"
testQueue := "test-queue-single"
vi := testVertex(t, url, testSubject, testQueue, "test-host", 0)
@@ -112,9 +112,9 @@ func Test_Multiple(t *testing.T) {
server := natstest.RunNatsServer(t)
defer server.Shutdown()
- url := "127.0.0.1"
testSubject := "test-multiple"
testQueue := "test-queue-multiple"
+ url := server.ClientURL()
v1 := testVertex(t, url, testSubject, testQueue, "test-host1", 0)
ns1, err := newInstance(t, v1)
assert.NoError(t, err)
From cae65ee1bbf9802960be5d6989c4866e2e811650 Mon Sep 17 00:00:00 2001
From: Derek Wang
Date: Wed, 18 Sep 2024 23:46:59 -0700
Subject: [PATCH 8/8] nats dep
Signed-off-by: Derek Wang
---
go.mod | 20 ++++++++++----------
go.sum | 40 ++++++++++++++++++++--------------------
2 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/go.mod b/go.mod
index f0dd236bd7..9f54c88017 100644
--- a/go.mod
+++ b/go.mod
@@ -30,8 +30,8 @@ require (
github.com/hashicorp/golang-lru/v2 v2.0.7
github.com/imdario/mergo v0.3.16
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe
- github.com/nats-io/nats-server/v2 v2.10.17
- github.com/nats-io/nats.go v1.36.0
+ github.com/nats-io/nats-server/v2 v2.10.20
+ github.com/nats-io/nats.go v1.37.0
github.com/numaproj/numaflow-go v0.8.0
github.com/prometheus/client_golang v1.18.0
github.com/prometheus/client_model v0.5.0
@@ -48,10 +48,10 @@ require (
go.uber.org/goleak v1.3.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.26.0
- golang.org/x/crypto v0.24.0
+ golang.org/x/crypto v0.26.0
golang.org/x/net v0.25.0
golang.org/x/oauth2 v0.20.0
- golang.org/x/sync v0.7.0
+ golang.org/x/sync v0.8.0
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17
google.golang.org/grpc v1.59.0
@@ -148,7 +148,7 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
- github.com/minio/highwayhash v1.0.2 // indirect
+ github.com/minio/highwayhash v1.0.3 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
@@ -158,7 +158,7 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
- github.com/nats-io/jwt/v2 v2.5.7 // indirect
+ github.com/nats-io/jwt/v2 v2.5.8 // indirect
github.com/nats-io/nkeys v0.4.7 // indirect
github.com/nats-io/nuid v1.0.1 // indirect
github.com/oklog/ulid v1.3.1 // indirect
@@ -201,10 +201,10 @@ require (
golang.org/x/arch v0.7.0 // indirect
golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect
golang.org/x/mod v0.17.0 // indirect
- golang.org/x/sys v0.21.0 // indirect
- golang.org/x/term v0.21.0 // indirect
- golang.org/x/text v0.16.0 // indirect
- golang.org/x/time v0.5.0 // indirect
+ golang.org/x/sys v0.24.0 // indirect
+ golang.org/x/term v0.23.0 // indirect
+ golang.org/x/text v0.17.0 // indirect
+ golang.org/x/time v0.6.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
diff --git a/go.sum b/go.sum
index 1e46c54600..77784a6a8d 100644
--- a/go.sum
+++ b/go.sum
@@ -446,8 +446,8 @@ github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
-github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
-github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
+github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
@@ -474,12 +474,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/nats-io/jwt/v2 v2.5.7 h1:j5lH1fUXCnJnY8SsQeB/a/z9Azgu2bYIDvtPVNdxe2c=
-github.com/nats-io/jwt/v2 v2.5.7/go.mod h1:ZdWS1nZa6WMZfFwwgpEaqBV8EPGVgOTDHN/wTbz0Y5A=
-github.com/nats-io/nats-server/v2 v2.10.17 h1:PTVObNBD3TZSNUDgzFb1qQsQX4mOgFmOuG9vhT+KBUY=
-github.com/nats-io/nats-server/v2 v2.10.17/go.mod h1:5OUyc4zg42s/p2i92zbbqXvUNsbF0ivdTLKshVMn2YQ=
-github.com/nats-io/nats.go v1.36.0 h1:suEUPuWzTSse/XhESwqLxXGuj8vGRuPRoG7MoRN/qyU=
-github.com/nats-io/nats.go v1.36.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
+github.com/nats-io/jwt/v2 v2.5.8 h1:uvdSzwWiEGWGXf+0Q+70qv6AQdvcvxrv9hPM0RiPamE=
+github.com/nats-io/jwt/v2 v2.5.8/go.mod h1:ZdWS1nZa6WMZfFwwgpEaqBV8EPGVgOTDHN/wTbz0Y5A=
+github.com/nats-io/nats-server/v2 v2.10.20 h1:CXDTYNHeBiAKBTAIP2gjpgbWap2GhATnTLgP8etyvEI=
+github.com/nats-io/nats-server/v2 v2.10.20/go.mod h1:hgcPnoUtMfxz1qVOvLZGurVypQ+Cg6GXVXjG53iHk+M=
+github.com/nats-io/nats.go v1.37.0 h1:07rauXbVnnJvv1gfIyghFEo6lUcYRY0WXc3x7x0vUxE=
+github.com/nats-io/nats.go v1.37.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI=
github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc=
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
@@ -687,8 +687,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
-golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
+golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
+golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -802,11 +802,10 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -863,15 +862,16 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
+golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
-golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
+golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=
+golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -884,14 +884,14 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
-golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
+golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
+golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
+golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=