From ddb5b638321f9d74c9971a4ca633dcfc38194e03 Mon Sep 17 00:00:00 2001 From: Zihong Zheng Date: Tue, 14 Nov 2017 12:20:43 -0800 Subject: [PATCH 1/4] Add 'None' option to DNSPolicy and define DNSConfig field in Pod API --- pkg/apis/core/types.go | 46 +++++++++++++++++++++++- pkg/features/kube_features.go | 7 ++++ staging/src/k8s.io/api/core/v1/types.go | 47 +++++++++++++++++++++++-- 3 files changed, 96 insertions(+), 4 deletions(-) diff --git a/pkg/apis/core/types.go b/pkg/apis/core/types.go index 5dab3b25934..f52d0ea23e3 100644 --- a/pkg/apis/core/types.go +++ b/pkg/apis/core/types.go @@ -2183,6 +2183,11 @@ const ( // DNSDefault indicates that the pod should use the default (as // determined by kubelet) DNS settings. DNSDefault DNSPolicy = "Default" + + // DNSNone indicates that the pod should use empty DNS settings. DNS + // parameters such as nameservers and search paths should be defined via + // DNSConfig. + DNSNone DNSPolicy = "None" ) // A node selector represents the union of the results of one or more label queries @@ -2482,7 +2487,12 @@ type PodSpec struct { // before the system actively tries to terminate the pod; value must be positive integer // +optional ActiveDeadlineSeconds *int64 - // Required: Set DNS policy. + // Set DNS policy for the pod. + // Defaults to "ClusterFirst". + // Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. + // DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. + // To have DNS options set along with hostNetwork, you have to specify DNS policy + // explicitly to 'ClusterFirstWithHostNet'. // +optional DNSPolicy DNSPolicy // NodeSelector is a selector which must be true for the pod to fit on a node @@ -2546,6 +2556,11 @@ type PodSpec struct { // The higher the value, the higher the priority. // +optional Priority *int32 + // Specifies the DNS parameters of a pod. + // Parameters specified here will be merged to the generated DNS + // configuration based on DNSPolicy. + // +optional + DNSConfig *PodDNSConfig } // HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the @@ -2635,6 +2650,35 @@ const ( PodQOSBestEffort PodQOSClass = "BestEffort" ) +// PodDNSConfig defines the DNS parameters of a pod in addition to +// those generated from DNSPolicy. +type PodDNSConfig struct { + // A list of DNS name server IP addresses. + // This will be appended to the base nameservers generated from DNSPolicy. + // Duplicated nameservers will be removed. + // +optional + Nameservers []string + // A list of DNS search domains for host-name lookup. + // This will be appended to the base search paths generated from DNSPolicy. + // Duplicated search paths will be removed. + // +optional + Searches []string + // A list of DNS resolver options. + // This will be merged with the base options generated from DNSPolicy. + // Duplicated entries will be removed. Resolution options given in Options + // will override those that appear in the base DNSPolicy. + // +optional + Options []PodDNSConfigOption +} + +// PodDNSConfigOption defines DNS resolver options of a pod. +type PodDNSConfigOption struct { + // Required. + Name string + // +optional + Value *string +} + // PodStatus represents information about the status of a pod. Status may trail the actual // state of a system. type PodStatus struct { diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index cc70071263d..db4e759ca2e 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -188,6 +188,12 @@ const ( // Enable mount/attachment of Container Storage Interface (CSI) backed PVs CSIPersistentVolume utilfeature.Feature = "CSIPersistentVolume" + // owner @MrHohn + // alpha: v1.9 + // + // Support configurable pod DNS parameters. + CustomPodDNS utilfeature.Feature = "CustomPodDNS" + // owner: @screeley44 // alpha: v1.9 // @@ -228,6 +234,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS MountContainers: {Default: false, PreRelease: utilfeature.Alpha}, VolumeScheduling: {Default: false, PreRelease: utilfeature.Alpha}, CSIPersistentVolume: {Default: false, PreRelease: utilfeature.Alpha}, + CustomPodDNS: {Default: false, PreRelease: utilfeature.Alpha}, BlockVolume: {Default: false, PreRelease: utilfeature.Alpha}, // inherited features from generic apiserver, relisted here to get a conflict if it is changed diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index 53d9ec68b76..579484fed31 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -2431,6 +2431,11 @@ const ( // determined by kubelet) DNS settings. DNSDefault DNSPolicy = "Default" + // DNSNone indicates that the pod should use empty DNS settings. DNS + // parameters such as nameservers and search paths should be defined via + // DNSConfig. + DNSNone DNSPolicy = "None" + DefaultTerminationGracePeriodSeconds = 30 ) @@ -2760,10 +2765,12 @@ type PodSpec struct { // Value must be a positive integer. // +optional ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,5,opt,name=activeDeadlineSeconds"` - // Set DNS policy for containers within the pod. - // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. + // Set DNS policy for the pod. // Defaults to "ClusterFirst". - // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. + // DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. + // To have DNS options set along with hostNetwork, you have to specify DNS policy + // explicitly to 'ClusterFirstWithHostNet'. // +optional DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty" protobuf:"bytes,6,opt,name=dnsPolicy,casttype=DNSPolicy"` // NodeSelector is a selector which must be true for the pod to fit on a node. @@ -2856,6 +2863,11 @@ type PodSpec struct { // The higher the value, the higher the priority. // +optional Priority *int32 `json:"priority,omitempty" protobuf:"bytes,25,opt,name=priority"` + // Specifies the DNS parameters of a pod. + // Parameters specified here will be merged to the generated DNS + // configuration based on DNSPolicy. + // +optional + DNSConfig *PodDNSConfig `json:"dnsConfig,omitempty" protobuf:"bytes,26,opt,name=dnsConfig"` } // HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the @@ -2923,6 +2935,35 @@ const ( PodQOSBestEffort PodQOSClass = "BestEffort" ) +// PodDNSConfig defines the DNS parameters of a pod in addition to +// those generated from DNSPolicy. +type PodDNSConfig struct { + // A list of DNS name server IP addresses. + // This will be appended to the base nameservers generated from DNSPolicy. + // Duplicated nameservers will be removed. + // +optional + Nameservers []string `json:"nameservers,omitempty" protobuf:"bytes,1,rep,name=nameservers"` + // A list of DNS search domains for host-name lookup. + // This will be appended to the base search paths generated from DNSPolicy. + // Duplicated search paths will be removed. + // +optional + Searches []string `json:"searches,omitempty" protobuf:"bytes,2,rep,name=searches"` + // A list of DNS resolver options. + // This will be merged with the base options generated from DNSPolicy. + // Duplicated entries will be removed. Resolution options given in Options + // will override those that appear in the base DNSPolicy. + // +optional + Options []PodDNSConfigOption `json:"options,omitempty" protobuf:"bytes,3,rep,name=options"` +} + +// PodDNSConfigOption defines DNS resolver options of a pod. +type PodDNSConfigOption struct { + // Required. + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // +optional + Value *string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` +} + // PodStatus represents information about the status of a pod. Status may trail the actual // state of a system. type PodStatus struct { From af7208047a39694f7015c715466ada48fda1312c Mon Sep 17 00:00:00 2001 From: Zihong Zheng Date: Wed, 15 Nov 2017 21:57:36 -0800 Subject: [PATCH 2/4] Add validation check for PodDNSConfig and 'None' DNSPolicy --- pkg/apis/core/validation/validation.go | 68 ++++++- pkg/apis/core/validation/validation_test.go | 185 +++++++++++++++++++- 2 files changed, 251 insertions(+), 2 deletions(-) diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index aaccd4d2ca4..5eb0fb12206 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -2507,16 +2507,81 @@ func validateDNSPolicy(dnsPolicy *core.DNSPolicy, fldPath *field.Path) field.Err allErrors := field.ErrorList{} switch *dnsPolicy { case core.DNSClusterFirstWithHostNet, core.DNSClusterFirst, core.DNSDefault: - break + case core.DNSNone: + if !utilfeature.DefaultFeatureGate.Enabled(features.CustomPodDNS) { + allErrors = append(allErrors, field.Invalid(fldPath, dnsPolicy, "DNSPolicy: can not use 'None', custom pod DNS is disabled by feature gate")) + } case "": allErrors = append(allErrors, field.Required(fldPath, "")) default: validValues := []string{string(core.DNSClusterFirstWithHostNet), string(core.DNSClusterFirst), string(core.DNSDefault)} + if utilfeature.DefaultFeatureGate.Enabled(features.CustomPodDNS) { + validValues = append(validValues, string(core.DNSNone)) + } allErrors = append(allErrors, field.NotSupported(fldPath, dnsPolicy, validValues)) } return allErrors } +const ( + // Limits on various DNS parameters. These are derived from + // restrictions in Linux libc name resolution handling. + // Max number of DNS name servers. + MaxDNSNameservers = 3 + // Max number of domains in search path. + MaxDNSSearchPaths = 6 + // Max number of characters in search path. + MaxDNSSearchListChars = 256 +) + +func validatePodDNSConfig(dnsConfig *core.PodDNSConfig, dnsPolicy *core.DNSPolicy, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + + // Validate DNSNone case. Must provide at least one DNS name server. + if utilfeature.DefaultFeatureGate.Enabled(features.CustomPodDNS) && dnsPolicy != nil && *dnsPolicy == core.DNSNone { + if dnsConfig == nil { + return append(allErrs, field.Required(fldPath, fmt.Sprintf("must provide `dnsConfig` when `dnsPolicy` is %s", core.DNSNone))) + } + if len(dnsConfig.Nameservers) == 0 { + return append(allErrs, field.Required(fldPath.Child("nameservers"), fmt.Sprintf("must provide at least one DNS nameserver when `dnsPolicy` is %s", core.DNSNone))) + } + } + + if dnsConfig != nil { + if !utilfeature.DefaultFeatureGate.Enabled(features.CustomPodDNS) { + return append(allErrs, field.Forbidden(fldPath, "DNSConfig: custom pod DNS is disabled by feature gate")) + } + + // Validate nameservers. + if len(dnsConfig.Nameservers) > MaxDNSNameservers { + allErrs = append(allErrs, field.Invalid(fldPath.Child("nameservers"), dnsConfig.Nameservers, fmt.Sprintf("must not have more than %v nameservers", MaxDNSNameservers))) + } + for i, ns := range dnsConfig.Nameservers { + if ip := net.ParseIP(ns); ip == nil { + allErrs = append(allErrs, field.Invalid(fldPath.Child("nameservers").Index(i), ns, "must be valid IP address")) + } + } + // Validate searches. + if len(dnsConfig.Searches) > MaxDNSSearchPaths { + allErrs = append(allErrs, field.Invalid(fldPath.Child("searches"), dnsConfig.Searches, fmt.Sprintf("must not have more than %v search paths", MaxDNSSearchPaths))) + } + // Include the space between search paths. + if len(strings.Join(dnsConfig.Searches, " ")) > MaxDNSSearchListChars { + allErrs = append(allErrs, field.Invalid(fldPath.Child("searches"), dnsConfig.Searches, "must not have more than 256 characters (including spaces) in the search list")) + } + for i, search := range dnsConfig.Searches { + allErrs = append(allErrs, ValidateDNS1123Subdomain(search, fldPath.Child("searches").Index(i))...) + } + // Validate options. + for i, option := range dnsConfig.Options { + if len(option.Name) == 0 { + allErrs = append(allErrs, field.Required(fldPath.Child("options").Index(i), "must not be empty")) + } + } + } + return allErrs +} + func validateHostNetwork(hostNetwork bool, containers []core.Container, fldPath *field.Path) field.ErrorList { allErrors := field.ErrorList{} if hostNetwork { @@ -2767,6 +2832,7 @@ func ValidatePodSpec(spec *core.PodSpec, fldPath *field.Path) field.ErrorList { allErrs = append(allErrs, ValidatePodSecurityContext(spec.SecurityContext, spec, fldPath, fldPath.Child("securityContext"))...) allErrs = append(allErrs, validateImagePullSecrets(spec.ImagePullSecrets, fldPath.Child("imagePullSecrets"))...) allErrs = append(allErrs, validateAffinity(spec.Affinity, fldPath.Child("affinity"))...) + allErrs = append(allErrs, validatePodDNSConfig(spec.DNSConfig, &spec.DNSPolicy, fldPath.Child("dnsConfig"))...) if len(spec.ServiceAccountName) > 0 { for _, msg := range ValidateServiceAccountName(spec.ServiceAccountName, false) { allErrs = append(allErrs, field.Invalid(fldPath.Child("serviceAccountName"), spec.ServiceAccountName, msg)) diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 5583eb9a857..62c4c3d0597 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -17,6 +17,7 @@ limitations under the License. package validation import ( + "fmt" "math" "reflect" "strings" @@ -5148,7 +5149,18 @@ func TestValidateRestartPolicy(t *testing.T) { } func TestValidateDNSPolicy(t *testing.T) { - successCases := []core.DNSPolicy{core.DNSClusterFirst, core.DNSDefault, core.DNSPolicy(core.DNSClusterFirst)} + customDNSEnabled := utilfeature.DefaultFeatureGate.Enabled("CustomPodDNS") + defer func() { + // Restoring the old value. + if err := utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("CustomPodDNS=%v", customDNSEnabled)); err != nil { + t.Errorf("Failed to restore CustomPodDNS feature gate: %v", err) + } + }() + if err := utilfeature.DefaultFeatureGate.Set("CustomPodDNS=true"); err != nil { + t.Errorf("Failed to enable CustomPodDNS feature gate: %v", err) + } + + successCases := []core.DNSPolicy{core.DNSClusterFirst, core.DNSDefault, core.DNSPolicy(core.DNSClusterFirst), core.DNSNone} for _, policy := range successCases { if errs := validateDNSPolicy(&policy, field.NewPath("field")); len(errs) != 0 { t.Errorf("expected success: %v", errs) @@ -5163,6 +5175,177 @@ func TestValidateDNSPolicy(t *testing.T) { } } +func TestValidatePodDNSConfig(t *testing.T) { + customDNSEnabled := utilfeature.DefaultFeatureGate.Enabled("CustomPodDNS") + defer func() { + // Restoring the old value. + if err := utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("CustomPodDNS=%v", customDNSEnabled)); err != nil { + t.Errorf("Failed to restore CustomPodDNS feature gate: %v", err) + } + }() + if err := utilfeature.DefaultFeatureGate.Set("CustomPodDNS=true"); err != nil { + t.Errorf("Failed to enable CustomPodDNS feature gate: %v", err) + } + + generateTestSearchPathFunc := func(numChars int) string { + res := "" + for i := 0; i < numChars; i++ { + res = res + "a" + } + return res + } + testOptionValue := "2" + testDNSNone := core.DNSNone + testDNSClusterFirst := core.DNSClusterFirst + + testCases := []struct { + desc string + dnsConfig *core.PodDNSConfig + dnsPolicy *core.DNSPolicy + expectedError bool + }{ + { + desc: "valid: empty DNSConfig", + dnsConfig: &core.PodDNSConfig{}, + expectedError: false, + }, + { + desc: "valid: 1 option", + dnsConfig: &core.PodDNSConfig{ + Options: []core.PodDNSConfigOption{ + {Name: "ndots", Value: &testOptionValue}, + }, + }, + expectedError: false, + }, + { + desc: "valid: 1 nameserver", + dnsConfig: &core.PodDNSConfig{ + Nameservers: []string{"127.0.0.1"}, + }, + expectedError: false, + }, + { + desc: "valid: DNSNone with 1 nameserver", + dnsConfig: &core.PodDNSConfig{ + Nameservers: []string{"127.0.0.1"}, + }, + dnsPolicy: &testDNSNone, + expectedError: false, + }, + { + desc: "valid: 1 search path", + dnsConfig: &core.PodDNSConfig{ + Searches: []string{"custom"}, + }, + expectedError: false, + }, + { + desc: "valid: 3 nameservers and 6 search paths", + dnsConfig: &core.PodDNSConfig{ + Nameservers: []string{"127.0.0.1", "10.0.0.10", "8.8.8.8"}, + Searches: []string{"custom", "mydomain.com", "local", "cluster.local", "svc.cluster.local", "default.svc.cluster.local"}, + }, + expectedError: false, + }, + { + desc: "valid: 256 characters in search path list", + dnsConfig: &core.PodDNSConfig{ + // We can have 256 - (6 - 1) = 251 characters in total for 6 search paths. + Searches: []string{ + generateTestSearchPathFunc(1), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + }, + }, + expectedError: false, + }, + { + desc: "valid: ipv6 nameserver", + dnsConfig: &core.PodDNSConfig{ + Nameservers: []string{"FE80::0202:B3FF:FE1E:8329"}, + }, + expectedError: false, + }, + { + desc: "invalid: 4 nameservers", + dnsConfig: &core.PodDNSConfig{ + Nameservers: []string{"127.0.0.1", "10.0.0.10", "8.8.8.8", "1.2.3.4"}, + }, + expectedError: true, + }, + { + desc: "invalid: 7 search paths", + dnsConfig: &core.PodDNSConfig{ + Searches: []string{"custom", "mydomain.com", "local", "cluster.local", "svc.cluster.local", "default.svc.cluster.local", "exceeded"}, + }, + expectedError: true, + }, + { + desc: "invalid: 257 characters in search path list", + dnsConfig: &core.PodDNSConfig{ + // We can have 256 - (6 - 1) = 251 characters in total for 6 search paths. + Searches: []string{ + generateTestSearchPathFunc(2), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + generateTestSearchPathFunc(50), + }, + }, + expectedError: true, + }, + { + desc: "invalid search path", + dnsConfig: &core.PodDNSConfig{ + Searches: []string{"custom?"}, + }, + expectedError: true, + }, + { + desc: "invalid nameserver", + dnsConfig: &core.PodDNSConfig{ + Nameservers: []string{"invalid"}, + }, + expectedError: true, + }, + { + desc: "invalid empty option name", + dnsConfig: &core.PodDNSConfig{ + Options: []core.PodDNSConfigOption{ + {Value: &testOptionValue}, + }, + }, + expectedError: true, + }, + { + desc: "invalid: DNSNone with 0 nameserver", + dnsConfig: &core.PodDNSConfig{ + Searches: []string{"custom"}, + }, + dnsPolicy: &testDNSNone, + expectedError: true, + }, + } + + for _, tc := range testCases { + if tc.dnsPolicy == nil { + tc.dnsPolicy = &testDNSClusterFirst + } + + errs := validatePodDNSConfig(tc.dnsConfig, tc.dnsPolicy, field.NewPath("dnsConfig")) + if len(errs) != 0 && !tc.expectedError { + t.Errorf("%v: validatePodDNSConfig(%v) = %v, want nil", tc.desc, tc.dnsConfig, errs) + } else if len(errs) == 0 && tc.expectedError { + t.Errorf("%v: validatePodDNSConfig(%v) = nil, want error", tc.desc, tc.dnsConfig) + } + } +} + func TestValidatePodSpec(t *testing.T) { activeDeadlineSeconds := int64(30) activeDeadlineSecondsMax := int64(math.MaxInt32) From 44b5cf3e124c16708689f421b118f0e4fe7d8b90 Mon Sep 17 00:00:00 2001 From: MrHohn Date: Sat, 18 Nov 2017 19:27:14 -0800 Subject: [PATCH 3/4] Autogenerated codes for Custom Pod DNS API --- api/openapi-spec/swagger.json | 44 +- api/swagger-spec/apps_v1.json | 46 +- api/swagger-spec/apps_v1beta1.json | 46 +- api/swagger-spec/apps_v1beta2.json | 46 +- api/swagger-spec/batch_v1.json | 46 +- api/swagger-spec/batch_v1beta1.json | 46 +- api/swagger-spec/batch_v2alpha1.json | 46 +- api/swagger-spec/extensions_v1beta1.json | 46 +- api/swagger-spec/v1.json | 46 +- docs/api-reference/apps/v1/definitions.html | 98 +- .../apps/v1beta1/definitions.html | 98 +- .../apps/v1beta2/definitions.html | 98 +- docs/api-reference/batch/v1/definitions.html | 98 +- .../batch/v1beta1/definitions.html | 180 +- .../batch/v2alpha1/definitions.html | 98 +- .../extensions/v1beta1/definitions.html | 194 +- docs/api-reference/v1/definitions.html | 10764 ++++++++-------- pkg/apis/core/v1/zz_generated.conversion.go | 52 + pkg/apis/core/zz_generated.deepcopy.go | 67 + .../src/k8s.io/api/core/v1/generated.pb.go | 2609 ++-- .../src/k8s.io/api/core/v1/generated.proto | 46 +- .../core/v1/types_swagger_doc_generated.go | 23 +- .../api/core/v1/zz_generated.deepcopy.go | 67 + 23 files changed, 8388 insertions(+), 6516 deletions(-) diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 0a9c95c3315..88e9d4bdd89 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -76152,6 +76152,44 @@ } } }, + "io.k8s.api.core.v1.PodDNSConfig": { + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfigOption" + } + }, + "searches": { + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "io.k8s.api.core.v1.PodDNSConfigOption": { + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "description": "Required.", + "type": "string" + }, + "value": { + "type": "string" + } + } + }, "io.k8s.api.core.v1.PodList": { "description": "PodList is a list of Pods.", "required": [ @@ -76245,8 +76283,12 @@ "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, + "dnsConfig": { + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", + "$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfig" + }, "dnsPolicy": { - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, "hostAliases": { diff --git a/api/swagger-spec/apps_v1.json b/api/swagger-spec/apps_v1.json index 1067d9fbb66..4fff9f1831e 100644 --- a/api/swagger-spec/apps_v1.json +++ b/api/swagger-spec/apps_v1.json @@ -6652,7 +6652,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -6735,6 +6735,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -8607,6 +8611,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1.DaemonSetUpdateStrategy": { "id": "v1.DaemonSetUpdateStrategy", "description": "DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.", diff --git a/api/swagger-spec/apps_v1beta1.json b/api/swagger-spec/apps_v1beta1.json index ed3864bcc4f..0a9f4ce5c83 100644 --- a/api/swagger-spec/apps_v1beta1.json +++ b/api/swagger-spec/apps_v1beta1.json @@ -4286,7 +4286,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -4369,6 +4369,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -6241,6 +6245,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1beta1.DeploymentStrategy": { "id": "v1beta1.DeploymentStrategy", "description": "DeploymentStrategy describes how to replace existing pods with new ones.", diff --git a/api/swagger-spec/apps_v1beta2.json b/api/swagger-spec/apps_v1beta2.json index 9269a5fbb98..f2aa62f3209 100644 --- a/api/swagger-spec/apps_v1beta2.json +++ b/api/swagger-spec/apps_v1beta2.json @@ -6651,7 +6651,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -6734,6 +6734,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -8606,6 +8610,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1beta2.DaemonSetUpdateStrategy": { "id": "v1beta2.DaemonSetUpdateStrategy", "description": "DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.", diff --git a/api/swagger-spec/batch_v1.json b/api/swagger-spec/batch_v1.json index 28b48c3a179..fd7f780ba2b 100644 --- a/api/swagger-spec/batch_v1.json +++ b/api/swagger-spec/batch_v1.json @@ -1626,7 +1626,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -1709,6 +1709,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -3581,6 +3585,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1.JobStatus": { "id": "v1.JobStatus", "description": "JobStatus represents the current state of a Job.", diff --git a/api/swagger-spec/batch_v1beta1.json b/api/swagger-spec/batch_v1beta1.json index bd489166495..de28cd79b11 100644 --- a/api/swagger-spec/batch_v1beta1.json +++ b/api/swagger-spec/batch_v1beta1.json @@ -1681,7 +1681,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -1764,6 +1764,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -3636,6 +3640,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1beta1.CronJobStatus": { "id": "v1beta1.CronJobStatus", "description": "CronJobStatus represents the current state of a cron job.", diff --git a/api/swagger-spec/batch_v2alpha1.json b/api/swagger-spec/batch_v2alpha1.json index 12a212ae35a..9c393fe9e84 100644 --- a/api/swagger-spec/batch_v2alpha1.json +++ b/api/swagger-spec/batch_v2alpha1.json @@ -1681,7 +1681,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -1764,6 +1764,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -3636,6 +3640,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v2alpha1.CronJobStatus": { "id": "v2alpha1.CronJobStatus", "description": "CronJobStatus represents the current state of a cron job.", diff --git a/api/swagger-spec/extensions_v1beta1.json b/api/swagger-spec/extensions_v1beta1.json index 49984d4311e..df2dfaf5612 100644 --- a/api/swagger-spec/extensions_v1beta1.json +++ b/api/swagger-spec/extensions_v1beta1.json @@ -7294,7 +7294,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -7377,6 +7377,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -9249,6 +9253,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1beta1.DaemonSetUpdateStrategy": { "id": "v1beta1.DaemonSetUpdateStrategy", "properties": { diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json index 592cf46cb43..40f8bda8d62 100644 --- a/api/swagger-spec/v1.json +++ b/api/swagger-spec/v1.json @@ -21404,7 +21404,7 @@ }, "dnsPolicy": { "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." }, "nodeSelector": { "type": "object", @@ -21487,6 +21487,10 @@ "type": "integer", "format": "int32", "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority." + }, + "dnsConfig": { + "$ref": "v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." } } }, @@ -22986,6 +22990,46 @@ } } }, + "v1.PodDNSConfig": { + "id": "v1.PodDNSConfig", + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + }, + "searches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + }, + "options": { + "type": "array", + "items": { + "$ref": "v1.PodDNSConfigOption" + }, + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + } + } + }, + "v1.PodDNSConfigOption": { + "id": "v1.PodDNSConfigOption", + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "type": "string", + "description": "Required." + }, + "value": { + "type": "string" + } + } + }, "v1.PodStatus": { "id": "v1.PodStatus", "description": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", diff --git a/docs/api-reference/apps/v1/definitions.html b/docs/api-reference/apps/v1/definitions.html index 5a98f61eb00..887585f5562 100755 --- a/docs/api-reference/apps/v1/definitions.html +++ b/docs/api-reference/apps/v1/definitions.html @@ -3804,7 +3804,7 @@ When an object is created, the system will populate this list with the current s

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -3935,6 +3935,13 @@ When an object is created, the system will populate this list with the current s

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -4637,6 +4644,54 @@ Examples:
+ +
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1.Status

@@ -6131,6 +6186,47 @@ Examples:
+
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1.SecretProjection

diff --git a/docs/api-reference/apps/v1beta1/definitions.html b/docs/api-reference/apps/v1beta1/definitions.html index b0b267e76c5..f90176654d7 100755 --- a/docs/api-reference/apps/v1beta1/definitions.html +++ b/docs/api-reference/apps/v1beta1/definitions.html @@ -3857,7 +3857,7 @@ The StatefulSet guarantees that a given network identity will always map to the

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -3988,6 +3988,13 @@ The StatefulSet guarantees that a given network identity will always map to the

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -4800,6 +4807,54 @@ Examples:
+
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1.Status

@@ -6129,6 +6184,47 @@ Examples:
+
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1.SecretProjection

diff --git a/docs/api-reference/apps/v1beta2/definitions.html b/docs/api-reference/apps/v1beta2/definitions.html index c4259122d64..12d4f1599cc 100755 --- a/docs/api-reference/apps/v1beta2/definitions.html +++ b/docs/api-reference/apps/v1beta2/definitions.html @@ -4473,7 +4473,7 @@ The StatefulSet guarantees that a given network identity will always map to the

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -4604,6 +4604,13 @@ The StatefulSet guarantees that a given network identity will always map to the

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -5347,6 +5354,54 @@ Examples:
+
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1.Status

@@ -6408,6 +6463,47 @@ Examples:
+
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1.SecretProjection

diff --git a/docs/api-reference/batch/v1/definitions.html b/docs/api-reference/batch/v1/definitions.html index 4a69a423b5f..bcf76e5b222 100755 --- a/docs/api-reference/batch/v1/definitions.html +++ b/docs/api-reference/batch/v1/definitions.html @@ -3137,7 +3137,7 @@ When an object is created, the system will populate this list with the current s

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -3268,6 +3268,13 @@ When an object is created, the system will populate this list with the current s

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -3984,6 +3991,54 @@ Examples:
+
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1.NFSVolumeSource

@@ -4999,6 +5054,47 @@ Examples:
+
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1.CinderVolumeSource

diff --git a/docs/api-reference/batch/v1beta1/definitions.html b/docs/api-reference/batch/v1beta1/definitions.html index 2ca1a5d0f62..798d8d6b21e 100755 --- a/docs/api-reference/batch/v1beta1/definitions.html +++ b/docs/api-reference/batch/v1beta1/definitions.html @@ -3171,7 +3171,7 @@ When an object is created, the system will populate this list with the current s

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -3302,6 +3302,13 @@ When an object is created, the system will populate this list with the current s

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -4094,6 +4101,54 @@ Examples:
+
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1.NFSVolumeSource

@@ -4183,6 +4238,47 @@ Examples:
+
+
+

v1beta1.CronJobStatus

+
+

CronJobStatus represents the current state of a cron job.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

active

A list of pointers to currently running jobs.

false

v1.ObjectReference array

lastScheduleTime

Information when was the last time the job was successfully scheduled.

false

string

+

v1.FCVolumeSource

@@ -4245,47 +4341,6 @@ Examples:
-
-
-

v1beta1.CronJobStatus

-
-

CronJobStatus represents the current state of a cron job.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

active

A list of pointers to currently running jobs.

false

v1.ObjectReference array

lastScheduleTime

Information when was the last time the job was successfully scheduled.

false

string

-

v1.PodAntiAffinity

@@ -5081,6 +5136,47 @@ Examples:
+
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1beta1.CronJobList

diff --git a/docs/api-reference/batch/v2alpha1/definitions.html b/docs/api-reference/batch/v2alpha1/definitions.html index c0182e82046..d319cb99dd0 100755 --- a/docs/api-reference/batch/v2alpha1/definitions.html +++ b/docs/api-reference/batch/v2alpha1/definitions.html @@ -3144,7 +3144,7 @@ When an object is created, the system will populate this list with the current s

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -3275,6 +3275,13 @@ When an object is created, the system will populate this list with the current s

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -3991,6 +3998,54 @@ Examples:
+
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1.NFSVolumeSource

@@ -4937,6 +4992,47 @@ Examples:
+
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1.CinderVolumeSource

diff --git a/docs/api-reference/extensions/v1beta1/definitions.html b/docs/api-reference/extensions/v1beta1/definitions.html index 574459aeca2..0a978d9f5d1 100755 --- a/docs/api-reference/extensions/v1beta1/definitions.html +++ b/docs/api-reference/extensions/v1beta1/definitions.html @@ -4496,7 +4496,7 @@ When an object is created, the system will populate this list with the current s

dnsPolicy

-

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

+

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

@@ -4627,6 +4627,13 @@ When an object is created, the system will populate this list with the current s

integer (int32)

+ +

dnsConfig

+

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

+

false

+

v1.PodDNSConfig

+ + @@ -5505,6 +5512,54 @@ Examples:
+
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+

v1beta1.ScaleStatus

@@ -7047,6 +7102,47 @@ Both these may change in the future. Incoming requests are matched against the h +
+
+

v1.PodDNSConfigOption

+
+

PodDNSConfigOption defines DNS resolver options of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Required.

false

string

value

false

string

+

v1beta1.DaemonSet

@@ -8181,54 +8277,6 @@ Both these may change in the future. Incoming requests are matched against the h -
-
-

v1.ConfigMapKeySelector

-
-

Selects a key from a ConfigMap.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

key

The key to select.

true

string

optional

Specify whether the ConfigMap or it’s key must be defined

false

boolean

false

-

v1beta1.DaemonSetCondition

@@ -8291,6 +8339,54 @@ Both these may change in the future. Incoming requests are matched against the h +
+
+

v1.ConfigMapKeySelector

+
+

Selects a key from a ConfigMap.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

key

The key to select.

true

string

optional

Specify whether the ConfigMap or it’s key must be defined

false

boolean

false

+

v1beta1.HTTPIngressPath

diff --git a/docs/api-reference/v1/definitions.html b/docs/api-reference/v1/definitions.html index e9d9e35b4b4..c999c7dca9c 100755 --- a/docs/api-reference/v1/definitions.html +++ b/docs/api-reference/v1/definitions.html @@ -479,294 +479,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

Definitions

-

v1.APIResourceList

-
-

APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

groupVersion

groupVersion is the group and version this APIResourceList is for.

true

string

resources

resources contains the name of the resources and if they are namespaced.

true

v1.APIResource array

- -
-
-

v1.Affinity

-
-

Affinity is a group of affinity scheduling rules.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

nodeAffinity

Describes node affinity scheduling rules for the pod.

false

v1.NodeAffinity

podAffinity

Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

false

v1.PodAffinity

podAntiAffinity

Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

false

v1.PodAntiAffinity

- -
-
-

v1.Node

-
-

Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.NodeSpec

status

Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.NodeStatus

- -
-
-

v1.PersistentVolumeClaimList

-
-

PersistentVolumeClaimList is a list of PersistentVolumeClaim items.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

true

v1.PersistentVolumeClaim array

- -
-
-

v1.NodeSelectorTerm

-
-

A null or empty node selector term matches no objects.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

matchExpressions

Required. A list of node selector requirements. The requirements are ANDed.

true

v1.NodeSelectorRequirement array

- -
-
-

v1.LocalVolumeSource

-
-

Local represents directly-attached storage with node affinity

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

path

The full path to the volume on the node For alpha, this path must be a directory Once block as a source is supported, then this path can point to a block device

true

string

- -
-

v1.Preconditions

Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.

@@ -799,61 +511,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } -
-
-

v1.SELinuxOptions

-
-

SELinuxOptions are the labels to be applied to the container

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

user

User is a SELinux user label that applies to the container.

false

string

role

Role is a SELinux role label that applies to the container.

false

string

type

Type is a SELinux type label that applies to the container.

false

string

level

Level is SELinux level label that applies to the container.

false

string

-

v1.ObjectFieldSelector

@@ -933,102 +590,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

v1.MountPropagationMode

-
-
-

v1.VolumeMount

-
-

VolumeMount describes a mounting of a Volume within a container.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

This must match the Name of a Volume.

true

string

readOnly

Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

false

boolean

false

mountPath

Path within the container at which the volume should be mounted. Must not contain :.

true

string

subPath

Path within the volume from which the container’s volume should be mounted. Defaults to "" (volume’s root).

false

string

mountPropagation

mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationHostToContainer is used. This field is alpha in 1.8 and can be reworked or removed in a future release.

false

v1.MountPropagationMode

- -
-
-

v1.DownwardAPIProjection

-
-

Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

items

Items is a list of DownwardAPIVolume file

false

v1.DownwardAPIVolumeFile array

-

v1.LabelSelector

@@ -1139,75 +700,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } -
-
-

v1.CephFSVolumeSource

-
-

Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

monitors

Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

true

string array

path

Optional: Used as the mounted root, rather than the full Ceph tree, default is /

false

string

user

Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretFile

Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretRef

Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

v1.LocalObjectReference

readOnly

Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

boolean

false

-

v1.DownwardAPIVolumeSource

@@ -1307,115 +799,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } -
-
-

v1.ResourceQuotaSpec

-
-

ResourceQuotaSpec defines the desired hard limits to enforce for Quota.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

hard

Hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/

false

object

scopes

A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.

false

v1.ResourceQuotaScope array

- -
-
-

v1.NamespaceStatus

-
-

NamespaceStatus is information about the current status of a Namespace.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

phase

Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/

false

string

- -
-
-

v1.NamespaceSpec

-
-

NamespaceSpec describes the attributes on a Namespace.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

finalizers

Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/

false

v1.FinalizerName array

-

v1.PersistentVolume

@@ -1480,12 +863,9 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
-

v1.ConfigMapVolumeSource

+

v1.PersistentVolumeStatus

-

Adapts a ConfigMap into a volume.

-
-
-

The contents of the target ConfigMap’s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.

+

PersistentVolumeStatus is the current status of a persistent volume.

@@ -1506,33 +886,26 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } - - + + - - + + - + - - + + - + - - - - - - -

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

phase

Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase

false

string

items

If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the .. path or start with ...

message

A human-readable message indicating details about why the volume is in this state.

false

v1.KeyToPath array

string

defaultMode

Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

reason

Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.

false

integer (int32)

string

optional

Specify whether the ConfigMap or it’s keys must be defined

false

boolean

false

@@ -1591,54 +964,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } -
-
-

v1.PersistentVolumeStatus

-
-

PersistentVolumeStatus is the current status of a persistent volume.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

phase

Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase

false

string

message

A human-readable message indicating details about why the volume is in this state.

false

string

reason

Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.

false

string

-

v1.GitRepoVolumeSource

@@ -1689,9 +1014,9 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
-

v1.EndpointsList

+

v1.PortworxVolumeSource

-

EndpointsList is a list of endpoints.

+

PortworxVolumeSource represents a Portworx volume resource.

@@ -1712,135 +1037,22 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of endpoints.

true

v1.Endpoints array

- -
-
-

v1.ReplicationControllerCondition

-
-

ReplicationControllerCondition describes the state of a replication controller at a certain point.

-
- ------- - - - - - - - - - - - - - + + - - - - - - - - - + + - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

type

Type of replication controller condition.

volumeID

VolumeID uniquely identifies a Portworx volume

true

string

status

Status of the condition, one of True, False, Unknown.

true

string

lastTransitionTime

The last time the condition transitioned from one status to another.

fsType

FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.

false

string

reason

The reason for the condition’s last transition.

false

string

message

A human readable message indicating details about the transition.

false

string

- -
-
-

v1.SecretEnvSource

-
-

SecretEnvSource selects a Secret to populate the environment variables with.

-
-
-

The contents of the target Secret’s Data field will represent the key-value pairs as environment variables.

-
- ------- - - - - - - - - - - - - - - - - - - - - + + @@ -1848,88 +1060,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

optional

Specify whether the Secret must be defined

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

-
-
-

v1.ScaleStatus

-
-

ScaleStatus represents the current status of a scale subresource.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

replicas

actual number of observed instances of the scaled object.

true

integer (int32)

selector

label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors

false

string

- -
-
-

v1.Capabilities

-
-

Adds and removes POSIX capabilities from running containers.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

add

Added capabilities

false

v1.Capability array

drop

Removed capabilities

false

v1.Capability array

-

v1.ConfigMap

@@ -1987,9 +1117,9 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
-

v1.PortworxVolumeSource

+

v1.Capabilities

-

PortworxVolumeSource represents a Portworx volume resource.

+

Adds and removes POSIX capabilities from running containers.

@@ -2010,26 +1140,19 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } - - - - + + + + - - + + - + - - - - - - -

volumeID

VolumeID uniquely identifies a Portworx volume

true

string

add

Added capabilities

false

v1.Capability array

fsType

FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.

drop

Removed capabilities

false

string

v1.Capability array

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

@@ -2090,9 +1213,9 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
-

v1.NodeCondition

+

v1.Initializer

-

NodeCondition contains condition information for a node.

+

Initializer is information about an initializer that has not yet completed.

@@ -2113,47 +1236,12 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

type

Type of node condition.

name

name of the process that is responsible for initializing this object.

true

string

status

Status of the condition, one of True, False, Unknown.

true

string

lastHeartbeatTime

Last time we got an update on a given condition.

false

string

lastTransitionTime

Last time the condition transit from one status to another.

false

string

reason

(brief) reason for the condition’s last transition.

false

string

message

Human readable message indicating details about last transition.

false

string

@@ -2212,115 +1300,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } -
-
-

v1.Initializer

-
-

Initializer is information about an initializer that has not yet completed.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

name of the process that is responsible for initializing this object.

true

string

- -
-
-

v1.LocalObjectReference

-
-

LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

- -
-
-

v1.ResourceQuotaStatus

-
-

ResourceQuotaStatus defines the enforced hard limits and observed use.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

hard

Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/

false

object

used

Used is the current observed total usage of the resource in the namespace.

false

object

-

v1.ProjectedVolumeSource

@@ -2396,47 +1375,6 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } -
-
-

v1.SecretReference

-
-

SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Name is unique within a namespace to reference a secret resource.

false

string

namespace

Namespace defines the space within which the secret name must be unique.

false

string

-

v1.ObjectMeta

@@ -2592,196 +1530,6 @@ When an object is created, the system will populate this list with the current s -
-
-

v1.LimitRangeSpec

-
-

LimitRangeSpec defines a min/max usage limit for resources that match on kind.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

limits

Limits is the list of LimitRangeItem objects that are enforced.

true

v1.LimitRangeItem array

- -
-
-

v1.AzureFileVolumeSource

-
-

AzureFile represents an Azure File Service mount on the host and bind mount to the pod.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

secretName

the name of secret that contains Azure Storage Account Name and Key

true

string

shareName

Share Name

true

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

- -
-
-

types.UID

- -
-
-

v1.ISCSIVolumeSource

-
-

Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

targetPortal

iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

true

string

iqn

Target iSCSI Qualified Name.

true

string

lun

iSCSI Target Lun number.

true

integer (int32)

iscsiInterface

iSCSI Interface Name that uses an iSCSI transport. Defaults to default (tcp).

false

string

fsType

Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi

false

string

readOnly

ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

false

boolean

false

portals

iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

false

string array

chapAuthDiscovery

whether support iSCSI Discovery CHAP authentication

false

boolean

false

chapAuthSession

whether support iSCSI Session CHAP authentication

false

boolean

false

secretRef

CHAP Secret for iSCSI target and initiator authentication

false

v1.LocalObjectReference

initiatorName

Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

false

string

-

v1.EmptyDirVolumeSource

@@ -2878,54 +1626,6 @@ When an object is created, the system will populate this list with the current s -
-
-

v1.PodAffinityTerm

-
-

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

labelSelector

A label query over a set of resources, in this case pods.

false

v1.LabelSelector

namespaces

namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod’s namespace"

false

string array

topologyKey

This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

true

string

-

v1.EnvFromSource

@@ -3031,9 +1731,9 @@ When an object is created, the system will populate this list with the current s
-

v1.PersistentVolumeClaim

+

v1.PodAffinity

-

PersistentVolumeClaim is a user’s request for and claim to a persistent volume

+

Pod affinity is a group of inter pod affinity scheduling rules.

@@ -3054,38 +1754,17 @@ When an object is created, the system will populate this list with the current s - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - + @@ -3148,9 +1827,9 @@ When an object is created, the system will populate this list with the current s
-

v1.PodAffinity

+

v1.FlockerVolumeSource

-

Pod affinity is a group of inter pod affinity scheduling rules.

+

Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

requiredDuringSchedulingIgnoredDuringExecution

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

false

string

v1.PodAffinityTerm array

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

preferredDuringSchedulingIgnoredDuringExecution

The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

false

v1.PersistentVolumeClaimSpec

status

Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

false

v1.PersistentVolumeClaimStatus

v1.WeightedPodAffinityTerm array

@@ -3171,17 +1850,17 @@ When an object is created, the system will populate this list with the current s - - + + - + - - + + - + @@ -3189,9 +1868,9 @@ When an object is created, the system will populate this list with the current s
-

v1.ServiceAccount

+

v1.ListMeta

-

ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets

+

ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.

requiredDuringSchedulingIgnoredDuringExecution

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

datasetName

Name of the dataset stored as metadata → name on the dataset for Flocker should be considered as deprecated

false

v1.PodAffinityTerm array

string

preferredDuringSchedulingIgnoredDuringExecution

The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

datasetUUID

UUID of the dataset. This is unique identifier of a Flocker dataset

false

v1.WeightedPodAffinityTerm array

string

@@ -3212,126 +1891,23 @@ When an object is created, the system will populate this list with the current s - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - -

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

selfLink

selfLink is a URL representing this object. Populated by the system. Read-only.

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

resourceVersion

String that identifies the server’s internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

continue

continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.

false

v1.ObjectMeta

secrets

Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret

false

v1.ObjectReference array

imagePullSecrets

ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod

false

v1.LocalObjectReference array

automountServiceAccountToken

AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.

false

boolean

false

- -
-
-

v1.PersistentVolumeClaimVolumeSource

-
-

PersistentVolumeClaimVolumeSource references the user’s PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

claimName

ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

true

string

readOnly

Will force the ReadOnly setting in VolumeMounts. Default false.

false

boolean

false

- -
-
-

v1.NodeAddress

-
-

NodeAddress contains information for the node’s address.

-
- ------- - - - - - - - - - - - - - - - - - - - - - @@ -3402,9 +1978,9 @@ When an object is created, the system will populate this list with the current s
-

v1.ListMeta

+

v1.NodeAddress

-

ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.

+

NodeAddress contains information for the node’s address.

NameDescriptionRequiredSchemaDefault

type

Node address type, one of Hostname, ExternalIP or InternalIP.

true

string

address

The node address.

true

string

@@ -3425,120 +2001,17 @@ When an object is created, the system will populate this list with the current s - - - - - - - - - - - - - - - - - - - - - -

selfLink

selfLink is a URL representing this object. Populated by the system. Read-only.

false

string

resourceVersion

String that identifies the server’s internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency

false

string

continue

continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.

false

string

- -
-
-

v1.FlockerVolumeSource

-
-

Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

datasetName

Name of the dataset stored as metadata → name on the dataset for Flocker should be considered as deprecated

false

string

datasetUUID

UUID of the dataset. This is unique identifier of a Flocker dataset

false

string

- -
-
-

v1.ResourceQuotaList

-
-

ResourceQuotaList is a list of ResourceQuota items.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + + + + + @@ -3546,9 +2019,9 @@ When an object is created, the system will populate this list with the current s
-

v1.PersistentVolumeClaimStatus

+

v1.PersistentVolumeClaimVolumeSource

-

PersistentVolumeClaimStatus is the current status of a persistent volume claim.

+

PersistentVolumeClaimVolumeSource references the user’s PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).

NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/

type

Node address type, one of Hostname, ExternalIP or InternalIP.

true

v1.ResourceQuota array

string

address

The node address.

true

string

@@ -3569,40 +2042,22 @@ When an object is created, the system will populate this list with the current s - - - + + + - - + + - - - - - - + - - - - - - - - -

phase

Phase represents the current phase of PersistentVolumeClaim.

false

claimName

ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

true

string

accessModes

AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

readOnly

Will force the ReadOnly setting in VolumeMounts. Default false.

false

v1.PersistentVolumeAccessMode array

capacity

Represents the actual resources of the underlying volume.

boolean

false

object

conditions

Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to ResizeStarted.

false

v1.PersistentVolumeClaimCondition array

-
-
-

v1.UniqueVolumeName

-

v1.EndpointSubset

@@ -3658,54 +2113,6 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.CSIPersistentVolumeSource

-
-

Represents storage that is managed by an external CSI volume driver

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

driver

Driver is the name of the driver to use for this volume. Required.

true

string

volumeHandle

VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.

true

string

readOnly

Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).

false

boolean

false

-

v1.PersistentVolumeClaimCondition

@@ -3833,61 +2240,6 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.EnvVarSource

-
-

EnvVarSource represents a source for the value of an EnvVar.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

fieldRef

Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.

false

v1.ObjectFieldSelector

resourceFieldRef

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.

false

v1.ResourceFieldSelector

configMapKeyRef

Selects a key of a ConfigMap.

false

v1.ConfigMapKeySelector

secretKeyRef

Selects a key of a secret in the pod’s namespace

false

v1.SecretKeySelector

-

v1.FlexVolumeSource

@@ -4053,123 +2405,6 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.KeyToPath

-
-

Maps a string key to a path within a volume.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

key

The key to project.

true

string

path

The relative path of the file to map the key to. May not be an absolute path. May not contain the path element ... May not start with the string ...

true

string

mode

Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

false

integer (int32)

- -
-
-

v1.AzureDiskVolumeSource

-
-

AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

diskName

The Name of the data disk in the blob storage

true

string

diskURI

The URI the data disk in the blob storage

true

string

cachingMode

Host Caching mode: None, Read Only, Read Write.

false

v1.AzureDataDiskCachingMode

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

kind

Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

false

v1.AzureDataDiskKind

-

v1.Service

@@ -4232,310 +2467,10 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.VsphereVirtualDiskVolumeSource

-
-

Represents a vSphere volume resource.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

volumePath

Path that identifies vSphere volume vmdk

true

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

storagePolicyName

Storage Policy Based Management (SPBM) profile name.

false

string

storagePolicyID

Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

false

string

- -
-
-

v1.ServiceAccountList

-
-

ServiceAccountList is a list of ServiceAccount objects

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

true

v1.ServiceAccount array

- -
-
-

v1.LimitRangeList

-
-

LimitRangeList is a list of LimitRange items.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

true

v1.LimitRange array

- -
-
-

v1.Endpoints

-
-

Endpoints is a collection of endpoints that implement the actual service. Example:
- Name: "mysvc",
- Subsets: [
- {
- Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
- Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
- },
- {
- Addresses: [{"ip": "10.10.3.3"}],
- Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
- },
- ]

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

subsets

The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.

true

v1.EndpointSubset array

-

v1.PersistentVolumeMode

-
-
-

v1.DeleteOptions

-
-

DeleteOptions may be provided when deleting an API object.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

gracePeriodSeconds

The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.

false

integer (int64)

preconditions

Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.

false

v1.Preconditions

orphanDependents

Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object’s finalizers list. Either this field or PropagationPolicy may be set, but not both.

false

boolean

false

propagationPolicy

Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: Orphan - orphan the dependents; Background - allow the garbage collector to delete the dependents in the background; Foreground - a cascading policy that deletes all dependents in the foreground.

false

v1.DeletionPropagation

-

v1.StorageOSPersistentVolumeSource

@@ -4598,229 +2533,6 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.Volume

-
-

Volume represents a named volume in a pod that may be accessed by any container in the pod.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Volume’s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

true

string

hostPath

HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

false

v1.HostPathVolumeSource

emptyDir

EmptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

false

v1.EmptyDirVolumeSource

gcePersistentDisk

GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

false

v1.GCEPersistentDiskVolumeSource

awsElasticBlockStore

AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

false

v1.AWSElasticBlockStoreVolumeSource

gitRepo

GitRepo represents a git repository at a particular revision.

false

v1.GitRepoVolumeSource

secret

Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

false

v1.SecretVolumeSource

nfs

NFS represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

false

v1.NFSVolumeSource

iscsi

ISCSI represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md

false

v1.ISCSIVolumeSource

glusterfs

Glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md

false

v1.GlusterfsVolumeSource

persistentVolumeClaim

PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

false

v1.PersistentVolumeClaimVolumeSource

rbd

RBD represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md

false

v1.RBDVolumeSource

flexVolume

FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.

false

v1.FlexVolumeSource

cinder

Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md

false

v1.CinderVolumeSource

cephfs

CephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

false

v1.CephFSVolumeSource

flocker

Flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

false

v1.FlockerVolumeSource

downwardAPI

DownwardAPI represents downward API about the pod that should populate this volume

false

v1.DownwardAPIVolumeSource

fc

FC represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

false

v1.FCVolumeSource

azureFile

AzureFile represents an Azure File Service mount on the host and bind mount to the pod.

false

v1.AzureFileVolumeSource

configMap

ConfigMap represents a configMap that should populate this volume

false

v1.ConfigMapVolumeSource

vsphereVolume

VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

false

v1.VsphereVirtualDiskVolumeSource

quobyte

Quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

false

v1.QuobyteVolumeSource

azureDisk

AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

false

v1.AzureDiskVolumeSource

photonPersistentDisk

PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

false

v1.PhotonPersistentDiskVolumeSource

projected

Items for all in one resources secrets, configmaps, and downward API

false

v1.ProjectedVolumeSource

portworxVolume

PortworxVolume represents a portworx volume attached and mounted on kubelets host machine

false

v1.PortworxVolumeSource

scaleIO

ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

false

v1.ScaleIOVolumeSource

storageos

StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

false

v1.StorageOSVolumeSource

-

v1.ResourceFieldSelector

@@ -4869,54 +2581,6 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.VolumeProjection

-
-

Projection that may be projected along with other supported volume types

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

secret

information about the secret data to project

false

v1.SecretProjection

downwardAPI

information about the downwardAPI data to project

false

v1.DownwardAPIProjection

configMap

information about the configMap data to project

false

v1.ConfigMapProjection

-

v1.WeightedPodAffinityTerm

@@ -4958,541 +2622,6 @@ The resulting set of endpoints can be viewed as:
-
-
-

v1.Probe

-
-

Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

exec

One and only one of the following should be specified. Exec specifies the action to take.

false

v1.ExecAction

httpGet

HTTPGet specifies the http request to perform.

false

v1.HTTPGetAction

tcpSocket

TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported

false

v1.TCPSocketAction

initialDelaySeconds

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

false

integer (int32)

timeoutSeconds

Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

false

integer (int32)

periodSeconds

How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.

false

integer (int32)

successThreshold

Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.

false

integer (int32)

failureThreshold

Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.

false

integer (int32)

- -
-
-

v1.CephFSPersistentVolumeSource

-
-

Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

monitors

Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

true

string array

path

Optional: Used as the mounted root, rather than the full Ceph tree, default is /

false

string

user

Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretFile

Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretRef

Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

v1.SecretReference

readOnly

Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

boolean

false

- -
-
-

v1.SecretKeySelector

-
-

SecretKeySelector selects a key of a Secret.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

key

The key of the secret to select from. Must be a valid secret key.

true

string

optional

Specify whether the Secret or it’s key must be defined

false

boolean

false

- -
-
-

v1.ReplicationController

-
-

ReplicationController represents the configuration of a replication controller.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.ReplicationControllerSpec

status

Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.ReplicationControllerStatus

- -
-
-

v1.Capability

- -
-
-

v1.PodStatus

-
-

PodStatus represents information about the status of a pod. Status may trail the actual state of a system.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

phase

Current condition of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase

false

string

conditions

Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

false

v1.PodCondition array

message

A human readable message indicating details about why the pod is in this condition.

false

string

reason

A brief CamelCase message indicating details about why the pod is in this state. e.g. Evicted

false

string

hostIP

IP address of the host to which the pod is assigned. Empty if not yet scheduled.

false

string

podIP

IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.

false

string

startTime

RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.

false

string

initContainerStatuses

The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

false

v1.ContainerStatus array

containerStatuses

The list has one entry per container in the manifest. Each entry is currently the output of docker inspect. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

false

v1.ContainerStatus array

qosClass

The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md

false

string

- -
-
-

v1.DownwardAPIVolumeFile

-
-

DownwardAPIVolumeFile represents information to create the file containing the pod field

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

path

Required: Path is the relative path name of the file to be created. Must not be absolute or contain the .. path. Must be utf-8 encoded. The first item of the relative path must not start with ..

true

string

fieldRef

Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

false

v1.ObjectFieldSelector

resourceFieldRef

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

false

v1.ResourceFieldSelector

mode

Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

false

integer (int32)

- -
-
-

v1.LimitRange

-
-

LimitRange sets resource usage limits for each kind of resource in a Namespace.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.LimitRangeSpec

- -
-
-

v1.ContainerPort

-
-

ContainerPort represents a network port in a single container.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.

false

string

hostPort

Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.

false

integer (int32)

containerPort

Number of port to expose on the pod’s IP address. This must be a valid port number, 0 < x < 65536.

true

integer (int32)

protocol

Protocol for port. Must be UDP or TCP. Defaults to "TCP".

false

string

hostIP

What host IP to bind the external port to.

false

string

-

v1.ISCSIPersistentVolumeSource

@@ -5599,9 +2728,9 @@ The resulting set of endpoints can be viewed as:
-

v1.PodSpec

+

v1.ContainerPort

-

PodSpec is a description of a pod.

+

ContainerPort represents a network port in a single container.

@@ -5622,180 +2751,40 @@ The resulting set of endpoints can be viewed as:
- - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + +

volumes

List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes

false

v1.Volume array

initContainers

List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

false

v1.Container array

containers

List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.

true

v1.Container array

restartPolicy

Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

name

If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.

false

string

terminationGracePeriodSeconds

Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.

false

integer (int64)

activeDeadlineSeconds

Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.

false

integer (int64)

dnsPolicy

Set DNS policy for containers within the pod. One of ClusterFirstWithHostNet, ClusterFirst or Default. Defaults to "ClusterFirst". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

nodeSelector

NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

false

object

serviceAccountName

ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

false

string

serviceAccount

DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.

false

string

automountServiceAccountToken

AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.

false

boolean

false

nodeName

NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.

false

string

hostNetwork

Host networking requested for this pod. Use the host’s network namespace. If this option is set, the ports that will be used must be specified. Default to false.

false

boolean

false

hostPID

Use the host’s pid namespace. Optional: Default to false.

false

boolean

false

hostIPC

Use the host’s ipc namespace. Optional: Default to false.

false

boolean

false

securityContext

SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.

false

v1.PodSecurityContext

imagePullSecrets

ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

false

v1.LocalObjectReference array

hostname

Specifies the hostname of the Pod If not specified, the pod’s hostname will be set to a system-defined value.

false

string

subdomain

If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". If not specified, the pod will not have a domainname at all.

false

string

affinity

If specified, the pod’s scheduling constraints

false

v1.Affinity

schedulerName

If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.

false

string

tolerations

If specified, the pod’s tolerations.

false

v1.Toleration array

hostAliases

HostAliases is an optional list of hosts and IPs that will be injected into the pod’s hosts file if specified. This is only valid for non-hostNetwork pods.

false

v1.HostAlias array

priorityClassName

If specified, indicates the pod’s priority. "SYSTEM" is a special keyword which indicates the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.

false

string

priority

The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.

hostPort

Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.

false

integer (int32)

containerPort

Number of port to expose on the pod’s IP address. This must be a valid port number, 0 < x < 65536.

true

integer (int32)

protocol

Protocol for port. Must be UDP or TCP. Defaults to "TCP".

false

string

hostIP

What host IP to bind the external port to.

false

string

@@ -5863,9 +2852,9 @@ The resulting set of endpoints can be viewed as:
-

v1.EventList

+

v1.GlusterfsVolumeSource

-

EventList is a list of events.

+

Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.

@@ -5886,176 +2875,25 @@ The resulting set of endpoints can be viewed as:
- - - - - - - - - - - - - - - - - - - - - - - + + - + - -

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of events

endpoints

EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod

true

v1.Event array

string

- -
-
-

v1.Lifecycle

-
-

Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.

-
- ------- - - - - - - + + + + + - - - - + + - - - - - - + - - - - -
NameDescriptionRequiredSchemaDefault

path

Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod

true

string

postStart

PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

readOnly

ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod

false

v1.Handler

preStop

PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

boolean

false

v1.Handler

- -
-
-

v1.ReplicationControllerSpec

-
-

ReplicationControllerSpec is the specification of a replication controller.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

replicas

Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller

false

integer (int32)

minReadySeconds

Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)

false

integer (int32)

selector

Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

false

object

template

Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template

false

v1.PodTemplateSpec

- -
-
-

v1.Handler

-
-

Handler defines a specific action that should be taken

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

exec

One and only one of the following should be specified. Exec specifies the action to take.

false

v1.ExecAction

httpGet

HTTPGet specifies the http request to perform.

false

v1.HTTPGetAction

tcpSocket

TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported

false

v1.TCPSocketAction

@@ -6159,9 +2997,9 @@ The resulting set of endpoints can be viewed as:
-

v1.GlusterfsVolumeSource

+

v1.Handler

-

Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.

+

Handler defines a specific action that should be taken

@@ -6182,34 +3020,34 @@ The resulting set of endpoints can be viewed as:
- - - - + + + + - - - - + + + + - - - - + + + +

endpoints

EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod

true

string

exec

One and only one of the following should be specified. Exec specifies the action to take.

false

v1.ExecAction

path

Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod

true

string

httpGet

HTTPGet specifies the http request to perform.

false

v1.HTTPGetAction

readOnly

ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod

false

boolean

tcpSocket

TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported

false

v1.TCPSocketAction

-

v1.AttachedVolume

+

v1.ReplicationControllerSpec

-

AttachedVolume describes a volume attached to a node

+

ReplicationControllerSpec is the specification of a replication controller.

@@ -6230,16 +3068,71 @@ The resulting set of endpoints can be viewed as:
- - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

Name of the attached volume

true

replicas

Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller

false

integer (int32)

minReadySeconds

Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)

false

integer (int32)

selector

Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

false

object

template

Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template

false

v1.PodTemplateSpec

+ +
+
+

v1.EventSource

+
+

EventSource contains information for an event.

+
+ +++++++ + + + + + + + + + + + + + + - - - + + + @@ -6308,47 +3201,6 @@ The resulting set of endpoints can be viewed as:
NameDescriptionRequiredSchemaDefault

component

Component from which the event is generated.

false

string

devicePath

DevicePath represents the device path where the volume should be available

true

host

Node name on which the event is generated.

false

string

-
-
-

v1.EventSource

-
-

EventSource contains information for an event.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

component

Component from which the event is generated.

false

string

host

Node name on which the event is generated.

false

string

-

v1.StatusCause

@@ -6435,158 +3287,6 @@ Examples:
-
-
-

v1.PodCondition

-
-

PodCondition contains details for the current condition of this pod.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

type

Type is the type of the condition. Currently only Ready. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

true

string

status

Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

true

string

lastProbeTime

Last time we probed the condition.

false

string

lastTransitionTime

Last time the condition transitioned from one status to another.

false

string

reason

Unique, one-word, CamelCase reason for the condition’s last transition.

false

string

message

Human-readable message indicating details about last transition.

false

string

- -
-
-

v1.RBDVolumeSource

-
-

Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

monitors

A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

true

string array

image

The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

true

string

fsType

Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd

false

string

pool

The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

string

user

The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

string

keyring

Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

string

secretRef

SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

v1.LocalObjectReference

readOnly

ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

boolean

false

-

v1.ConfigMapProjection

@@ -6735,51 +3435,6 @@ Examples:
-
-
-

v1.PhotonPersistentDiskVolumeSource

-
-

Represents a Photon Controller persistent disk resource.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

pdID

ID that identifies Photon Controller persistent disk

true

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

- -
-
-

v1.HostPathType

-

v1.Initializers

@@ -6821,89 +3476,6 @@ Examples:
-
-
-

v1.Status

-
-

Status is a return value for calls that don’t return other objects.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

status

Status of the operation. One of: "Success" or "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

string

message

A human-readable description of the status of this operation.

false

string

reason

A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.

false

string

details

Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.

false

v1.StatusDetails

code

Suggested HTTP return code for this status, 0 if not set.

false

integer (int32)

-

v1.PodTemplate

@@ -6959,40 +3531,6 @@ Examples:
-
-
-

v1.ServiceStatus

-
-

ServiceStatus represents the current status of a service.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

loadBalancer

LoadBalancer contains the current status of the load-balancer, if one is present.

false

v1.LoadBalancerStatus

-

v1.NFSVolumeSource

@@ -7041,6 +3579,40 @@ Examples:
+
+
+

v1.ServiceStatus

+
+

ServiceStatus represents the current status of a service.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

loadBalancer

LoadBalancer contains the current status of the load-balancer, if one is present.

false

v1.LoadBalancerStatus

+

v1.HTTPHeader

@@ -7082,109 +3654,6 @@ Examples:
-
-
-

v1.FCVolumeSource

-
-

Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

targetWWNs

Optional: FC target worldwide names (WWNs)

false

string array

lun

Optional: FC target lun number

false

integer (int32)

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

wwids

Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

false

string array

- -
-
-

v1.PodAntiAffinity

-
-

Pod anti affinity is a group of inter pod anti affinity scheduling rules.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

requiredDuringSchedulingIgnoredDuringExecution

If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

false

v1.PodAffinityTerm array

preferredDuringSchedulingIgnoredDuringExecution

The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

false

v1.WeightedPodAffinityTerm array

-

v1.EndpointPort

@@ -7235,13 +3704,9 @@ Examples:
-

v1.DeletionPropagation

- -
-
-

v1.TCPSocketAction

+

v1.PodAntiAffinity

-

TCPSocketAction describes an action based on opening a socket

+

Pod anti affinity is a group of inter pod anti affinity scheduling rules.

@@ -7262,17 +3727,17 @@ Examples:
- - - - + + + + - - + + - + @@ -7409,40 +3874,6 @@ Examples:

port

Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.

true

string

requiredDuringSchedulingIgnoredDuringExecution

If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

false

v1.PodAffinityTerm array

host

Optional: Host name to connect to, defaults to the pod IP.

preferredDuringSchedulingIgnoredDuringExecution

The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

false

string

v1.WeightedPodAffinityTerm array

-
-
-

v1.LoadBalancerStatus

-
-

LoadBalancerStatus represents the status of a load-balancer.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

ingress

Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.

false

v1.LoadBalancerIngress array

-

v1.SecretList

@@ -7498,244 +3929,6 @@ Examples:
-
-
-

v1.Container

-
-

A single application container that you want to run within a pod.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.

true

string

image

Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.

false

string

command

Entrypoint array. Not executed within a shell. The docker image’s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

false

string array

args

Arguments to the entrypoint. The docker image’s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

false

string array

workingDir

Container’s working directory. If not specified, the container runtime’s default will be used, which might be configured in the container image. Cannot be updated.

false

string

ports

List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.

false

v1.ContainerPort array

envFrom

List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.

false

v1.EnvFromSource array

env

List of environment variables to set in the container. Cannot be updated.

false

v1.EnvVar array

resources

Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

false

v1.ResourceRequirements

volumeMounts

Pod volumes to mount into the container’s filesystem. Cannot be updated.

false

v1.VolumeMount array

volumeDevices

volumeDevices is the list of block devices to be used by the container. This is an alpha feature and may change in the future.

false

v1.VolumeDevice array

livenessProbe

Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

false

v1.Probe

readinessProbe

Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

false

v1.Probe

lifecycle

Actions that the management system should take in response to container lifecycle events. Cannot be updated.

false

v1.Lifecycle

terminationMessagePath

Optional: Path at which the file to which the container’s termination message will be written is mounted into the container’s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.

false

string

terminationMessagePolicy

Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.

false

string

imagePullPolicy

Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images

false

string

securityContext

Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

false

v1.SecurityContext

stdin

Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.

false

boolean

false

stdinOnce

Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false

false

boolean

false

tty

Whether this container should allocate a TTY for itself, also requires stdin to be true. Default is false.

false

boolean

false

- -
-
-

v1.PodSecurityContext

-
-

PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

seLinuxOptions

The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.

false

v1.SELinuxOptions

runAsUser

The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.

false

integer (int64)

runAsNonRoot

Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.

false

boolean

false

supplementalGroups

A list of groups applied to the first process run in each container, in addition to the container’s primary GID. If unspecified, no groups will be added to any container.

false

integer (int32) array

fsGroup

A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:
-
-1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR’d with rw-rw

false

integer (int64)

-

v1.PersistentVolumeSpec

@@ -7968,9 +4161,9 @@ Examples:
-

v1.ReplicationControllerStatus

+

v1.PodSecurityContext

-

ReplicationControllerStatus represents the current status of a replication controller.

+

PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.

@@ -7991,45 +4184,40 @@ Examples:
- - - - - - - - - + + - + - - - - - - - - - - - - - - - - + + - - + + - + + + + + + + + + + + + + + + @@ -8101,164 +4289,6 @@ Examples:

replicas

Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller

true

integer (int32)

fullyLabeledReplicas

The number of pods that have labels matching the labels of the pod template of the replication controller.

seLinuxOptions

The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.

false

integer (int32)

v1.SELinuxOptions

readyReplicas

The number of ready replicas for this replication controller.

false

integer (int32)

availableReplicas

The number of available replicas (ready for at least minReadySeconds) for this replication controller.

false

integer (int32)

observedGeneration

ObservedGeneration reflects the generation of the most recently observed replication controller.

runAsUser

The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.

false

integer (int64)

conditions

Represents the latest available observations of a replication controller’s current state.

runAsNonRoot

Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.

false

v1.ReplicationControllerCondition array

boolean

false

supplementalGroups

A list of groups applied to the first process run in each container, in addition to the container’s primary GID. If unspecified, no groups will be added to any container.

false

integer (int32) array

fsGroup

A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:
+
+1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR’d with rw-rw

false

integer (int64)

-
-
-

v1.OwnerReference

-
-

OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

apiVersion

API version of the referent.

true

string

kind

Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

true

string

name

Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names

true

string

uid

UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids

true

string

controller

If true, this reference points to the managing controller.

false

boolean

false

blockOwnerDeletion

If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.

false

boolean

false

- -
-
-

v1.ComponentCondition

-
-

Information about the condition of a component.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

type

Type of condition for a component. Valid value: "Healthy"

true

string

status

Status of the condition for a component. Valid values for "Healthy": "True", "False", or "Unknown".

true

string

message

Message about the condition for a component. For example, information about a health check.

false

string

error

Condition error code for a component. For example, a health check error code.

false

string

- -
-
-

v1.ScaleSpec

-
-

ScaleSpec describes the attributes of a scale subresource.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

replicas

desired number of instances for the scaled object.

false

integer (int32)

-

v1.ComponentStatusList

@@ -8314,6 +4344,40 @@ Examples:
+
+
+

v1.ScaleSpec

+
+

ScaleSpec describes the attributes of a scale subresource.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

replicas

desired number of instances for the scaled object.

false

integer (int32)

+

v1.ClientIPConfig

@@ -8348,96 +4412,6 @@ Examples:
-
-
-

v1.APIResource

-
-

APIResource specifies the name of a resource and whether it is namespaced.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

name is the plural name of the resource.

true

string

singularName

singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.

true

string

namespaced

namespaced indicates if a resource is namespaced or not.

true

boolean

false

group

group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale".

false

string

version

version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource’s group)".

false

string

kind

kind is the kind for the resource (e.g. Foo is the kind for a resource foo)

true

string

verbs

verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)

true

string array

shortNames

shortNames is a list of suggested short names of the resource.

false

string array

categories

categories is a list of the grouped resources this resource belongs to (e.g. all)

false

string array

-

v1.VolumeDevice

@@ -8621,9 +4595,9 @@ Examples:
-

v1.ContainerStateTerminated

+

v1.PodDNSConfigOption

-

ContainerStateTerminated is a terminated state of a container.

+

PodDNSConfigOption defines DNS resolver options of a pod.

@@ -8644,109 +4618,19 @@ Examples:
- - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - -

exitCode

Exit status from the last termination of the container

true

integer (int32)

signal

Signal from the last termination of the container

false

integer (int32)

reason

(brief) reason from the last termination of the container

name

Required.

false

string

message

Message regarding the last termination of the container

value

false

string

startedAt

Time at which previous execution of the container started

false

string

finishedAt

Time at which the container last terminated

false

string

containerID

Container’s ID in the format docker://<container_id>

false

string

- -
-
-

v1.Binding

-
-

Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

target

The target object that you want to bind to the standard object.

true

v1.ObjectReference

@@ -8833,6 +4717,82 @@ Examples:
+
+
+

v1.ContainerStateTerminated

+
+

ContainerStateTerminated is a terminated state of a container.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

exitCode

Exit status from the last termination of the container

true

integer (int32)

signal

Signal from the last termination of the container

false

integer (int32)

reason

(brief) reason from the last termination of the container

false

string

message

Message regarding the last termination of the container

false

string

startedAt

Time at which previous execution of the container started

false

string

finishedAt

Time at which the container last terminated

false

string

containerID

Container’s ID in the format docker://<container_id>

false

string

+

v1.CinderVolumeSource

@@ -8881,54 +4841,6 @@ Examples:
-
-
-

v1.ContainerState

-
-

ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

waiting

Details about a waiting container

false

v1.ContainerStateWaiting

running

Details about a running container

false

v1.ContainerStateRunning

terminated

Details about a terminated container

false

v1.ContainerStateTerminated

-

v1.SecurityContext

@@ -9063,6 +4975,68 @@ Examples:
+
+
+

v1.QuobyteVolumeSource

+
+

Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

registry

Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

true

string

volume

Volume is a string that references an already created Quobyte volume by name.

true

string

readOnly

ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

false

boolean

false

user

User to map volume access to Defaults to serivceaccount user

false

string

group

Group to map volume access to Default is no group

false

string

+

v1.ContainerStatus

@@ -9146,68 +5120,6 @@ Examples:
-
-
-

v1.QuobyteVolumeSource

-
-

Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

registry

Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

true

string

volume

Volume is a string that references an already created Quobyte volume by name.

true

string

readOnly

ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

false

boolean

false

user

User to map volume access to Defaults to serivceaccount user

false

string

group

Group to map volume access to Default is no group

false

string

-

v1.ContainerImage

@@ -9253,61 +5165,6 @@ Examples:

v1.ResourceQuotaScope

-
-
-

v1.ReplicationControllerList

-
-

ReplicationControllerList is a collection of replication controllers.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller

true

v1.ReplicationController array

-

v1.NodeDaemonEndpoints

@@ -9342,113 +5199,6 @@ Examples:
-
-
-

v1.Secret

-
-

Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

data

Data contains the secret data. Each key must consist of alphanumeric characters, -, _ or .. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4

false

object

stringData

stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.

false

object

type

Used to facilitate programmatic handling of secret data.

false

string

- -
-
-

v1.WatchEvent

- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

type

true

string

object

true

string

-

v1.Event

@@ -9553,147 +5303,10 @@ Examples:
-
-
-

v1.EnvVar

-
-

EnvVar represents an environment variable present in a Container.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

name

Name of the environment variable. Must be a C_IDENTIFIER.

true

string

value

Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".

false

string

valueFrom

Source for the environment variable’s value. Cannot be used if value is not empty.

false

v1.EnvVarSource

- -
-
-

v1.LabelSelectorRequirement

-
-

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

key

key is the label key that the selector applies to.

true

string

operator

operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

true

string

values

values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

false

string array

-

v1.PersistentVolumeAccessMode

-
-
-

v1.ResourceRequirements

-
-

ResourceRequirements describes the compute resource requirements.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

limits

Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

false

object

requests

Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

false

object

-

v1.ComponentStatus

@@ -9790,75 +5403,6 @@ Examples:
-
-
-

v1.LimitRangeItem

-
-

LimitRangeItem defines a min/max usage limit for any resource that matches on kind.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

type

Type of resource that this limit applies to.

false

string

max

Max usage constraints on this kind by resource name.

false

object

min

Min usage constraints on this kind by resource name.

false

object

default

Default resource requirement limit value by resource name if resource limit is omitted.

false

object

defaultRequest

DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.

false

object

maxLimitRequestRatio

MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.

false

object

-

v1.PodTemplateSpec

@@ -9900,150 +5444,6 @@ Examples:
-
-
-

v1.PodList

-
-

PodList is a list of Pods.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md

true

v1.Pod array

- -
-
-

v1.ServiceList

-
-

ServiceList holds a list of services.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of services

true

v1.Service array

- -
-
-

v1.NodeSelector

-
-

A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.

-
- ------- - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

nodeSelectorTerms

Required. A list of node selector terms. The terms are ORed.

true

v1.NodeSelectorTerm array

-

v1.PersistentVolumeList

@@ -10101,18 +5501,9 @@ Examples:
-

v1.Patch

+

v1.NodeSelector

-

Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.

-
-
-
-

v1.ConfigMapEnvSource

-
-

ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.

-
-
-

The contents of the target ConfigMap’s Data field will represent the key-value pairs as environment variables.

+

A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.

@@ -10133,22 +5524,21 @@ Examples:
- - - - + + + + - - - - - - -

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

nodeSelectorTerms

Required. A list of node selector terms. The terms are ORed.

true

v1.NodeSelectorTerm array

optional

Specify whether the ConfigMap must be defined

false

boolean

false

+
+
+

v1.Patch

+
+

Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.

+

v1.StorageOSVolumeSource

@@ -10211,123 +5601,6 @@ Examples:
-
-
-

v1.ObjectReference

-
-

ObjectReference contains enough information to let you inspect or modify the referred object.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

kind

Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

namespace

Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

false

string

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

uid

UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

false

string

apiVersion

API version of the referent.

false

string

resourceVersion

Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency

false

string

fieldPath

If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.

false

string

- -
-
-

v1.ContainerStateWaiting

-
-

ContainerStateWaiting is a waiting state of a container.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

reason

(brief) reason the container is not yet running.

false

string

message

Message regarding why the container is not yet running.

false

string

-

v1.NodeAffinity

@@ -10369,6 +5642,10 @@ Examples:
+
+
+

v1.AzureDataDiskKind

+

v1.PreferredSchedulingTerm

@@ -10410,10 +5687,6 @@ Examples:
-
-
-

v1.AzureDataDiskKind

-

v1.NodeConfigSource

@@ -10607,103 +5880,6 @@ Examples:
-
-
-

v1.ScaleIOPersistentVolumeSource

-
-

ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

gateway

The host address of the ScaleIO API Gateway.

true

string

system

The name of the storage system as configured in ScaleIO.

true

string

secretRef

SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

true

v1.SecretReference

sslEnabled

Flag to enable/disable SSL communication with Gateway, default false

false

boolean

false

protectionDomain

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

volumeName

The name of a volume already created in the ScaleIO system that is associated with this volume source.

false

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

-

v1.ServiceSpec

@@ -10939,6 +6115,4981 @@ Examples:
+
+
+

v1.APIResourceList

+
+

APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

groupVersion

groupVersion is the group and version this APIResourceList is for.

true

string

resources

resources contains the name of the resources and if they are namespaced.

true

v1.APIResource array

+ +
+
+

v1.Node

+
+

Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.NodeSpec

status

Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.NodeStatus

+ +
+
+

v1.Affinity

+
+

Affinity is a group of affinity scheduling rules.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nodeAffinity

Describes node affinity scheduling rules for the pod.

false

v1.NodeAffinity

podAffinity

Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

false

v1.PodAffinity

podAntiAffinity

Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

false

v1.PodAntiAffinity

+ +
+
+

v1.PersistentVolumeClaimList

+
+

PersistentVolumeClaimList is a list of PersistentVolumeClaim items.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

true

v1.PersistentVolumeClaim array

+ +
+
+

v1.LocalVolumeSource

+
+

Local represents directly-attached storage with node affinity

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

path

The full path to the volume on the node For alpha, this path must be a directory Once block as a source is supported, then this path can point to a block device

true

string

+ +
+
+

v1.NodeSelectorTerm

+
+

A null or empty node selector term matches no objects.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

matchExpressions

Required. A list of node selector requirements. The requirements are ANDed.

true

v1.NodeSelectorRequirement array

+ +
+
+

v1.SELinuxOptions

+
+

SELinuxOptions are the labels to be applied to the container

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

user

User is a SELinux user label that applies to the container.

false

string

role

Role is a SELinux role label that applies to the container.

false

string

type

Type is a SELinux type label that applies to the container.

false

string

level

Level is SELinux level label that applies to the container.

false

string

+ +
+
+

v1.VolumeMount

+
+

VolumeMount describes a mounting of a Volume within a container.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

This must match the Name of a Volume.

true

string

readOnly

Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

false

boolean

false

mountPath

Path within the container at which the volume should be mounted. Must not contain :.

true

string

subPath

Path within the volume from which the container’s volume should be mounted. Defaults to "" (volume’s root).

false

string

mountPropagation

mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationHostToContainer is used. This field is alpha in 1.8 and can be reworked or removed in a future release.

false

v1.MountPropagationMode

+ +
+
+

v1.DownwardAPIProjection

+
+

Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

items

Items is a list of DownwardAPIVolume file

false

v1.DownwardAPIVolumeFile array

+ +
+
+

v1.CephFSVolumeSource

+
+

Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

monitors

Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

true

string array

path

Optional: Used as the mounted root, rather than the full Ceph tree, default is /

false

string

user

Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretFile

Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretRef

Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

v1.LocalObjectReference

readOnly

Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

boolean

false

+ +
+
+

v1.NamespaceStatus

+
+

NamespaceStatus is information about the current status of a Namespace.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

phase

Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/

false

string

+ +
+
+

v1.ResourceQuotaSpec

+
+

ResourceQuotaSpec defines the desired hard limits to enforce for Quota.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

hard

Hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/

false

object

scopes

A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.

false

v1.ResourceQuotaScope array

+ +
+
+

v1.NamespaceSpec

+
+

NamespaceSpec describes the attributes on a Namespace.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

finalizers

Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/

false

v1.FinalizerName array

+ +
+
+

v1.ConfigMapVolumeSource

+
+

Adapts a ConfigMap into a volume.

+
+
+

The contents of the target ConfigMap’s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

items

If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the .. path or start with ...

false

v1.KeyToPath array

defaultMode

Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

false

integer (int32)

optional

Specify whether the ConfigMap or it’s keys must be defined

false

boolean

false

+ +
+
+

v1.EndpointsList

+
+

EndpointsList is a list of endpoints.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of endpoints.

true

v1.Endpoints array

+ +
+
+

v1.SecretEnvSource

+
+

SecretEnvSource selects a Secret to populate the environment variables with.

+
+
+

The contents of the target Secret’s Data field will represent the key-value pairs as environment variables.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

optional

Specify whether the Secret must be defined

false

boolean

false

+ +
+
+

v1.ReplicationControllerCondition

+
+

ReplicationControllerCondition describes the state of a replication controller at a certain point.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

type

Type of replication controller condition.

true

string

status

Status of the condition, one of True, False, Unknown.

true

string

lastTransitionTime

The last time the condition transitioned from one status to another.

false

string

reason

The reason for the condition’s last transition.

false

string

message

A human readable message indicating details about the transition.

false

string

+ +
+
+

v1.ScaleStatus

+
+

ScaleStatus represents the current status of a scale subresource.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

replicas

actual number of observed instances of the scaled object.

true

integer (int32)

selector

label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors

false

string

+ +
+
+

v1.NodeCondition

+
+

NodeCondition contains condition information for a node.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

type

Type of node condition.

true

string

status

Status of the condition, one of True, False, Unknown.

true

string

lastHeartbeatTime

Last time we got an update on a given condition.

false

string

lastTransitionTime

Last time the condition transit from one status to another.

false

string

reason

(brief) reason for the condition’s last transition.

false

string

message

Human readable message indicating details about last transition.

false

string

+ +
+
+

v1.LocalObjectReference

+
+

LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

+ +
+
+

v1.ResourceQuotaStatus

+
+

ResourceQuotaStatus defines the enforced hard limits and observed use.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

hard

Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/

false

object

used

Used is the current observed total usage of the resource in the namespace.

false

object

+ +
+
+

v1.SecretReference

+
+

SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name is unique within a namespace to reference a secret resource.

false

string

namespace

Namespace defines the space within which the secret name must be unique.

false

string

+ +
+
+

v1.LimitRangeSpec

+
+

LimitRangeSpec defines a min/max usage limit for resources that match on kind.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

limits

Limits is the list of LimitRangeItem objects that are enforced.

true

v1.LimitRangeItem array

+ +
+
+

types.UID

+ +
+
+

v1.AzureFileVolumeSource

+
+

AzureFile represents an Azure File Service mount on the host and bind mount to the pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

secretName

the name of secret that contains Azure Storage Account Name and Key

true

string

shareName

Share Name

true

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

+ +
+
+

v1.ISCSIVolumeSource

+
+

Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

targetPortal

iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

true

string

iqn

Target iSCSI Qualified Name.

true

string

lun

iSCSI Target Lun number.

true

integer (int32)

iscsiInterface

iSCSI Interface Name that uses an iSCSI transport. Defaults to default (tcp).

false

string

fsType

Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi

false

string

readOnly

ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

false

boolean

false

portals

iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

false

string array

chapAuthDiscovery

whether support iSCSI Discovery CHAP authentication

false

boolean

false

chapAuthSession

whether support iSCSI Session CHAP authentication

false

boolean

false

secretRef

CHAP Secret for iSCSI target and initiator authentication

false

v1.LocalObjectReference

initiatorName

Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

false

string

+ +
+
+

v1.PodAffinityTerm

+
+

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

labelSelector

A label query over a set of resources, in this case pods.

false

v1.LabelSelector

namespaces

namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod’s namespace"

false

string array

topologyKey

This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

true

string

+ +
+
+

v1.PersistentVolumeClaim

+
+

PersistentVolumeClaim is a user’s request for and claim to a persistent volume

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

false

v1.PersistentVolumeClaimSpec

status

Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

false

v1.PersistentVolumeClaimStatus

+ +
+
+

v1.ServiceAccount

+
+

ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

secrets

Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret

false

v1.ObjectReference array

imagePullSecrets

ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod

false

v1.LocalObjectReference array

automountServiceAccountToken

AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.

false

boolean

false

+ +
+
+

v1.PersistentVolumeClaimStatus

+
+

PersistentVolumeClaimStatus is the current status of a persistent volume claim.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

phase

Phase represents the current phase of PersistentVolumeClaim.

false

string

accessModes

AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

false

v1.PersistentVolumeAccessMode array

capacity

Represents the actual resources of the underlying volume.

false

object

conditions

Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to ResizeStarted.

false

v1.PersistentVolumeClaimCondition array

+ +
+
+

v1.ResourceQuotaList

+
+

ResourceQuotaList is a list of ResourceQuota items.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/

true

v1.ResourceQuota array

+ +
+
+

v1.UniqueVolumeName

+ +
+
+

v1.CSIPersistentVolumeSource

+
+

Represents storage that is managed by an external CSI volume driver

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

driver

Driver is the name of the driver to use for this volume. Required.

true

string

volumeHandle

VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.

true

string

readOnly

Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).

false

boolean

false

+ +
+
+

v1.EnvVarSource

+
+

EnvVarSource represents a source for the value of an EnvVar.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

fieldRef

Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.

false

v1.ObjectFieldSelector

resourceFieldRef

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.

false

v1.ResourceFieldSelector

configMapKeyRef

Selects a key of a ConfigMap.

false

v1.ConfigMapKeySelector

secretKeyRef

Selects a key of a secret in the pod’s namespace

false

v1.SecretKeySelector

+ +
+
+

v1.AzureDiskVolumeSource

+
+

AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

diskName

The Name of the data disk in the blob storage

true

string

diskURI

The URI the data disk in the blob storage

true

string

cachingMode

Host Caching mode: None, Read Only, Read Write.

false

v1.AzureDataDiskCachingMode

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

kind

Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

false

v1.AzureDataDiskKind

+ +
+
+

v1.KeyToPath

+
+

Maps a string key to a path within a volume.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

key

The key to project.

true

string

path

The relative path of the file to map the key to. May not be an absolute path. May not contain the path element ... May not start with the string ...

true

string

mode

Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

false

integer (int32)

+ +
+
+

v1.VsphereVirtualDiskVolumeSource

+
+

Represents a vSphere volume resource.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

volumePath

Path that identifies vSphere volume vmdk

true

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

storagePolicyName

Storage Policy Based Management (SPBM) profile name.

false

string

storagePolicyID

Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

false

string

+ +
+
+

v1.LimitRangeList

+
+

LimitRangeList is a list of LimitRange items.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

true

v1.LimitRange array

+ +
+
+

v1.ServiceAccountList

+
+

ServiceAccountList is a list of ServiceAccount objects

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

true

v1.ServiceAccount array

+ +
+
+

v1.Endpoints

+
+

Endpoints is a collection of endpoints that implement the actual service. Example:
+ Name: "mysvc",
+ Subsets: [
+ {
+ Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
+ Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
+ },
+ {
+ Addresses: [{"ip": "10.10.3.3"}],
+ Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
+ },
+ ]

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

subsets

The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.

true

v1.EndpointSubset array

+ +
+
+

v1.DeleteOptions

+
+

DeleteOptions may be provided when deleting an API object.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

gracePeriodSeconds

The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.

false

integer (int64)

preconditions

Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.

false

v1.Preconditions

orphanDependents

Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object’s finalizers list. Either this field or PropagationPolicy may be set, but not both.

false

boolean

false

propagationPolicy

Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: Orphan - orphan the dependents; Background - allow the garbage collector to delete the dependents in the background; Foreground - a cascading policy that deletes all dependents in the foreground.

false

v1.DeletionPropagation

+ +
+
+

v1.Volume

+
+

Volume represents a named volume in a pod that may be accessed by any container in the pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Volume’s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

true

string

hostPath

HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

false

v1.HostPathVolumeSource

emptyDir

EmptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

false

v1.EmptyDirVolumeSource

gcePersistentDisk

GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

false

v1.GCEPersistentDiskVolumeSource

awsElasticBlockStore

AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

false

v1.AWSElasticBlockStoreVolumeSource

gitRepo

GitRepo represents a git repository at a particular revision.

false

v1.GitRepoVolumeSource

secret

Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

false

v1.SecretVolumeSource

nfs

NFS represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

false

v1.NFSVolumeSource

iscsi

ISCSI represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md

false

v1.ISCSIVolumeSource

glusterfs

Glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md

false

v1.GlusterfsVolumeSource

persistentVolumeClaim

PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

false

v1.PersistentVolumeClaimVolumeSource

rbd

RBD represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md

false

v1.RBDVolumeSource

flexVolume

FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.

false

v1.FlexVolumeSource

cinder

Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md

false

v1.CinderVolumeSource

cephfs

CephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

false

v1.CephFSVolumeSource

flocker

Flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

false

v1.FlockerVolumeSource

downwardAPI

DownwardAPI represents downward API about the pod that should populate this volume

false

v1.DownwardAPIVolumeSource

fc

FC represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

false

v1.FCVolumeSource

azureFile

AzureFile represents an Azure File Service mount on the host and bind mount to the pod.

false

v1.AzureFileVolumeSource

configMap

ConfigMap represents a configMap that should populate this volume

false

v1.ConfigMapVolumeSource

vsphereVolume

VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

false

v1.VsphereVirtualDiskVolumeSource

quobyte

Quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

false

v1.QuobyteVolumeSource

azureDisk

AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

false

v1.AzureDiskVolumeSource

photonPersistentDisk

PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

false

v1.PhotonPersistentDiskVolumeSource

projected

Items for all in one resources secrets, configmaps, and downward API

false

v1.ProjectedVolumeSource

portworxVolume

PortworxVolume represents a portworx volume attached and mounted on kubelets host machine

false

v1.PortworxVolumeSource

scaleIO

ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

false

v1.ScaleIOVolumeSource

storageos

StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

false

v1.StorageOSVolumeSource

+ +
+
+

v1.VolumeProjection

+
+

Projection that may be projected along with other supported volume types

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

secret

information about the secret data to project

false

v1.SecretProjection

downwardAPI

information about the downwardAPI data to project

false

v1.DownwardAPIProjection

configMap

information about the configMap data to project

false

v1.ConfigMapProjection

+ +
+
+

v1.CephFSPersistentVolumeSource

+
+

Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

monitors

Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

true

string array

path

Optional: Used as the mounted root, rather than the full Ceph tree, default is /

false

string

user

Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretFile

Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

string

secretRef

Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

v1.SecretReference

readOnly

Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it

false

boolean

false

+ +
+
+

v1.Probe

+
+

Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

exec

One and only one of the following should be specified. Exec specifies the action to take.

false

v1.ExecAction

httpGet

HTTPGet specifies the http request to perform.

false

v1.HTTPGetAction

tcpSocket

TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported

false

v1.TCPSocketAction

initialDelaySeconds

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

false

integer (int32)

timeoutSeconds

Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

false

integer (int32)

periodSeconds

How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.

false

integer (int32)

successThreshold

Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.

false

integer (int32)

failureThreshold

Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.

false

integer (int32)

+ +
+
+

v1.SecretKeySelector

+
+

SecretKeySelector selects a key of a Secret.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

key

The key of the secret to select from. Must be a valid secret key.

true

string

optional

Specify whether the Secret or it’s key must be defined

false

boolean

false

+ +
+
+

v1.Capability

+ +
+
+

v1.ReplicationController

+
+

ReplicationController represents the configuration of a replication controller.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.ReplicationControllerSpec

status

Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.ReplicationControllerStatus

+ +
+
+

v1.LimitRange

+
+

LimitRange sets resource usage limits for each kind of resource in a Namespace.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

spec

Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

v1.LimitRangeSpec

+ +
+
+

v1.DownwardAPIVolumeFile

+
+

DownwardAPIVolumeFile represents information to create the file containing the pod field

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

path

Required: Path is the relative path name of the file to be created. Must not be absolute or contain the .. path. Must be utf-8 encoded. The first item of the relative path must not start with ..

true

string

fieldRef

Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

false

v1.ObjectFieldSelector

resourceFieldRef

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

false

v1.ResourceFieldSelector

mode

Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

false

integer (int32)

+ +
+
+

v1.PodStatus

+
+

PodStatus represents information about the status of a pod. Status may trail the actual state of a system.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

phase

Current condition of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase

false

string

conditions

Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

false

v1.PodCondition array

message

A human readable message indicating details about why the pod is in this condition.

false

string

reason

A brief CamelCase message indicating details about why the pod is in this state. e.g. Evicted

false

string

hostIP

IP address of the host to which the pod is assigned. Empty if not yet scheduled.

false

string

podIP

IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.

false

string

startTime

RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.

false

string

initContainerStatuses

The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

false

v1.ContainerStatus array

containerStatuses

The list has one entry per container in the manifest. Each entry is currently the output of docker inspect. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

false

v1.ContainerStatus array

qosClass

The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md

false

string

+ +
+
+

v1.PodSpec

+
+

PodSpec is a description of a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

volumes

List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes

false

v1.Volume array

initContainers

List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

false

v1.Container array

containers

List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.

true

v1.Container array

restartPolicy

Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

false

string

terminationGracePeriodSeconds

Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.

false

integer (int64)

activeDeadlineSeconds

Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.

false

integer (int64)

dnsPolicy

Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are ClusterFirstWithHostNet, ClusterFirst, Default or None. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to ClusterFirstWithHostNet.

false

string

nodeSelector

NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

false

object

serviceAccountName

ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

false

string

serviceAccount

DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.

false

string

automountServiceAccountToken

AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.

false

boolean

false

nodeName

NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.

false

string

hostNetwork

Host networking requested for this pod. Use the host’s network namespace. If this option is set, the ports that will be used must be specified. Default to false.

false

boolean

false

hostPID

Use the host’s pid namespace. Optional: Default to false.

false

boolean

false

hostIPC

Use the host’s ipc namespace. Optional: Default to false.

false

boolean

false

securityContext

SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.

false

v1.PodSecurityContext

imagePullSecrets

ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

false

v1.LocalObjectReference array

hostname

Specifies the hostname of the Pod If not specified, the pod’s hostname will be set to a system-defined value.

false

string

subdomain

If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". If not specified, the pod will not have a domainname at all.

false

string

affinity

If specified, the pod’s scheduling constraints

false

v1.Affinity

schedulerName

If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.

false

string

tolerations

If specified, the pod’s tolerations.

false

v1.Toleration array

hostAliases

HostAliases is an optional list of hosts and IPs that will be injected into the pod’s hosts file if specified. This is only valid for non-hostNetwork pods.

false

v1.HostAlias array

priorityClassName

If specified, indicates the pod’s priority. "SYSTEM" is a special keyword which indicates the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.

false

string

priority

The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.

false

integer (int32)

dnsConfig

Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.

false

v1.PodDNSConfig

+ +
+
+

v1.EventList

+
+

EventList is a list of events.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of events

true

v1.Event array

+ +
+
+

v1.Lifecycle

+
+

Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

postStart

PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

false

v1.Handler

preStop

PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

false

v1.Handler

+ +
+
+

v1.AttachedVolume

+
+

AttachedVolume describes a volume attached to a node

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the attached volume

true

string

devicePath

DevicePath represents the device path where the volume should be available

true

string

+ +
+
+

v1.PodCondition

+
+

PodCondition contains details for the current condition of this pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

type

Type is the type of the condition. Currently only Ready. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

true

string

status

Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

true

string

lastProbeTime

Last time we probed the condition.

false

string

lastTransitionTime

Last time the condition transitioned from one status to another.

false

string

reason

Unique, one-word, CamelCase reason for the condition’s last transition.

false

string

message

Human-readable message indicating details about last transition.

false

string

+ +
+
+

v1.RBDVolumeSource

+
+

Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

monitors

A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

true

string array

image

The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

true

string

fsType

Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd

false

string

pool

The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

string

user

The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

string

keyring

Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

string

secretRef

SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

v1.LocalObjectReference

readOnly

ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it

false

boolean

false

+ +
+
+

v1.PhotonPersistentDiskVolumeSource

+
+

Represents a Photon Controller persistent disk resource.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

pdID

ID that identifies Photon Controller persistent disk

true

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

+ +
+
+

v1.HostPathType

+ +
+
+

v1.Status

+
+

Status is a return value for calls that don’t return other objects.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

status

Status of the operation. One of: "Success" or "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

false

string

message

A human-readable description of the status of this operation.

false

string

reason

A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.

false

string

details

Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.

false

v1.StatusDetails

code

Suggested HTTP return code for this status, 0 if not set.

false

integer (int32)

+ +
+
+

v1.PodDNSConfig

+
+

PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

nameservers

A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.

false

string array

searches

A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.

false

string array

options

A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.

false

v1.PodDNSConfigOption array

+ +
+
+

v1.FCVolumeSource

+
+

Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

targetWWNs

Optional: FC target worldwide names (WWNs)

false

string array

lun

Optional: FC target lun number

false

integer (int32)

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

wwids

Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

false

string array

+ +
+
+

v1.DeletionPropagation

+ +
+
+

v1.TCPSocketAction

+
+

TCPSocketAction describes an action based on opening a socket

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

port

Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.

true

string

host

Optional: Host name to connect to, defaults to the pod IP.

false

string

+ +
+
+

v1.LoadBalancerStatus

+
+

LoadBalancerStatus represents the status of a load-balancer.

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

ingress

Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.

false

v1.LoadBalancerIngress array

+ +
+
+

v1.Container

+
+

A single application container that you want to run within a pod.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.

true

string

image

Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.

false

string

command

Entrypoint array. Not executed within a shell. The docker image’s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

false

string array

args

Arguments to the entrypoint. The docker image’s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

false

string array

workingDir

Container’s working directory. If not specified, the container runtime’s default will be used, which might be configured in the container image. Cannot be updated.

false

string

ports

List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.

false

v1.ContainerPort array

envFrom

List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.

false

v1.EnvFromSource array

env

List of environment variables to set in the container. Cannot be updated.

false

v1.EnvVar array

resources

Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

false

v1.ResourceRequirements

volumeMounts

Pod volumes to mount into the container’s filesystem. Cannot be updated.

false

v1.VolumeMount array

volumeDevices

volumeDevices is the list of block devices to be used by the container. This is an alpha feature and may change in the future.

false

v1.VolumeDevice array

livenessProbe

Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

false

v1.Probe

readinessProbe

Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

false

v1.Probe

lifecycle

Actions that the management system should take in response to container lifecycle events. Cannot be updated.

false

v1.Lifecycle

terminationMessagePath

Optional: Path at which the file to which the container’s termination message will be written is mounted into the container’s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.

false

string

terminationMessagePolicy

Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.

false

string

imagePullPolicy

Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images

false

string

securityContext

Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

false

v1.SecurityContext

stdin

Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.

false

boolean

false

stdinOnce

Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false

false

boolean

false

tty

Whether this container should allocate a TTY for itself, also requires stdin to be true. Default is false.

false

boolean

false

+ +
+
+

v1.ReplicationControllerStatus

+
+

ReplicationControllerStatus represents the current status of a replication controller.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

replicas

Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller

true

integer (int32)

fullyLabeledReplicas

The number of pods that have labels matching the labels of the pod template of the replication controller.

false

integer (int32)

readyReplicas

The number of ready replicas for this replication controller.

false

integer (int32)

availableReplicas

The number of available replicas (ready for at least minReadySeconds) for this replication controller.

false

integer (int32)

observedGeneration

ObservedGeneration reflects the generation of the most recently observed replication controller.

false

integer (int64)

conditions

Represents the latest available observations of a replication controller’s current state.

false

v1.ReplicationControllerCondition array

+ +
+
+

v1.ComponentCondition

+
+

Information about the condition of a component.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

type

Type of condition for a component. Valid value: "Healthy"

true

string

status

Status of the condition for a component. Valid values for "Healthy": "True", "False", or "Unknown".

true

string

message

Message about the condition for a component. For example, information about a health check.

false

string

error

Condition error code for a component. For example, a health check error code.

false

string

+ +
+
+

v1.OwnerReference

+
+

OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

apiVersion

API version of the referent.

true

string

kind

Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

true

string

name

Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names

true

string

uid

UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids

true

string

controller

If true, this reference points to the managing controller.

false

boolean

false

blockOwnerDeletion

If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.

false

boolean

false

+ +
+
+

v1.APIResource

+
+

APIResource specifies the name of a resource and whether it is namespaced.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

name is the plural name of the resource.

true

string

singularName

singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.

true

string

namespaced

namespaced indicates if a resource is namespaced or not.

true

boolean

false

group

group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale".

false

string

version

version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource’s group)".

false

string

kind

kind is the kind for the resource (e.g. Foo is the kind for a resource foo)

true

string

verbs

verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)

true

string array

shortNames

shortNames is a list of suggested short names of the resource.

false

string array

categories

categories is a list of the grouped resources this resource belongs to (e.g. all)

false

string array

+ +
+
+

v1.Binding

+
+

Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

target

The target object that you want to bind to the standard object.

true

v1.ObjectReference

+ +
+
+

v1.ContainerState

+
+

ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

waiting

Details about a waiting container

false

v1.ContainerStateWaiting

running

Details about a running container

false

v1.ContainerStateRunning

terminated

Details about a terminated container

false

v1.ContainerStateTerminated

+ +
+
+

v1.ReplicationControllerList

+
+

ReplicationControllerList is a collection of replication controllers.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller

true

v1.ReplicationController array

+ +
+
+

v1.WatchEvent

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

type

true

string

object

true

string

+ +
+
+

v1.Secret

+
+

Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

false

v1.ObjectMeta

data

Data contains the secret data. Each key must consist of alphanumeric characters, -, _ or .. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4

false

object

stringData

stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.

false

object

type

Used to facilitate programmatic handling of secret data.

false

string

+ +
+
+

v1.LabelSelectorRequirement

+
+

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

key

key is the label key that the selector applies to.

true

string

operator

operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

true

string

values

values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

false

string array

+ +
+
+

v1.EnvVar

+
+

EnvVar represents an environment variable present in a Container.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the environment variable. Must be a C_IDENTIFIER.

true

string

value

Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".

false

string

valueFrom

Source for the environment variable’s value. Cannot be used if value is not empty.

false

v1.EnvVarSource

+ +
+
+

v1.ResourceRequirements

+
+

ResourceRequirements describes the compute resource requirements.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

limits

Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

false

object

requests

Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

false

object

+ +
+
+

v1.LimitRangeItem

+
+

LimitRangeItem defines a min/max usage limit for any resource that matches on kind.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

type

Type of resource that this limit applies to.

false

string

max

Max usage constraints on this kind by resource name.

false

object

min

Min usage constraints on this kind by resource name.

false

object

default

Default resource requirement limit value by resource name if resource limit is omitted.

false

object

defaultRequest

DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.

false

object

maxLimitRequestRatio

MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.

false

object

+ +
+
+

v1.PodList

+
+

PodList is a list of Pods.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md

true

v1.Pod array

+ +
+
+

v1.ServiceList

+
+

ServiceList holds a list of services.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

apiVersion

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

false

string

metadata

Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

v1.ListMeta

items

List of services

true

v1.Service array

+ +
+
+

v1.ConfigMapEnvSource

+
+

ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.

+
+
+

The contents of the target ConfigMap’s Data field will represent the key-value pairs as environment variables.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

optional

Specify whether the ConfigMap must be defined

false

boolean

false

+ +
+
+

v1.ObjectReference

+
+

ObjectReference contains enough information to let you inspect or modify the referred object.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

kind

Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

false

string

namespace

Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

false

string

name

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

false

string

uid

UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

false

string

apiVersion

API version of the referent.

false

string

resourceVersion

Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency

false

string

fieldPath

If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.

false

string

+ +
+
+

v1.ContainerStateWaiting

+
+

ContainerStateWaiting is a waiting state of a container.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

reason

(brief) reason the container is not yet running.

false

string

message

Message regarding why the container is not yet running.

false

string

+ +
+
+

v1.ScaleIOPersistentVolumeSource

+
+

ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

gateway

The host address of the ScaleIO API Gateway.

true

string

system

The name of the storage system as configured in ScaleIO.

true

string

secretRef

SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

true

v1.SecretReference

sslEnabled

Flag to enable/disable SSL communication with Gateway, default false

false

boolean

false

protectionDomain

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

volumeName

The name of a volume already created in the ScaleIO system that is associated with this volume source.

false

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

+ +
+
+

v1.EndpointAddress

+
+

EndpointAddress is a tuple that describes single IP address.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

ip

The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.

true

string

hostname

The Hostname of this endpoint

false

string

nodeName

Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.

false

string

targetRef

Reference to object providing the endpoint.

false

v1.ObjectReference

+

v1.NodeSpec

@@ -11008,61 +11159,6 @@ Examples:
-
-
-

v1.EndpointAddress

-
-

EndpointAddress is a tuple that describes single IP address.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

ip

The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.

true

string

hostname

The Hostname of this endpoint

false

string

nodeName

Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.

false

string

targetRef

Reference to object providing the endpoint.

false

v1.ObjectReference

-

v1.DaemonEndpoint

diff --git a/pkg/apis/core/v1/zz_generated.conversion.go b/pkg/apis/core/v1/zz_generated.conversion.go index 5312eee5fba..23d32a02e5d 100644 --- a/pkg/apis/core/v1/zz_generated.conversion.go +++ b/pkg/apis/core/v1/zz_generated.conversion.go @@ -269,6 +269,10 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_core_PodAttachOptions_To_v1_PodAttachOptions, Convert_v1_PodCondition_To_core_PodCondition, Convert_core_PodCondition_To_v1_PodCondition, + Convert_v1_PodDNSConfig_To_core_PodDNSConfig, + Convert_core_PodDNSConfig_To_v1_PodDNSConfig, + Convert_v1_PodDNSConfigOption_To_core_PodDNSConfigOption, + Convert_core_PodDNSConfigOption_To_v1_PodDNSConfigOption, Convert_v1_PodExecOptions_To_core_PodExecOptions, Convert_core_PodExecOptions_To_v1_PodExecOptions, Convert_v1_PodList_To_core_PodList, @@ -3495,6 +3499,52 @@ func Convert_core_PodCondition_To_v1_PodCondition(in *core.PodCondition, out *v1 return autoConvert_core_PodCondition_To_v1_PodCondition(in, out, s) } +func autoConvert_v1_PodDNSConfig_To_core_PodDNSConfig(in *v1.PodDNSConfig, out *core.PodDNSConfig, s conversion.Scope) error { + out.Nameservers = *(*[]string)(unsafe.Pointer(&in.Nameservers)) + out.Searches = *(*[]string)(unsafe.Pointer(&in.Searches)) + out.Options = *(*[]core.PodDNSConfigOption)(unsafe.Pointer(&in.Options)) + return nil +} + +// Convert_v1_PodDNSConfig_To_core_PodDNSConfig is an autogenerated conversion function. +func Convert_v1_PodDNSConfig_To_core_PodDNSConfig(in *v1.PodDNSConfig, out *core.PodDNSConfig, s conversion.Scope) error { + return autoConvert_v1_PodDNSConfig_To_core_PodDNSConfig(in, out, s) +} + +func autoConvert_core_PodDNSConfig_To_v1_PodDNSConfig(in *core.PodDNSConfig, out *v1.PodDNSConfig, s conversion.Scope) error { + out.Nameservers = *(*[]string)(unsafe.Pointer(&in.Nameservers)) + out.Searches = *(*[]string)(unsafe.Pointer(&in.Searches)) + out.Options = *(*[]v1.PodDNSConfigOption)(unsafe.Pointer(&in.Options)) + return nil +} + +// Convert_core_PodDNSConfig_To_v1_PodDNSConfig is an autogenerated conversion function. +func Convert_core_PodDNSConfig_To_v1_PodDNSConfig(in *core.PodDNSConfig, out *v1.PodDNSConfig, s conversion.Scope) error { + return autoConvert_core_PodDNSConfig_To_v1_PodDNSConfig(in, out, s) +} + +func autoConvert_v1_PodDNSConfigOption_To_core_PodDNSConfigOption(in *v1.PodDNSConfigOption, out *core.PodDNSConfigOption, s conversion.Scope) error { + out.Name = in.Name + out.Value = (*string)(unsafe.Pointer(in.Value)) + return nil +} + +// Convert_v1_PodDNSConfigOption_To_core_PodDNSConfigOption is an autogenerated conversion function. +func Convert_v1_PodDNSConfigOption_To_core_PodDNSConfigOption(in *v1.PodDNSConfigOption, out *core.PodDNSConfigOption, s conversion.Scope) error { + return autoConvert_v1_PodDNSConfigOption_To_core_PodDNSConfigOption(in, out, s) +} + +func autoConvert_core_PodDNSConfigOption_To_v1_PodDNSConfigOption(in *core.PodDNSConfigOption, out *v1.PodDNSConfigOption, s conversion.Scope) error { + out.Name = in.Name + out.Value = (*string)(unsafe.Pointer(in.Value)) + return nil +} + +// Convert_core_PodDNSConfigOption_To_v1_PodDNSConfigOption is an autogenerated conversion function. +func Convert_core_PodDNSConfigOption_To_v1_PodDNSConfigOption(in *core.PodDNSConfigOption, out *v1.PodDNSConfigOption, s conversion.Scope) error { + return autoConvert_core_PodDNSConfigOption_To_v1_PodDNSConfigOption(in, out, s) +} + func autoConvert_v1_PodExecOptions_To_core_PodExecOptions(in *v1.PodExecOptions, out *core.PodExecOptions, s conversion.Scope) error { out.Stdin = in.Stdin out.Stdout = in.Stdout @@ -3746,6 +3796,7 @@ func autoConvert_v1_PodSpec_To_core_PodSpec(in *v1.PodSpec, out *core.PodSpec, s out.HostAliases = *(*[]core.HostAlias)(unsafe.Pointer(&in.HostAliases)) out.PriorityClassName = in.PriorityClassName out.Priority = (*int32)(unsafe.Pointer(in.Priority)) + out.DNSConfig = (*core.PodDNSConfig)(unsafe.Pointer(in.DNSConfig)) return nil } @@ -3809,6 +3860,7 @@ func autoConvert_core_PodSpec_To_v1_PodSpec(in *core.PodSpec, out *v1.PodSpec, s out.HostAliases = *(*[]v1.HostAlias)(unsafe.Pointer(&in.HostAliases)) out.PriorityClassName = in.PriorityClassName out.Priority = (*int32)(unsafe.Pointer(in.Priority)) + out.DNSConfig = (*v1.PodDNSConfig)(unsafe.Pointer(in.DNSConfig)) return nil } diff --git a/pkg/apis/core/zz_generated.deepcopy.go b/pkg/apis/core/zz_generated.deepcopy.go index c686217984d..8a077470f0f 100644 --- a/pkg/apis/core/zz_generated.deepcopy.go +++ b/pkg/apis/core/zz_generated.deepcopy.go @@ -3497,6 +3497,64 @@ func (in *PodCondition) DeepCopy() *PodCondition { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDNSConfig) DeepCopyInto(out *PodDNSConfig) { + *out = *in + if in.Nameservers != nil { + in, out := &in.Nameservers, &out.Nameservers + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Searches != nil { + in, out := &in.Searches, &out.Searches + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]PodDNSConfigOption, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDNSConfig. +func (in *PodDNSConfig) DeepCopy() *PodDNSConfig { + if in == nil { + return nil + } + out := new(PodDNSConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDNSConfigOption) DeepCopyInto(out *PodDNSConfigOption) { + *out = *in + if in.Value != nil { + in, out := &in.Value, &out.Value + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDNSConfigOption. +func (in *PodDNSConfigOption) DeepCopy() *PodDNSConfigOption { + if in == nil { + return nil + } + out := new(PodDNSConfigOption) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodExecOptions) DeepCopyInto(out *PodExecOptions) { *out = *in @@ -3867,6 +3925,15 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { **out = **in } } + if in.DNSConfig != nil { + in, out := &in.DNSConfig, &out.DNSConfig + if *in == nil { + *out = nil + } else { + *out = new(PodDNSConfig) + (*in).DeepCopyInto(*out) + } + } return } diff --git a/staging/src/k8s.io/api/core/v1/generated.pb.go b/staging/src/k8s.io/api/core/v1/generated.pb.go index 676eef776a3..c0d2e73282f 100644 --- a/staging/src/k8s.io/api/core/v1/generated.pb.go +++ b/staging/src/k8s.io/api/core/v1/generated.pb.go @@ -140,6 +140,8 @@ limitations under the License. PodAntiAffinity PodAttachOptions PodCondition + PodDNSConfig + PodDNSConfigOption PodExecOptions PodList PodLogOptions @@ -733,296 +735,304 @@ func (m *PodCondition) Reset() { *m = PodCondition{} } func (*PodCondition) ProtoMessage() {} func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } +func (m *PodDNSConfig) Reset() { *m = PodDNSConfig{} } +func (*PodDNSConfig) ProtoMessage() {} +func (*PodDNSConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } + +func (m *PodDNSConfigOption) Reset() { *m = PodDNSConfigOption{} } +func (*PodDNSConfigOption) ProtoMessage() {} +func (*PodDNSConfigOption) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } + func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } func (*PodExecOptions) ProtoMessage() {} -func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } +func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } func (m *PodList) Reset() { *m = PodList{} } func (*PodList) ProtoMessage() {} -func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } +func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } func (*PodLogOptions) ProtoMessage() {} -func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } +func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } func (m *PodPortForwardOptions) Reset() { *m = PodPortForwardOptions{} } func (*PodPortForwardOptions) ProtoMessage() {} -func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } +func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } func (*PodProxyOptions) ProtoMessage() {} -func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } +func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } func (*PodSecurityContext) ProtoMessage() {} -func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } +func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } func (m *PodSignature) Reset() { *m = PodSignature{} } func (*PodSignature) ProtoMessage() {} -func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } +func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } func (m *PodSpec) Reset() { *m = PodSpec{} } func (*PodSpec) ProtoMessage() {} -func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } +func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{124} } func (m *PodStatus) Reset() { *m = PodStatus{} } func (*PodStatus) ProtoMessage() {} -func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } +func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } func (*PodStatusResult) ProtoMessage() {} -func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{124} } +func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } func (m *PodTemplate) Reset() { *m = PodTemplate{} } func (*PodTemplate) ProtoMessage() {} -func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } +func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } func (*PodTemplateList) ProtoMessage() {} -func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } +func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } func (*PodTemplateSpec) ProtoMessage() {} -func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } +func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } func (m *PortworxVolumeSource) Reset() { *m = PortworxVolumeSource{} } func (*PortworxVolumeSource) ProtoMessage() {} -func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } +func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} -func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } func (*PreferAvoidPodsEntry) ProtoMessage() {} -func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } +func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } func (*PreferredSchedulingTerm) ProtoMessage() {} func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{131} + return fileDescriptorGenerated, []int{133} } func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} -func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } +func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } func (m *ProjectedVolumeSource) Reset() { *m = ProjectedVolumeSource{} } func (*ProjectedVolumeSource) ProtoMessage() {} -func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } +func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{135} } func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } func (*QuobyteVolumeSource) ProtoMessage() {} -func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } +func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{136} } func (m *RBDPersistentVolumeSource) Reset() { *m = RBDPersistentVolumeSource{} } func (*RBDPersistentVolumeSource) ProtoMessage() {} func (*RBDPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{135} + return fileDescriptorGenerated, []int{137} } func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } func (*RBDVolumeSource) ProtoMessage() {} -func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{136} } +func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } func (*RangeAllocation) ProtoMessage() {} -func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{137} } +func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } func (m *ReplicationController) Reset() { *m = ReplicationController{} } func (*ReplicationController) ProtoMessage() {} -func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } +func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } func (*ReplicationControllerCondition) ProtoMessage() {} func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{139} + return fileDescriptorGenerated, []int{141} } func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } func (*ReplicationControllerList) ProtoMessage() {} func (*ReplicationControllerList) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{140} + return fileDescriptorGenerated, []int{142} } func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } func (*ReplicationControllerSpec) ProtoMessage() {} func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{141} + return fileDescriptorGenerated, []int{143} } func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } func (*ReplicationControllerStatus) ProtoMessage() {} func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{142} + return fileDescriptorGenerated, []int{144} } func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } func (*ResourceFieldSelector) ProtoMessage() {} -func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } +func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } func (*ResourceQuota) ProtoMessage() {} -func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } +func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } func (*ResourceQuotaList) ProtoMessage() {} -func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } +func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } func (*ResourceQuotaSpec) ProtoMessage() {} -func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } +func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } func (*ResourceQuotaStatus) ProtoMessage() {} -func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } +func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } func (*ResourceRequirements) ProtoMessage() {} -func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } +func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } func (*SELinuxOptions) ProtoMessage() {} -func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } +func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } func (m *ScaleIOPersistentVolumeSource) Reset() { *m = ScaleIOPersistentVolumeSource{} } func (*ScaleIOPersistentVolumeSource) ProtoMessage() {} func (*ScaleIOPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{150} + return fileDescriptorGenerated, []int{152} } func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } func (*ScaleIOVolumeSource) ProtoMessage() {} -func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } +func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } func (*SecretEnvSource) ProtoMessage() {} -func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } +func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } func (*SecretKeySelector) ProtoMessage() {} -func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } func (m *SecretList) Reset() { *m = SecretList{} } func (*SecretList) ProtoMessage() {} -func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } func (m *SecretProjection) Reset() { *m = SecretProjection{} } func (*SecretProjection) ProtoMessage() {} -func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } +func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} -func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } func (*SecretVolumeSource) ProtoMessage() {} -func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } func (m *SecurityContext) Reset() { *m = SecurityContext{} } func (*SecurityContext) ProtoMessage() {} -func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } func (m *SerializedReference) Reset() { *m = SerializedReference{} } func (*SerializedReference) ProtoMessage() {} -func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } func (m *Service) Reset() { *m = Service{} } func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } func (*ServiceAccount) ProtoMessage() {} -func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } func (*ServiceAccountList) ProtoMessage() {} -func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} -func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} -func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} -func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} -func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} -func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } func (*SessionAffinityConfig) ProtoMessage() {} -func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } +func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } func (*StorageOSPersistentVolumeSource) ProtoMessage() {} func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{170} + return fileDescriptorGenerated, []int{172} } func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } func (*StorageOSVolumeSource) ProtoMessage() {} -func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } +func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } func (m *Sysctl) Reset() { *m = Sysctl{} } func (*Sysctl) ProtoMessage() {} -func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} -func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} -func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{176} } func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} -func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{177} } func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{176} } +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{178} } func (m *VolumeDevice) Reset() { *m = VolumeDevice{} } func (*VolumeDevice) ProtoMessage() {} -func (*VolumeDevice) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{177} } +func (*VolumeDevice) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{179} } func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} -func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{178} } +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{180} } func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} -func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{179} } +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{181} } func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} -func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{180} } +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{182} } func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{181} + return fileDescriptorGenerated, []int{183} } func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{182} + return fileDescriptorGenerated, []int{184} } func init() { @@ -1141,6 +1151,8 @@ func init() { proto.RegisterType((*PodAntiAffinity)(nil), "k8s.io.api.core.v1.PodAntiAffinity") proto.RegisterType((*PodAttachOptions)(nil), "k8s.io.api.core.v1.PodAttachOptions") proto.RegisterType((*PodCondition)(nil), "k8s.io.api.core.v1.PodCondition") + proto.RegisterType((*PodDNSConfig)(nil), "k8s.io.api.core.v1.PodDNSConfig") + proto.RegisterType((*PodDNSConfigOption)(nil), "k8s.io.api.core.v1.PodDNSConfigOption") proto.RegisterType((*PodExecOptions)(nil), "k8s.io.api.core.v1.PodExecOptions") proto.RegisterType((*PodList)(nil), "k8s.io.api.core.v1.PodList") proto.RegisterType((*PodLogOptions)(nil), "k8s.io.api.core.v1.PodLogOptions") @@ -6723,6 +6735,94 @@ func (m *PodCondition) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *PodDNSConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodDNSConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Nameservers) > 0 { + for _, s := range m.Nameservers { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Searches) > 0 { + for _, s := range m.Searches { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Options) > 0 { + for _, msg := range m.Options { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodDNSConfigOption) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodDNSConfigOption) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if m.Value != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Value))) + i += copy(dAtA[i:], *m.Value) + } + return i, nil +} + func (m *PodExecOptions) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -7265,6 +7365,18 @@ func (m *PodSpec) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintGenerated(dAtA, i, uint64(*m.Priority)) } + if m.DNSConfig != nil { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DNSConfig.Size())) + n139, err := m.DNSConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n139 + } return i, nil } @@ -7319,11 +7431,11 @@ func (m *PodStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StartTime.Size())) - n139, err := m.StartTime.MarshalTo(dAtA[i:]) + n140, err := m.StartTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n139 + i += n140 } if len(m.ContainerStatuses) > 0 { for _, msg := range m.ContainerStatuses { @@ -7374,19 +7486,19 @@ func (m *PodStatusResult) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n140, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n140 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n141, err := m.Status.MarshalTo(dAtA[i:]) + n141, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n141 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n142, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n142 return i, nil } @@ -7408,19 +7520,19 @@ func (m *PodTemplate) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n142, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n142 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) - n143, err := m.Template.MarshalTo(dAtA[i:]) + n143, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n143 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n144, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n144 return i, nil } @@ -7442,11 +7554,11 @@ func (m *PodTemplateList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n144, err := m.ListMeta.MarshalTo(dAtA[i:]) + n145, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n144 + i += n145 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -7480,19 +7592,19 @@ func (m *PodTemplateSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n145, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n145 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n146, err := m.Spec.MarshalTo(dAtA[i:]) + n146, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n146 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n147, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n147 return i, nil } @@ -7572,19 +7684,19 @@ func (m *PreferAvoidPodsEntry) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodSignature.Size())) - n147, err := m.PodSignature.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n147 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.EvictionTime.Size())) - n148, err := m.EvictionTime.MarshalTo(dAtA[i:]) + n148, err := m.PodSignature.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n148 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.EvictionTime.Size())) + n149, err := m.EvictionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n149 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -7617,11 +7729,11 @@ func (m *PreferredSchedulingTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Preference.Size())) - n149, err := m.Preference.MarshalTo(dAtA[i:]) + n150, err := m.Preference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n149 + i += n150 return i, nil } @@ -7643,11 +7755,11 @@ func (m *Probe) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Handler.Size())) - n150, err := m.Handler.MarshalTo(dAtA[i:]) + n151, err := m.Handler.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n150 + i += n151 dAtA[i] = 0x10 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.InitialDelaySeconds)) @@ -7797,11 +7909,11 @@ func (m *RBDPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n151, err := m.SecretRef.MarshalTo(dAtA[i:]) + n152, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n151 + i += n152 } dAtA[i] = 0x40 i++ @@ -7868,11 +7980,11 @@ func (m *RBDVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n152, err := m.SecretRef.MarshalTo(dAtA[i:]) + n153, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n152 + i += n153 } dAtA[i] = 0x40 i++ @@ -7903,11 +8015,11 @@ func (m *RangeAllocation) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n153, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n154, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n153 + i += n154 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Range))) @@ -7939,27 +8051,27 @@ func (m *ReplicationController) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n154, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n154 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n155, err := m.Spec.MarshalTo(dAtA[i:]) + n155, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n155 - dAtA[i] = 0x1a + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n156, err := m.Status.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n156, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n156 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n157, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n157 return i, nil } @@ -7989,11 +8101,11 @@ func (m *ReplicationControllerCondition) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) - n157, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + n158, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n157 + i += n158 dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -8023,11 +8135,11 @@ func (m *ReplicationControllerList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n158, err := m.ListMeta.MarshalTo(dAtA[i:]) + n159, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n158 + i += n159 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8089,11 +8201,11 @@ func (m *ReplicationControllerSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) - n159, err := m.Template.MarshalTo(dAtA[i:]) + n160, err := m.Template.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n159 + i += n160 } dAtA[i] = 0x20 i++ @@ -8172,11 +8284,11 @@ func (m *ResourceFieldSelector) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Divisor.Size())) - n160, err := m.Divisor.MarshalTo(dAtA[i:]) + n161, err := m.Divisor.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n160 + i += n161 return i, nil } @@ -8198,27 +8310,27 @@ func (m *ResourceQuota) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n161, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n161 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n162, err := m.Spec.MarshalTo(dAtA[i:]) + n162, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n162 - dAtA[i] = 0x1a + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n163, err := m.Status.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n163, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n163 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n164, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n164 return i, nil } @@ -8240,11 +8352,11 @@ func (m *ResourceQuotaList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n164, err := m.ListMeta.MarshalTo(dAtA[i:]) + n165, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n164 + i += n165 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8299,11 +8411,11 @@ func (m *ResourceQuotaSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n165, err := (&v).MarshalTo(dAtA[i:]) + n166, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n165 + i += n166 } } if len(m.Scopes) > 0 { @@ -8363,11 +8475,11 @@ func (m *ResourceQuotaStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n166, err := (&v).MarshalTo(dAtA[i:]) + n167, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n166 + i += n167 } } if len(m.Used) > 0 { @@ -8394,11 +8506,11 @@ func (m *ResourceQuotaStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n167, err := (&v).MarshalTo(dAtA[i:]) + n168, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n167 + i += n168 } } return i, nil @@ -8443,11 +8555,11 @@ func (m *ResourceRequirements) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n168, err := (&v).MarshalTo(dAtA[i:]) + n169, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n168 + i += n169 } } if len(m.Requests) > 0 { @@ -8474,11 +8586,11 @@ func (m *ResourceRequirements) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n169, err := (&v).MarshalTo(dAtA[i:]) + n170, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n169 + i += n170 } } return i, nil @@ -8545,11 +8657,11 @@ func (m *ScaleIOPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n170, err := m.SecretRef.MarshalTo(dAtA[i:]) + n171, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n170 + i += n171 } dAtA[i] = 0x20 i++ @@ -8617,11 +8729,11 @@ func (m *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n171, err := m.SecretRef.MarshalTo(dAtA[i:]) + n172, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n171 + i += n172 } dAtA[i] = 0x20 i++ @@ -8680,11 +8792,11 @@ func (m *Secret) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n172, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n173, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n172 + i += n173 if len(m.Data) > 0 { keysForData := make([]string, 0, len(m.Data)) for k := range m.Data { @@ -8760,11 +8872,11 @@ func (m *SecretEnvSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n173, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n174, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n173 + i += n174 if m.Optional != nil { dAtA[i] = 0x10 i++ @@ -8796,11 +8908,11 @@ func (m *SecretKeySelector) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n174, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n175, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n174 + i += n175 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) @@ -8836,11 +8948,11 @@ func (m *SecretList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n175, err := m.ListMeta.MarshalTo(dAtA[i:]) + n176, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n175 + i += n176 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8874,11 +8986,11 @@ func (m *SecretProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n176, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n177, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n176 + i += n177 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8998,11 +9110,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Capabilities.Size())) - n177, err := m.Capabilities.MarshalTo(dAtA[i:]) + n178, err := m.Capabilities.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n177 + i += n178 } if m.Privileged != nil { dAtA[i] = 0x10 @@ -9018,11 +9130,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) - n178, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + n179, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n178 + i += n179 } if m.RunAsUser != nil { dAtA[i] = 0x20 @@ -9080,11 +9192,11 @@ func (m *SerializedReference) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Reference.Size())) - n179, err := m.Reference.MarshalTo(dAtA[i:]) + n180, err := m.Reference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n179 + i += n180 return i, nil } @@ -9106,27 +9218,27 @@ func (m *Service) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n180, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n180 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n181, err := m.Spec.MarshalTo(dAtA[i:]) + n181, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n181 - dAtA[i] = 0x1a + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n182, err := m.Status.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n182, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n182 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n183, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n183 return i, nil } @@ -9148,11 +9260,11 @@ func (m *ServiceAccount) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n183, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n184, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n183 + i += n184 if len(m.Secrets) > 0 { for _, msg := range m.Secrets { dAtA[i] = 0x12 @@ -9208,11 +9320,11 @@ func (m *ServiceAccountList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n184, err := m.ListMeta.MarshalTo(dAtA[i:]) + n185, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n184 + i += n185 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9246,11 +9358,11 @@ func (m *ServiceList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n185, err := m.ListMeta.MarshalTo(dAtA[i:]) + n186, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n185 + i += n186 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9295,11 +9407,11 @@ func (m *ServicePort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TargetPort.Size())) - n186, err := m.TargetPort.MarshalTo(dAtA[i:]) + n187, err := m.TargetPort.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n186 + i += n187 dAtA[i] = 0x28 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.NodePort)) @@ -9446,11 +9558,11 @@ func (m *ServiceSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x72 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SessionAffinityConfig.Size())) - n187, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) + n188, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n187 + i += n188 } return i, nil } @@ -9473,11 +9585,11 @@ func (m *ServiceStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LoadBalancer.Size())) - n188, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + n189, err := m.LoadBalancer.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n188 + i += n189 return i, nil } @@ -9500,11 +9612,11 @@ func (m *SessionAffinityConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ClientIP.Size())) - n189, err := m.ClientIP.MarshalTo(dAtA[i:]) + n190, err := m.ClientIP.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n189 + i += n190 } return i, nil } @@ -9548,11 +9660,11 @@ func (m *StorageOSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n190, err := m.SecretRef.MarshalTo(dAtA[i:]) + n191, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n190 + i += n191 } return i, nil } @@ -9596,11 +9708,11 @@ func (m *StorageOSVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n191, err := m.SecretRef.MarshalTo(dAtA[i:]) + n192, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n191 + i += n192 } return i, nil } @@ -9649,11 +9761,11 @@ func (m *TCPSocketAction) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) - n192, err := m.Port.MarshalTo(dAtA[i:]) + n193, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n192 + i += n193 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) @@ -9692,11 +9804,11 @@ func (m *Taint) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TimeAdded.Size())) - n193, err := m.TimeAdded.MarshalTo(dAtA[i:]) + n194, err := m.TimeAdded.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n193 + i += n194 } return i, nil } @@ -9762,11 +9874,11 @@ func (m *Volume) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VolumeSource.Size())) - n194, err := m.VolumeSource.MarshalTo(dAtA[i:]) + n195, err := m.VolumeSource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n194 + i += n195 return i, nil } @@ -9859,32 +9971,32 @@ func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n195, err := m.Secret.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n195 - } - if m.DownwardAPI != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n196, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n196, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n196 } - if m.ConfigMap != nil { - dAtA[i] = 0x1a + if m.DownwardAPI != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n197, err := m.ConfigMap.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) + n197, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n197 } + if m.ConfigMap != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) + n198, err := m.ConfigMap.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n198 + } return i, nil } @@ -9907,163 +10019,163 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) - n198, err := m.HostPath.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n198 - } - if m.EmptyDir != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) - n199, err := m.EmptyDir.MarshalTo(dAtA[i:]) + n199, err := m.HostPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n199 } - if m.GCEPersistentDisk != nil { - dAtA[i] = 0x1a + if m.EmptyDir != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) - n200, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) + n200, err := m.EmptyDir.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n200 } - if m.AWSElasticBlockStore != nil { - dAtA[i] = 0x22 + if m.GCEPersistentDisk != nil { + dAtA[i] = 0x1a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) - n201, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n201, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n201 } - if m.GitRepo != nil { - dAtA[i] = 0x2a + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) - n202, err := m.GitRepo.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n202, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n202 } - if m.Secret != nil { - dAtA[i] = 0x32 + if m.GitRepo != nil { + dAtA[i] = 0x2a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n203, err := m.Secret.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) + n203, err := m.GitRepo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n203 } - if m.NFS != nil { - dAtA[i] = 0x3a + if m.Secret != nil { + dAtA[i] = 0x32 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) - n204, err := m.NFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n204, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n204 } - if m.ISCSI != nil { - dAtA[i] = 0x42 + if m.NFS != nil { + dAtA[i] = 0x3a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) - n205, err := m.ISCSI.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n205, err := m.NFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n205 } - if m.Glusterfs != nil { - dAtA[i] = 0x4a + if m.ISCSI != nil { + dAtA[i] = 0x42 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) - n206, err := m.Glusterfs.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n206, err := m.ISCSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n206 } - if m.PersistentVolumeClaim != nil { - dAtA[i] = 0x52 + if m.Glusterfs != nil { + dAtA[i] = 0x4a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) - n207, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n207, err := m.Glusterfs.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n207 } - if m.RBD != nil { - dAtA[i] = 0x5a + if m.PersistentVolumeClaim != nil { + dAtA[i] = 0x52 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) - n208, err := m.RBD.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) + n208, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n208 } - if m.FlexVolume != nil { - dAtA[i] = 0x62 + if m.RBD != nil { + dAtA[i] = 0x5a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) - n209, err := m.FlexVolume.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n209, err := m.RBD.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n209 } - if m.Cinder != nil { - dAtA[i] = 0x6a + if m.FlexVolume != nil { + dAtA[i] = 0x62 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) - n210, err := m.Cinder.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n210, err := m.FlexVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n210 } - if m.CephFS != nil { - dAtA[i] = 0x72 + if m.Cinder != nil { + dAtA[i] = 0x6a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) - n211, err := m.CephFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n211, err := m.Cinder.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n211 } - if m.Flocker != nil { - dAtA[i] = 0x7a + if m.CephFS != nil { + dAtA[i] = 0x72 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) - n212, err := m.Flocker.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n212, err := m.CephFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n212 } + if m.Flocker != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n213, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n213 + } if m.DownwardAPI != nil { dAtA[i] = 0x82 i++ dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n213, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n214, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n213 + i += n214 } if m.FC != nil { dAtA[i] = 0x8a @@ -10071,11 +10183,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) - n214, err := m.FC.MarshalTo(dAtA[i:]) + n215, err := m.FC.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n214 + i += n215 } if m.AzureFile != nil { dAtA[i] = 0x92 @@ -10083,11 +10195,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) - n215, err := m.AzureFile.MarshalTo(dAtA[i:]) + n216, err := m.AzureFile.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n215 + i += n216 } if m.ConfigMap != nil { dAtA[i] = 0x9a @@ -10095,11 +10207,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n216, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n217, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n216 + i += n217 } if m.VsphereVolume != nil { dAtA[i] = 0xa2 @@ -10107,11 +10219,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) - n217, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + n218, err := m.VsphereVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n217 + i += n218 } if m.Quobyte != nil { dAtA[i] = 0xaa @@ -10119,11 +10231,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) - n218, err := m.Quobyte.MarshalTo(dAtA[i:]) + n219, err := m.Quobyte.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n218 + i += n219 } if m.AzureDisk != nil { dAtA[i] = 0xb2 @@ -10131,11 +10243,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) - n219, err := m.AzureDisk.MarshalTo(dAtA[i:]) + n220, err := m.AzureDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n219 + i += n220 } if m.PhotonPersistentDisk != nil { dAtA[i] = 0xba @@ -10143,11 +10255,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) - n220, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + n221, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n220 + i += n221 } if m.PortworxVolume != nil { dAtA[i] = 0xc2 @@ -10155,11 +10267,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) - n221, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + n222, err := m.PortworxVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n221 + i += n222 } if m.ScaleIO != nil { dAtA[i] = 0xca @@ -10167,11 +10279,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) - n222, err := m.ScaleIO.MarshalTo(dAtA[i:]) + n223, err := m.ScaleIO.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n222 + i += n223 } if m.Projected != nil { dAtA[i] = 0xd2 @@ -10179,11 +10291,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) - n223, err := m.Projected.MarshalTo(dAtA[i:]) + n224, err := m.Projected.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n223 + i += n224 } if m.StorageOS != nil { dAtA[i] = 0xda @@ -10191,11 +10303,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) - n224, err := m.StorageOS.MarshalTo(dAtA[i:]) + n225, err := m.StorageOS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n224 + i += n225 } return i, nil } @@ -10255,11 +10367,11 @@ func (m *WeightedPodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinityTerm.Size())) - n225, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + n226, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n225 + i += n226 return i, nil } @@ -12303,6 +12415,42 @@ func (m *PodCondition) Size() (n int) { return n } +func (m *PodDNSConfig) Size() (n int) { + var l int + _ = l + if len(m.Nameservers) > 0 { + for _, s := range m.Nameservers { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Searches) > 0 { + for _, s := range m.Searches { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Options) > 0 { + for _, e := range m.Options { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodDNSConfigOption) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.Value != nil { + l = len(*m.Value) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *PodExecOptions) Size() (n int) { var l int _ = l @@ -12500,6 +12648,10 @@ func (m *PodSpec) Size() (n int) { if m.Priority != nil { n += 2 + sovGenerated(uint64(*m.Priority)) } + if m.DNSConfig != nil { + l = m.DNSConfig.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -15195,6 +15347,29 @@ func (this *PodCondition) String() string { }, "") return s } +func (this *PodDNSConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDNSConfig{`, + `Nameservers:` + fmt.Sprintf("%v", this.Nameservers) + `,`, + `Searches:` + fmt.Sprintf("%v", this.Searches) + `,`, + `Options:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Options), "PodDNSConfigOption", "PodDNSConfigOption", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDNSConfigOption) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDNSConfigOption{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + valueToStringGenerated(this.Value) + `,`, + `}`, + }, "") + return s +} func (this *PodExecOptions) String() string { if this == nil { return "nil" @@ -15322,6 +15497,7 @@ func (this *PodSpec) String() string { `HostAliases:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HostAliases), "HostAlias", "HostAlias", 1), `&`, ``, 1) + `,`, `PriorityClassName:` + fmt.Sprintf("%v", this.PriorityClassName) + `,`, `Priority:` + valueToStringGenerated(this.Priority) + `,`, + `DNSConfig:` + strings.Replace(fmt.Sprintf("%v", this.DNSConfig), "PodDNSConfig", "PodDNSConfig", 1) + `,`, `}`, }, "") return s @@ -35476,6 +35652,254 @@ func (m *PodCondition) Unmarshal(dAtA []byte) error { } return nil } +func (m *PodDNSConfig) 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: PodDNSConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDNSConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Nameservers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Nameservers = append(m.Nameservers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Searches", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Searches = append(m.Searches, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Options", 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 > l { + return io.ErrUnexpectedEOF + } + m.Options = append(m.Options, PodDNSConfigOption{}) + if err := m.Options[len(m.Options)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDNSConfigOption) 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: PodDNSConfigOption: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDNSConfigOption: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Value = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *PodExecOptions) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -37286,6 +37710,39 @@ func (m *PodSpec) Unmarshal(dAtA []byte) error { } } m.Priority = &v + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DNSConfig", 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 > l { + return io.ErrUnexpectedEOF + } + if m.DNSConfig == nil { + m.DNSConfig = &PodDNSConfig{} + } + if err := m.DNSConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -48222,760 +48679,766 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 12070 bytes of a gzipped FileDescriptorProto + // 12170 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0xc7, 0x75, 0x98, 0x66, 0x17, 0x5f, 0xfb, 0xf0, 0xdd, 0x87, 0x3b, 0xee, 0x81, 0xbc, 0xc3, 0x71, 0x28, - 0x1d, 0x8f, 0x5f, 0x80, 0x78, 0x24, 0xc5, 0xb3, 0x48, 0xd1, 0x06, 0xb0, 0xc0, 0x1d, 0x78, 0x87, - 0xbb, 0x65, 0x2f, 0xee, 0x4e, 0xa4, 0x69, 0x46, 0x83, 0xdd, 0x06, 0x30, 0xc4, 0x60, 0x66, 0x39, - 0x33, 0x8b, 0x3b, 0xb0, 0xac, 0xaa, 0x84, 0x91, 0x95, 0x0f, 0xf9, 0x87, 0x2a, 0x51, 0x25, 0x8e, - 0xe5, 0x72, 0xaa, 0x12, 0xa7, 0x6c, 0x45, 0x49, 0x2a, 0x8e, 0x1c, 0xd9, 0x91, 0x9c, 0x8a, 0xe3, - 0xa4, 0x52, 0xf2, 0x1f, 0xc5, 0xca, 0x1f, 0xa9, 0xca, 0x15, 0xc4, 0x3a, 0xb9, 0x92, 0xf2, 0x8f, - 0xa4, 0x92, 0xf8, 0x97, 0x11, 0x27, 0x4a, 0xf5, 0xe7, 0x74, 0xcf, 0xce, 0xec, 0x2e, 0x8e, 0x38, - 0x90, 0x52, 0xe9, 0xdf, 0x6e, 0xbf, 0xd7, 0xaf, 0x7b, 0xfa, 0xe3, 0xf5, 0xeb, 0xd7, 0xef, 0x03, - 0x5e, 0xda, 0xbe, 0x14, 0xcd, 0xba, 0xc1, 0xdc, 0x76, 0x6b, 0x9d, 0x84, 0x3e, 0x89, 0x49, 0x34, - 0xb7, 0x4b, 0xfc, 0x46, 0x10, 0xce, 0x09, 0x80, 0xd3, 0x74, 0xe7, 0xea, 0x41, 0x48, 0xe6, 0x76, - 0x9f, 0x9d, 0xdb, 0x24, 0x3e, 0x09, 0x9d, 0x98, 0x34, 0x66, 0x9b, 0x61, 0x10, 0x07, 0x08, 0x71, - 0x9c, 0x59, 0xa7, 0xe9, 0xce, 0x52, 0x9c, 0xd9, 0xdd, 0x67, 0xa7, 0x9f, 0xd9, 0x74, 0xe3, 0xad, - 0xd6, 0xfa, 0x6c, 0x3d, 0xd8, 0x99, 0xdb, 0x0c, 0x36, 0x83, 0x39, 0x86, 0xba, 0xde, 0xda, 0x60, - 0xff, 0xd8, 0x1f, 0xf6, 0x8b, 0x93, 0x98, 0x5e, 0x4d, 0x9a, 0x21, 0x77, 0x63, 0xe2, 0x47, 0x6e, - 0xe0, 0x47, 0xcf, 0x38, 0x4d, 0x37, 0x22, 0xe1, 0x2e, 0x09, 0xe7, 0x9a, 0xdb, 0x9b, 0x14, 0x16, - 0x99, 0x08, 0x73, 0xbb, 0xcf, 0xae, 0x93, 0xd8, 0x69, 0xeb, 0xd1, 0xf4, 0xf3, 0x09, 0xb9, 0x1d, - 0xa7, 0xbe, 0xe5, 0xfa, 0x24, 0xdc, 0x93, 0x34, 0xe6, 0x42, 0x12, 0x05, 0xad, 0xb0, 0x4e, 0x0e, - 0x55, 0x2b, 0x9a, 0xdb, 0x21, 0xb1, 0x93, 0xf1, 0xf5, 0xd3, 0x73, 0x79, 0xb5, 0xc2, 0x96, 0x1f, - 0xbb, 0x3b, 0xed, 0xcd, 0x7c, 0xa2, 0x5b, 0x85, 0xa8, 0xbe, 0x45, 0x76, 0x9c, 0xb6, 0x7a, 0xcf, - 0xe5, 0xd5, 0x6b, 0xc5, 0xae, 0x37, 0xe7, 0xfa, 0x71, 0x14, 0x87, 0xe9, 0x4a, 0xf6, 0x77, 0x2d, - 0x38, 0x37, 0x7f, 0xbb, 0xb6, 0xe4, 0x39, 0x51, 0xec, 0xd6, 0x17, 0xbc, 0xa0, 0xbe, 0x5d, 0x8b, - 0x83, 0x90, 0xdc, 0x0a, 0xbc, 0xd6, 0x0e, 0xa9, 0xb1, 0x81, 0x40, 0x4f, 0xc3, 0xd0, 0x2e, 0xfb, - 0xbf, 0x52, 0x29, 0x5b, 0xe7, 0xac, 0x0b, 0xa5, 0x85, 0x89, 0x6f, 0xed, 0xcf, 0x7c, 0xe4, 0xde, - 0xfe, 0xcc, 0xd0, 0x2d, 0x51, 0x8e, 0x15, 0x06, 0x3a, 0x0f, 0x03, 0x1b, 0xd1, 0xda, 0x5e, 0x93, - 0x94, 0x0b, 0x0c, 0x77, 0x4c, 0xe0, 0x0e, 0x2c, 0xd7, 0x68, 0x29, 0x16, 0x50, 0x34, 0x07, 0xa5, - 0xa6, 0x13, 0xc6, 0x6e, 0xec, 0x06, 0x7e, 0xb9, 0x78, 0xce, 0xba, 0xd0, 0xbf, 0x30, 0x29, 0x50, - 0x4b, 0x55, 0x09, 0xc0, 0x09, 0x0e, 0xed, 0x46, 0x48, 0x9c, 0xc6, 0x0d, 0xdf, 0xdb, 0x2b, 0xf7, - 0x9d, 0xb3, 0x2e, 0x0c, 0x25, 0xdd, 0xc0, 0xa2, 0x1c, 0x2b, 0x0c, 0xfb, 0x97, 0x0b, 0x30, 0x34, - 0xbf, 0xb1, 0xe1, 0xfa, 0x6e, 0xbc, 0x87, 0x6e, 0xc1, 0x88, 0x1f, 0x34, 0x88, 0xfc, 0xcf, 0xbe, - 0x62, 0xf8, 0xe2, 0xb9, 0xd9, 0xf6, 0x95, 0x39, 0x7b, 0x5d, 0xc3, 0x5b, 0x98, 0xb8, 0xb7, 0x3f, + 0x1d, 0x8f, 0x5f, 0x80, 0x78, 0x24, 0xc5, 0xb3, 0x48, 0xd1, 0x06, 0xb0, 0xc0, 0x1d, 0x78, 0x07, + 0xdc, 0xb2, 0x17, 0x77, 0x27, 0xd2, 0x34, 0xa3, 0xc1, 0x6e, 0x03, 0x18, 0x62, 0x30, 0xb3, 0x9c, + 0x99, 0xc5, 0x1d, 0x58, 0x76, 0x55, 0xc2, 0xd8, 0xca, 0x87, 0xfd, 0xc3, 0x95, 0xb8, 0x12, 0xc7, + 0x76, 0x39, 0x55, 0x89, 0x53, 0xb6, 0xe2, 0x24, 0x15, 0xc7, 0x8e, 0xed, 0x48, 0x4e, 0xe2, 0x38, + 0xa9, 0x94, 0xfc, 0x47, 0xb1, 0x92, 0x1f, 0x52, 0x95, 0x2b, 0x88, 0x75, 0x72, 0x25, 0xe5, 0x1f, + 0x49, 0x25, 0xf1, 0x2f, 0x23, 0x4e, 0x94, 0xea, 0xcf, 0xe9, 0x9e, 0x9d, 0xd9, 0x5d, 0x1c, 0x71, + 0x20, 0xa5, 0xd2, 0xbf, 0xdd, 0x7e, 0xaf, 0x5f, 0xf7, 0xf4, 0xc7, 0xeb, 0xd7, 0xaf, 0xdf, 0x07, + 0xbc, 0xb2, 0x73, 0x25, 0x9a, 0x75, 0x83, 0xb9, 0x9d, 0xd6, 0x06, 0x09, 0x7d, 0x12, 0x93, 0x68, + 0x6e, 0x8f, 0xf8, 0x8d, 0x20, 0x9c, 0x13, 0x00, 0xa7, 0xe9, 0xce, 0xd5, 0x83, 0x90, 0xcc, 0xed, + 0x3d, 0x3f, 0xb7, 0x45, 0x7c, 0x12, 0x3a, 0x31, 0x69, 0xcc, 0x36, 0xc3, 0x20, 0x0e, 0x10, 0xe2, + 0x38, 0xb3, 0x4e, 0xd3, 0x9d, 0xa5, 0x38, 0xb3, 0x7b, 0xcf, 0x4f, 0x3f, 0xb7, 0xe5, 0xc6, 0xdb, + 0xad, 0x8d, 0xd9, 0x7a, 0xb0, 0x3b, 0xb7, 0x15, 0x6c, 0x05, 0x73, 0x0c, 0x75, 0xa3, 0xb5, 0xc9, + 0xfe, 0xb1, 0x3f, 0xec, 0x17, 0x27, 0x31, 0xbd, 0x9a, 0x34, 0x43, 0xee, 0xc5, 0xc4, 0x8f, 0xdc, + 0xc0, 0x8f, 0x9e, 0x73, 0x9a, 0x6e, 0x44, 0xc2, 0x3d, 0x12, 0xce, 0x35, 0x77, 0xb6, 0x28, 0x2c, + 0x32, 0x11, 0xe6, 0xf6, 0x9e, 0xdf, 0x20, 0xb1, 0xd3, 0xd6, 0xa3, 0xe9, 0x17, 0x13, 0x72, 0xbb, + 0x4e, 0x7d, 0xdb, 0xf5, 0x49, 0xb8, 0x2f, 0x69, 0xcc, 0x85, 0x24, 0x0a, 0x5a, 0x61, 0x9d, 0x1c, + 0xa9, 0x56, 0x34, 0xb7, 0x4b, 0x62, 0x27, 0xe3, 0xeb, 0xa7, 0xe7, 0xf2, 0x6a, 0x85, 0x2d, 0x3f, + 0x76, 0x77, 0xdb, 0x9b, 0xf9, 0x4c, 0xb7, 0x0a, 0x51, 0x7d, 0x9b, 0xec, 0x3a, 0x6d, 0xf5, 0x5e, + 0xc8, 0xab, 0xd7, 0x8a, 0x5d, 0x6f, 0xce, 0xf5, 0xe3, 0x28, 0x0e, 0xd3, 0x95, 0xec, 0x6f, 0x58, + 0x70, 0x61, 0xfe, 0x4e, 0x6d, 0xc9, 0x73, 0xa2, 0xd8, 0xad, 0x2f, 0x78, 0x41, 0x7d, 0xa7, 0x16, + 0x07, 0x21, 0xb9, 0x1d, 0x78, 0xad, 0x5d, 0x52, 0x63, 0x03, 0x81, 0x9e, 0x85, 0xa1, 0x3d, 0xf6, + 0x7f, 0xa5, 0x52, 0xb6, 0x2e, 0x58, 0x97, 0x4a, 0x0b, 0x13, 0x5f, 0x3d, 0x98, 0xf9, 0xc4, 0xfd, + 0x83, 0x99, 0xa1, 0xdb, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x11, 0x06, 0x36, 0xa3, 0xf5, 0xfd, 0x26, + 0x29, 0x17, 0x18, 0xee, 0x98, 0xc0, 0x1d, 0x58, 0xae, 0xd1, 0x52, 0x2c, 0xa0, 0x68, 0x0e, 0x4a, + 0x4d, 0x27, 0x8c, 0xdd, 0xd8, 0x0d, 0xfc, 0x72, 0xf1, 0x82, 0x75, 0xa9, 0x7f, 0x61, 0x52, 0xa0, + 0x96, 0xaa, 0x12, 0x80, 0x13, 0x1c, 0xda, 0x8d, 0x90, 0x38, 0x8d, 0x9b, 0xbe, 0xb7, 0x5f, 0xee, + 0xbb, 0x60, 0x5d, 0x1a, 0x4a, 0xba, 0x81, 0x45, 0x39, 0x56, 0x18, 0xf6, 0xcf, 0x15, 0x60, 0x68, + 0x7e, 0x73, 0xd3, 0xf5, 0xdd, 0x78, 0x1f, 0xdd, 0x86, 0x11, 0x3f, 0x68, 0x10, 0xf9, 0x9f, 0x7d, + 0xc5, 0xf0, 0xe5, 0x0b, 0xb3, 0xed, 0x2b, 0x73, 0x76, 0x4d, 0xc3, 0x5b, 0x98, 0xb8, 0x7f, 0x30, 0x33, 0xa2, 0x97, 0x60, 0x83, 0x0e, 0xc2, 0x30, 0xdc, 0x0c, 0x1a, 0x8a, 0x6c, 0x81, 0x91, 0x9d, - 0xc9, 0x22, 0x5b, 0x4d, 0xd0, 0x16, 0xc6, 0xef, 0xed, 0xcf, 0x0c, 0x6b, 0x05, 0x58, 0x27, 0x82, - 0xd6, 0x61, 0x9c, 0xfe, 0xf5, 0x63, 0x57, 0xd1, 0x2d, 0x32, 0xba, 0x8f, 0xe5, 0xd1, 0xd5, 0x50, - 0x17, 0x4e, 0xdc, 0xdb, 0x9f, 0x19, 0x4f, 0x15, 0xe2, 0x34, 0x41, 0xfb, 0x5d, 0x18, 0x9b, 0x8f, - 0x63, 0xa7, 0xbe, 0x45, 0x1a, 0x7c, 0x06, 0xd1, 0xf3, 0xd0, 0xe7, 0x3b, 0x3b, 0x44, 0xcc, 0xef, - 0x39, 0x31, 0xb0, 0x7d, 0xd7, 0x9d, 0x1d, 0x72, 0xb0, 0x3f, 0x33, 0x71, 0xd3, 0x77, 0xdf, 0x69, - 0x89, 0x55, 0x41, 0xcb, 0x30, 0xc3, 0x46, 0x17, 0x01, 0x1a, 0x64, 0xd7, 0xad, 0x93, 0xaa, 0x13, - 0x6f, 0x89, 0xf9, 0x46, 0xa2, 0x2e, 0x54, 0x14, 0x04, 0x6b, 0x58, 0xf6, 0x5d, 0x28, 0xcd, 0xef, - 0x06, 0x6e, 0xa3, 0x1a, 0x34, 0x22, 0xb4, 0x0d, 0xe3, 0xcd, 0x90, 0x6c, 0x90, 0x50, 0x15, 0x95, - 0xad, 0x73, 0xc5, 0x0b, 0xc3, 0x17, 0x2f, 0x64, 0x7e, 0xac, 0x89, 0xba, 0xe4, 0xc7, 0xe1, 0xde, - 0xc2, 0x43, 0xa2, 0xbd, 0xf1, 0x14, 0x14, 0xa7, 0x29, 0xdb, 0xff, 0xbe, 0x00, 0x27, 0xe7, 0xdf, - 0x6d, 0x85, 0xa4, 0xe2, 0x46, 0xdb, 0xe9, 0x15, 0xde, 0x70, 0xa3, 0xed, 0xeb, 0xc9, 0x08, 0xa8, - 0xa5, 0x55, 0x11, 0xe5, 0x58, 0x61, 0xa0, 0x67, 0x60, 0x90, 0xfe, 0xbe, 0x89, 0x57, 0xc4, 0x27, - 0x9f, 0x10, 0xc8, 0xc3, 0x15, 0x27, 0x76, 0x2a, 0x1c, 0x84, 0x25, 0x0e, 0x5a, 0x85, 0xe1, 0x3a, - 0xdb, 0x90, 0x9b, 0xab, 0x41, 0x83, 0xb0, 0xc9, 0x2c, 0x2d, 0x3c, 0x45, 0xd1, 0x17, 0x93, 0xe2, - 0x83, 0xfd, 0x99, 0x32, 0xef, 0x9b, 0x20, 0xa1, 0xc1, 0xb0, 0x5e, 0x1f, 0xd9, 0x6a, 0x7f, 0xf5, - 0x31, 0x4a, 0x90, 0xb1, 0xb7, 0x2e, 0x68, 0x5b, 0xa5, 0x9f, 0x6d, 0x95, 0x91, 0xec, 0x6d, 0x82, - 0x9e, 0x85, 0xbe, 0x6d, 0xd7, 0x6f, 0x94, 0x07, 0x18, 0xad, 0x33, 0x74, 0xce, 0xaf, 0xba, 0x7e, - 0xe3, 0x60, 0x7f, 0x66, 0xd2, 0xe8, 0x0e, 0x2d, 0xc4, 0x0c, 0xd5, 0xfe, 0x33, 0x0b, 0x66, 0x18, - 0x6c, 0xd9, 0xf5, 0x48, 0x95, 0x84, 0x91, 0x1b, 0xc5, 0xc4, 0x8f, 0x8d, 0x01, 0xbd, 0x08, 0x10, - 0x91, 0x7a, 0x48, 0x62, 0x6d, 0x48, 0xd5, 0xc2, 0xa8, 0x29, 0x08, 0xd6, 0xb0, 0x28, 0x43, 0x88, - 0xb6, 0x9c, 0x90, 0xad, 0x2f, 0x31, 0xb0, 0x8a, 0x21, 0xd4, 0x24, 0x00, 0x27, 0x38, 0x06, 0x43, - 0x28, 0x76, 0x63, 0x08, 0xe8, 0x53, 0x30, 0x9e, 0x34, 0x16, 0x35, 0x9d, 0xba, 0x1c, 0x40, 0xb6, - 0x65, 0x6a, 0x26, 0x08, 0xa7, 0x71, 0xed, 0x7f, 0x6c, 0x89, 0xc5, 0x43, 0xbf, 0xfa, 0x43, 0xfe, - 0xad, 0xf6, 0xef, 0x58, 0x30, 0xb8, 0xe0, 0xfa, 0x0d, 0xd7, 0xdf, 0x44, 0x9f, 0x81, 0x21, 0x7a, - 0x36, 0x35, 0x9c, 0xd8, 0x11, 0x7c, 0xef, 0xe3, 0xda, 0xde, 0x52, 0x47, 0xc5, 0x6c, 0x73, 0x7b, - 0x93, 0x16, 0x44, 0xb3, 0x14, 0x9b, 0xee, 0xb6, 0x1b, 0xeb, 0x6f, 0x93, 0x7a, 0xbc, 0x4a, 0x62, - 0x27, 0xf9, 0x9c, 0xa4, 0x0c, 0x2b, 0xaa, 0xe8, 0x2a, 0x0c, 0xc4, 0x4e, 0xb8, 0x49, 0x62, 0xc1, - 0x00, 0x33, 0x19, 0x15, 0xaf, 0x89, 0xe9, 0x8e, 0x24, 0x7e, 0x9d, 0x24, 0xc7, 0xc2, 0x1a, 0xab, - 0x8a, 0x05, 0x09, 0xfb, 0xab, 0x16, 0x9c, 0x5e, 0xac, 0xad, 0xe4, 0xac, 0xab, 0xf3, 0x30, 0xd0, - 0x08, 0xdd, 0x5d, 0x12, 0x8a, 0x71, 0x56, 0x54, 0x2a, 0xac, 0x14, 0x0b, 0x28, 0xba, 0x04, 0x23, - 0xfc, 0x40, 0xba, 0xe2, 0xf8, 0x0d, 0x4f, 0x0e, 0xf1, 0x94, 0xc0, 0x1e, 0xb9, 0xa5, 0xc1, 0xb0, - 0x81, 0x79, 0xc8, 0x81, 0xae, 0xc3, 0xc8, 0xa2, 0xd3, 0x74, 0xd6, 0x5d, 0xcf, 0x8d, 0x5d, 0x12, - 0xa1, 0xc7, 0xa1, 0xe8, 0x34, 0x1a, 0x8c, 0x87, 0x95, 0x16, 0x4e, 0xde, 0xdb, 0x9f, 0x29, 0xce, - 0x37, 0xe8, 0x66, 0x02, 0x85, 0xb5, 0x87, 0x29, 0x06, 0x7a, 0x12, 0xfa, 0x1a, 0x61, 0xd0, 0x2c, - 0x17, 0x18, 0xe6, 0x29, 0xba, 0xef, 0x2a, 0x61, 0xd0, 0x4c, 0xa1, 0x32, 0x1c, 0xfb, 0xf7, 0x0a, - 0xf0, 0xc8, 0x22, 0x69, 0x6e, 0x2d, 0xd7, 0x72, 0x46, 0xe5, 0x02, 0x0c, 0xed, 0x04, 0xbe, 0x1b, - 0x07, 0x61, 0x24, 0x9a, 0x66, 0xdb, 0x7d, 0x55, 0x94, 0x61, 0x05, 0x45, 0xe7, 0xa0, 0xaf, 0x99, - 0xb0, 0xea, 0x11, 0xc9, 0xe6, 0x19, 0x93, 0x66, 0x10, 0x8a, 0xd1, 0x8a, 0x48, 0x28, 0xd8, 0x94, - 0xc2, 0xb8, 0x19, 0x91, 0x10, 0x33, 0x48, 0xb2, 0xde, 0xe9, 0x4e, 0x10, 0x7b, 0x28, 0xb5, 0xde, - 0x29, 0x04, 0x6b, 0x58, 0xa8, 0x0a, 0x25, 0xfe, 0x0f, 0x93, 0x0d, 0xc6, 0x91, 0x72, 0x56, 0x49, - 0x4d, 0x22, 0x89, 0x55, 0x32, 0xca, 0x36, 0x84, 0x2c, 0xc4, 0x09, 0x11, 0x63, 0x9e, 0x06, 0xba, - 0xce, 0xd3, 0x37, 0x0b, 0x80, 0xf8, 0x10, 0xfe, 0x88, 0x0d, 0xdc, 0xcd, 0xf6, 0x81, 0xcb, 0x3c, - 0x1a, 0xaf, 0x05, 0x75, 0xc7, 0x4b, 0xef, 0xb1, 0xa3, 0x1a, 0xbd, 0x5f, 0xb2, 0x00, 0x2d, 0xba, - 0x7e, 0x83, 0x84, 0xc7, 0x20, 0x17, 0x1e, 0x6e, 0x03, 0x5e, 0x83, 0xb1, 0x45, 0xcf, 0x25, 0x7e, - 0xbc, 0x52, 0x5d, 0x0c, 0xfc, 0x0d, 0x77, 0x13, 0x7d, 0x12, 0xc6, 0xa8, 0x98, 0x1c, 0xb4, 0xe2, - 0x1a, 0xa9, 0x07, 0x3e, 0x93, 0x28, 0xa8, 0x70, 0x89, 0xee, 0xed, 0xcf, 0x8c, 0xad, 0x19, 0x10, - 0x9c, 0xc2, 0xb4, 0xff, 0x88, 0x7e, 0x68, 0xb0, 0xd3, 0x0c, 0x7c, 0xe2, 0xc7, 0x8b, 0x81, 0xdf, - 0xe0, 0x92, 0xe7, 0x27, 0xa1, 0x2f, 0xa6, 0x1d, 0xe7, 0x1f, 0x79, 0x5e, 0x4e, 0x2d, 0xed, 0xee, - 0xc1, 0xfe, 0xcc, 0xa9, 0xf6, 0x1a, 0xec, 0x83, 0x58, 0x1d, 0xf4, 0x53, 0x30, 0x10, 0xc5, 0x4e, - 0xdc, 0x8a, 0xc4, 0x67, 0x3f, 0x2a, 0x3f, 0xbb, 0xc6, 0x4a, 0x0f, 0xf6, 0x67, 0xc6, 0x55, 0x35, - 0x5e, 0x84, 0x45, 0x05, 0xf4, 0x04, 0x0c, 0xee, 0x90, 0x28, 0x72, 0x36, 0xa5, 0xd0, 0x30, 0x2e, - 0xea, 0x0e, 0xae, 0xf2, 0x62, 0x2c, 0xe1, 0xe8, 0x31, 0xe8, 0x27, 0x61, 0x18, 0x84, 0x62, 0x55, - 0x8d, 0x0a, 0xc4, 0xfe, 0x25, 0x5a, 0x88, 0x39, 0xcc, 0xfe, 0x8f, 0x16, 0x8c, 0xab, 0xbe, 0xf2, - 0xb6, 0x8e, 0xe1, 0x74, 0x78, 0x03, 0xa0, 0x2e, 0x3f, 0x30, 0x62, 0xfc, 0x6e, 0xf8, 0xe2, 0xf9, - 0xac, 0x25, 0xdc, 0x3e, 0x8c, 0x09, 0x65, 0x55, 0x14, 0x61, 0x8d, 0x9a, 0xfd, 0xaf, 0x2d, 0x38, - 0x91, 0xfa, 0xa2, 0x6b, 0x6e, 0x14, 0xa3, 0x37, 0xdb, 0xbe, 0x6a, 0xb6, 0xb7, 0xaf, 0xa2, 0xb5, - 0xd9, 0x37, 0xa9, 0x35, 0x27, 0x4b, 0xb4, 0x2f, 0xba, 0x02, 0xfd, 0x6e, 0x4c, 0x76, 0xe4, 0xc7, - 0x3c, 0xd6, 0xf1, 0x63, 0x78, 0xaf, 0x92, 0x19, 0x59, 0xa1, 0x35, 0x31, 0x27, 0x60, 0xff, 0x2f, - 0x0b, 0x4a, 0x7c, 0xd9, 0xae, 0x3a, 0xcd, 0x63, 0x98, 0x8b, 0x15, 0xe8, 0x63, 0xd4, 0x79, 0xc7, - 0x1f, 0xcf, 0xee, 0xb8, 0xe8, 0xce, 0x2c, 0x15, 0xfd, 0xb8, 0x88, 0xad, 0x98, 0x19, 0x2d, 0xc2, - 0x8c, 0xc4, 0xf4, 0x8b, 0x50, 0x52, 0x08, 0x68, 0x02, 0x8a, 0xdb, 0x84, 0x5f, 0xab, 0x4a, 0x98, - 0xfe, 0x44, 0x53, 0xd0, 0xbf, 0xeb, 0x78, 0x2d, 0xb1, 0xd9, 0x31, 0xff, 0xf3, 0xc9, 0xc2, 0x25, - 0xcb, 0xfe, 0x06, 0xdb, 0x63, 0xa2, 0x91, 0x25, 0x7f, 0x57, 0x30, 0x93, 0x77, 0x61, 0xca, 0xcb, - 0xe0, 0x61, 0x62, 0x20, 0x7a, 0xe7, 0x79, 0x8f, 0x88, 0xbe, 0x4e, 0x65, 0x41, 0x71, 0x66, 0x1b, - 0xf4, 0x18, 0x08, 0x9a, 0x74, 0x45, 0x39, 0x1e, 0xeb, 0xaf, 0x10, 0x97, 0x6f, 0x88, 0x32, 0xac, - 0xa0, 0x94, 0x41, 0x4c, 0xa9, 0xce, 0x5f, 0x25, 0x7b, 0x35, 0xe2, 0x91, 0x7a, 0x1c, 0x84, 0x1f, - 0x68, 0xf7, 0xcf, 0xf0, 0xd1, 0xe7, 0xfc, 0x65, 0x58, 0x10, 0x28, 0x5e, 0x25, 0x7b, 0x7c, 0x2a, - 0xf4, 0xaf, 0x2b, 0x76, 0xfc, 0xba, 0xdf, 0xb4, 0x60, 0x54, 0x7d, 0xdd, 0x31, 0x6c, 0xa4, 0x05, - 0x73, 0x23, 0x9d, 0xe9, 0xb8, 0x1e, 0x73, 0xb6, 0xd0, 0x0f, 0x19, 0x0b, 0x10, 0x38, 0xd5, 0x30, - 0xa0, 0x43, 0x43, 0x79, 0xf6, 0x07, 0x39, 0x21, 0xbd, 0x7c, 0xd7, 0x55, 0xb2, 0xb7, 0x16, 0x50, - 0xf1, 0x21, 0xfb, 0xbb, 0x8c, 0x59, 0xeb, 0xeb, 0x38, 0x6b, 0xbf, 0x55, 0x80, 0x93, 0x6a, 0x04, - 0x8c, 0x03, 0xfa, 0x47, 0x7d, 0x0c, 0x9e, 0x85, 0xe1, 0x06, 0xd9, 0x70, 0x5a, 0x5e, 0xac, 0x6e, - 0xce, 0xfd, 0x5c, 0x7b, 0x52, 0x49, 0x8a, 0xb1, 0x8e, 0x73, 0x88, 0x61, 0xfb, 0xb5, 0x61, 0xc6, - 0x7b, 0x63, 0x87, 0xae, 0x60, 0x2a, 0xbd, 0x69, 0xfa, 0x8f, 0x11, 0x5d, 0xff, 0x21, 0x74, 0x1d, - 0x8f, 0x41, 0xbf, 0xbb, 0x43, 0xcf, 0xe2, 0x82, 0x79, 0xc4, 0xae, 0xd0, 0x42, 0xcc, 0x61, 0xe8, - 0x63, 0x30, 0x58, 0x0f, 0x76, 0x76, 0x1c, 0xbf, 0x51, 0x2e, 0x32, 0x79, 0x72, 0x98, 0x1e, 0xd7, - 0x8b, 0xbc, 0x08, 0x4b, 0x18, 0x7a, 0x04, 0xfa, 0x9c, 0x70, 0x33, 0x2a, 0xf7, 0x31, 0x9c, 0x21, - 0xda, 0xd2, 0x7c, 0xb8, 0x19, 0x61, 0x56, 0x4a, 0xe5, 0xc4, 0x3b, 0x41, 0xb8, 0xed, 0xfa, 0x9b, - 0x15, 0x37, 0x64, 0x42, 0x9f, 0x26, 0x27, 0xde, 0x56, 0x10, 0xac, 0x61, 0xa1, 0x65, 0xe8, 0x6f, - 0x06, 0x61, 0x1c, 0x95, 0x07, 0xd8, 0x70, 0x3f, 0x9a, 0xb3, 0x95, 0xf8, 0xd7, 0x56, 0x83, 0x30, - 0x4e, 0x3e, 0x80, 0xfe, 0x8b, 0x30, 0xaf, 0x8e, 0x7e, 0x0a, 0x8a, 0xc4, 0xdf, 0x2d, 0x0f, 0x32, - 0x2a, 0xd3, 0x59, 0x54, 0x96, 0xfc, 0xdd, 0x5b, 0x4e, 0x98, 0xf0, 0x99, 0x25, 0x7f, 0x17, 0xd3, - 0x3a, 0xe8, 0x75, 0x28, 0x49, 0xdd, 0x69, 0x54, 0x1e, 0xca, 0x5f, 0x62, 0x58, 0x20, 0x61, 0xf2, - 0x4e, 0xcb, 0x0d, 0xc9, 0x0e, 0xf1, 0xe3, 0x28, 0xb9, 0xfd, 0x4a, 0x68, 0x84, 0x13, 0x6a, 0xe8, - 0x75, 0x79, 0x9d, 0x5b, 0x0d, 0x5a, 0x7e, 0x1c, 0x95, 0x4b, 0xac, 0x7b, 0x99, 0x8a, 0xb6, 0x5b, - 0x09, 0x5e, 0xfa, 0xbe, 0xc7, 0x2b, 0x63, 0x83, 0x14, 0xc2, 0x30, 0xea, 0xb9, 0xbb, 0xc4, 0x27, - 0x51, 0x54, 0x0d, 0x83, 0x75, 0x52, 0x06, 0xd6, 0xf3, 0xd3, 0xd9, 0xfa, 0xa7, 0x60, 0x9d, 0x2c, - 0x4c, 0xde, 0xdb, 0x9f, 0x19, 0xbd, 0xa6, 0xd7, 0xc1, 0x26, 0x09, 0x74, 0x13, 0xc6, 0xa8, 0x80, - 0xea, 0x26, 0x44, 0x87, 0xbb, 0x11, 0x65, 0xd2, 0x29, 0x36, 0x2a, 0xe1, 0x14, 0x11, 0xf4, 0x2a, - 0x94, 0x3c, 0x77, 0x83, 0xd4, 0xf7, 0xea, 0x1e, 0x29, 0x8f, 0x30, 0x8a, 0x99, 0xdb, 0xea, 0x9a, - 0x44, 0xe2, 0x17, 0x00, 0xf5, 0x17, 0x27, 0xd5, 0xd1, 0x2d, 0x38, 0x15, 0x93, 0x70, 0xc7, 0xf5, - 0x1d, 0xba, 0x1d, 0x84, 0x3c, 0xc9, 0xb4, 0x78, 0xa3, 0x6c, 0xbd, 0x9d, 0x15, 0x43, 0x77, 0x6a, - 0x2d, 0x13, 0x0b, 0xe7, 0xd4, 0x46, 0x37, 0x60, 0x9c, 0xed, 0x84, 0x6a, 0xcb, 0xf3, 0xaa, 0x81, - 0xe7, 0xd6, 0xf7, 0xca, 0x63, 0x8c, 0xe0, 0xc7, 0xa4, 0x9a, 0x6e, 0xc5, 0x04, 0xd3, 0x1b, 0x6f, - 0xf2, 0x0f, 0xa7, 0x6b, 0xa3, 0x75, 0xa6, 0xb6, 0x69, 0x85, 0x6e, 0xbc, 0x47, 0xd7, 0x2f, 0xb9, - 0x1b, 0x97, 0xc7, 0x3b, 0xde, 0x1f, 0x75, 0x54, 0xa5, 0xdb, 0xd1, 0x0b, 0x71, 0x9a, 0x20, 0xdd, - 0xda, 0x51, 0xdc, 0x70, 0xfd, 0xf2, 0x04, 0xe3, 0x18, 0x6a, 0x67, 0xd4, 0x68, 0x21, 0xe6, 0x30, - 0xa6, 0xb2, 0xa1, 0x3f, 0x6e, 0x50, 0x0e, 0x3a, 0xc9, 0x10, 0x13, 0x95, 0x8d, 0x04, 0xe0, 0x04, - 0x87, 0x1e, 0xcb, 0x71, 0xbc, 0x57, 0x46, 0x0c, 0x55, 0x6d, 0x97, 0xb5, 0xb5, 0xd7, 0x31, 0x2d, - 0x47, 0xd7, 0x60, 0x90, 0xf8, 0xbb, 0xcb, 0x61, 0xb0, 0x53, 0x3e, 0x91, 0xbf, 0x67, 0x97, 0x38, - 0x0a, 0x67, 0xe8, 0xc9, 0x05, 0x40, 0x14, 0x63, 0x49, 0x02, 0xdd, 0x85, 0x72, 0xc6, 0x8c, 0xf0, - 0x09, 0x98, 0x62, 0x13, 0xf0, 0xb2, 0xa8, 0x5b, 0x5e, 0xcb, 0xc1, 0x3b, 0xe8, 0x00, 0xc3, 0xb9, - 0xd4, 0xd1, 0xcf, 0xc1, 0x28, 0xdf, 0x50, 0x5c, 0xdf, 0x1b, 0x95, 0x4f, 0xb2, 0xaf, 0x39, 0x97, - 0xbf, 0x39, 0x39, 0xe2, 0xc2, 0x49, 0xd1, 0xa1, 0x51, 0xbd, 0x34, 0xc2, 0x26, 0x35, 0x7b, 0x1d, - 0xc6, 0x14, 0xdf, 0x62, 0x4b, 0x07, 0xcd, 0x40, 0x3f, 0x65, 0xc8, 0xf2, 0xc6, 0x5e, 0xa2, 0x33, - 0xc5, 0xf4, 0x74, 0x98, 0x97, 0xb3, 0x99, 0x72, 0xdf, 0x25, 0x0b, 0x7b, 0x31, 0xe1, 0xb7, 0xae, - 0xa2, 0x36, 0x53, 0x12, 0x80, 0x13, 0x1c, 0xfb, 0xff, 0x71, 0xb9, 0x27, 0x61, 0x8e, 0x3d, 0x1c, - 0x07, 0x4f, 0xc3, 0xd0, 0x56, 0x10, 0xc5, 0x14, 0x9b, 0xb5, 0xd1, 0x9f, 0x48, 0x3a, 0x57, 0x44, - 0x39, 0x56, 0x18, 0xe8, 0x25, 0x18, 0xad, 0xeb, 0x0d, 0x88, 0xb3, 0x4c, 0x0d, 0x81, 0xd1, 0x3a, - 0x36, 0x71, 0xd1, 0x25, 0x18, 0x62, 0xaf, 0x35, 0xf5, 0xc0, 0x13, 0xf7, 0x3b, 0x79, 0x20, 0x0f, - 0x55, 0x45, 0xf9, 0x81, 0xf6, 0x1b, 0x2b, 0x6c, 0x7a, 0xe7, 0xa6, 0x5d, 0x58, 0xa9, 0x8a, 0x53, - 0x44, 0xdd, 0xb9, 0xaf, 0xb0, 0x52, 0x2c, 0xa0, 0xf6, 0xdf, 0x2a, 0x68, 0xa3, 0x4c, 0x6f, 0x2c, - 0x04, 0x55, 0x61, 0xf0, 0x8e, 0xe3, 0xc6, 0xae, 0xbf, 0x29, 0xc4, 0x85, 0x27, 0x3a, 0x1e, 0x29, - 0xac, 0xd2, 0x6d, 0x5e, 0x81, 0x1f, 0x7a, 0xe2, 0x0f, 0x96, 0x64, 0x28, 0xc5, 0xb0, 0xe5, 0xfb, - 0x94, 0x62, 0xa1, 0x57, 0x8a, 0x98, 0x57, 0xe0, 0x14, 0xc5, 0x1f, 0x2c, 0xc9, 0xa0, 0x37, 0x01, - 0xe4, 0xb2, 0x24, 0x0d, 0xf1, 0x4a, 0xf2, 0x74, 0x77, 0xa2, 0x6b, 0xaa, 0xce, 0xc2, 0x18, 0x3d, - 0x52, 0x93, 0xff, 0x58, 0xa3, 0x67, 0xc7, 0x4c, 0xac, 0x6a, 0xef, 0x0c, 0xfa, 0x59, 0xca, 0x09, - 0x9c, 0x30, 0x26, 0x8d, 0xf9, 0x58, 0x0c, 0xce, 0x93, 0xbd, 0x49, 0xc5, 0x6b, 0xee, 0x0e, 0xd1, - 0xb9, 0x86, 0x20, 0x82, 0x13, 0x7a, 0xf6, 0x6f, 0x17, 0xa1, 0x9c, 0xd7, 0x5d, 0xba, 0xe8, 0xc8, - 0x5d, 0x37, 0x5e, 0xa4, 0xd2, 0x90, 0x65, 0x2e, 0xba, 0x25, 0x51, 0x8e, 0x15, 0x06, 0x9d, 0xfd, - 0xc8, 0xdd, 0x94, 0x97, 0x9a, 0xfe, 0x64, 0xf6, 0x6b, 0xac, 0x14, 0x0b, 0x28, 0xc5, 0x0b, 0x89, - 0x13, 0x89, 0x67, 0x38, 0x6d, 0x95, 0x60, 0x56, 0x8a, 0x05, 0x54, 0xd7, 0x47, 0xf4, 0x75, 0xd1, - 0x47, 0x18, 0x43, 0xd4, 0x7f, 0xb4, 0x43, 0x84, 0xde, 0x02, 0xd8, 0x70, 0x7d, 0x37, 0xda, 0x62, - 0xd4, 0x07, 0x0e, 0x4d, 0x5d, 0xc9, 0x52, 0xcb, 0x8a, 0x0a, 0xd6, 0x28, 0xa2, 0x17, 0x60, 0x58, - 0x6d, 0xc0, 0x95, 0x4a, 0x79, 0xd0, 0x7c, 0xe3, 0x49, 0xb8, 0x51, 0x05, 0xeb, 0x78, 0xf6, 0xdb, - 0xe9, 0xf5, 0x22, 0x76, 0x80, 0x36, 0xbe, 0x56, 0xaf, 0xe3, 0x5b, 0xe8, 0x3c, 0xbe, 0xf6, 0xef, - 0x17, 0x61, 0xdc, 0x68, 0xac, 0x15, 0xf5, 0xc0, 0xb3, 0x2e, 0xd3, 0x73, 0xce, 0x89, 0x89, 0xd8, - 0x7f, 0x76, 0xf7, 0xad, 0xa2, 0x9f, 0x85, 0x74, 0x07, 0xf0, 0xfa, 0xe8, 0x2d, 0x28, 0x79, 0x4e, - 0xc4, 0x74, 0x1b, 0x44, 0xec, 0xbb, 0x5e, 0x88, 0x25, 0xf7, 0x08, 0x27, 0x8a, 0xb5, 0xa3, 0x86, - 0xd3, 0x4e, 0x48, 0xd2, 0x03, 0x99, 0xca, 0x3e, 0xf2, 0x9d, 0x57, 0x75, 0x82, 0x0a, 0x48, 0x7b, - 0x98, 0xc3, 0xd0, 0x25, 0x18, 0x09, 0x09, 0x5b, 0x15, 0x8b, 0x54, 0x94, 0x63, 0xcb, 0xac, 0x3f, - 0x91, 0xf9, 0xb0, 0x06, 0xc3, 0x06, 0x66, 0x22, 0xca, 0x0f, 0x74, 0x10, 0xe5, 0x9f, 0x80, 0x41, - 0xf6, 0x43, 0xad, 0x00, 0x35, 0x1b, 0x2b, 0xbc, 0x18, 0x4b, 0x78, 0x7a, 0xc1, 0x0c, 0xf5, 0xb8, - 0x60, 0x9e, 0x84, 0xb1, 0x8a, 0x43, 0x76, 0x02, 0x7f, 0xc9, 0x6f, 0x34, 0x03, 0xd7, 0x8f, 0x51, - 0x19, 0xfa, 0xd8, 0xe9, 0xc0, 0xf7, 0x76, 0x1f, 0xa5, 0x80, 0xfb, 0xa8, 0x60, 0x6e, 0x7f, 0xa7, - 0x00, 0xa3, 0x15, 0xe2, 0x91, 0x98, 0xf0, 0xab, 0x4c, 0x84, 0x96, 0x01, 0x6d, 0x86, 0x4e, 0x9d, - 0x54, 0x49, 0xe8, 0x06, 0x0d, 0x5d, 0xd7, 0x59, 0x64, 0xef, 0x09, 0xe8, 0x72, 0x1b, 0x14, 0x67, - 0xd4, 0x40, 0x6f, 0xc0, 0x68, 0x33, 0x24, 0x86, 0x8a, 0xce, 0xca, 0x93, 0x46, 0xaa, 0x3a, 0x22, - 0x17, 0x84, 0x8d, 0x22, 0x6c, 0x92, 0x42, 0x3f, 0x03, 0x13, 0x41, 0xd8, 0xdc, 0x72, 0xfc, 0x0a, - 0x69, 0x12, 0xbf, 0x41, 0x25, 0x7d, 0xa1, 0x82, 0x98, 0xba, 0xb7, 0x3f, 0x33, 0x71, 0x23, 0x05, - 0xc3, 0x6d, 0xd8, 0xe8, 0x0d, 0x98, 0x6c, 0x86, 0x41, 0xd3, 0xd9, 0x64, 0x0b, 0x45, 0x08, 0x34, - 0x9c, 0xfb, 0x3c, 0x7d, 0x6f, 0x7f, 0x66, 0xb2, 0x9a, 0x06, 0x1e, 0xec, 0xcf, 0x9c, 0x60, 0x03, - 0x45, 0x4b, 0x12, 0x20, 0x6e, 0x27, 0x63, 0x6f, 0xc2, 0xc9, 0x4a, 0x70, 0xc7, 0xbf, 0xe3, 0x84, - 0x8d, 0xf9, 0xea, 0x8a, 0xa6, 0x3b, 0xb8, 0x2e, 0xef, 0xae, 0xfc, 0x2d, 0x3a, 0xf3, 0x9c, 0xd2, - 0x6a, 0x72, 0xf9, 0x65, 0xd9, 0xf5, 0x48, 0x8e, 0x8e, 0xe2, 0xef, 0x16, 0x8c, 0x96, 0x12, 0x7c, - 0xf5, 0xac, 0x60, 0xe5, 0x3e, 0x2b, 0xbc, 0x06, 0x43, 0x1b, 0x2e, 0xf1, 0x1a, 0x98, 0x6c, 0x88, - 0x99, 0x79, 0x3c, 0xff, 0x79, 0x6d, 0x99, 0x62, 0x4a, 0x9d, 0x14, 0xbf, 0xf9, 0x2e, 0x8b, 0xca, - 0x58, 0x91, 0x41, 0xdb, 0x30, 0x21, 0xaf, 0x56, 0x12, 0x2a, 0x36, 0xf1, 0x13, 0x9d, 0xee, 0x6b, - 0x26, 0x71, 0x36, 0x81, 0x38, 0x45, 0x06, 0xb7, 0x11, 0xa6, 0x57, 0xdd, 0x1d, 0x7a, 0x5c, 0xf5, - 0xb1, 0x25, 0xcd, 0xae, 0xba, 0xec, 0xd6, 0xce, 0x4a, 0xed, 0x5f, 0xb1, 0xe0, 0xa1, 0xb6, 0x91, - 0x11, 0xda, 0x8b, 0x23, 0x9e, 0x85, 0xb4, 0x36, 0xa1, 0xd0, 0x5d, 0x9b, 0x60, 0xff, 0x13, 0x0b, - 0xa6, 0x96, 0x76, 0x9a, 0xf1, 0x5e, 0xc5, 0x35, 0x9f, 0x3e, 0x5e, 0x84, 0x81, 0x1d, 0xd2, 0x70, - 0x5b, 0x3b, 0x62, 0xe6, 0x66, 0x24, 0x4b, 0x5f, 0x65, 0xa5, 0x07, 0xfb, 0x33, 0xa3, 0xb5, 0x38, - 0x08, 0x9d, 0x4d, 0xc2, 0x0b, 0xb0, 0x40, 0x67, 0x07, 0xa3, 0xfb, 0x2e, 0xb9, 0xe6, 0xee, 0xb8, - 0xf2, 0xb9, 0xb4, 0xa3, 0x46, 0x6d, 0x56, 0x0e, 0xe8, 0xec, 0x6b, 0x2d, 0xc7, 0x8f, 0xdd, 0x78, - 0x4f, 0xbc, 0xea, 0x48, 0x22, 0x38, 0xa1, 0x67, 0x7f, 0xd7, 0x82, 0x71, 0xc9, 0x4b, 0xe6, 0x1b, - 0x8d, 0x90, 0x44, 0x11, 0x9a, 0x86, 0x82, 0xdb, 0x14, 0xbd, 0x04, 0xd1, 0xcb, 0xc2, 0x4a, 0x15, - 0x17, 0xdc, 0x26, 0xaa, 0x42, 0x89, 0xbf, 0xba, 0x26, 0x8b, 0xab, 0xa7, 0xb7, 0x5b, 0xd6, 0x83, - 0x35, 0x59, 0x13, 0x27, 0x44, 0xa4, 0x54, 0xcc, 0xce, 0xa1, 0xa2, 0xf9, 0x24, 0x74, 0x45, 0x94, - 0x63, 0x85, 0x81, 0x2e, 0xc0, 0x90, 0x1f, 0x34, 0xf8, 0x23, 0x38, 0xdf, 0xd3, 0x6c, 0xc9, 0x5e, - 0x17, 0x65, 0x58, 0x41, 0xed, 0x5f, 0xb4, 0x60, 0x44, 0x7e, 0x59, 0x8f, 0x02, 0x3a, 0xdd, 0x5a, - 0x89, 0x70, 0x9e, 0x6c, 0x2d, 0x2a, 0x60, 0x33, 0x88, 0x21, 0x57, 0x17, 0x0f, 0x23, 0x57, 0xdb, - 0x5f, 0x2e, 0xc0, 0x98, 0xec, 0x4e, 0xad, 0xb5, 0x1e, 0x91, 0x18, 0xad, 0x41, 0xc9, 0xe1, 0x43, - 0x4e, 0xe4, 0x8a, 0x7d, 0x2c, 0xfb, 0x42, 0x67, 0xcc, 0x4f, 0x22, 0xea, 0xcc, 0xcb, 0xda, 0x38, - 0x21, 0x84, 0x3c, 0x98, 0xf4, 0x83, 0x98, 0x1d, 0x7b, 0x0a, 0xde, 0xe9, 0xd9, 0x21, 0x4d, 0xfd, - 0xb4, 0xa0, 0x3e, 0x79, 0x3d, 0x4d, 0x05, 0xb7, 0x13, 0x46, 0x4b, 0x52, 0x89, 0x54, 0xcc, 0xbf, - 0xc2, 0xe9, 0xb3, 0x90, 0xad, 0x43, 0xb2, 0x7f, 0xd7, 0x82, 0x92, 0x44, 0x3b, 0x8e, 0x17, 0xa6, - 0x55, 0x18, 0x8c, 0xd8, 0x24, 0xc8, 0xa1, 0xb1, 0x3b, 0x75, 0x9c, 0xcf, 0x57, 0x72, 0x9a, 0xf3, - 0xff, 0x11, 0x96, 0x34, 0x98, 0x16, 0x5c, 0x75, 0xff, 0x43, 0xa2, 0x05, 0x57, 0xfd, 0xc9, 0x39, - 0x61, 0xfe, 0x1b, 0xeb, 0xb3, 0xa6, 0x2a, 0xa0, 0x42, 0x67, 0x33, 0x24, 0x1b, 0xee, 0xdd, 0xb4, - 0xd0, 0x59, 0x65, 0xa5, 0x58, 0x40, 0xd1, 0x9b, 0x30, 0x52, 0x97, 0xca, 0xe3, 0x84, 0x0d, 0x9c, - 0xef, 0xa8, 0x8a, 0x57, 0xaf, 0x36, 0xdc, 0x40, 0x6e, 0x51, 0xab, 0x8f, 0x0d, 0x6a, 0xe6, 0xbb, - 0x7f, 0xb1, 0xdb, 0xbb, 0x7f, 0x42, 0x37, 0xf7, 0xe5, 0xda, 0xfe, 0x55, 0x0b, 0x06, 0xb8, 0x0a, - 0xb2, 0x37, 0x9d, 0xad, 0xf6, 0x0a, 0x95, 0x8c, 0xdd, 0x2d, 0x5a, 0x28, 0x1e, 0xa5, 0xd0, 0x2a, - 0x94, 0xd8, 0x0f, 0xa6, 0x8a, 0x29, 0xe6, 0x5b, 0x06, 0xf2, 0x56, 0xf5, 0x0e, 0xde, 0x92, 0xd5, - 0x70, 0x42, 0xc1, 0xfe, 0x52, 0x91, 0xb2, 0xaa, 0x04, 0xd5, 0x38, 0xc1, 0xad, 0x07, 0x77, 0x82, - 0x17, 0x1e, 0xd4, 0x09, 0xbe, 0x09, 0xe3, 0x75, 0xed, 0xc9, 0x2b, 0x99, 0xc9, 0x0b, 0x1d, 0x17, - 0x89, 0xf6, 0x3a, 0xc6, 0xd5, 0x70, 0x8b, 0x26, 0x11, 0x9c, 0xa6, 0x8a, 0x7e, 0x16, 0x46, 0xf8, - 0x3c, 0x8b, 0x56, 0xfa, 0x58, 0x2b, 0x1f, 0xcb, 0x5f, 0x2f, 0x7a, 0x13, 0x6c, 0x25, 0xd6, 0xb4, - 0xea, 0xd8, 0x20, 0x66, 0x7f, 0xbe, 0x1f, 0xfa, 0x97, 0x76, 0x89, 0x1f, 0x1f, 0x03, 0x43, 0xaa, - 0xc3, 0x98, 0xeb, 0xef, 0x06, 0xde, 0x2e, 0x69, 0x70, 0xf8, 0x61, 0x0e, 0xd7, 0x53, 0x82, 0xf4, - 0xd8, 0x8a, 0x41, 0x02, 0xa7, 0x48, 0x3e, 0x88, 0x5b, 0xfb, 0x65, 0x18, 0xe0, 0x73, 0x2f, 0xae, - 0xec, 0x99, 0x0a, 0x76, 0x36, 0x88, 0x62, 0x17, 0x24, 0x1a, 0x05, 0xae, 0xd1, 0x17, 0xd5, 0xd1, - 0xdb, 0x30, 0xb6, 0xe1, 0x86, 0x51, 0x4c, 0xaf, 0xdb, 0x51, 0xec, 0xec, 0x34, 0xef, 0xe3, 0x96, - 0xae, 0xc6, 0x61, 0xd9, 0xa0, 0x84, 0x53, 0x94, 0xd1, 0x26, 0x8c, 0xd2, 0x8b, 0x63, 0xd2, 0xd4, - 0xe0, 0xa1, 0x9b, 0x52, 0x6a, 0xb8, 0x6b, 0x3a, 0x21, 0x6c, 0xd2, 0xa5, 0xcc, 0xa4, 0xce, 0x2e, - 0x9a, 0x43, 0x4c, 0xa2, 0x50, 0xcc, 0x84, 0xdf, 0x30, 0x39, 0x8c, 0xf2, 0x24, 0x66, 0x2a, 0x52, - 0x32, 0x79, 0x52, 0x62, 0x10, 0x62, 0x7f, 0x85, 0x9e, 0x8e, 0x74, 0x0c, 0x8f, 0xe1, 0x68, 0x79, - 0xc5, 0x3c, 0x5a, 0x4e, 0xe7, 0xce, 0x67, 0xce, 0xb1, 0xf2, 0x19, 0x18, 0xd6, 0xa6, 0x1b, 0xcd, - 0x41, 0xa9, 0x2e, 0xed, 0x1a, 0x04, 0xd7, 0x55, 0xe2, 0x8b, 0x32, 0x78, 0xc0, 0x09, 0x0e, 0x1d, - 0x0d, 0x2a, 0xec, 0xa5, 0xad, 0xa6, 0xa8, 0x28, 0x88, 0x19, 0xc4, 0x7e, 0x0e, 0x60, 0xe9, 0x2e, - 0xa9, 0xcf, 0xf3, 0x8b, 0x97, 0xf6, 0x7c, 0x66, 0xe5, 0x3f, 0x9f, 0xd9, 0xff, 0xc9, 0x82, 0xb1, - 0xe5, 0x45, 0x43, 0x20, 0x9f, 0x05, 0xe0, 0x52, 0xe8, 0xed, 0xdb, 0xd7, 0xa5, 0x66, 0x98, 0x2b, - 0xf7, 0x54, 0x29, 0xd6, 0x30, 0xd0, 0x69, 0x28, 0x7a, 0x2d, 0x5f, 0x08, 0x87, 0x83, 0xf7, 0xf6, - 0x67, 0x8a, 0xd7, 0x5a, 0x3e, 0xa6, 0x65, 0x9a, 0xa1, 0x52, 0xb1, 0x67, 0x43, 0xa5, 0xae, 0xf6, - 0xe8, 0x68, 0x06, 0xfa, 0xef, 0xdc, 0x71, 0x1b, 0x51, 0xb9, 0x3f, 0xd1, 0x5a, 0xdf, 0xbe, 0xbd, - 0x52, 0x89, 0x30, 0x2f, 0xb7, 0xff, 0x4a, 0x11, 0x26, 0x96, 0x3d, 0x72, 0xf7, 0xbe, 0xec, 0x1d, - 0x7b, 0x35, 0xae, 0xba, 0xd9, 0x7e, 0x1e, 0x1f, 0xb5, 0x39, 0x59, 0xf7, 0xa1, 0x78, 0x13, 0x06, - 0xf9, 0x2b, 0x2c, 0x1f, 0x8c, 0xe1, 0x8b, 0xcf, 0x66, 0x75, 0x21, 0x3d, 0x16, 0xb3, 0x42, 0xf1, - 0xc1, 0x4d, 0x52, 0x14, 0x13, 0x13, 0xa5, 0x58, 0x92, 0x9c, 0xfe, 0x24, 0x8c, 0xe8, 0x98, 0x87, - 0xb2, 0x4d, 0xf9, 0xab, 0x16, 0x9c, 0x58, 0xf6, 0x82, 0xfa, 0x76, 0xca, 0xd2, 0xed, 0x05, 0x18, - 0xa6, 0xfb, 0x29, 0x32, 0x6c, 0x7c, 0x0d, 0xab, 0x6f, 0x01, 0xc2, 0x3a, 0x9e, 0x56, 0xed, 0xe6, - 0xcd, 0x95, 0x4a, 0x96, 0xb1, 0xb8, 0x00, 0x61, 0x1d, 0xcf, 0xfe, 0xb6, 0x05, 0x67, 0x2e, 0x2f, - 0x2e, 0x25, 0xc6, 0x9e, 0x6d, 0xf6, 0xea, 0x54, 0xb8, 0x6b, 0x68, 0x5d, 0x49, 0x84, 0xbb, 0x0a, - 0xeb, 0x85, 0x80, 0x7e, 0x58, 0x7c, 0x31, 0x7e, 0xc3, 0x82, 0x13, 0x97, 0xdd, 0x18, 0x93, 0x66, - 0x90, 0xb6, 0x9c, 0x0e, 0x49, 0x33, 0x88, 0xdc, 0x38, 0x08, 0xf7, 0xd2, 0x96, 0xd3, 0x58, 0x41, - 0xb0, 0x86, 0xc5, 0x5b, 0xde, 0x75, 0x23, 0xda, 0xd3, 0x82, 0x79, 0xc3, 0xc4, 0xa2, 0x1c, 0x2b, - 0x0c, 0xfa, 0x61, 0x0d, 0x37, 0x64, 0x12, 0xc2, 0x9e, 0xd8, 0xce, 0xea, 0xc3, 0x2a, 0x12, 0x80, - 0x13, 0x1c, 0xfb, 0x57, 0x2c, 0x38, 0x79, 0xd9, 0x6b, 0x45, 0x31, 0x09, 0x37, 0x22, 0xa3, 0xb3, - 0xcf, 0x41, 0x89, 0x48, 0x29, 0x5c, 0xf4, 0x55, 0x9d, 0x1b, 0x4a, 0x3c, 0xe7, 0x66, 0xdb, 0x0a, - 0xaf, 0x07, 0xb3, 0xd1, 0xc3, 0x99, 0x3b, 0x7e, 0xad, 0x00, 0xa3, 0x57, 0xd6, 0xd6, 0xaa, 0x97, - 0x49, 0x2c, 0x58, 0x66, 0x77, 0x0d, 0x12, 0xd6, 0x2e, 0xc2, 0x9d, 0x64, 0x9d, 0x56, 0xec, 0x7a, - 0xb3, 0xdc, 0x4f, 0x68, 0x76, 0xc5, 0x8f, 0x6f, 0x84, 0xb5, 0x38, 0x74, 0xfd, 0xcd, 0xcc, 0xab, - 0xb3, 0x64, 0xec, 0xc5, 0x3c, 0xc6, 0x8e, 0x9e, 0x83, 0x01, 0xe6, 0xa8, 0x24, 0xa5, 0x8e, 0x87, - 0x95, 0xa8, 0xc0, 0x4a, 0x0f, 0xf6, 0x67, 0x4a, 0x37, 0xf1, 0x0a, 0xff, 0x83, 0x05, 0x2a, 0xba, - 0x09, 0xc3, 0x5b, 0x71, 0xdc, 0xbc, 0x42, 0x9c, 0x06, 0x09, 0x25, 0x77, 0x38, 0x9b, 0xc5, 0x1d, - 0xe8, 0x20, 0x70, 0xb4, 0x64, 0x43, 0x25, 0x65, 0x11, 0xd6, 0xe9, 0xd8, 0x35, 0x80, 0x04, 0x76, - 0x44, 0xd7, 0x06, 0xfb, 0x07, 0x16, 0x0c, 0x72, 0x9b, 0xf1, 0x10, 0xbd, 0x0c, 0x7d, 0xe4, 0x2e, - 0xa9, 0x8b, 0x13, 0x3c, 0xb3, 0xc3, 0xc9, 0x29, 0xc7, 0x95, 0x60, 0xf4, 0x3f, 0x66, 0xb5, 0xd0, - 0x15, 0x18, 0xa4, 0xbd, 0xbd, 0xac, 0x0c, 0xe8, 0x1f, 0xcd, 0xfb, 0x62, 0x35, 0xed, 0xfc, 0x60, - 0x14, 0x45, 0x58, 0x56, 0x67, 0x0a, 0x9d, 0x7a, 0xb3, 0x46, 0x19, 0x58, 0xdc, 0xe9, 0xba, 0xb5, - 0xb6, 0x58, 0xe5, 0x48, 0x82, 0x1a, 0x57, 0xe8, 0xc8, 0x42, 0x9c, 0x10, 0xb1, 0xd7, 0xa0, 0x44, - 0x27, 0x75, 0xde, 0x73, 0x9d, 0xce, 0xba, 0xa4, 0xa7, 0xa0, 0x24, 0xf5, 0x3a, 0x91, 0xb0, 0x6a, - 0x67, 0x54, 0xa5, 0xda, 0x27, 0xc2, 0x09, 0xdc, 0xde, 0x80, 0x29, 0xf6, 0x48, 0xea, 0xc4, 0x5b, - 0xc6, 0x1e, 0xeb, 0xbe, 0x98, 0x9f, 0x16, 0xf2, 0x15, 0x9f, 0x99, 0xb2, 0x66, 0x86, 0x3b, 0x22, - 0x29, 0x6a, 0xb2, 0xd6, 0x9f, 0xf6, 0xc1, 0xc3, 0x2b, 0xb5, 0x7c, 0x77, 0x82, 0x4b, 0x30, 0xc2, - 0x65, 0x02, 0xba, 0xb4, 0x1d, 0x4f, 0xb4, 0xab, 0x9e, 0x10, 0xd6, 0x34, 0x18, 0x36, 0x30, 0xd1, - 0x19, 0x28, 0xba, 0xef, 0xf8, 0x69, 0x9b, 0xbb, 0x95, 0xd7, 0xae, 0x63, 0x5a, 0x4e, 0xc1, 0x54, - 0xbc, 0xe0, 0xac, 0x54, 0x81, 0x95, 0x88, 0xf1, 0x0a, 0x8c, 0xb9, 0x51, 0x3d, 0x72, 0x57, 0x7c, - 0xca, 0x67, 0x12, 0x57, 0x94, 0x44, 0xf6, 0xa7, 0x9d, 0x56, 0x50, 0x9c, 0xc2, 0xd6, 0xf8, 0x7a, - 0x7f, 0xcf, 0x22, 0x4a, 0x57, 0x33, 0x6f, 0x2a, 0x7d, 0x35, 0xd9, 0xd7, 0x45, 0xcc, 0xfe, 0x47, - 0x48, 0x5f, 0xfc, 0x83, 0x23, 0x2c, 0x61, 0xe8, 0x32, 0x4c, 0xd6, 0xb7, 0x9c, 0xe6, 0x7c, 0x2b, - 0xde, 0xaa, 0xb8, 0x51, 0x3d, 0xd8, 0x25, 0xe1, 0x1e, 0x93, 0x89, 0x87, 0x12, 0x75, 0x93, 0x02, - 0x2c, 0x5e, 0x99, 0xaf, 0x52, 0x4c, 0xdc, 0x5e, 0xc7, 0x54, 0x0e, 0xc0, 0x51, 0x38, 0x05, 0xcc, - 0xc3, 0xb8, 0x6c, 0xa6, 0x46, 0x22, 0x76, 0x46, 0x0c, 0xb3, 0x8e, 0x29, 0x27, 0x31, 0x51, 0xac, - 0xba, 0x95, 0xc6, 0x47, 0x2f, 0xc2, 0xa8, 0xeb, 0xbb, 0xb1, 0xeb, 0xc4, 0x41, 0xc8, 0x4e, 0xd8, - 0x11, 0x7e, 0x6a, 0x50, 0x36, 0xbf, 0xa2, 0x03, 0xb0, 0x89, 0x67, 0xff, 0x49, 0x1f, 0x4c, 0xb2, - 0x69, 0xfb, 0xc9, 0x0a, 0xfb, 0xd0, 0xac, 0xb0, 0x9b, 0xed, 0x2b, 0xec, 0x28, 0xc4, 0xdd, 0x0f, - 0x72, 0x99, 0xbd, 0x0d, 0x25, 0x65, 0x36, 0x29, 0x2d, 0x7f, 0xad, 0x1c, 0xcb, 0xdf, 0xee, 0xd2, - 0x87, 0x7c, 0x9d, 0x29, 0x66, 0xbe, 0xce, 0xfc, 0x3d, 0x0b, 0x12, 0xeb, 0x31, 0x74, 0x05, 0x4a, - 0xcd, 0x80, 0xbd, 0xd0, 0x86, 0xd2, 0xec, 0xe1, 0xe1, 0xcc, 0x83, 0x8a, 0x1f, 0x8a, 0x7c, 0xfc, - 0xaa, 0xb2, 0x06, 0x4e, 0x2a, 0xa3, 0x05, 0x18, 0x6c, 0x86, 0xa4, 0x16, 0x33, 0xff, 0xa7, 0xae, - 0x74, 0xf8, 0x1a, 0xe1, 0xf8, 0x58, 0x56, 0xb4, 0x7f, 0xcb, 0x02, 0xe0, 0x0f, 0x20, 0x8e, 0xbf, - 0x49, 0x8e, 0x41, 0xa9, 0x53, 0x81, 0xbe, 0xa8, 0x49, 0xea, 0x9d, 0xde, 0xce, 0x93, 0xfe, 0xd4, - 0x9a, 0xa4, 0x9e, 0x0c, 0x38, 0xfd, 0x87, 0x59, 0x6d, 0xfb, 0x17, 0x00, 0xc6, 0x12, 0x34, 0x7a, - 0xd9, 0x46, 0xcf, 0x18, 0xde, 0x25, 0xa7, 0x53, 0xde, 0x25, 0x25, 0x86, 0xad, 0x39, 0x94, 0xbc, - 0x0d, 0xc5, 0x1d, 0xe7, 0xae, 0xb8, 0xd1, 0x3f, 0xd5, 0xb9, 0x1b, 0x94, 0xfe, 0xec, 0xaa, 0x73, - 0x97, 0xdf, 0x99, 0x9e, 0x92, 0x0b, 0x64, 0xd5, 0xb9, 0x7b, 0xc0, 0x5f, 0xc8, 0x19, 0x93, 0xba, - 0xe6, 0x46, 0xf1, 0x7b, 0xff, 0x25, 0xf9, 0xcf, 0x96, 0x1d, 0x6d, 0x84, 0xb5, 0xe5, 0xfa, 0xe2, - 0x39, 0xa0, 0xa7, 0xb6, 0x5c, 0x3f, 0xdd, 0x96, 0xeb, 0xf7, 0xd0, 0x96, 0xeb, 0xa3, 0x77, 0x61, - 0x50, 0x3c, 0xbd, 0x31, 0xb3, 0xd8, 0xe1, 0x8b, 0x73, 0x3d, 0xb4, 0x27, 0x5e, 0xee, 0x78, 0x9b, - 0x73, 0xf2, 0x4e, 0x28, 0x4a, 0xbb, 0xb6, 0x2b, 0x1b, 0x44, 0x7f, 0xc7, 0x82, 0x31, 0xf1, 0x1b, - 0x93, 0x77, 0x5a, 0x24, 0x8a, 0x85, 0xec, 0xf9, 0x89, 0xde, 0xfb, 0x20, 0x2a, 0xf2, 0xae, 0x7c, - 0x42, 0xb2, 0x59, 0x13, 0xd8, 0xb5, 0x47, 0xa9, 0x5e, 0xa0, 0x7f, 0x66, 0xc1, 0xd4, 0x8e, 0x73, - 0x97, 0xb7, 0xc8, 0xcb, 0xb0, 0x13, 0xbb, 0x81, 0x30, 0xf3, 0x7d, 0xb9, 0xb7, 0xe9, 0x6f, 0xab, - 0xce, 0x3b, 0x29, 0x2d, 0x02, 0xa7, 0xb2, 0x50, 0xba, 0x76, 0x35, 0xb3, 0x5f, 0xd3, 0x1b, 0x30, - 0x24, 0xd7, 0x5b, 0xc6, 0xcd, 0xbb, 0xa2, 0x0b, 0xd6, 0x87, 0x7e, 0xf9, 0xd4, 0x6e, 0xea, 0xac, - 0x1d, 0xb1, 0xd6, 0x1e, 0x68, 0x3b, 0x6f, 0xc3, 0x88, 0xbe, 0xc6, 0x1e, 0x68, 0x5b, 0xef, 0xc0, - 0x89, 0x8c, 0xb5, 0xf4, 0x40, 0x9b, 0xbc, 0x03, 0xa7, 0x73, 0xd7, 0xc7, 0x83, 0x6c, 0xd8, 0xfe, - 0x9a, 0xa5, 0xf3, 0xc1, 0x63, 0x50, 0x85, 0x2e, 0x9a, 0xaa, 0xd0, 0xb3, 0x9d, 0x77, 0x4e, 0x8e, - 0x3e, 0xf4, 0x4d, 0xbd, 0xd3, 0x94, 0xab, 0xa3, 0x57, 0x61, 0xc0, 0xa3, 0x25, 0xf2, 0xcd, 0xd7, - 0xee, 0xbe, 0x23, 0x13, 0x59, 0x8a, 0x95, 0x47, 0x58, 0x50, 0xb0, 0x7f, 0xc7, 0x82, 0xbe, 0x63, - 0x18, 0x09, 0x6c, 0x8e, 0xc4, 0x33, 0xb9, 0xa4, 0x45, 0xc0, 0x91, 0x59, 0xec, 0xdc, 0x59, 0x92, - 0x41, 0x55, 0x72, 0x06, 0xe6, 0xff, 0x16, 0x60, 0x98, 0x36, 0x25, 0x8d, 0x93, 0x5e, 0x82, 0x51, - 0xcf, 0x59, 0x27, 0x9e, 0x7c, 0x9e, 0x49, 0x2b, 0x4c, 0xae, 0xe9, 0x40, 0x6c, 0xe2, 0xd2, 0xca, - 0x1b, 0xfa, 0x4b, 0x95, 0x90, 0x5f, 0x54, 0x65, 0xe3, 0x19, 0x0b, 0x9b, 0xb8, 0xf4, 0xee, 0x7e, - 0xc7, 0x89, 0xeb, 0x5b, 0x42, 0x99, 0xa2, 0xba, 0x7b, 0x9b, 0x16, 0x62, 0x0e, 0xa3, 0x02, 0x9c, - 0x5c, 0x9d, 0xb7, 0xe8, 0xcd, 0x30, 0xf0, 0x85, 0x78, 0xac, 0x04, 0x38, 0x6c, 0x82, 0x71, 0x1a, - 0x3f, 0xc3, 0xcd, 0xb4, 0x9f, 0x99, 0x5e, 0xf5, 0xe0, 0x66, 0x8a, 0xaa, 0x30, 0xe5, 0xfa, 0x75, - 0xaf, 0xd5, 0x20, 0x37, 0x7d, 0x2e, 0xdd, 0x79, 0xee, 0xbb, 0xa4, 0x21, 0x04, 0x68, 0x65, 0x25, - 0xb7, 0x92, 0x81, 0x83, 0x33, 0x6b, 0xda, 0x7f, 0x09, 0x4e, 0x5c, 0x0b, 0x9c, 0xc6, 0x82, 0xe3, - 0x39, 0x7e, 0x9d, 0x84, 0x2b, 0xfe, 0x66, 0x57, 0xe3, 0x0f, 0xdd, 0x54, 0xa3, 0xd0, 0xcd, 0x54, - 0xc3, 0xde, 0x02, 0xa4, 0x37, 0x20, 0x4c, 0x0e, 0x31, 0x0c, 0xba, 0xbc, 0x29, 0xb1, 0xfc, 0x1f, - 0xcf, 0x96, 0xae, 0xdb, 0x7a, 0xa6, 0x19, 0xd3, 0xf1, 0x02, 0x2c, 0x09, 0xd9, 0x97, 0x20, 0xd3, - 0xcd, 0xa8, 0xbb, 0xda, 0xc6, 0x7e, 0x01, 0x26, 0x59, 0xcd, 0xc3, 0xa9, 0x14, 0xec, 0xbf, 0x61, - 0xc1, 0xf8, 0xf5, 0x94, 0x63, 0xf8, 0x79, 0x18, 0xe0, 0xa1, 0x85, 0xd2, 0x0a, 0xd6, 0x1a, 0x2b, - 0xc5, 0x02, 0x7a, 0xe4, 0xfa, 0xbd, 0x1f, 0x5a, 0x50, 0x52, 0x31, 0x27, 0x8e, 0x41, 0xa8, 0x5d, - 0x34, 0x84, 0xda, 0x4c, 0xbd, 0x93, 0xea, 0x4e, 0x9e, 0x4c, 0x8b, 0xae, 0x2a, 0x17, 0xe7, 0x0e, - 0x2a, 0xa7, 0x84, 0x0c, 0x77, 0x88, 0x1d, 0x33, 0xfd, 0xa0, 0xa5, 0xd3, 0x33, 0xb3, 0xbe, 0x50, - 0xb8, 0x1f, 0x12, 0xeb, 0x0b, 0xd5, 0x9f, 0x1c, 0xee, 0x57, 0xd5, 0xba, 0xcc, 0x4e, 0x85, 0x9f, - 0x66, 0x16, 0xca, 0x6c, 0x6f, 0xaa, 0xc8, 0x02, 0x33, 0xc2, 0xe2, 0x58, 0x94, 0x1e, 0x30, 0x46, - 0x26, 0xfe, 0xf1, 0xf8, 0x20, 0x49, 0x15, 0xfb, 0x0a, 0x8c, 0xa7, 0x06, 0x0c, 0xbd, 0x00, 0xfd, - 0xcd, 0x2d, 0x27, 0x22, 0x29, 0x8b, 0xb3, 0xfe, 0x2a, 0x2d, 0x3c, 0xd8, 0x9f, 0x19, 0x53, 0x15, - 0x58, 0x09, 0xe6, 0xd8, 0xf6, 0xff, 0xb4, 0xa0, 0xef, 0x7a, 0xd0, 0x38, 0x8e, 0xc5, 0xf4, 0x8a, - 0xb1, 0x98, 0x1e, 0xc9, 0x8b, 0xae, 0x94, 0xbb, 0x8e, 0x96, 0x53, 0xeb, 0xe8, 0x6c, 0x2e, 0x85, - 0xce, 0x4b, 0x68, 0x07, 0x86, 0x59, 0xcc, 0x26, 0x61, 0x01, 0xf7, 0x9c, 0x71, 0xbf, 0x9a, 0x49, - 0xdd, 0xaf, 0xc6, 0x35, 0x54, 0xed, 0x96, 0xf5, 0x04, 0x0c, 0x0a, 0x2b, 0xac, 0xb4, 0x2d, 0xb6, - 0xc0, 0xc5, 0x12, 0x6e, 0xff, 0x6a, 0x11, 0x8c, 0x18, 0x51, 0xe8, 0x77, 0x2d, 0x98, 0x0d, 0xb9, - 0x73, 0x5b, 0xa3, 0xd2, 0x0a, 0x5d, 0x7f, 0xb3, 0x56, 0xdf, 0x22, 0x8d, 0x96, 0xe7, 0xfa, 0x9b, - 0x2b, 0x9b, 0x7e, 0xa0, 0x8a, 0x97, 0xee, 0x92, 0x7a, 0x8b, 0xbd, 0xb9, 0x74, 0x09, 0x48, 0xa5, - 0xac, 0x1c, 0x2e, 0xde, 0xdb, 0x9f, 0x99, 0xc5, 0x87, 0xa2, 0x8d, 0x0f, 0xd9, 0x17, 0xf4, 0x6d, - 0x0b, 0xe6, 0x78, 0xe8, 0xa4, 0xde, 0xfb, 0xdf, 0xe1, 0x36, 0x5a, 0x95, 0xa4, 0x12, 0x22, 0x6b, - 0x24, 0xdc, 0x59, 0x78, 0x51, 0x0c, 0xe8, 0x5c, 0xf5, 0x70, 0x6d, 0xe1, 0xc3, 0x76, 0xce, 0xfe, - 0xb7, 0x45, 0x18, 0xa5, 0xa3, 0x98, 0x04, 0x74, 0x78, 0xc1, 0x58, 0x12, 0x8f, 0xa6, 0x96, 0xc4, - 0xa4, 0x81, 0x7c, 0x34, 0xb1, 0x1c, 0x22, 0x98, 0xf4, 0x9c, 0x28, 0xbe, 0x42, 0x9c, 0x30, 0x5e, - 0x27, 0x0e, 0x33, 0x2b, 0x10, 0xcb, 0xfc, 0x30, 0x96, 0x0a, 0x4a, 0xfd, 0x75, 0x2d, 0x4d, 0x0c, - 0xb7, 0xd3, 0x47, 0xbb, 0x80, 0x98, 0x09, 0x43, 0xe8, 0xf8, 0x11, 0xff, 0x16, 0x57, 0xbc, 0xc7, - 0x1c, 0xae, 0xd5, 0x69, 0xd1, 0x2a, 0xba, 0xd6, 0x46, 0x0d, 0x67, 0xb4, 0xa0, 0x99, 0xa6, 0xf4, - 0xf7, 0x6a, 0x9a, 0x32, 0xd0, 0xc5, 0xe1, 0x61, 0x07, 0x26, 0xc4, 0xac, 0x6c, 0xb8, 0x9b, 0xe2, - 0x90, 0x7e, 0x3d, 0x65, 0xba, 0x66, 0xf5, 0x6e, 0x64, 0xd3, 0xc5, 0x6e, 0xcd, 0xfe, 0x79, 0x38, - 0x41, 0x9b, 0x33, 0xcd, 0xf3, 0x23, 0x44, 0x60, 0x7c, 0xbb, 0xb5, 0x4e, 0x3c, 0x12, 0xcb, 0x32, - 0xd1, 0x68, 0xa6, 0xd8, 0x6f, 0xd6, 0x4e, 0x64, 0xcb, 0xab, 0x26, 0x09, 0x9c, 0xa6, 0x69, 0xff, - 0xba, 0x05, 0xcc, 0x08, 0xf6, 0x18, 0x8e, 0xbf, 0x4f, 0x99, 0xc7, 0x5f, 0x39, 0x8f, 0x03, 0xe5, - 0x9c, 0x7c, 0xcf, 0xf3, 0x69, 0xa9, 0x86, 0xc1, 0xdd, 0x3d, 0x29, 0xfb, 0x77, 0x97, 0xb8, 0xfe, - 0x8f, 0xc5, 0x37, 0xa4, 0xf2, 0xf5, 0x45, 0x9f, 0x85, 0xa1, 0xba, 0xd3, 0x74, 0xea, 0x3c, 0x38, - 0x5f, 0xae, 0xf6, 0xc7, 0xa8, 0x34, 0xbb, 0x28, 0x6a, 0x70, 0x6d, 0xc6, 0xc7, 0xe5, 0x57, 0xca, - 0xe2, 0xae, 0x1a, 0x0c, 0xd5, 0xe4, 0xf4, 0x36, 0x8c, 0x1a, 0xc4, 0x1e, 0xe8, 0xd5, 0xf7, 0xb3, - 0xfc, 0xb8, 0x50, 0x37, 0x96, 0x1d, 0x98, 0xf4, 0xb5, 0xff, 0x94, 0x39, 0x4a, 0x71, 0xfa, 0xa3, - 0xdd, 0x0e, 0x04, 0xc6, 0x49, 0x35, 0x23, 0xdf, 0x14, 0x19, 0xdc, 0x4e, 0xd9, 0xfe, 0x07, 0x16, - 0x3c, 0xa4, 0x23, 0x6a, 0x6e, 0xd8, 0xdd, 0xf4, 0xc9, 0x15, 0x18, 0x0a, 0x9a, 0x24, 0x74, 0x92, - 0x3b, 0xd9, 0x05, 0x39, 0xe8, 0x37, 0x44, 0xf9, 0xc1, 0xfe, 0xcc, 0x94, 0x4e, 0x5d, 0x96, 0x63, - 0x55, 0x13, 0xd9, 0x30, 0xc0, 0x06, 0x23, 0x12, 0x2e, 0xf2, 0x2c, 0x80, 0x1d, 0x7b, 0x5a, 0x8d, - 0xb0, 0x80, 0xd8, 0xbf, 0x60, 0xf1, 0x85, 0xa5, 0x77, 0x1d, 0xbd, 0x03, 0x13, 0x3b, 0xf4, 0xfa, - 0xb6, 0x74, 0xb7, 0x19, 0x72, 0x35, 0xba, 0x1c, 0xa7, 0xa7, 0xba, 0x8d, 0x93, 0xf6, 0x91, 0x0b, - 0x65, 0xd1, 0xe7, 0x89, 0xd5, 0x14, 0x31, 0xdc, 0x46, 0xde, 0xfe, 0xf3, 0x02, 0xdf, 0x89, 0x4c, - 0xaa, 0x7b, 0x02, 0x06, 0x9b, 0x41, 0x63, 0x71, 0xa5, 0x82, 0xc5, 0x08, 0x29, 0x76, 0x55, 0xe5, - 0xc5, 0x58, 0xc2, 0xd1, 0x45, 0x00, 0x72, 0x37, 0x26, 0xa1, 0xef, 0x78, 0xca, 0xf0, 0x43, 0x09, - 0x4f, 0x4b, 0x0a, 0x82, 0x35, 0x2c, 0x5a, 0xa7, 0x19, 0x06, 0xbb, 0x6e, 0x83, 0x39, 0x11, 0x15, - 0xcd, 0x3a, 0x55, 0x05, 0xc1, 0x1a, 0x16, 0xbd, 0x2a, 0xb7, 0xfc, 0x88, 0x1f, 0x80, 0xce, 0xba, - 0x88, 0x2a, 0x35, 0x94, 0x5c, 0x95, 0x6f, 0xea, 0x40, 0x6c, 0xe2, 0xa2, 0x79, 0x18, 0x88, 0x1d, - 0x66, 0xce, 0xd0, 0x9f, 0x6f, 0x1e, 0xb6, 0x46, 0x31, 0xf4, 0x68, 0x6d, 0xb4, 0x02, 0x16, 0x15, - 0xd1, 0x1b, 0x92, 0x05, 0x73, 0x96, 0x2c, 0xcc, 0xfc, 0x72, 0x97, 0xad, 0xce, 0xbe, 0x75, 0x1e, - 0x2c, 0xcc, 0x07, 0x0d, 0x5a, 0xf6, 0xe7, 0x4a, 0x00, 0x89, 0xb4, 0x87, 0xde, 0x6d, 0x63, 0x11, - 0x4f, 0x77, 0x96, 0x0f, 0x8f, 0x8e, 0x3f, 0xa0, 0xcf, 0x5b, 0x30, 0xec, 0x78, 0x5e, 0x50, 0x77, - 0x62, 0x36, 0xca, 0x85, 0xce, 0x2c, 0x4a, 0xb4, 0x3f, 0x9f, 0xd4, 0xe0, 0x5d, 0x78, 0x4e, 0x5a, - 0x2a, 0x68, 0x90, 0xae, 0xbd, 0xd0, 0x1b, 0x46, 0x1f, 0x97, 0x97, 0x00, 0xbe, 0x3c, 0xa6, 0xd3, - 0x97, 0x80, 0x12, 0xe3, 0xc6, 0x9a, 0xfc, 0x8f, 0x6e, 0x1a, 0xe1, 0x97, 0xfa, 0xf2, 0x3d, 0xcd, - 0x0d, 0xa1, 0xa7, 0x5b, 0xe4, 0x25, 0x54, 0xd5, 0xdd, 0x1d, 0xfa, 0xf3, 0xc3, 0x31, 0x68, 0xd2, - 0x75, 0x17, 0x57, 0x87, 0xb7, 0x61, 0xbc, 0x61, 0x1e, 0xb7, 0x62, 0x35, 0x3d, 0x9e, 0x47, 0x37, - 0x75, 0x3a, 0x27, 0x07, 0x6c, 0x0a, 0x80, 0xd3, 0x84, 0x51, 0x95, 0x3b, 0x9e, 0xac, 0xf8, 0x1b, - 0x81, 0x30, 0x17, 0xb5, 0x73, 0xe7, 0x72, 0x2f, 0x8a, 0xc9, 0x0e, 0xc5, 0x4c, 0xce, 0xd1, 0xeb, - 0xa2, 0x2e, 0x56, 0x54, 0xd0, 0xab, 0x30, 0xc0, 0xbc, 0x01, 0xa3, 0xf2, 0x50, 0xbe, 0x1e, 0xd0, - 0x74, 0x64, 0x4f, 0x36, 0x15, 0xfb, 0x1b, 0x61, 0x41, 0x01, 0x5d, 0x91, 0xd1, 0x2e, 0xa2, 0x15, - 0xff, 0x66, 0x44, 0x58, 0xb4, 0x8b, 0xd2, 0xc2, 0x47, 0x93, 0x40, 0x16, 0xbc, 0x3c, 0x33, 0x2e, - 0xab, 0x51, 0x93, 0xca, 0x2b, 0xe2, 0xbf, 0x0c, 0xf7, 0x5a, 0x86, 0xfc, 0xee, 0x99, 0x21, 0x61, - 0x93, 0xe1, 0xbc, 0x65, 0x92, 0xc0, 0x69, 0x9a, 0xc7, 0x7a, 0x7c, 0x4e, 0xfb, 0x30, 0x91, 0xde, - 0x58, 0x0f, 0xf4, 0xb8, 0xfe, 0x41, 0x1f, 0x8c, 0x99, 0x0b, 0x01, 0xcd, 0x41, 0x49, 0x10, 0x51, - 0x91, 0xef, 0xd4, 0xda, 0x5e, 0x95, 0x00, 0x9c, 0xe0, 0xb0, 0xc8, 0x7f, 0xac, 0xba, 0x66, 0x07, - 0x98, 0x44, 0xfe, 0x53, 0x10, 0xac, 0x61, 0x51, 0x21, 0x7a, 0x3d, 0x08, 0x62, 0x75, 0x14, 0xa8, - 0xd5, 0xb2, 0xc0, 0x4a, 0xb1, 0x80, 0xd2, 0x23, 0x60, 0x9b, 0x84, 0x3e, 0xf1, 0x4c, 0x4d, 0xa6, - 0x3a, 0x02, 0xae, 0xea, 0x40, 0x6c, 0xe2, 0xd2, 0x23, 0x2d, 0x88, 0xd8, 0xf2, 0x13, 0xa2, 0x7a, - 0x62, 0x57, 0x59, 0xe3, 0xde, 0xb0, 0x12, 0x8e, 0x5e, 0x87, 0x87, 0x94, 0xf3, 0x2a, 0xe6, 0x9a, - 0x61, 0xd9, 0xe2, 0x80, 0x71, 0xb3, 0x7e, 0x68, 0x31, 0x1b, 0x0d, 0xe7, 0xd5, 0x47, 0xaf, 0xc0, - 0x98, 0x10, 0x81, 0x25, 0xc5, 0x41, 0xd3, 0x58, 0xe1, 0xaa, 0x01, 0xc5, 0x29, 0x6c, 0x54, 0x81, - 0x09, 0x5a, 0xc2, 0xa4, 0x50, 0x49, 0x81, 0x3b, 0xe1, 0xaa, 0xb3, 0xfe, 0x6a, 0x0a, 0x8e, 0xdb, - 0x6a, 0xa0, 0x79, 0x18, 0xe7, 0x32, 0x0a, 0xbd, 0x53, 0xb2, 0x79, 0x10, 0x56, 0xdc, 0x6a, 0x23, - 0xdc, 0x30, 0xc1, 0x38, 0x8d, 0x8f, 0x2e, 0xc1, 0x88, 0x13, 0xd6, 0xb7, 0xdc, 0x98, 0xd4, 0xe3, - 0x56, 0xc8, 0x63, 0xc9, 0x68, 0xd6, 0x1e, 0xf3, 0x1a, 0x0c, 0x1b, 0x98, 0xf6, 0xbb, 0x70, 0x22, - 0xc3, 0x01, 0x84, 0x2e, 0x1c, 0xa7, 0xe9, 0xca, 0x6f, 0x4a, 0x59, 0x48, 0xce, 0x57, 0x57, 0xe4, - 0xd7, 0x68, 0x58, 0x74, 0x75, 0x32, 0x95, 0xb8, 0x16, 0x93, 0x59, 0xad, 0xce, 0x65, 0x09, 0xc0, - 0x09, 0x8e, 0xfd, 0x07, 0x00, 0x9a, 0x42, 0xa7, 0x07, 0xfb, 0xb8, 0x4b, 0x30, 0x22, 0x03, 0x89, - 0x6b, 0x01, 0x6c, 0xd5, 0x67, 0x5e, 0xd6, 0x60, 0xd8, 0xc0, 0xa4, 0x7d, 0xf3, 0x55, 0xf8, 0xdd, - 0x94, 0x3d, 0x66, 0x12, 0x7c, 0x37, 0xc1, 0x41, 0x4f, 0xc3, 0x50, 0x44, 0xbc, 0x8d, 0x6b, 0xae, - 0xbf, 0x2d, 0x16, 0xb6, 0xe2, 0xc2, 0x35, 0x51, 0x8e, 0x15, 0x06, 0x5a, 0x80, 0x62, 0xcb, 0x6d, - 0x88, 0xa5, 0x2c, 0x0f, 0xfc, 0xe2, 0xcd, 0x95, 0xca, 0xc1, 0xfe, 0xcc, 0xa3, 0x79, 0xf1, 0xd1, - 0xe9, 0xd5, 0x3e, 0x9a, 0xa5, 0xdb, 0x8f, 0x56, 0xce, 0x7a, 0x1b, 0x18, 0x38, 0xe4, 0xdb, 0xc0, - 0x45, 0x00, 0xf1, 0xd5, 0x72, 0x2d, 0x17, 0x93, 0x59, 0xbb, 0xac, 0x20, 0x58, 0xc3, 0x42, 0x11, - 0x4c, 0xd6, 0x43, 0xe2, 0xc8, 0x3b, 0x34, 0x77, 0x65, 0x18, 0xba, 0x7f, 0x05, 0xc1, 0x62, 0x9a, - 0x18, 0x6e, 0xa7, 0x8f, 0x02, 0x98, 0x6c, 0x08, 0x5f, 0xe9, 0xa4, 0xd1, 0xd2, 0xe1, 0xfd, 0x27, - 0x98, 0x41, 0x4e, 0x9a, 0x10, 0x6e, 0xa7, 0x8d, 0xde, 0x82, 0x69, 0x59, 0xd8, 0xee, 0x9e, 0xce, - 0xb6, 0x4b, 0x71, 0xe1, 0xec, 0xbd, 0xfd, 0x99, 0xe9, 0x4a, 0x2e, 0x16, 0xee, 0x40, 0x01, 0x61, - 0x18, 0x60, 0x6f, 0x49, 0x51, 0x79, 0x98, 0x9d, 0x73, 0x4f, 0xe6, 0x2b, 0x03, 0xe8, 0x5a, 0x9f, - 0x65, 0xef, 0x50, 0xc2, 0xa4, 0x3c, 0x79, 0x96, 0x63, 0x85, 0x58, 0x50, 0x42, 0x1b, 0x30, 0xec, - 0xf8, 0x7e, 0x10, 0x3b, 0x5c, 0x84, 0x1a, 0xc9, 0x97, 0xfd, 0x34, 0xc2, 0xf3, 0x49, 0x0d, 0x4e, - 0x5d, 0x59, 0xa9, 0x6a, 0x10, 0xac, 0x13, 0x46, 0x77, 0x60, 0x3c, 0xb8, 0x43, 0x99, 0xa3, 0xd4, - 0x52, 0x44, 0xe5, 0x51, 0xd6, 0xd6, 0xf3, 0x3d, 0xea, 0x69, 0x8d, 0xca, 0x1a, 0xd7, 0x32, 0x89, - 0xe2, 0x74, 0x2b, 0x68, 0xd6, 0xd0, 0x56, 0x8f, 0x25, 0xbe, 0x13, 0x89, 0xb6, 0x5a, 0x57, 0x4e, - 0xb3, 0x70, 0x07, 0xdc, 0x44, 0x9a, 0xed, 0xfe, 0xf1, 0x54, 0xb8, 0x83, 0x04, 0x84, 0x75, 0x3c, - 0xb4, 0x05, 0x23, 0xc9, 0x93, 0x55, 0x18, 0xb1, 0x60, 0x4b, 0xc3, 0x17, 0x2f, 0xf6, 0xf6, 0x71, - 0x2b, 0x5a, 0x4d, 0x7e, 0x73, 0xd0, 0x4b, 0xb0, 0x41, 0x79, 0xfa, 0xa7, 0x60, 0x58, 0x9b, 0xd8, - 0xc3, 0x78, 0x00, 0x4c, 0xbf, 0x02, 0x13, 0xe9, 0xa9, 0x3b, 0x94, 0x07, 0xc1, 0xff, 0x2e, 0xc0, - 0x78, 0xc6, 0xcb, 0x15, 0x8b, 0xb1, 0x9e, 0x62, 0xa8, 0x49, 0x48, 0x75, 0x93, 0x2d, 0x16, 0x7a, - 0x60, 0x8b, 0x92, 0x47, 0x17, 0x73, 0x79, 0xb4, 0x60, 0x85, 0x7d, 0xef, 0x87, 0x15, 0x9a, 0xa7, - 0x4f, 0x7f, 0x4f, 0xa7, 0xcf, 0x11, 0xb0, 0x4f, 0xe3, 0x00, 0x1b, 0xec, 0xe1, 0x00, 0xfb, 0x52, - 0x01, 0x26, 0xd2, 0x16, 0xbe, 0xc7, 0xf0, 0xde, 0xf1, 0xaa, 0xf1, 0xde, 0x91, 0x9d, 0xb1, 0x20, - 0x6d, 0x77, 0x9c, 0xf7, 0xf6, 0x81, 0x53, 0x6f, 0x1f, 0x4f, 0xf6, 0x44, 0xad, 0xf3, 0x3b, 0xc8, - 0x3f, 0x2c, 0xc0, 0xc9, 0x74, 0x95, 0x45, 0xcf, 0x71, 0x77, 0x8e, 0x61, 0x6c, 0x6e, 0x18, 0x63, - 0xf3, 0x4c, 0x2f, 0x5f, 0xc3, 0xba, 0x96, 0x3b, 0x40, 0xb7, 0x53, 0x03, 0x34, 0xd7, 0x3b, 0xc9, - 0xce, 0xa3, 0xf4, 0xdd, 0x22, 0x9c, 0xcd, 0xac, 0x97, 0x3c, 0x17, 0x2c, 0x1b, 0xcf, 0x05, 0x17, - 0x53, 0xcf, 0x05, 0x76, 0xe7, 0xda, 0x47, 0xf3, 0x7e, 0x20, 0xbc, 0x1c, 0x59, 0x20, 0xc0, 0xfb, - 0x7c, 0x3b, 0x30, 0xbc, 0x1c, 0x15, 0x21, 0x6c, 0xd2, 0xfd, 0x71, 0x7a, 0x33, 0xf8, 0x03, 0x0b, - 0x4e, 0x67, 0xce, 0xcd, 0x31, 0xe8, 0xd5, 0xaf, 0x9b, 0x7a, 0xf5, 0x27, 0x7a, 0x5e, 0xad, 0x39, - 0x8a, 0xf6, 0x3f, 0x29, 0xe6, 0x7c, 0x0b, 0xd3, 0x4c, 0xde, 0x80, 0x61, 0xa7, 0x5e, 0x27, 0x51, - 0xb4, 0x1a, 0x34, 0x54, 0x60, 0xbc, 0x67, 0x98, 0xb4, 0x91, 0x14, 0x1f, 0xec, 0xcf, 0x4c, 0xa7, - 0x49, 0x24, 0x60, 0xac, 0x53, 0x30, 0x63, 0x79, 0x16, 0x8e, 0x34, 0x96, 0xe7, 0x45, 0x80, 0x5d, - 0xa5, 0xaf, 0x48, 0xab, 0x39, 0x35, 0x4d, 0x86, 0x86, 0x85, 0x7e, 0x8e, 0xdd, 0x02, 0xb8, 0x31, - 0x10, 0x5f, 0x8a, 0xcf, 0xf5, 0x38, 0x57, 0xba, 0x61, 0x11, 0x77, 0xa7, 0x57, 0x2a, 0x61, 0x45, - 0x12, 0xfd, 0x0c, 0x4c, 0x44, 0x3c, 0x5a, 0xcb, 0xa2, 0xe7, 0x44, 0xcc, 0x89, 0x4b, 0xac, 0x42, - 0xe6, 0x23, 0x5f, 0x4b, 0xc1, 0x70, 0x1b, 0x36, 0x5a, 0x96, 0x1f, 0xc5, 0x42, 0xcb, 0xf0, 0x85, - 0x79, 0x3e, 0xf9, 0x20, 0x91, 0xe1, 0x65, 0x2a, 0x3d, 0xfc, 0x6c, 0xe0, 0xb5, 0x9a, 0xf6, 0x97, - 0xfa, 0xe0, 0xe1, 0x0e, 0x4c, 0x0c, 0xcd, 0x9b, 0x46, 0x00, 0x4f, 0xa5, 0xf5, 0x7f, 0xd3, 0x99, - 0x95, 0x0d, 0x85, 0x60, 0x6a, 0xad, 0x14, 0xde, 0xf7, 0x5a, 0xf9, 0x82, 0xa5, 0x69, 0x66, 0xb9, - 0xa9, 0xf0, 0xa7, 0x0e, 0xc9, 0x9c, 0x8f, 0x50, 0x55, 0xbb, 0x91, 0xa1, 0xef, 0xbc, 0xd8, 0x73, - 0x77, 0x7a, 0x56, 0x80, 0x1e, 0xef, 0x93, 0xd1, 0x7b, 0x16, 0x3c, 0x9a, 0xd9, 0x5f, 0xc3, 0x68, + 0xc9, 0x22, 0x5b, 0x4d, 0xd0, 0x16, 0xc6, 0xef, 0x1f, 0xcc, 0x0c, 0x6b, 0x05, 0x58, 0x27, 0x82, + 0x36, 0x60, 0x9c, 0xfe, 0xf5, 0x63, 0x57, 0xd1, 0x2d, 0x32, 0xba, 0x4f, 0xe4, 0xd1, 0xd5, 0x50, + 0x17, 0x4e, 0xdd, 0x3f, 0x98, 0x19, 0x4f, 0x15, 0xe2, 0x34, 0x41, 0xfb, 0x7d, 0x18, 0x9b, 0x8f, + 0x63, 0xa7, 0xbe, 0x4d, 0x1a, 0x7c, 0x06, 0xd1, 0x8b, 0xd0, 0xe7, 0x3b, 0xbb, 0x44, 0xcc, 0xef, + 0x05, 0x31, 0xb0, 0x7d, 0x6b, 0xce, 0x2e, 0x39, 0x3c, 0x98, 0x99, 0xb8, 0xe5, 0xbb, 0xef, 0xb5, + 0xc4, 0xaa, 0xa0, 0x65, 0x98, 0x61, 0xa3, 0xcb, 0x00, 0x0d, 0xb2, 0xe7, 0xd6, 0x49, 0xd5, 0x89, + 0xb7, 0xc5, 0x7c, 0x23, 0x51, 0x17, 0x2a, 0x0a, 0x82, 0x35, 0x2c, 0xfb, 0x1e, 0x94, 0xe6, 0xf7, + 0x02, 0xb7, 0x51, 0x0d, 0x1a, 0x11, 0xda, 0x81, 0xf1, 0x66, 0x48, 0x36, 0x49, 0xa8, 0x8a, 0xca, + 0xd6, 0x85, 0xe2, 0xa5, 0xe1, 0xcb, 0x97, 0x32, 0x3f, 0xd6, 0x44, 0x5d, 0xf2, 0xe3, 0x70, 0x7f, + 0xe1, 0x11, 0xd1, 0xde, 0x78, 0x0a, 0x8a, 0xd3, 0x94, 0xed, 0x7f, 0x57, 0x80, 0xd3, 0xf3, 0xef, + 0xb7, 0x42, 0x52, 0x71, 0xa3, 0x9d, 0xf4, 0x0a, 0x6f, 0xb8, 0xd1, 0xce, 0x5a, 0x32, 0x02, 0x6a, + 0x69, 0x55, 0x44, 0x39, 0x56, 0x18, 0xe8, 0x39, 0x18, 0xa4, 0xbf, 0x6f, 0xe1, 0x15, 0xf1, 0xc9, + 0xa7, 0x04, 0xf2, 0x70, 0xc5, 0x89, 0x9d, 0x0a, 0x07, 0x61, 0x89, 0x83, 0x56, 0x61, 0xb8, 0xce, + 0x36, 0xe4, 0xd6, 0x6a, 0xd0, 0x20, 0x6c, 0x32, 0x4b, 0x0b, 0xcf, 0x50, 0xf4, 0xc5, 0xa4, 0xf8, + 0xf0, 0x60, 0xa6, 0xcc, 0xfb, 0x26, 0x48, 0x68, 0x30, 0xac, 0xd7, 0x47, 0xb6, 0xda, 0x5f, 0x7d, + 0x8c, 0x12, 0x64, 0xec, 0xad, 0x4b, 0xda, 0x56, 0xe9, 0x67, 0x5b, 0x65, 0x24, 0x7b, 0x9b, 0xa0, + 0xe7, 0xa1, 0x6f, 0xc7, 0xf5, 0x1b, 0xe5, 0x01, 0x46, 0xeb, 0x1c, 0x9d, 0xf3, 0xeb, 0xae, 0xdf, + 0x38, 0x3c, 0x98, 0x99, 0x34, 0xba, 0x43, 0x0b, 0x31, 0x43, 0xb5, 0xff, 0xd4, 0x82, 0x19, 0x06, + 0x5b, 0x76, 0x3d, 0x52, 0x25, 0x61, 0xe4, 0x46, 0x31, 0xf1, 0x63, 0x63, 0x40, 0x2f, 0x03, 0x44, + 0xa4, 0x1e, 0x92, 0x58, 0x1b, 0x52, 0xb5, 0x30, 0x6a, 0x0a, 0x82, 0x35, 0x2c, 0xca, 0x10, 0xa2, + 0x6d, 0x27, 0x64, 0xeb, 0x4b, 0x0c, 0xac, 0x62, 0x08, 0x35, 0x09, 0xc0, 0x09, 0x8e, 0xc1, 0x10, + 0x8a, 0xdd, 0x18, 0x02, 0xfa, 0x1c, 0x8c, 0x27, 0x8d, 0x45, 0x4d, 0xa7, 0x2e, 0x07, 0x90, 0x6d, + 0x99, 0x9a, 0x09, 0xc2, 0x69, 0x5c, 0xfb, 0x1f, 0x5a, 0x62, 0xf1, 0xd0, 0xaf, 0xfe, 0x98, 0x7f, + 0xab, 0xfd, 0xdb, 0x16, 0x0c, 0x2e, 0xb8, 0x7e, 0xc3, 0xf5, 0xb7, 0xd0, 0x17, 0x60, 0x88, 0x9e, + 0x4d, 0x0d, 0x27, 0x76, 0x04, 0xdf, 0xfb, 0xb4, 0xb6, 0xb7, 0xd4, 0x51, 0x31, 0xdb, 0xdc, 0xd9, + 0xa2, 0x05, 0xd1, 0x2c, 0xc5, 0xa6, 0xbb, 0xed, 0xe6, 0xc6, 0xbb, 0xa4, 0x1e, 0xaf, 0x92, 0xd8, + 0x49, 0x3e, 0x27, 0x29, 0xc3, 0x8a, 0x2a, 0xba, 0x0e, 0x03, 0xb1, 0x13, 0x6e, 0x91, 0x58, 0x30, + 0xc0, 0x4c, 0x46, 0xc5, 0x6b, 0x62, 0xba, 0x23, 0x89, 0x5f, 0x27, 0xc9, 0xb1, 0xb0, 0xce, 0xaa, + 0x62, 0x41, 0xc2, 0xfe, 0x55, 0x0b, 0xce, 0x2e, 0xd6, 0x56, 0x72, 0xd6, 0xd5, 0x45, 0x18, 0x68, + 0x84, 0xee, 0x1e, 0x09, 0xc5, 0x38, 0x2b, 0x2a, 0x15, 0x56, 0x8a, 0x05, 0x14, 0x5d, 0x81, 0x11, + 0x7e, 0x20, 0x5d, 0x73, 0xfc, 0x86, 0x27, 0x87, 0x78, 0x4a, 0x60, 0x8f, 0xdc, 0xd6, 0x60, 0xd8, + 0xc0, 0x3c, 0xe2, 0x40, 0xd7, 0x61, 0x64, 0xd1, 0x69, 0x3a, 0x1b, 0xae, 0xe7, 0xc6, 0x2e, 0x89, + 0xd0, 0x93, 0x50, 0x74, 0x1a, 0x0d, 0xc6, 0xc3, 0x4a, 0x0b, 0xa7, 0xef, 0x1f, 0xcc, 0x14, 0xe7, + 0x1b, 0x74, 0x33, 0x81, 0xc2, 0xda, 0xc7, 0x14, 0x03, 0x3d, 0x0d, 0x7d, 0x8d, 0x30, 0x68, 0x96, + 0x0b, 0x0c, 0xf3, 0x0c, 0xdd, 0x77, 0x95, 0x30, 0x68, 0xa6, 0x50, 0x19, 0x8e, 0xfd, 0xbb, 0x05, + 0x78, 0x6c, 0x91, 0x34, 0xb7, 0x97, 0x6b, 0x39, 0xa3, 0x72, 0x09, 0x86, 0x76, 0x03, 0xdf, 0x8d, + 0x83, 0x30, 0x12, 0x4d, 0xb3, 0xed, 0xbe, 0x2a, 0xca, 0xb0, 0x82, 0xa2, 0x0b, 0xd0, 0xd7, 0x4c, + 0x58, 0xf5, 0x88, 0x64, 0xf3, 0x8c, 0x49, 0x33, 0x08, 0xc5, 0x68, 0x45, 0x24, 0x14, 0x6c, 0x4a, + 0x61, 0xdc, 0x8a, 0x48, 0x88, 0x19, 0x24, 0x59, 0xef, 0x74, 0x27, 0x88, 0x3d, 0x94, 0x5a, 0xef, + 0x14, 0x82, 0x35, 0x2c, 0x54, 0x85, 0x12, 0xff, 0x87, 0xc9, 0x26, 0xe3, 0x48, 0x39, 0xab, 0xa4, + 0x26, 0x91, 0xc4, 0x2a, 0x19, 0x65, 0x1b, 0x42, 0x16, 0xe2, 0x84, 0x88, 0x31, 0x4f, 0x03, 0x5d, + 0xe7, 0xe9, 0x2b, 0x05, 0x40, 0x7c, 0x08, 0xbf, 0xcb, 0x06, 0xee, 0x56, 0xfb, 0xc0, 0x65, 0x1e, + 0x8d, 0x37, 0x82, 0xba, 0xe3, 0xa5, 0xf7, 0xd8, 0x71, 0x8d, 0xde, 0xcf, 0x5a, 0x80, 0x16, 0x5d, + 0xbf, 0x41, 0xc2, 0x13, 0x90, 0x0b, 0x8f, 0xb6, 0x01, 0x6f, 0xc0, 0xd8, 0xa2, 0xe7, 0x12, 0x3f, + 0x5e, 0xa9, 0x2e, 0x06, 0xfe, 0xa6, 0xbb, 0x85, 0x3e, 0x0b, 0x63, 0x54, 0x4c, 0x0e, 0x5a, 0x71, + 0x8d, 0xd4, 0x03, 0x9f, 0x49, 0x14, 0x54, 0xb8, 0x44, 0xf7, 0x0f, 0x66, 0xc6, 0xd6, 0x0d, 0x08, + 0x4e, 0x61, 0xda, 0x7f, 0x48, 0x3f, 0x34, 0xd8, 0x6d, 0x06, 0x3e, 0xf1, 0xe3, 0xc5, 0xc0, 0x6f, + 0x70, 0xc9, 0xf3, 0xb3, 0xd0, 0x17, 0xd3, 0x8e, 0xf3, 0x8f, 0xbc, 0x28, 0xa7, 0x96, 0x76, 0xf7, + 0xf0, 0x60, 0xe6, 0x4c, 0x7b, 0x0d, 0xf6, 0x41, 0xac, 0x0e, 0xfa, 0x01, 0x18, 0x88, 0x62, 0x27, + 0x6e, 0x45, 0xe2, 0xb3, 0x1f, 0x97, 0x9f, 0x5d, 0x63, 0xa5, 0x87, 0x07, 0x33, 0xe3, 0xaa, 0x1a, + 0x2f, 0xc2, 0xa2, 0x02, 0x7a, 0x0a, 0x06, 0x77, 0x49, 0x14, 0x39, 0x5b, 0x52, 0x68, 0x18, 0x17, + 0x75, 0x07, 0x57, 0x79, 0x31, 0x96, 0x70, 0xf4, 0x04, 0xf4, 0x93, 0x30, 0x0c, 0x42, 0xb1, 0xaa, + 0x46, 0x05, 0x62, 0xff, 0x12, 0x2d, 0xc4, 0x1c, 0x66, 0xff, 0x07, 0x0b, 0xc6, 0x55, 0x5f, 0x79, + 0x5b, 0x27, 0x70, 0x3a, 0xbc, 0x05, 0x50, 0x97, 0x1f, 0x18, 0x31, 0x7e, 0x37, 0x7c, 0xf9, 0x62, + 0xd6, 0x12, 0x6e, 0x1f, 0xc6, 0x84, 0xb2, 0x2a, 0x8a, 0xb0, 0x46, 0xcd, 0xfe, 0x97, 0x16, 0x9c, + 0x4a, 0x7d, 0xd1, 0x0d, 0x37, 0x8a, 0xd1, 0xdb, 0x6d, 0x5f, 0x35, 0xdb, 0xdb, 0x57, 0xd1, 0xda, + 0xec, 0x9b, 0xd4, 0x9a, 0x93, 0x25, 0xda, 0x17, 0x5d, 0x83, 0x7e, 0x37, 0x26, 0xbb, 0xf2, 0x63, + 0x9e, 0xe8, 0xf8, 0x31, 0xbc, 0x57, 0xc9, 0x8c, 0xac, 0xd0, 0x9a, 0x98, 0x13, 0xb0, 0xff, 0x97, + 0x05, 0x25, 0xbe, 0x6c, 0x57, 0x9d, 0xe6, 0x09, 0xcc, 0xc5, 0x0a, 0xf4, 0x31, 0xea, 0xbc, 0xe3, + 0x4f, 0x66, 0x77, 0x5c, 0x74, 0x67, 0x96, 0x8a, 0x7e, 0x5c, 0xc4, 0x56, 0xcc, 0x8c, 0x16, 0x61, + 0x46, 0x62, 0xfa, 0x65, 0x28, 0x29, 0x04, 0x34, 0x01, 0xc5, 0x1d, 0xc2, 0xaf, 0x55, 0x25, 0x4c, + 0x7f, 0xa2, 0x29, 0xe8, 0xdf, 0x73, 0xbc, 0x96, 0xd8, 0xec, 0x98, 0xff, 0xf9, 0x6c, 0xe1, 0x8a, + 0x65, 0x7f, 0x99, 0xed, 0x31, 0xd1, 0xc8, 0x92, 0xbf, 0x27, 0x98, 0xc9, 0xfb, 0x30, 0xe5, 0x65, + 0xf0, 0x30, 0x31, 0x10, 0xbd, 0xf3, 0xbc, 0xc7, 0x44, 0x5f, 0xa7, 0xb2, 0xa0, 0x38, 0xb3, 0x0d, + 0x7a, 0x0c, 0x04, 0x4d, 0xba, 0xa2, 0x1c, 0x8f, 0xf5, 0x57, 0x88, 0xcb, 0x37, 0x45, 0x19, 0x56, + 0x50, 0xca, 0x20, 0xa6, 0x54, 0xe7, 0xaf, 0x93, 0xfd, 0x1a, 0xf1, 0x48, 0x3d, 0x0e, 0xc2, 0x8f, + 0xb4, 0xfb, 0xe7, 0xf8, 0xe8, 0x73, 0xfe, 0x32, 0x2c, 0x08, 0x14, 0xaf, 0x93, 0x7d, 0x3e, 0x15, + 0xfa, 0xd7, 0x15, 0x3b, 0x7e, 0xdd, 0xaf, 0x59, 0x30, 0xaa, 0xbe, 0xee, 0x04, 0x36, 0xd2, 0x82, + 0xb9, 0x91, 0xce, 0x75, 0x5c, 0x8f, 0x39, 0x5b, 0xe8, 0x3b, 0x8c, 0x05, 0x08, 0x9c, 0x6a, 0x18, + 0xd0, 0xa1, 0xa1, 0x3c, 0xfb, 0xa3, 0x9c, 0x90, 0x5e, 0xbe, 0xeb, 0x3a, 0xd9, 0x5f, 0x0f, 0xa8, + 0xf8, 0x90, 0xfd, 0x5d, 0xc6, 0xac, 0xf5, 0x75, 0x9c, 0xb5, 0xdf, 0x28, 0xc0, 0x69, 0x35, 0x02, + 0xc6, 0x01, 0xfd, 0xdd, 0x3e, 0x06, 0xcf, 0xc3, 0x70, 0x83, 0x6c, 0x3a, 0x2d, 0x2f, 0x56, 0x37, + 0xe7, 0x7e, 0xae, 0x3d, 0xa9, 0x24, 0xc5, 0x58, 0xc7, 0x39, 0xc2, 0xb0, 0xfd, 0xd2, 0x30, 0xe3, + 0xbd, 0xb1, 0x43, 0x57, 0x30, 0x95, 0xde, 0x34, 0xfd, 0xc7, 0x88, 0xae, 0xff, 0x10, 0xba, 0x8e, + 0x27, 0xa0, 0xdf, 0xdd, 0xa5, 0x67, 0x71, 0xc1, 0x3c, 0x62, 0x57, 0x68, 0x21, 0xe6, 0x30, 0xf4, + 0x29, 0x18, 0xac, 0x07, 0xbb, 0xbb, 0x8e, 0xdf, 0x28, 0x17, 0x99, 0x3c, 0x39, 0x4c, 0x8f, 0xeb, + 0x45, 0x5e, 0x84, 0x25, 0x0c, 0x3d, 0x06, 0x7d, 0x4e, 0xb8, 0x15, 0x95, 0xfb, 0x18, 0xce, 0x10, + 0x6d, 0x69, 0x3e, 0xdc, 0x8a, 0x30, 0x2b, 0xa5, 0x72, 0xe2, 0xdd, 0x20, 0xdc, 0x71, 0xfd, 0xad, + 0x8a, 0x1b, 0x32, 0xa1, 0x4f, 0x93, 0x13, 0xef, 0x28, 0x08, 0xd6, 0xb0, 0xd0, 0x32, 0xf4, 0x37, + 0x83, 0x30, 0x8e, 0xca, 0x03, 0x6c, 0xb8, 0x1f, 0xcf, 0xd9, 0x4a, 0xfc, 0x6b, 0xab, 0x41, 0x18, + 0x27, 0x1f, 0x40, 0xff, 0x45, 0x98, 0x57, 0x47, 0x3f, 0x00, 0x45, 0xe2, 0xef, 0x95, 0x07, 0x19, + 0x95, 0xe9, 0x2c, 0x2a, 0x4b, 0xfe, 0xde, 0x6d, 0x27, 0x4c, 0xf8, 0xcc, 0x92, 0xbf, 0x87, 0x69, + 0x1d, 0xf4, 0x26, 0x94, 0xa4, 0xee, 0x34, 0x2a, 0x0f, 0xe5, 0x2f, 0x31, 0x2c, 0x90, 0x30, 0x79, + 0xaf, 0xe5, 0x86, 0x64, 0x97, 0xf8, 0x71, 0x94, 0xdc, 0x7e, 0x25, 0x34, 0xc2, 0x09, 0x35, 0xf4, + 0xa6, 0xbc, 0xce, 0xad, 0x06, 0x2d, 0x3f, 0x8e, 0xca, 0x25, 0xd6, 0xbd, 0x4c, 0x45, 0xdb, 0xed, + 0x04, 0x2f, 0x7d, 0xdf, 0xe3, 0x95, 0xb1, 0x41, 0x0a, 0x61, 0x18, 0xf5, 0xdc, 0x3d, 0xe2, 0x93, + 0x28, 0xaa, 0x86, 0xc1, 0x06, 0x29, 0x03, 0xeb, 0xf9, 0xd9, 0x6c, 0xfd, 0x53, 0xb0, 0x41, 0x16, + 0x26, 0xef, 0x1f, 0xcc, 0x8c, 0xde, 0xd0, 0xeb, 0x60, 0x93, 0x04, 0xba, 0x05, 0x63, 0x54, 0x40, + 0x75, 0x13, 0xa2, 0xc3, 0xdd, 0x88, 0x32, 0xe9, 0x14, 0x1b, 0x95, 0x70, 0x8a, 0x08, 0x7a, 0x1d, + 0x4a, 0x9e, 0xbb, 0x49, 0xea, 0xfb, 0x75, 0x8f, 0x94, 0x47, 0x18, 0xc5, 0xcc, 0x6d, 0x75, 0x43, + 0x22, 0xf1, 0x0b, 0x80, 0xfa, 0x8b, 0x93, 0xea, 0xe8, 0x36, 0x9c, 0x89, 0x49, 0xb8, 0xeb, 0xfa, + 0x0e, 0xdd, 0x0e, 0x42, 0x9e, 0x64, 0x5a, 0xbc, 0x51, 0xb6, 0xde, 0xce, 0x8b, 0xa1, 0x3b, 0xb3, + 0x9e, 0x89, 0x85, 0x73, 0x6a, 0xa3, 0x9b, 0x30, 0xce, 0x76, 0x42, 0xb5, 0xe5, 0x79, 0xd5, 0xc0, + 0x73, 0xeb, 0xfb, 0xe5, 0x31, 0x46, 0xf0, 0x53, 0x52, 0x4d, 0xb7, 0x62, 0x82, 0xe9, 0x8d, 0x37, + 0xf9, 0x87, 0xd3, 0xb5, 0xd1, 0x06, 0x53, 0xdb, 0xb4, 0x42, 0x37, 0xde, 0xa7, 0xeb, 0x97, 0xdc, + 0x8b, 0xcb, 0xe3, 0x1d, 0xef, 0x8f, 0x3a, 0xaa, 0xd2, 0xed, 0xe8, 0x85, 0x38, 0x4d, 0x90, 0x6e, + 0xed, 0x28, 0x6e, 0xb8, 0x7e, 0x79, 0x82, 0x71, 0x0c, 0xb5, 0x33, 0x6a, 0xb4, 0x10, 0x73, 0x18, + 0x53, 0xd9, 0xd0, 0x1f, 0x37, 0x29, 0x07, 0x9d, 0x64, 0x88, 0x89, 0xca, 0x46, 0x02, 0x70, 0x82, + 0x43, 0x8f, 0xe5, 0x38, 0xde, 0x2f, 0x23, 0x86, 0xaa, 0xb6, 0xcb, 0xfa, 0xfa, 0x9b, 0x98, 0x96, + 0xa3, 0x1b, 0x30, 0x48, 0xfc, 0xbd, 0xe5, 0x30, 0xd8, 0x2d, 0x9f, 0xca, 0xdf, 0xb3, 0x4b, 0x1c, + 0x85, 0x33, 0xf4, 0xe4, 0x02, 0x20, 0x8a, 0xb1, 0x24, 0x81, 0xee, 0x41, 0x39, 0x63, 0x46, 0xf8, + 0x04, 0x4c, 0xb1, 0x09, 0x78, 0x55, 0xd4, 0x2d, 0xaf, 0xe7, 0xe0, 0x1d, 0x76, 0x80, 0xe1, 0x5c, + 0xea, 0xe8, 0x47, 0x60, 0x94, 0x6f, 0x28, 0xae, 0xef, 0x8d, 0xca, 0xa7, 0xd9, 0xd7, 0x5c, 0xc8, + 0xdf, 0x9c, 0x1c, 0x71, 0xe1, 0xb4, 0xe8, 0xd0, 0xa8, 0x5e, 0x1a, 0x61, 0x93, 0x9a, 0xbd, 0x01, + 0x63, 0x8a, 0x6f, 0xb1, 0xa5, 0x83, 0x66, 0xa0, 0x9f, 0x32, 0x64, 0x79, 0x63, 0x2f, 0xd1, 0x99, + 0x62, 0x7a, 0x3a, 0xcc, 0xcb, 0xd9, 0x4c, 0xb9, 0xef, 0x93, 0x85, 0xfd, 0x98, 0xf0, 0x5b, 0x57, + 0x51, 0x9b, 0x29, 0x09, 0xc0, 0x09, 0x8e, 0xfd, 0xff, 0xb8, 0xdc, 0x93, 0x30, 0xc7, 0x1e, 0x8e, + 0x83, 0x67, 0x61, 0x68, 0x3b, 0x88, 0x62, 0x8a, 0xcd, 0xda, 0xe8, 0x4f, 0x24, 0x9d, 0x6b, 0xa2, + 0x1c, 0x2b, 0x0c, 0xf4, 0x0a, 0x8c, 0xd6, 0xf5, 0x06, 0xc4, 0x59, 0xa6, 0x86, 0xc0, 0x68, 0x1d, + 0x9b, 0xb8, 0xe8, 0x0a, 0x0c, 0xb1, 0xd7, 0x9a, 0x7a, 0xe0, 0x89, 0xfb, 0x9d, 0x3c, 0x90, 0x87, + 0xaa, 0xa2, 0xfc, 0x50, 0xfb, 0x8d, 0x15, 0x36, 0xbd, 0x73, 0xd3, 0x2e, 0xac, 0x54, 0xc5, 0x29, + 0xa2, 0xee, 0xdc, 0xd7, 0x58, 0x29, 0x16, 0x50, 0xfb, 0x6f, 0x14, 0xb4, 0x51, 0xa6, 0x37, 0x16, + 0x82, 0xaa, 0x30, 0x78, 0xd7, 0x71, 0x63, 0xd7, 0xdf, 0x12, 0xe2, 0xc2, 0x53, 0x1d, 0x8f, 0x14, + 0x56, 0xe9, 0x0e, 0xaf, 0xc0, 0x0f, 0x3d, 0xf1, 0x07, 0x4b, 0x32, 0x94, 0x62, 0xd8, 0xf2, 0x7d, + 0x4a, 0xb1, 0xd0, 0x2b, 0x45, 0xcc, 0x2b, 0x70, 0x8a, 0xe2, 0x0f, 0x96, 0x64, 0xd0, 0xdb, 0x00, + 0x72, 0x59, 0x92, 0x86, 0x78, 0x25, 0x79, 0xb6, 0x3b, 0xd1, 0x75, 0x55, 0x67, 0x61, 0x8c, 0x1e, + 0xa9, 0xc9, 0x7f, 0xac, 0xd1, 0xb3, 0x63, 0x26, 0x56, 0xb5, 0x77, 0x06, 0xfd, 0x30, 0xe5, 0x04, + 0x4e, 0x18, 0x93, 0xc6, 0x7c, 0x2c, 0x06, 0xe7, 0xe9, 0xde, 0xa4, 0xe2, 0x75, 0x77, 0x97, 0xe8, + 0x5c, 0x43, 0x10, 0xc1, 0x09, 0x3d, 0xfb, 0xb7, 0x8a, 0x50, 0xce, 0xeb, 0x2e, 0x5d, 0x74, 0xe4, + 0x9e, 0x1b, 0x2f, 0x52, 0x69, 0xc8, 0x32, 0x17, 0xdd, 0x92, 0x28, 0xc7, 0x0a, 0x83, 0xce, 0x7e, + 0xe4, 0x6e, 0xc9, 0x4b, 0x4d, 0x7f, 0x32, 0xfb, 0x35, 0x56, 0x8a, 0x05, 0x94, 0xe2, 0x85, 0xc4, + 0x89, 0xc4, 0x33, 0x9c, 0xb6, 0x4a, 0x30, 0x2b, 0xc5, 0x02, 0xaa, 0xeb, 0x23, 0xfa, 0xba, 0xe8, + 0x23, 0x8c, 0x21, 0xea, 0x3f, 0xde, 0x21, 0x42, 0xef, 0x00, 0x6c, 0xba, 0xbe, 0x1b, 0x6d, 0x33, + 0xea, 0x03, 0x47, 0xa6, 0xae, 0x64, 0xa9, 0x65, 0x45, 0x05, 0x6b, 0x14, 0xd1, 0x4b, 0x30, 0xac, + 0x36, 0xe0, 0x4a, 0xa5, 0x3c, 0x68, 0xbe, 0xf1, 0x24, 0xdc, 0xa8, 0x82, 0x75, 0x3c, 0xfb, 0xdd, + 0xf4, 0x7a, 0x11, 0x3b, 0x40, 0x1b, 0x5f, 0xab, 0xd7, 0xf1, 0x2d, 0x74, 0x1e, 0x5f, 0xfb, 0xf7, + 0x8a, 0x30, 0x6e, 0x34, 0xd6, 0x8a, 0x7a, 0xe0, 0x59, 0x57, 0xe9, 0x39, 0xe7, 0xc4, 0x44, 0xec, + 0x3f, 0xbb, 0xfb, 0x56, 0xd1, 0xcf, 0x42, 0xba, 0x03, 0x78, 0x7d, 0xf4, 0x0e, 0x94, 0x3c, 0x27, + 0x62, 0xba, 0x0d, 0x22, 0xf6, 0x5d, 0x2f, 0xc4, 0x92, 0x7b, 0x84, 0x13, 0xc5, 0xda, 0x51, 0xc3, + 0x69, 0x27, 0x24, 0xe9, 0x81, 0x4c, 0x65, 0x1f, 0xf9, 0xce, 0xab, 0x3a, 0x41, 0x05, 0xa4, 0x7d, + 0xcc, 0x61, 0xe8, 0x0a, 0x8c, 0x84, 0x84, 0xad, 0x8a, 0x45, 0x2a, 0xca, 0xb1, 0x65, 0xd6, 0x9f, + 0xc8, 0x7c, 0x58, 0x83, 0x61, 0x03, 0x33, 0x11, 0xe5, 0x07, 0x3a, 0x88, 0xf2, 0x4f, 0xc1, 0x20, + 0xfb, 0xa1, 0x56, 0x80, 0x9a, 0x8d, 0x15, 0x5e, 0x8c, 0x25, 0x3c, 0xbd, 0x60, 0x86, 0x7a, 0x5c, + 0x30, 0x4f, 0xc3, 0x58, 0xc5, 0x21, 0xbb, 0x81, 0xbf, 0xe4, 0x37, 0x9a, 0x81, 0xeb, 0xc7, 0xa8, + 0x0c, 0x7d, 0xec, 0x74, 0xe0, 0x7b, 0xbb, 0x8f, 0x52, 0xc0, 0x7d, 0x54, 0x30, 0xb7, 0xbf, 0x5e, + 0x80, 0xd1, 0x0a, 0xf1, 0x48, 0x4c, 0xf8, 0x55, 0x26, 0x42, 0xcb, 0x80, 0xb6, 0x42, 0xa7, 0x4e, + 0xaa, 0x24, 0x74, 0x83, 0x86, 0xae, 0xeb, 0x2c, 0xb2, 0xf7, 0x04, 0x74, 0xb5, 0x0d, 0x8a, 0x33, + 0x6a, 0xa0, 0xb7, 0x60, 0xb4, 0x19, 0x12, 0x43, 0x45, 0x67, 0xe5, 0x49, 0x23, 0x55, 0x1d, 0x91, + 0x0b, 0xc2, 0x46, 0x11, 0x36, 0x49, 0xa1, 0x1f, 0x82, 0x89, 0x20, 0x6c, 0x6e, 0x3b, 0x7e, 0x85, + 0x34, 0x89, 0xdf, 0xa0, 0x92, 0xbe, 0x50, 0x41, 0x4c, 0xdd, 0x3f, 0x98, 0x99, 0xb8, 0x99, 0x82, + 0xe1, 0x36, 0x6c, 0xf4, 0x16, 0x4c, 0x36, 0xc3, 0xa0, 0xe9, 0x6c, 0xb1, 0x85, 0x22, 0x04, 0x1a, + 0xce, 0x7d, 0x9e, 0xbd, 0x7f, 0x30, 0x33, 0x59, 0x4d, 0x03, 0x0f, 0x0f, 0x66, 0x4e, 0xb1, 0x81, + 0xa2, 0x25, 0x09, 0x10, 0xb7, 0x93, 0xb1, 0xb7, 0xe0, 0x74, 0x25, 0xb8, 0xeb, 0xdf, 0x75, 0xc2, + 0xc6, 0x7c, 0x75, 0x45, 0xd3, 0x1d, 0xac, 0xc9, 0xbb, 0x2b, 0x7f, 0x8b, 0xce, 0x3c, 0xa7, 0xb4, + 0x9a, 0x5c, 0x7e, 0x59, 0x76, 0x3d, 0x92, 0xa3, 0xa3, 0xf8, 0xdb, 0x05, 0xa3, 0xa5, 0x04, 0x5f, + 0x3d, 0x2b, 0x58, 0xb9, 0xcf, 0x0a, 0x6f, 0xc0, 0xd0, 0xa6, 0x4b, 0xbc, 0x06, 0x26, 0x9b, 0x62, + 0x66, 0x9e, 0xcc, 0x7f, 0x5e, 0x5b, 0xa6, 0x98, 0x52, 0x27, 0xc5, 0x6f, 0xbe, 0xcb, 0xa2, 0x32, + 0x56, 0x64, 0xd0, 0x0e, 0x4c, 0xc8, 0xab, 0x95, 0x84, 0x8a, 0x4d, 0xfc, 0x54, 0xa7, 0xfb, 0x9a, + 0x49, 0x9c, 0x4d, 0x20, 0x4e, 0x91, 0xc1, 0x6d, 0x84, 0xe9, 0x55, 0x77, 0x97, 0x1e, 0x57, 0x7d, + 0x6c, 0x49, 0xb3, 0xab, 0x2e, 0xbb, 0xb5, 0xb3, 0x52, 0xfb, 0x17, 0x2c, 0x78, 0xa4, 0x6d, 0x64, + 0x84, 0xf6, 0xe2, 0x98, 0x67, 0x21, 0xad, 0x4d, 0x28, 0x74, 0xd7, 0x26, 0xd8, 0xff, 0xc8, 0x82, + 0xa9, 0xa5, 0xdd, 0x66, 0xbc, 0x5f, 0x71, 0xcd, 0xa7, 0x8f, 0x97, 0x61, 0x60, 0x97, 0x34, 0xdc, + 0xd6, 0xae, 0x98, 0xb9, 0x19, 0xc9, 0xd2, 0x57, 0x59, 0xe9, 0xe1, 0xc1, 0xcc, 0x68, 0x2d, 0x0e, + 0x42, 0x67, 0x8b, 0xf0, 0x02, 0x2c, 0xd0, 0xd9, 0xc1, 0xe8, 0xbe, 0x4f, 0x6e, 0xb8, 0xbb, 0xae, + 0x7c, 0x2e, 0xed, 0xa8, 0x51, 0x9b, 0x95, 0x03, 0x3a, 0xfb, 0x46, 0xcb, 0xf1, 0x63, 0x37, 0xde, + 0x17, 0xaf, 0x3a, 0x92, 0x08, 0x4e, 0xe8, 0xd9, 0xdf, 0xb0, 0x60, 0x5c, 0xf2, 0x92, 0xf9, 0x46, + 0x23, 0x24, 0x51, 0x84, 0xa6, 0xa1, 0xe0, 0x36, 0x45, 0x2f, 0x41, 0xf4, 0xb2, 0xb0, 0x52, 0xc5, + 0x05, 0xb7, 0x89, 0xaa, 0x50, 0xe2, 0xaf, 0xae, 0xc9, 0xe2, 0xea, 0xe9, 0xed, 0x96, 0xf5, 0x60, + 0x5d, 0xd6, 0xc4, 0x09, 0x11, 0x29, 0x15, 0xb3, 0x73, 0xa8, 0x68, 0x3e, 0x09, 0x5d, 0x13, 0xe5, + 0x58, 0x61, 0xa0, 0x4b, 0x30, 0xe4, 0x07, 0x0d, 0xfe, 0x08, 0xce, 0xf7, 0x34, 0x5b, 0xb2, 0x6b, + 0xa2, 0x0c, 0x2b, 0xa8, 0xfd, 0x53, 0x16, 0x8c, 0xc8, 0x2f, 0xeb, 0x51, 0x40, 0xa7, 0x5b, 0x2b, + 0x11, 0xce, 0x93, 0xad, 0x45, 0x05, 0x6c, 0x06, 0x31, 0xe4, 0xea, 0xe2, 0x51, 0xe4, 0x6a, 0xfb, + 0xe7, 0x0b, 0x30, 0x26, 0xbb, 0x53, 0x6b, 0x6d, 0x44, 0x24, 0x46, 0xeb, 0x50, 0x72, 0xf8, 0x90, + 0x13, 0xb9, 0x62, 0x9f, 0xc8, 0xbe, 0xd0, 0x19, 0xf3, 0x93, 0x88, 0x3a, 0xf3, 0xb2, 0x36, 0x4e, + 0x08, 0x21, 0x0f, 0x26, 0xfd, 0x20, 0x66, 0xc7, 0x9e, 0x82, 0x77, 0x7a, 0x76, 0x48, 0x53, 0x3f, + 0x2b, 0xa8, 0x4f, 0xae, 0xa5, 0xa9, 0xe0, 0x76, 0xc2, 0x68, 0x49, 0x2a, 0x91, 0x8a, 0xf9, 0x57, + 0x38, 0x7d, 0x16, 0xb2, 0x75, 0x48, 0xf6, 0xef, 0x58, 0x50, 0x92, 0x68, 0x27, 0xf1, 0xc2, 0xb4, + 0x0a, 0x83, 0x11, 0x9b, 0x04, 0x39, 0x34, 0x76, 0xa7, 0x8e, 0xf3, 0xf9, 0x4a, 0x4e, 0x73, 0xfe, + 0x3f, 0xc2, 0x92, 0x06, 0xd3, 0x82, 0xab, 0xee, 0x7f, 0x4c, 0xb4, 0xe0, 0xaa, 0x3f, 0x39, 0x27, + 0xcc, 0x7f, 0x63, 0x7d, 0xd6, 0x54, 0x05, 0x54, 0xe8, 0x6c, 0x86, 0x64, 0xd3, 0xbd, 0x97, 0x16, + 0x3a, 0xab, 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x1b, 0x46, 0xea, 0x52, 0x79, 0x9c, 0xb0, 0x81, 0x8b, + 0x1d, 0x55, 0xf1, 0xea, 0xd5, 0x86, 0x1b, 0xc8, 0x2d, 0x6a, 0xf5, 0xb1, 0x41, 0xcd, 0x7c, 0xf7, + 0x2f, 0x76, 0x7b, 0xf7, 0x4f, 0xe8, 0xe6, 0xbe, 0x5c, 0xdb, 0xbf, 0x68, 0xc1, 0x00, 0x57, 0x41, + 0xf6, 0xa6, 0xb3, 0xd5, 0x5e, 0xa1, 0x92, 0xb1, 0xbb, 0x4d, 0x0b, 0xc5, 0xa3, 0x14, 0x5a, 0x85, + 0x12, 0xfb, 0xc1, 0x54, 0x31, 0xc5, 0x7c, 0xcb, 0x40, 0xde, 0xaa, 0xde, 0xc1, 0xdb, 0xb2, 0x1a, + 0x4e, 0x28, 0xd8, 0x3f, 0x53, 0xa4, 0xac, 0x2a, 0x41, 0x35, 0x4e, 0x70, 0xeb, 0xe1, 0x9d, 0xe0, + 0x85, 0x87, 0x75, 0x82, 0x6f, 0xc1, 0x78, 0x5d, 0x7b, 0xf2, 0x4a, 0x66, 0xf2, 0x52, 0xc7, 0x45, + 0xa2, 0xbd, 0x8e, 0x71, 0x35, 0xdc, 0xa2, 0x49, 0x04, 0xa7, 0xa9, 0xa2, 0x1f, 0x86, 0x11, 0x3e, + 0xcf, 0xa2, 0x95, 0x3e, 0xd6, 0xca, 0xa7, 0xf2, 0xd7, 0x8b, 0xde, 0x04, 0x5b, 0x89, 0x35, 0xad, + 0x3a, 0x36, 0x88, 0xd9, 0x5f, 0xec, 0x87, 0xfe, 0xa5, 0x3d, 0xe2, 0xc7, 0x27, 0xc0, 0x90, 0xea, + 0x30, 0xe6, 0xfa, 0x7b, 0x81, 0xb7, 0x47, 0x1a, 0x1c, 0x7e, 0x94, 0xc3, 0xf5, 0x8c, 0x20, 0x3d, + 0xb6, 0x62, 0x90, 0xc0, 0x29, 0x92, 0x0f, 0xe3, 0xd6, 0x7e, 0x15, 0x06, 0xf8, 0xdc, 0x8b, 0x2b, + 0x7b, 0xa6, 0x82, 0x9d, 0x0d, 0xa2, 0xd8, 0x05, 0x89, 0x46, 0x81, 0x6b, 0xf4, 0x45, 0x75, 0xf4, + 0x2e, 0x8c, 0x6d, 0xba, 0x61, 0x14, 0xd3, 0xeb, 0x76, 0x14, 0x3b, 0xbb, 0xcd, 0x07, 0xb8, 0xa5, + 0xab, 0x71, 0x58, 0x36, 0x28, 0xe1, 0x14, 0x65, 0xb4, 0x05, 0xa3, 0xf4, 0xe2, 0x98, 0x34, 0x35, + 0x78, 0xe4, 0xa6, 0x94, 0x1a, 0xee, 0x86, 0x4e, 0x08, 0x9b, 0x74, 0x29, 0x33, 0xa9, 0xb3, 0x8b, + 0xe6, 0x10, 0x93, 0x28, 0x14, 0x33, 0xe1, 0x37, 0x4c, 0x0e, 0xa3, 0x3c, 0x89, 0x99, 0x8a, 0x94, + 0x4c, 0x9e, 0x94, 0x18, 0x84, 0xd8, 0x5f, 0xa2, 0xa7, 0x23, 0x1d, 0xc3, 0x13, 0x38, 0x5a, 0x5e, + 0x33, 0x8f, 0x96, 0xb3, 0xb9, 0xf3, 0x99, 0x73, 0xac, 0x7c, 0x01, 0x86, 0xb5, 0xe9, 0x46, 0x73, + 0x50, 0xaa, 0x4b, 0xbb, 0x06, 0xc1, 0x75, 0x95, 0xf8, 0xa2, 0x0c, 0x1e, 0x70, 0x82, 0x43, 0x47, + 0x83, 0x0a, 0x7b, 0x69, 0xab, 0x29, 0x2a, 0x0a, 0x62, 0x06, 0xb1, 0x5f, 0x00, 0x58, 0xba, 0x47, + 0xea, 0xf3, 0xfc, 0xe2, 0xa5, 0x3d, 0x9f, 0x59, 0xf9, 0xcf, 0x67, 0xf6, 0x7f, 0xb4, 0x60, 0x6c, + 0x79, 0xd1, 0x10, 0xc8, 0x67, 0x01, 0xb8, 0x14, 0x7a, 0xe7, 0xce, 0x9a, 0xd4, 0x0c, 0x73, 0xe5, + 0x9e, 0x2a, 0xc5, 0x1a, 0x06, 0x3a, 0x0b, 0x45, 0xaf, 0xe5, 0x0b, 0xe1, 0x70, 0xf0, 0xfe, 0xc1, + 0x4c, 0xf1, 0x46, 0xcb, 0xc7, 0xb4, 0x4c, 0x33, 0x54, 0x2a, 0xf6, 0x6c, 0xa8, 0xd4, 0xd5, 0x1e, + 0x1d, 0xcd, 0x40, 0xff, 0xdd, 0xbb, 0x6e, 0x23, 0x2a, 0xf7, 0x27, 0x5a, 0xeb, 0x3b, 0x77, 0x56, + 0x2a, 0x11, 0xe6, 0xe5, 0xf6, 0x5f, 0x2a, 0xc2, 0xc4, 0xb2, 0x47, 0xee, 0x3d, 0x90, 0xbd, 0x63, + 0xaf, 0xc6, 0x55, 0xb7, 0xda, 0xcf, 0xe3, 0xe3, 0x36, 0x27, 0xeb, 0x3e, 0x14, 0x6f, 0xc3, 0x20, + 0x7f, 0x85, 0xe5, 0x83, 0x31, 0x7c, 0xf9, 0xf9, 0xac, 0x2e, 0xa4, 0xc7, 0x62, 0x56, 0x28, 0x3e, + 0xb8, 0x49, 0x8a, 0x62, 0x62, 0xa2, 0x14, 0x4b, 0x92, 0xd3, 0x9f, 0x85, 0x11, 0x1d, 0xf3, 0x48, + 0xb6, 0x29, 0x7f, 0xd9, 0x82, 0x53, 0xcb, 0x5e, 0x50, 0xdf, 0x49, 0x59, 0xba, 0xbd, 0x04, 0xc3, + 0x74, 0x3f, 0x45, 0x86, 0x8d, 0xaf, 0x61, 0xf5, 0x2d, 0x40, 0x58, 0xc7, 0xd3, 0xaa, 0xdd, 0xba, + 0xb5, 0x52, 0xc9, 0x32, 0x16, 0x17, 0x20, 0xac, 0xe3, 0xd9, 0x5f, 0xb3, 0xe0, 0xdc, 0xd5, 0xc5, + 0xa5, 0xc4, 0xd8, 0xb3, 0xcd, 0x5e, 0x9d, 0x0a, 0x77, 0x0d, 0xad, 0x2b, 0x89, 0x70, 0x57, 0x61, + 0xbd, 0x10, 0xd0, 0x8f, 0x8b, 0x2f, 0xc6, 0xaf, 0x58, 0x70, 0xea, 0xaa, 0x1b, 0x63, 0xd2, 0x0c, + 0xd2, 0x96, 0xd3, 0x21, 0x69, 0x06, 0x91, 0x1b, 0x07, 0xe1, 0x7e, 0xda, 0x72, 0x1a, 0x2b, 0x08, + 0xd6, 0xb0, 0x78, 0xcb, 0x7b, 0x6e, 0x44, 0x7b, 0x5a, 0x30, 0x6f, 0x98, 0x58, 0x94, 0x63, 0x85, + 0x41, 0x3f, 0xac, 0xe1, 0x86, 0x4c, 0x42, 0xd8, 0x17, 0xdb, 0x59, 0x7d, 0x58, 0x45, 0x02, 0x70, + 0x82, 0x63, 0xff, 0x82, 0x05, 0xa7, 0xaf, 0x7a, 0xad, 0x28, 0x26, 0xe1, 0x66, 0x64, 0x74, 0xf6, + 0x05, 0x28, 0x11, 0x29, 0x85, 0x8b, 0xbe, 0xaa, 0x73, 0x43, 0x89, 0xe7, 0xdc, 0x6c, 0x5b, 0xe1, + 0xf5, 0x60, 0x36, 0x7a, 0x34, 0x73, 0xc7, 0x5f, 0x2f, 0xc0, 0xe8, 0xb5, 0xf5, 0xf5, 0xea, 0x55, + 0x12, 0x0b, 0x96, 0xd9, 0x5d, 0x83, 0x84, 0xb5, 0x8b, 0x70, 0x27, 0x59, 0xa7, 0x15, 0xbb, 0xde, + 0x2c, 0xf7, 0x13, 0x9a, 0x5d, 0xf1, 0xe3, 0x9b, 0x61, 0x2d, 0x0e, 0x5d, 0x7f, 0x2b, 0xf3, 0xea, + 0x2c, 0x19, 0x7b, 0x31, 0x8f, 0xb1, 0xa3, 0x17, 0x60, 0x80, 0x39, 0x2a, 0x49, 0xa9, 0xe3, 0x51, + 0x25, 0x2a, 0xb0, 0xd2, 0xc3, 0x83, 0x99, 0xd2, 0x2d, 0xbc, 0xc2, 0xff, 0x60, 0x81, 0x8a, 0x6e, + 0xc1, 0xf0, 0x76, 0x1c, 0x37, 0xaf, 0x11, 0xa7, 0x41, 0x42, 0xc9, 0x1d, 0xce, 0x67, 0x71, 0x07, + 0x3a, 0x08, 0x1c, 0x2d, 0xd9, 0x50, 0x49, 0x59, 0x84, 0x75, 0x3a, 0x76, 0x0d, 0x20, 0x81, 0x1d, + 0xd3, 0xb5, 0xc1, 0xfe, 0xb6, 0x05, 0x83, 0xdc, 0x66, 0x3c, 0x44, 0xaf, 0x42, 0x1f, 0xb9, 0x47, + 0xea, 0xe2, 0x04, 0xcf, 0xec, 0x70, 0x72, 0xca, 0x71, 0x25, 0x18, 0xfd, 0x8f, 0x59, 0x2d, 0x74, + 0x0d, 0x06, 0x69, 0x6f, 0xaf, 0x2a, 0x03, 0xfa, 0xc7, 0xf3, 0xbe, 0x58, 0x4d, 0x3b, 0x3f, 0x18, + 0x45, 0x11, 0x96, 0xd5, 0x99, 0x42, 0xa7, 0xde, 0xac, 0x51, 0x06, 0x16, 0x77, 0xba, 0x6e, 0xad, + 0x2f, 0x56, 0x39, 0x92, 0xa0, 0xc6, 0x15, 0x3a, 0xb2, 0x10, 0x27, 0x44, 0xec, 0x75, 0x28, 0xd1, + 0x49, 0x9d, 0xf7, 0x5c, 0xa7, 0xb3, 0x2e, 0xe9, 0x19, 0x28, 0x49, 0xbd, 0x4e, 0x24, 0xac, 0xda, + 0x19, 0x55, 0xa9, 0xf6, 0x89, 0x70, 0x02, 0xb7, 0x37, 0x61, 0x8a, 0x3d, 0x92, 0x3a, 0xf1, 0xb6, + 0xb1, 0xc7, 0xba, 0x2f, 0xe6, 0x67, 0x85, 0x7c, 0xc5, 0x67, 0xa6, 0xac, 0x99, 0xe1, 0x8e, 0x48, + 0x8a, 0x9a, 0xac, 0xf5, 0x27, 0x7d, 0xf0, 0xe8, 0x4a, 0x2d, 0xdf, 0x9d, 0xe0, 0x0a, 0x8c, 0x70, + 0x99, 0x80, 0x2e, 0x6d, 0xc7, 0x13, 0xed, 0xaa, 0x27, 0x84, 0x75, 0x0d, 0x86, 0x0d, 0x4c, 0x74, + 0x0e, 0x8a, 0xee, 0x7b, 0x7e, 0xda, 0xe6, 0x6e, 0xe5, 0x8d, 0x35, 0x4c, 0xcb, 0x29, 0x98, 0x8a, + 0x17, 0x9c, 0x95, 0x2a, 0xb0, 0x12, 0x31, 0x5e, 0x83, 0x31, 0x37, 0xaa, 0x47, 0xee, 0x8a, 0x4f, + 0xf9, 0x4c, 0xe2, 0x8a, 0x92, 0xc8, 0xfe, 0xb4, 0xd3, 0x0a, 0x8a, 0x53, 0xd8, 0x1a, 0x5f, 0xef, + 0xef, 0x59, 0x44, 0xe9, 0x6a, 0xe6, 0x4d, 0xa5, 0xaf, 0x26, 0xfb, 0xba, 0x88, 0xd9, 0xff, 0x08, + 0xe9, 0x8b, 0x7f, 0x70, 0x84, 0x25, 0x0c, 0x5d, 0x85, 0xc9, 0xfa, 0xb6, 0xd3, 0x9c, 0x6f, 0xc5, + 0xdb, 0x15, 0x37, 0xaa, 0x07, 0x7b, 0x24, 0xdc, 0x67, 0x32, 0xf1, 0x50, 0xa2, 0x6e, 0x52, 0x80, + 0xc5, 0x6b, 0xf3, 0x55, 0x8a, 0x89, 0xdb, 0xeb, 0x98, 0xca, 0x01, 0x38, 0x0e, 0xa7, 0x80, 0x79, + 0x18, 0x97, 0xcd, 0xd4, 0x48, 0xc4, 0xce, 0x88, 0x61, 0xd6, 0x31, 0xe5, 0x24, 0x26, 0x8a, 0x55, + 0xb7, 0xd2, 0xf8, 0xe8, 0x65, 0x18, 0x75, 0x7d, 0x37, 0x76, 0x9d, 0x38, 0x08, 0xd9, 0x09, 0x3b, + 0xc2, 0x4f, 0x0d, 0xca, 0xe6, 0x57, 0x74, 0x00, 0x36, 0xf1, 0xec, 0x3f, 0xee, 0x83, 0x49, 0x36, + 0x6d, 0xdf, 0x5f, 0x61, 0x1f, 0x9b, 0x15, 0x76, 0xab, 0x7d, 0x85, 0x1d, 0x87, 0xb8, 0xfb, 0x51, + 0x2e, 0xb3, 0x77, 0xa1, 0xa4, 0xcc, 0x26, 0xa5, 0xe5, 0xaf, 0x95, 0x63, 0xf9, 0xdb, 0x5d, 0xfa, + 0x90, 0xaf, 0x33, 0xc5, 0xcc, 0xd7, 0x99, 0xbf, 0x63, 0x41, 0x62, 0x3d, 0x86, 0xae, 0x41, 0xa9, + 0x19, 0xb0, 0x17, 0xda, 0x50, 0x9a, 0x3d, 0x3c, 0x9a, 0x79, 0x50, 0xf1, 0x43, 0x91, 0x8f, 0x5f, + 0x55, 0xd6, 0xc0, 0x49, 0x65, 0xb4, 0x00, 0x83, 0xcd, 0x90, 0xd4, 0x62, 0xe6, 0xff, 0xd4, 0x95, + 0x0e, 0x5f, 0x23, 0x1c, 0x1f, 0xcb, 0x8a, 0xf6, 0x6f, 0x58, 0x00, 0xfc, 0x01, 0xc4, 0xf1, 0xb7, + 0xc8, 0x09, 0x28, 0x75, 0x2a, 0xd0, 0x17, 0x35, 0x49, 0xbd, 0xd3, 0xdb, 0x79, 0xd2, 0x9f, 0x5a, + 0x93, 0xd4, 0x93, 0x01, 0xa7, 0xff, 0x30, 0xab, 0x6d, 0xff, 0x04, 0xc0, 0x58, 0x82, 0x46, 0x2f, + 0xdb, 0xe8, 0x39, 0xc3, 0xbb, 0xe4, 0x6c, 0xca, 0xbb, 0xa4, 0xc4, 0xb0, 0x35, 0x87, 0x92, 0x77, + 0xa1, 0xb8, 0xeb, 0xdc, 0x13, 0x37, 0xfa, 0x67, 0x3a, 0x77, 0x83, 0xd2, 0x9f, 0x5d, 0x75, 0xee, + 0xf1, 0x3b, 0xd3, 0x33, 0x72, 0x81, 0xac, 0x3a, 0xf7, 0x0e, 0xf9, 0x0b, 0x39, 0x63, 0x52, 0x37, + 0xdc, 0x28, 0xfe, 0xe0, 0xbf, 0x24, 0xff, 0xd9, 0xb2, 0xa3, 0x8d, 0xb0, 0xb6, 0x5c, 0x5f, 0x3c, + 0x07, 0xf4, 0xd4, 0x96, 0xeb, 0xa7, 0xdb, 0x72, 0xfd, 0x1e, 0xda, 0x72, 0x7d, 0xf4, 0x3e, 0x0c, + 0x8a, 0xa7, 0x37, 0x66, 0x16, 0x3b, 0x7c, 0x79, 0xae, 0x87, 0xf6, 0xc4, 0xcb, 0x1d, 0x6f, 0x73, + 0x4e, 0xde, 0x09, 0x45, 0x69, 0xd7, 0x76, 0x65, 0x83, 0xe8, 0x6f, 0x59, 0x30, 0x26, 0x7e, 0x63, + 0xf2, 0x5e, 0x8b, 0x44, 0xb1, 0x90, 0x3d, 0x3f, 0xd3, 0x7b, 0x1f, 0x44, 0x45, 0xde, 0x95, 0xcf, + 0x48, 0x36, 0x6b, 0x02, 0xbb, 0xf6, 0x28, 0xd5, 0x0b, 0xf4, 0x4f, 0x2c, 0x98, 0xda, 0x75, 0xee, + 0xf1, 0x16, 0x79, 0x19, 0x76, 0x62, 0x37, 0x10, 0x66, 0xbe, 0xaf, 0xf6, 0x36, 0xfd, 0x6d, 0xd5, + 0x79, 0x27, 0xa5, 0x45, 0xe0, 0x54, 0x16, 0x4a, 0xd7, 0xae, 0x66, 0xf6, 0x6b, 0x7a, 0x13, 0x86, + 0xe4, 0x7a, 0xcb, 0xb8, 0x79, 0x57, 0x74, 0xc1, 0xfa, 0xc8, 0x2f, 0x9f, 0xda, 0x4d, 0x9d, 0xb5, + 0x23, 0xd6, 0xda, 0x43, 0x6d, 0xe7, 0x5d, 0x18, 0xd1, 0xd7, 0xd8, 0x43, 0x6d, 0xeb, 0x3d, 0x38, + 0x95, 0xb1, 0x96, 0x1e, 0x6a, 0x93, 0x77, 0xe1, 0x6c, 0xee, 0xfa, 0x78, 0x98, 0x0d, 0xdb, 0xbf, + 0x6e, 0xe9, 0x7c, 0xf0, 0x04, 0x54, 0xa1, 0x8b, 0xa6, 0x2a, 0xf4, 0x7c, 0xe7, 0x9d, 0x93, 0xa3, + 0x0f, 0x7d, 0x5b, 0xef, 0x34, 0xe5, 0xea, 0xe8, 0x75, 0x18, 0xf0, 0x68, 0x89, 0x7c, 0xf3, 0xb5, + 0xbb, 0xef, 0xc8, 0x44, 0x96, 0x62, 0xe5, 0x11, 0x16, 0x14, 0xec, 0xdf, 0xb6, 0xa0, 0xef, 0x04, + 0x46, 0x02, 0x9b, 0x23, 0xf1, 0x5c, 0x2e, 0x69, 0x11, 0x70, 0x64, 0x16, 0x3b, 0x77, 0x97, 0x64, + 0x50, 0x95, 0x9c, 0x81, 0xf9, 0xbf, 0x05, 0x18, 0xa6, 0x4d, 0x49, 0xe3, 0xa4, 0x57, 0x60, 0xd4, + 0x73, 0x36, 0x88, 0x27, 0x9f, 0x67, 0xd2, 0x0a, 0x93, 0x1b, 0x3a, 0x10, 0x9b, 0xb8, 0xb4, 0xf2, + 0xa6, 0xfe, 0x52, 0x25, 0xe4, 0x17, 0x55, 0xd9, 0x78, 0xc6, 0xc2, 0x26, 0x2e, 0xbd, 0xbb, 0xdf, + 0x75, 0xe2, 0xfa, 0xb6, 0x50, 0xa6, 0xa8, 0xee, 0xde, 0xa1, 0x85, 0x98, 0xc3, 0xa8, 0x00, 0x27, + 0x57, 0xe7, 0x6d, 0x7a, 0x33, 0x0c, 0x7c, 0x21, 0x1e, 0x2b, 0x01, 0x0e, 0x9b, 0x60, 0x9c, 0xc6, + 0xcf, 0x70, 0x33, 0xed, 0x67, 0xa6, 0x57, 0x3d, 0xb8, 0x99, 0xa2, 0x2a, 0x4c, 0xb9, 0x7e, 0xdd, + 0x6b, 0x35, 0xc8, 0x2d, 0x9f, 0x4b, 0x77, 0x9e, 0xfb, 0x3e, 0x69, 0x08, 0x01, 0x5a, 0x59, 0xc9, + 0xad, 0x64, 0xe0, 0xe0, 0xcc, 0x9a, 0xf6, 0x5f, 0x80, 0x53, 0x37, 0x02, 0xa7, 0xb1, 0xe0, 0x78, + 0x8e, 0x5f, 0x27, 0xe1, 0x8a, 0xbf, 0xd5, 0xd5, 0xf8, 0x43, 0x37, 0xd5, 0x28, 0x74, 0x33, 0xd5, + 0xb0, 0xb7, 0x01, 0xe9, 0x0d, 0x08, 0x93, 0x43, 0x0c, 0x83, 0x2e, 0x6f, 0x4a, 0x2c, 0xff, 0x27, + 0xb3, 0xa5, 0xeb, 0xb6, 0x9e, 0x69, 0xc6, 0x74, 0xbc, 0x00, 0x4b, 0x42, 0xf6, 0x15, 0xc8, 0x74, + 0x33, 0xea, 0xae, 0xb6, 0xb1, 0x5f, 0x82, 0x49, 0x56, 0xf3, 0x68, 0x2a, 0x05, 0xfb, 0xaf, 0x59, + 0x30, 0xbe, 0x96, 0x72, 0x0c, 0xbf, 0x08, 0x03, 0x3c, 0xb4, 0x50, 0x5a, 0xc1, 0x5a, 0x63, 0xa5, + 0x58, 0x40, 0x8f, 0x5d, 0xbf, 0xf7, 0x1d, 0x0b, 0x4a, 0x2a, 0xe6, 0xc4, 0x09, 0x08, 0xb5, 0x8b, + 0x86, 0x50, 0x9b, 0xa9, 0x77, 0x52, 0xdd, 0xc9, 0x93, 0x69, 0xd1, 0x75, 0xe5, 0xe2, 0xdc, 0x41, + 0xe5, 0x94, 0x90, 0xe1, 0x0e, 0xb1, 0x63, 0xa6, 0x1f, 0xb4, 0x74, 0x7a, 0x66, 0xd6, 0x17, 0x0a, + 0xf7, 0x63, 0x62, 0x7d, 0xa1, 0xfa, 0x93, 0xc3, 0xfd, 0xaa, 0x5a, 0x97, 0xd9, 0xa9, 0xf0, 0x83, + 0xcc, 0x42, 0x99, 0xed, 0x4d, 0x15, 0x59, 0x60, 0x46, 0x58, 0x1c, 0x8b, 0xd2, 0x43, 0xc6, 0xc8, + 0xc4, 0x3f, 0x1e, 0x1f, 0x24, 0xa9, 0x62, 0x5f, 0x83, 0xf1, 0xd4, 0x80, 0xa1, 0x97, 0xa0, 0xbf, + 0xb9, 0xed, 0x44, 0x24, 0x65, 0x71, 0xd6, 0x5f, 0xa5, 0x85, 0x87, 0x07, 0x33, 0x63, 0xaa, 0x02, + 0x2b, 0xc1, 0x1c, 0xdb, 0xfe, 0x9f, 0x16, 0xf4, 0xad, 0x05, 0x8d, 0x93, 0x58, 0x4c, 0xaf, 0x19, + 0x8b, 0xe9, 0xb1, 0xbc, 0xe8, 0x4a, 0xb9, 0xeb, 0x68, 0x39, 0xb5, 0x8e, 0xce, 0xe7, 0x52, 0xe8, + 0xbc, 0x84, 0x76, 0x61, 0x98, 0xc5, 0x6c, 0x12, 0x16, 0x70, 0x2f, 0x18, 0xf7, 0xab, 0x99, 0xd4, + 0xfd, 0x6a, 0x5c, 0x43, 0xd5, 0x6e, 0x59, 0x4f, 0xc1, 0xa0, 0xb0, 0xc2, 0x4a, 0xdb, 0x62, 0x0b, + 0x5c, 0x2c, 0xe1, 0xf6, 0x2f, 0x16, 0xc1, 0x88, 0x11, 0x85, 0x7e, 0xc7, 0x82, 0xd9, 0x90, 0x3b, + 0xb7, 0x35, 0x2a, 0xad, 0xd0, 0xf5, 0xb7, 0x6a, 0xf5, 0x6d, 0xd2, 0x68, 0x79, 0xae, 0xbf, 0xb5, + 0xb2, 0xe5, 0x07, 0xaa, 0x78, 0xe9, 0x1e, 0xa9, 0xb7, 0xd8, 0x9b, 0x4b, 0x97, 0x80, 0x54, 0xca, + 0xca, 0xe1, 0xf2, 0xfd, 0x83, 0x99, 0x59, 0x7c, 0x24, 0xda, 0xf8, 0x88, 0x7d, 0x41, 0x5f, 0xb3, + 0x60, 0x8e, 0x87, 0x4e, 0xea, 0xbd, 0xff, 0x1d, 0x6e, 0xa3, 0x55, 0x49, 0x2a, 0x21, 0xb2, 0x4e, + 0xc2, 0xdd, 0x85, 0x97, 0xc5, 0x80, 0xce, 0x55, 0x8f, 0xd6, 0x16, 0x3e, 0x6a, 0xe7, 0xec, 0x7f, + 0x53, 0x84, 0x51, 0x3a, 0x8a, 0x49, 0x40, 0x87, 0x97, 0x8c, 0x25, 0xf1, 0x78, 0x6a, 0x49, 0x4c, + 0x1a, 0xc8, 0xc7, 0x13, 0xcb, 0x21, 0x82, 0x49, 0xcf, 0x89, 0xe2, 0x6b, 0xc4, 0x09, 0xe3, 0x0d, + 0xe2, 0x30, 0xb3, 0x02, 0xb1, 0xcc, 0x8f, 0x62, 0xa9, 0xa0, 0xd4, 0x5f, 0x37, 0xd2, 0xc4, 0x70, + 0x3b, 0x7d, 0xb4, 0x07, 0x88, 0x99, 0x30, 0x84, 0x8e, 0x1f, 0xf1, 0x6f, 0x71, 0xc5, 0x7b, 0xcc, + 0xd1, 0x5a, 0x9d, 0x16, 0xad, 0xa2, 0x1b, 0x6d, 0xd4, 0x70, 0x46, 0x0b, 0x9a, 0x69, 0x4a, 0x7f, + 0xaf, 0xa6, 0x29, 0x03, 0x5d, 0x1c, 0x1e, 0x76, 0x61, 0x42, 0xcc, 0xca, 0xa6, 0xbb, 0x25, 0x0e, + 0xe9, 0x37, 0x53, 0xa6, 0x6b, 0x56, 0xef, 0x46, 0x36, 0x5d, 0xec, 0xd6, 0xec, 0x1f, 0x85, 0x53, + 0xb4, 0x39, 0xd3, 0x3c, 0x3f, 0x42, 0x04, 0xc6, 0x77, 0x5a, 0x1b, 0xc4, 0x23, 0xb1, 0x2c, 0x13, + 0x8d, 0x66, 0x8a, 0xfd, 0x66, 0xed, 0x44, 0xb6, 0xbc, 0x6e, 0x92, 0xc0, 0x69, 0x9a, 0xf6, 0x2f, + 0x5b, 0xc0, 0x8c, 0x60, 0x4f, 0xe0, 0xf8, 0xfb, 0x9c, 0x79, 0xfc, 0x95, 0xf3, 0x38, 0x50, 0xce, + 0xc9, 0xf7, 0x22, 0x9f, 0x96, 0x6a, 0x18, 0xdc, 0xdb, 0x97, 0xb2, 0x7f, 0x77, 0x89, 0xeb, 0xff, + 0x58, 0x7c, 0x43, 0x2a, 0x5f, 0x5f, 0xf4, 0x63, 0x30, 0x54, 0x77, 0x9a, 0x4e, 0x9d, 0x07, 0xe7, + 0xcb, 0xd5, 0xfe, 0x18, 0x95, 0x66, 0x17, 0x45, 0x0d, 0xae, 0xcd, 0xf8, 0xb4, 0xfc, 0x4a, 0x59, + 0xdc, 0x55, 0x83, 0xa1, 0x9a, 0x9c, 0xde, 0x81, 0x51, 0x83, 0xd8, 0x43, 0xbd, 0xfa, 0xfe, 0x18, + 0x3f, 0x2e, 0xd4, 0x8d, 0x65, 0x17, 0x26, 0x7d, 0xed, 0x3f, 0x65, 0x8e, 0x52, 0x9c, 0xfe, 0x64, + 0xb7, 0x03, 0x81, 0x71, 0x52, 0xcd, 0xc8, 0x37, 0x45, 0x06, 0xb7, 0x53, 0xb6, 0xff, 0x9e, 0x05, + 0x8f, 0xe8, 0x88, 0x9a, 0x1b, 0x76, 0x37, 0x7d, 0x72, 0x05, 0x86, 0x82, 0x26, 0x09, 0x9d, 0xe4, + 0x4e, 0x76, 0x49, 0x0e, 0xfa, 0x4d, 0x51, 0x7e, 0x78, 0x30, 0x33, 0xa5, 0x53, 0x97, 0xe5, 0x58, + 0xd5, 0x44, 0x36, 0x0c, 0xb0, 0xc1, 0x88, 0x84, 0x8b, 0x3c, 0x0b, 0x60, 0xc7, 0x9e, 0x56, 0x23, + 0x2c, 0x20, 0xf6, 0x4f, 0x58, 0x7c, 0x61, 0xe9, 0x5d, 0x47, 0xef, 0xc1, 0xc4, 0x2e, 0xbd, 0xbe, + 0x2d, 0xdd, 0x6b, 0x86, 0x5c, 0x8d, 0x2e, 0xc7, 0xe9, 0x99, 0x6e, 0xe3, 0xa4, 0x7d, 0xe4, 0x42, + 0x59, 0xf4, 0x79, 0x62, 0x35, 0x45, 0x0c, 0xb7, 0x91, 0xb7, 0xff, 0xac, 0xc0, 0x77, 0x22, 0x93, + 0xea, 0x9e, 0x82, 0xc1, 0x66, 0xd0, 0x58, 0x5c, 0xa9, 0x60, 0x31, 0x42, 0x8a, 0x5d, 0x55, 0x79, + 0x31, 0x96, 0x70, 0x74, 0x19, 0x80, 0xdc, 0x8b, 0x49, 0xe8, 0x3b, 0x9e, 0x32, 0xfc, 0x50, 0xc2, + 0xd3, 0x92, 0x82, 0x60, 0x0d, 0x8b, 0xd6, 0x69, 0x86, 0xc1, 0x9e, 0xdb, 0x60, 0x4e, 0x44, 0x45, + 0xb3, 0x4e, 0x55, 0x41, 0xb0, 0x86, 0x45, 0xaf, 0xca, 0x2d, 0x3f, 0xe2, 0x07, 0xa0, 0xb3, 0x21, + 0xa2, 0x4a, 0x0d, 0x25, 0x57, 0xe5, 0x5b, 0x3a, 0x10, 0x9b, 0xb8, 0x68, 0x1e, 0x06, 0x62, 0x87, + 0x99, 0x33, 0xf4, 0xe7, 0x9b, 0x87, 0xad, 0x53, 0x0c, 0x3d, 0x5a, 0x1b, 0xad, 0x80, 0x45, 0x45, + 0xf4, 0x96, 0x64, 0xc1, 0x9c, 0x25, 0x0b, 0x33, 0xbf, 0xdc, 0x65, 0xab, 0xb3, 0x6f, 0x9d, 0x07, + 0x0b, 0xf3, 0x41, 0x83, 0x96, 0xfd, 0xe3, 0x25, 0x80, 0x44, 0xda, 0x43, 0xef, 0xb7, 0xb1, 0x88, + 0x67, 0x3b, 0xcb, 0x87, 0xc7, 0xc7, 0x1f, 0xd0, 0x17, 0x2d, 0x18, 0x76, 0x3c, 0x2f, 0xa8, 0x3b, + 0x31, 0x1b, 0xe5, 0x42, 0x67, 0x16, 0x25, 0xda, 0x9f, 0x4f, 0x6a, 0xf0, 0x2e, 0xbc, 0x20, 0x2d, + 0x15, 0x34, 0x48, 0xd7, 0x5e, 0xe8, 0x0d, 0xa3, 0x4f, 0xcb, 0x4b, 0x00, 0x5f, 0x1e, 0xd3, 0xe9, + 0x4b, 0x40, 0x89, 0x71, 0x63, 0x4d, 0xfe, 0x47, 0xb7, 0x8c, 0xf0, 0x4b, 0x7d, 0xf9, 0x9e, 0xe6, + 0x86, 0xd0, 0xd3, 0x2d, 0xf2, 0x12, 0xaa, 0xea, 0xee, 0x0e, 0xfd, 0xf9, 0xe1, 0x18, 0x34, 0xe9, + 0xba, 0x8b, 0xab, 0xc3, 0xbb, 0x30, 0xde, 0x30, 0x8f, 0x5b, 0xb1, 0x9a, 0x9e, 0xcc, 0xa3, 0x9b, + 0x3a, 0x9d, 0x93, 0x03, 0x36, 0x05, 0xc0, 0x69, 0xc2, 0xa8, 0xca, 0x1d, 0x4f, 0x56, 0xfc, 0xcd, + 0x40, 0x98, 0x8b, 0xda, 0xb9, 0x73, 0xb9, 0x1f, 0xc5, 0x64, 0x97, 0x62, 0x26, 0xe7, 0xe8, 0x9a, + 0xa8, 0x8b, 0x15, 0x15, 0xf4, 0x3a, 0x0c, 0x30, 0x6f, 0xc0, 0xa8, 0x3c, 0x94, 0xaf, 0x07, 0x34, + 0x1d, 0xd9, 0x93, 0x4d, 0xc5, 0xfe, 0x46, 0x58, 0x50, 0x40, 0xd7, 0x64, 0xb4, 0x8b, 0x68, 0xc5, + 0xbf, 0x15, 0x11, 0x16, 0xed, 0xa2, 0xb4, 0xf0, 0xc9, 0x24, 0x90, 0x05, 0x2f, 0xcf, 0x8c, 0xcb, + 0x6a, 0xd4, 0xa4, 0xf2, 0x8a, 0xf8, 0x2f, 0xc3, 0xbd, 0x96, 0x21, 0xbf, 0x7b, 0x66, 0x48, 0xd8, + 0x64, 0x38, 0x6f, 0x9b, 0x24, 0x70, 0x9a, 0xe6, 0x89, 0x1e, 0x9f, 0xd3, 0x3e, 0x4c, 0xa4, 0x37, + 0xd6, 0x43, 0x3d, 0xae, 0xbf, 0xdd, 0x07, 0x63, 0xe6, 0x42, 0x40, 0x73, 0x50, 0x12, 0x44, 0x54, + 0xe4, 0x3b, 0xb5, 0xb6, 0x57, 0x25, 0x00, 0x27, 0x38, 0x2c, 0xf2, 0x1f, 0xab, 0xae, 0xd9, 0x01, + 0x26, 0x91, 0xff, 0x14, 0x04, 0x6b, 0x58, 0x54, 0x88, 0xde, 0x08, 0x82, 0x58, 0x1d, 0x05, 0x6a, + 0xb5, 0x2c, 0xb0, 0x52, 0x2c, 0xa0, 0xf4, 0x08, 0xd8, 0x21, 0xa1, 0x4f, 0x3c, 0x53, 0x93, 0xa9, + 0x8e, 0x80, 0xeb, 0x3a, 0x10, 0x9b, 0xb8, 0xf4, 0x48, 0x0b, 0x22, 0xb6, 0xfc, 0x84, 0xa8, 0x9e, + 0xd8, 0x55, 0xd6, 0xb8, 0x37, 0xac, 0x84, 0xa3, 0x37, 0xe1, 0x11, 0xe5, 0xbc, 0x8a, 0xb9, 0x66, + 0x58, 0xb6, 0x38, 0x60, 0xdc, 0xac, 0x1f, 0x59, 0xcc, 0x46, 0xc3, 0x79, 0xf5, 0xd1, 0x6b, 0x30, + 0x26, 0x44, 0x60, 0x49, 0x71, 0xd0, 0x34, 0x56, 0xb8, 0x6e, 0x40, 0x71, 0x0a, 0x1b, 0x55, 0x60, + 0x82, 0x96, 0x30, 0x29, 0x54, 0x52, 0xe0, 0x4e, 0xb8, 0xea, 0xac, 0xbf, 0x9e, 0x82, 0xe3, 0xb6, + 0x1a, 0x68, 0x1e, 0xc6, 0xb9, 0x8c, 0x42, 0xef, 0x94, 0x6c, 0x1e, 0x84, 0x15, 0xb7, 0xda, 0x08, + 0x37, 0x4d, 0x30, 0x4e, 0xe3, 0xa3, 0x2b, 0x30, 0xe2, 0x84, 0xf5, 0x6d, 0x37, 0x26, 0xf5, 0xb8, + 0x15, 0xf2, 0x58, 0x32, 0x9a, 0xb5, 0xc7, 0xbc, 0x06, 0xc3, 0x06, 0xa6, 0xfd, 0x3e, 0x9c, 0xca, + 0x70, 0x00, 0xa1, 0x0b, 0xc7, 0x69, 0xba, 0xf2, 0x9b, 0x52, 0x16, 0x92, 0xf3, 0xd5, 0x15, 0xf9, + 0x35, 0x1a, 0x16, 0x5d, 0x9d, 0x4c, 0x25, 0xae, 0xc5, 0x64, 0x56, 0xab, 0x73, 0x59, 0x02, 0x70, + 0x82, 0x63, 0xff, 0x3e, 0x80, 0xa6, 0xd0, 0xe9, 0xc1, 0x3e, 0xee, 0x0a, 0x8c, 0xc8, 0x40, 0xe2, + 0x5a, 0x00, 0x5b, 0xf5, 0x99, 0x57, 0x35, 0x18, 0x36, 0x30, 0x69, 0xdf, 0x7c, 0x15, 0x7e, 0x37, + 0x65, 0x8f, 0x99, 0x04, 0xdf, 0x4d, 0x70, 0xd0, 0xb3, 0x30, 0x14, 0x11, 0x6f, 0xf3, 0x86, 0xeb, + 0xef, 0x88, 0x85, 0xad, 0xb8, 0x70, 0x4d, 0x94, 0x63, 0x85, 0x81, 0x16, 0xa0, 0xd8, 0x72, 0x1b, + 0x62, 0x29, 0xcb, 0x03, 0xbf, 0x78, 0x6b, 0xa5, 0x72, 0x78, 0x30, 0xf3, 0x78, 0x5e, 0x7c, 0x74, + 0x7a, 0xb5, 0x8f, 0x66, 0xe9, 0xf6, 0xa3, 0x95, 0xb3, 0xde, 0x06, 0x06, 0x8e, 0xf8, 0x36, 0x70, + 0x19, 0x40, 0x7c, 0xb5, 0x5c, 0xcb, 0xc5, 0x64, 0xd6, 0xae, 0x2a, 0x08, 0xd6, 0xb0, 0x50, 0x04, + 0x93, 0xf5, 0x90, 0x38, 0xf2, 0x0e, 0xcd, 0x5d, 0x19, 0x86, 0x1e, 0x5c, 0x41, 0xb0, 0x98, 0x26, + 0x86, 0xdb, 0xe9, 0xa3, 0x00, 0x26, 0x1b, 0xc2, 0x57, 0x3a, 0x69, 0xb4, 0x74, 0x74, 0xff, 0x09, + 0x66, 0x90, 0x93, 0x26, 0x84, 0xdb, 0x69, 0xa3, 0x77, 0x60, 0x5a, 0x16, 0xb6, 0xbb, 0xa7, 0xb3, + 0xed, 0x52, 0x5c, 0x38, 0x7f, 0xff, 0x60, 0x66, 0xba, 0x92, 0x8b, 0x85, 0x3b, 0x50, 0x40, 0x18, + 0x06, 0xd8, 0x5b, 0x52, 0x54, 0x1e, 0x66, 0xe7, 0xdc, 0xd3, 0xf9, 0xca, 0x00, 0xba, 0xd6, 0x67, + 0xd9, 0x3b, 0x94, 0x30, 0x29, 0x4f, 0x9e, 0xe5, 0x58, 0x21, 0x16, 0x94, 0xd0, 0x26, 0x0c, 0x3b, + 0xbe, 0x1f, 0xc4, 0x0e, 0x17, 0xa1, 0x46, 0xf2, 0x65, 0x3f, 0x8d, 0xf0, 0x7c, 0x52, 0x83, 0x53, + 0x57, 0x56, 0xaa, 0x1a, 0x04, 0xeb, 0x84, 0xd1, 0x5d, 0x18, 0x0f, 0xee, 0x52, 0xe6, 0x28, 0xb5, + 0x14, 0x51, 0x79, 0x94, 0xb5, 0xf5, 0x62, 0x8f, 0x7a, 0x5a, 0xa3, 0xb2, 0xc6, 0xb5, 0x4c, 0xa2, + 0x38, 0xdd, 0x0a, 0x9a, 0x35, 0xb4, 0xd5, 0x63, 0x89, 0xef, 0x44, 0xa2, 0xad, 0xd6, 0x95, 0xd3, + 0x2c, 0xdc, 0x01, 0x37, 0x91, 0x66, 0xbb, 0x7f, 0x3c, 0x15, 0xee, 0x20, 0x01, 0x61, 0x1d, 0x0f, + 0x6d, 0xc3, 0x48, 0xf2, 0x64, 0x15, 0x46, 0x2c, 0xd8, 0xd2, 0xf0, 0xe5, 0xcb, 0xbd, 0x7d, 0xdc, + 0x8a, 0x56, 0x93, 0xdf, 0x1c, 0xf4, 0x12, 0x6c, 0x50, 0x9e, 0xfe, 0x01, 0x18, 0xd6, 0x26, 0xf6, + 0x28, 0x1e, 0x00, 0xd3, 0xaf, 0xc1, 0x44, 0x7a, 0xea, 0x8e, 0xe4, 0x41, 0xf0, 0xbf, 0x0b, 0x30, + 0x9e, 0xf1, 0x72, 0xc5, 0x62, 0xac, 0xa7, 0x18, 0x6a, 0x12, 0x52, 0xdd, 0x64, 0x8b, 0x85, 0x1e, + 0xd8, 0xa2, 0xe4, 0xd1, 0xc5, 0x5c, 0x1e, 0x2d, 0x58, 0x61, 0xdf, 0x87, 0x61, 0x85, 0xe6, 0xe9, + 0xd3, 0xdf, 0xd3, 0xe9, 0x73, 0x0c, 0xec, 0xd3, 0x38, 0xc0, 0x06, 0x7b, 0x38, 0xc0, 0x7e, 0xa6, + 0x00, 0x13, 0x69, 0x0b, 0xdf, 0x13, 0x78, 0xef, 0x78, 0xdd, 0x78, 0xef, 0xc8, 0xce, 0x58, 0x90, + 0xb6, 0x3b, 0xce, 0x7b, 0xfb, 0xc0, 0xa9, 0xb7, 0x8f, 0xa7, 0x7b, 0xa2, 0xd6, 0xf9, 0x1d, 0xe4, + 0xef, 0x17, 0xe0, 0x74, 0xba, 0xca, 0xa2, 0xe7, 0xb8, 0xbb, 0x27, 0x30, 0x36, 0x37, 0x8d, 0xb1, + 0x79, 0xae, 0x97, 0xaf, 0x61, 0x5d, 0xcb, 0x1d, 0xa0, 0x3b, 0xa9, 0x01, 0x9a, 0xeb, 0x9d, 0x64, + 0xe7, 0x51, 0xfa, 0x46, 0x11, 0xce, 0x67, 0xd6, 0x4b, 0x9e, 0x0b, 0x96, 0x8d, 0xe7, 0x82, 0xcb, + 0xa9, 0xe7, 0x02, 0xbb, 0x73, 0xed, 0xe3, 0x79, 0x3f, 0x10, 0x5e, 0x8e, 0x2c, 0x10, 0xe0, 0x03, + 0xbe, 0x1d, 0x18, 0x5e, 0x8e, 0x8a, 0x10, 0x36, 0xe9, 0x7e, 0x2f, 0xbd, 0x19, 0xfc, 0xbe, 0x05, + 0x67, 0x33, 0xe7, 0xe6, 0x04, 0xf4, 0xea, 0x6b, 0xa6, 0x5e, 0xfd, 0xa9, 0x9e, 0x57, 0x6b, 0x8e, + 0xa2, 0xfd, 0x8f, 0x8b, 0x39, 0xdf, 0xc2, 0x34, 0x93, 0x37, 0x61, 0xd8, 0xa9, 0xd7, 0x49, 0x14, + 0xad, 0x06, 0x0d, 0x15, 0x18, 0xef, 0x39, 0x26, 0x6d, 0x24, 0xc5, 0x87, 0x07, 0x33, 0xd3, 0x69, + 0x12, 0x09, 0x18, 0xeb, 0x14, 0xcc, 0x58, 0x9e, 0x85, 0x63, 0x8d, 0xe5, 0x79, 0x19, 0x60, 0x4f, + 0xe9, 0x2b, 0xd2, 0x6a, 0x4e, 0x4d, 0x93, 0xa1, 0x61, 0xa1, 0x1f, 0x61, 0xb7, 0x00, 0x6e, 0x0c, + 0xc4, 0x97, 0xe2, 0x0b, 0x3d, 0xce, 0x95, 0x6e, 0x58, 0xc4, 0xdd, 0xe9, 0x95, 0x4a, 0x58, 0x91, + 0x44, 0x3f, 0x04, 0x13, 0x11, 0x8f, 0xd6, 0xb2, 0xe8, 0x39, 0x11, 0x73, 0xe2, 0x12, 0xab, 0x90, + 0xf9, 0xc8, 0xd7, 0x52, 0x30, 0xdc, 0x86, 0x8d, 0x96, 0xe5, 0x47, 0xb1, 0xd0, 0x32, 0x7c, 0x61, + 0x5e, 0x4c, 0x3e, 0x48, 0x64, 0x78, 0x99, 0x4a, 0x0f, 0x3f, 0x1b, 0x78, 0xad, 0xa6, 0xfd, 0x33, + 0x7d, 0xf0, 0x68, 0x07, 0x26, 0x86, 0xe6, 0x4d, 0x23, 0x80, 0x67, 0xd2, 0xfa, 0xbf, 0xe9, 0xcc, + 0xca, 0x86, 0x42, 0x30, 0xb5, 0x56, 0x0a, 0x1f, 0x7a, 0xad, 0xfc, 0xa4, 0xa5, 0x69, 0x66, 0xb9, + 0xa9, 0xf0, 0xe7, 0x8e, 0xc8, 0x9c, 0x8f, 0x51, 0x55, 0xbb, 0x99, 0xa1, 0xef, 0xbc, 0xdc, 0x73, + 0x77, 0x7a, 0x56, 0x80, 0x9e, 0xec, 0x93, 0xd1, 0x07, 0x16, 0x3c, 0x9e, 0xd9, 0x5f, 0xc3, 0x68, 0x69, 0x0e, 0x4a, 0x75, 0x5a, 0xa8, 0x39, 0x86, 0x26, 0xee, 0xd9, 0x12, 0x80, 0x13, 0x1c, 0xc3, - 0x36, 0xa9, 0xd0, 0xd5, 0x36, 0xe9, 0xdf, 0x58, 0xd0, 0xb6, 0x80, 0x8f, 0x81, 0x93, 0xae, 0x98, - 0x9c, 0xf4, 0xa3, 0xbd, 0xcc, 0x65, 0x0e, 0x13, 0xfd, 0xce, 0x38, 0x9c, 0xca, 0xf1, 0x04, 0xdb, - 0x85, 0xc9, 0xcd, 0x3a, 0x31, 0x5d, 0x6e, 0xc5, 0xc7, 0x64, 0x7a, 0x27, 0x77, 0xf4, 0xcf, 0xe5, - 0x17, 0xe2, 0x36, 0x14, 0xdc, 0xde, 0x04, 0x7a, 0xcf, 0x82, 0x29, 0xe7, 0x4e, 0xd4, 0x96, 0x80, - 0x4d, 0xac, 0x99, 0xe7, 0x33, 0xf5, 0xb4, 0x5d, 0x12, 0xb6, 0x31, 0xb7, 0xb8, 0xa9, 0x2c, 0x2c, + 0x36, 0xa9, 0xd0, 0xd5, 0x36, 0xe9, 0x5f, 0x5b, 0xd0, 0xb6, 0x80, 0x4f, 0x80, 0x93, 0xae, 0x98, + 0x9c, 0xf4, 0x93, 0xbd, 0xcc, 0x65, 0x0e, 0x13, 0xfd, 0xfa, 0x38, 0x9c, 0xc9, 0xf1, 0x04, 0xdb, + 0x83, 0xc9, 0xad, 0x3a, 0x31, 0x5d, 0x6e, 0xc5, 0xc7, 0x64, 0x7a, 0x27, 0x77, 0xf4, 0xcf, 0xe5, + 0x17, 0xe2, 0x36, 0x14, 0xdc, 0xde, 0x04, 0xfa, 0xc0, 0x82, 0x29, 0xe7, 0x6e, 0xd4, 0x96, 0x80, + 0x4d, 0xac, 0x99, 0x17, 0x33, 0xf5, 0xb4, 0x5d, 0x12, 0xb6, 0x31, 0xb7, 0xb8, 0xa9, 0x2c, 0x2c, 0x9c, 0xd9, 0x16, 0xc2, 0x22, 0x96, 0x29, 0x95, 0xb7, 0x3b, 0x38, 0x85, 0x67, 0xb9, 0xec, 0x71, - 0x9e, 0x2a, 0x21, 0x58, 0xd1, 0x41, 0xb7, 0xa0, 0xb4, 0x29, 0xfd, 0x68, 0x05, 0xcf, 0xce, 0x3c, - 0x04, 0x33, 0x9d, 0x6d, 0xb9, 0xef, 0x88, 0x02, 0xe1, 0x84, 0x14, 0x7a, 0x05, 0x8a, 0xfe, 0x46, - 0xd4, 0x29, 0x87, 0x4c, 0xca, 0x96, 0x8f, 0x7b, 0xf7, 0x5f, 0x5f, 0xae, 0x61, 0x5a, 0x11, 0x5d, - 0x81, 0x62, 0xb8, 0xde, 0x10, 0x4f, 0x0b, 0x99, 0x72, 0x29, 0x5e, 0xa8, 0x64, 0x2f, 0x12, 0x4e, - 0x09, 0x2f, 0x54, 0x30, 0x25, 0x81, 0xaa, 0xd0, 0xcf, 0x9c, 0xa6, 0xc4, 0x0b, 0x42, 0xa6, 0x40, - 0xda, 0xc1, 0xf9, 0x90, 0x87, 0x00, 0x60, 0x08, 0x98, 0x13, 0x42, 0xaf, 0xc2, 0x40, 0x9d, 0xa5, - 0x59, 0x11, 0x8a, 0x9f, 0xec, 0x28, 0x3c, 0x6d, 0x89, 0x58, 0xf8, 0x0b, 0x2a, 0x2f, 0xc7, 0x82, - 0x02, 0x5a, 0x83, 0x81, 0x3a, 0x69, 0x6e, 0x6d, 0x44, 0x42, 0x9f, 0xf3, 0xf1, 0x4c, 0x5a, 0x1d, - 0xb2, 0x0a, 0x09, 0xaa, 0x0c, 0x03, 0x0b, 0x5a, 0xe8, 0x93, 0x50, 0xd8, 0xa8, 0x0b, 0x4f, 0xaa, - 0xcc, 0x37, 0x04, 0x33, 0x2c, 0xc3, 0xc2, 0xc0, 0xbd, 0xfd, 0x99, 0xc2, 0xf2, 0x22, 0x2e, 0x6c, - 0xd4, 0xd1, 0x75, 0x18, 0xdc, 0xe0, 0xbe, 0xf5, 0x22, 0x1c, 0xf6, 0xe3, 0xd9, 0x6e, 0xff, 0x6d, - 0xee, 0xf7, 0xdc, 0x03, 0x48, 0x00, 0xb0, 0x24, 0x82, 0xd6, 0x00, 0x36, 0x54, 0x8c, 0x00, 0x11, - 0x0f, 0xfb, 0xa3, 0xbd, 0x44, 0x12, 0x10, 0xca, 0x0d, 0x55, 0x8a, 0x35, 0x3a, 0xe8, 0x33, 0x50, - 0x72, 0x64, 0x9a, 0x2f, 0x16, 0x0b, 0xdb, 0x94, 0x35, 0x92, 0x4d, 0xd8, 0x39, 0x03, 0x1a, 0x5f, - 0xc1, 0x0a, 0x09, 0x27, 0x44, 0xd1, 0x36, 0x8c, 0xee, 0x46, 0xcd, 0x2d, 0x22, 0x37, 0x2d, 0x0b, - 0x90, 0x9d, 0x73, 0x48, 0xdd, 0x12, 0x88, 0x6e, 0x18, 0xb7, 0x1c, 0xaf, 0x8d, 0xcf, 0x30, 0x77, - 0xb1, 0x5b, 0x3a, 0x31, 0x6c, 0xd2, 0xa6, 0x83, 0xfe, 0x4e, 0x2b, 0x58, 0xdf, 0x8b, 0x89, 0x08, - 0x9b, 0x9d, 0x39, 0xe8, 0xaf, 0x71, 0x94, 0xf6, 0x41, 0x17, 0x00, 0x2c, 0x89, 0xd0, 0x6d, 0xed, - 0xc8, 0x14, 0x7a, 0x42, 0x83, 0xf3, 0x44, 0xee, 0xf0, 0xb4, 0xf5, 0x37, 0x19, 0x14, 0xc6, 0x0f, - 0x13, 0x52, 0x8c, 0x0f, 0x36, 0xb7, 0x82, 0x38, 0xf0, 0x53, 0x3c, 0x78, 0x32, 0x9f, 0x0f, 0x56, - 0x33, 0xf0, 0xdb, 0xf9, 0x60, 0x16, 0x16, 0xce, 0x6c, 0x0b, 0x35, 0x60, 0xac, 0x19, 0x84, 0xf1, - 0x9d, 0x20, 0x94, 0xab, 0x0a, 0x75, 0xb8, 0xda, 0x1b, 0x98, 0xa2, 0x45, 0x66, 0xfd, 0x6d, 0x42, - 0x70, 0x8a, 0x26, 0xfa, 0x34, 0x0c, 0x46, 0x75, 0xc7, 0x23, 0x2b, 0x37, 0xca, 0x27, 0xf2, 0x0f, - 0x98, 0x1a, 0x47, 0xc9, 0x59, 0x5d, 0x6c, 0x72, 0x04, 0x0a, 0x96, 0xe4, 0xd0, 0x32, 0xf4, 0xb3, - 0x5c, 0x0c, 0x2c, 0xe2, 0x77, 0x4e, 0xe4, 0xa4, 0x36, 0x0b, 0x69, 0xce, 0x87, 0x58, 0x31, 0xe6, - 0xd5, 0xe9, 0x1e, 0x10, 0x12, 0x6e, 0x10, 0x95, 0x4f, 0xe6, 0xef, 0x01, 0x21, 0x18, 0xdf, 0xa8, - 0x75, 0xda, 0x03, 0x0a, 0x09, 0x27, 0x44, 0x29, 0x17, 0xa6, 0x9c, 0xf3, 0x54, 0x3e, 0x17, 0xce, - 0xe7, 0x9b, 0x8c, 0x0b, 0x53, 0xae, 0x49, 0x49, 0xd8, 0xef, 0x0d, 0xb6, 0x4b, 0x25, 0xec, 0x4e, - 0xf4, 0x39, 0xab, 0xcd, 0x60, 0xe0, 0x13, 0xbd, 0xaa, 0x68, 0x8e, 0x50, 0x1e, 0x7d, 0xcf, 0x82, - 0x53, 0xcd, 0xcc, 0x0f, 0x11, 0x47, 0x7c, 0x6f, 0x9a, 0x1e, 0xfe, 0xe9, 0x2a, 0x2a, 0x7f, 0x36, - 0x1c, 0xe7, 0xb4, 0x94, 0x96, 0xf9, 0x8b, 0xef, 0x5b, 0xe6, 0x5f, 0x85, 0x21, 0x26, 0x46, 0x26, - 0x61, 0xba, 0x7a, 0x32, 0xbb, 0x63, 0xc2, 0xc2, 0xa2, 0xa8, 0x88, 0x15, 0x09, 0xf4, 0x8b, 0x16, - 0x9c, 0x49, 0x77, 0x1d, 0x13, 0x06, 0x16, 0x21, 0x5f, 0xf9, 0x75, 0x6c, 0x59, 0x7c, 0xff, 0x99, - 0x6a, 0x27, 0xe4, 0x83, 0x6e, 0x08, 0xb8, 0x73, 0x63, 0xa8, 0x92, 0x71, 0x1f, 0x1c, 0x30, 0xdf, - 0x13, 0x7b, 0xb8, 0x13, 0x3e, 0x0f, 0x23, 0x3b, 0x41, 0xcb, 0x97, 0x3e, 0x31, 0xc2, 0xe3, 0x99, - 0xe9, 0xae, 0x57, 0xb5, 0x72, 0x6c, 0x60, 0xa5, 0x6e, 0x92, 0x43, 0xf7, 0x7b, 0x93, 0x3c, 0xde, - 0xfb, 0xc9, 0x57, 0xac, 0x0c, 0xc1, 0x9a, 0xdf, 0x58, 0x5f, 0x36, 0x6f, 0xac, 0xe7, 0xd3, 0x37, - 0xd6, 0x36, 0x0d, 0xa5, 0x71, 0x59, 0xed, 0x3d, 0x24, 0x76, 0xaf, 0xf1, 0xd0, 0x6c, 0x0f, 0xce, - 0x75, 0x3b, 0x38, 0x98, 0x09, 0x63, 0x43, 0xbd, 0xed, 0x27, 0x26, 0x8c, 0x8d, 0x95, 0x0a, 0x66, - 0x90, 0x5e, 0x23, 0xeb, 0xd8, 0xff, 0xdd, 0x82, 0x62, 0x35, 0x68, 0x1c, 0x83, 0xc6, 0xf5, 0x53, - 0x86, 0xc6, 0xf5, 0xe1, 0x9c, 0x64, 0xc1, 0xb9, 0xfa, 0xd5, 0xa5, 0x94, 0x7e, 0xf5, 0x4c, 0x1e, - 0x81, 0xce, 0xda, 0xd4, 0x5f, 0x2b, 0x82, 0x9e, 0xda, 0x18, 0xfd, 0xbb, 0xfb, 0xb1, 0x85, 0x2f, - 0x76, 0xca, 0x76, 0x2c, 0x28, 0x33, 0xcb, 0x47, 0xe9, 0x66, 0xfb, 0x23, 0x66, 0x12, 0x7f, 0x9b, - 0xb8, 0x9b, 0x5b, 0x31, 0x69, 0xa4, 0x3f, 0xe7, 0xf8, 0x4c, 0xe2, 0xff, 0xab, 0x05, 0xe3, 0xa9, - 0xd6, 0x91, 0x97, 0xe5, 0xb3, 0x77, 0x9f, 0x9a, 0xb6, 0xc9, 0xae, 0x4e, 0x7e, 0xb3, 0x00, 0xea, - 0x39, 0x4b, 0x6a, 0xa1, 0x98, 0x5c, 0xae, 0xde, 0xbb, 0x22, 0xac, 0x61, 0xa0, 0x17, 0x60, 0x38, - 0x0e, 0x9a, 0x81, 0x17, 0x6c, 0xee, 0x5d, 0x25, 0x32, 0x96, 0x93, 0x7a, 0x74, 0x5c, 0x4b, 0x40, - 0x58, 0xc7, 0xb3, 0x7f, 0xa3, 0x08, 0xe9, 0x74, 0xd8, 0x3f, 0x59, 0x93, 0x1f, 0xce, 0x35, 0xf9, - 0x5d, 0x0b, 0x26, 0x68, 0xeb, 0xcc, 0xaa, 0x4c, 0x1e, 0x87, 0x2a, 0x35, 0x8f, 0xd5, 0x21, 0x35, - 0xcf, 0x79, 0xca, 0xbb, 0x1a, 0x41, 0x2b, 0x16, 0x5a, 0x2c, 0x8d, 0x39, 0xd1, 0x52, 0x2c, 0xa0, - 0x02, 0x8f, 0x84, 0xa1, 0xf0, 0xc4, 0xd3, 0xf1, 0x48, 0x18, 0x62, 0x01, 0x95, 0x99, 0x7b, 0xfa, - 0x72, 0x32, 0xf7, 0xb0, 0x30, 0x88, 0xc2, 0x92, 0x49, 0x08, 0x26, 0x5a, 0x18, 0x44, 0x69, 0xe2, - 0x94, 0xe0, 0xd8, 0x5f, 0x2b, 0xc2, 0x48, 0x35, 0x68, 0x24, 0x0f, 0x4a, 0xcf, 0x1b, 0x0f, 0x4a, - 0xe7, 0x52, 0x0f, 0x4a, 0x13, 0x3a, 0xee, 0x4f, 0x9e, 0x8f, 0x3e, 0xa8, 0xe7, 0xa3, 0xbf, 0xb0, - 0x60, 0xac, 0x1a, 0x34, 0xe8, 0x02, 0xfd, 0x71, 0x5a, 0x8d, 0x7a, 0x90, 0xcd, 0x81, 0x0e, 0x41, - 0x36, 0xff, 0x91, 0x05, 0x83, 0xd5, 0xa0, 0x71, 0x0c, 0x1a, 0xde, 0x97, 0x4d, 0x0d, 0xef, 0x43, - 0x39, 0x5c, 0x36, 0x47, 0xa9, 0xfb, 0xf5, 0x22, 0x8c, 0xd2, 0x7e, 0x06, 0x9b, 0x72, 0x96, 0x8c, - 0x11, 0xb1, 0x7a, 0x18, 0x11, 0x2a, 0xcc, 0x05, 0x9e, 0x17, 0xdc, 0x49, 0xcf, 0xd8, 0x32, 0x2b, - 0xc5, 0x02, 0x8a, 0x9e, 0x86, 0xa1, 0x66, 0x48, 0x76, 0xdd, 0xa0, 0x15, 0xa5, 0x7d, 0x79, 0xab, - 0xa2, 0x1c, 0x2b, 0x0c, 0x2a, 0xff, 0x47, 0xae, 0x5f, 0x27, 0xd2, 0xba, 0xa9, 0x8f, 0x59, 0x37, - 0xf1, 0x38, 0xc5, 0x5a, 0x39, 0x36, 0xb0, 0xd0, 0x6d, 0x28, 0xb1, 0xff, 0x6c, 0xdf, 0x1c, 0x3e, - 0x73, 0x8e, 0x48, 0x0e, 0x20, 0x08, 0xe0, 0x84, 0x16, 0xba, 0x08, 0x10, 0x4b, 0x3b, 0xac, 0x48, - 0xb8, 0x9a, 0x2b, 0x89, 0x52, 0x59, 0x68, 0x45, 0x58, 0xc3, 0x42, 0x4f, 0x41, 0x29, 0x76, 0x5c, - 0xef, 0x9a, 0xeb, 0x93, 0x48, 0xd8, 0xb1, 0x89, 0xd8, 0xff, 0xa2, 0x10, 0x27, 0x70, 0x7a, 0xa2, - 0xb3, 0x40, 0x06, 0x3c, 0xef, 0xd6, 0x10, 0xc3, 0x66, 0x27, 0xfa, 0x35, 0x55, 0x8a, 0x35, 0x0c, - 0xfb, 0x12, 0x9c, 0xac, 0x06, 0x8d, 0x6a, 0x10, 0xc6, 0xcb, 0x41, 0x78, 0xc7, 0x09, 0x1b, 0x72, - 0xfe, 0x66, 0x64, 0x18, 0x7a, 0x7a, 0xea, 0xf6, 0x73, 0xfd, 0x84, 0x11, 0x60, 0xfe, 0x39, 0x76, - 0xa6, 0x1f, 0xd2, 0xe9, 0xe8, 0x3f, 0x14, 0x00, 0x55, 0x99, 0xa5, 0x98, 0x91, 0xfb, 0xed, 0x2d, - 0x18, 0x8b, 0xc8, 0x35, 0xd7, 0x6f, 0xdd, 0x95, 0xf7, 0xb4, 0x0e, 0x1e, 0x5d, 0xb5, 0x25, 0x1d, - 0x93, 0x6b, 0x7b, 0xcc, 0x32, 0x9c, 0xa2, 0x46, 0x87, 0x30, 0x6c, 0xf9, 0xf3, 0xd1, 0xcd, 0x88, - 0x84, 0x22, 0x19, 0x19, 0x1b, 0x42, 0x2c, 0x0b, 0x71, 0x02, 0xa7, 0x4b, 0x86, 0xfd, 0xb9, 0x1e, - 0xf8, 0x38, 0x08, 0x62, 0xb9, 0xc8, 0x58, 0x3a, 0x1b, 0xad, 0x1c, 0x1b, 0x58, 0x68, 0x19, 0x50, - 0xd4, 0x6a, 0x36, 0x3d, 0xf6, 0xfc, 0xea, 0x78, 0x97, 0xc3, 0xa0, 0xd5, 0xe4, 0x4f, 0x5f, 0x22, - 0x13, 0x4c, 0xad, 0x0d, 0x8a, 0x33, 0x6a, 0x50, 0xc6, 0xb0, 0x11, 0xb1, 0xdf, 0x22, 0x96, 0x01, - 0xd7, 0xbb, 0xd6, 0x58, 0x11, 0x96, 0x30, 0xfb, 0xb3, 0xec, 0x30, 0x63, 0x39, 0xa4, 0xe2, 0x56, - 0x48, 0xd0, 0x0e, 0x8c, 0x36, 0xd9, 0x81, 0x15, 0x87, 0x81, 0xe7, 0x11, 0x29, 0x37, 0xde, 0x9f, - 0xd5, 0x1a, 0xcf, 0x29, 0xa3, 0x93, 0xc3, 0x26, 0x75, 0xfb, 0x73, 0xe3, 0x8c, 0x2f, 0xd5, 0xf8, - 0xa5, 0x65, 0x50, 0xd8, 0xa2, 0x0b, 0x09, 0x6d, 0x3a, 0x3f, 0xeb, 0x5c, 0xc2, 0xe9, 0x85, 0x3d, - 0x3b, 0x96, 0x75, 0xd1, 0x6b, 0xec, 0xcd, 0x90, 0x33, 0x83, 0x6e, 0xc9, 0x68, 0x39, 0x96, 0xf1, - 0x3c, 0x28, 0x2a, 0x62, 0x8d, 0x08, 0xba, 0x06, 0xa3, 0x22, 0xe5, 0x90, 0x50, 0x60, 0x14, 0x8d, - 0xeb, 0xef, 0x28, 0xd6, 0x81, 0x07, 0xe9, 0x02, 0x6c, 0x56, 0x46, 0x9b, 0x70, 0x46, 0xcb, 0xbf, - 0x97, 0x61, 0x39, 0xc9, 0x79, 0xcb, 0xa3, 0xf7, 0xf6, 0x67, 0xce, 0xac, 0x75, 0x42, 0xc4, 0x9d, - 0xe9, 0xa0, 0x1b, 0x70, 0xd2, 0xa9, 0xc7, 0xee, 0x2e, 0xa9, 0x10, 0xa7, 0xe1, 0xb9, 0x3e, 0x31, - 0x83, 0x5b, 0x9c, 0xbe, 0xb7, 0x3f, 0x73, 0x72, 0x3e, 0x0b, 0x01, 0x67, 0xd7, 0x43, 0x2f, 0x43, - 0xa9, 0xe1, 0x47, 0x62, 0x0c, 0x06, 0x8c, 0xd4, 0x92, 0xa5, 0xca, 0xf5, 0x9a, 0xfa, 0xfe, 0xe4, - 0x0f, 0x4e, 0x2a, 0xa0, 0x4d, 0x18, 0xd1, 0x1d, 0xd8, 0x44, 0x5a, 0xd2, 0x67, 0x3a, 0xdc, 0x6d, - 0x0d, 0xaf, 0x2f, 0xae, 0xbd, 0x53, 0x76, 0xc9, 0x86, 0x43, 0x98, 0x41, 0x18, 0xbd, 0x0a, 0x28, - 0x22, 0xe1, 0xae, 0x5b, 0x27, 0xf3, 0x75, 0x16, 0xc8, 0x9b, 0xe9, 0x7c, 0x86, 0x0c, 0x27, 0x1b, - 0x54, 0x6b, 0xc3, 0xc0, 0x19, 0xb5, 0xd0, 0x15, 0xca, 0x51, 0xf4, 0x52, 0x61, 0x46, 0x2e, 0xc5, - 0xbc, 0x72, 0x85, 0x34, 0x43, 0x52, 0x77, 0x62, 0xd2, 0x30, 0x29, 0xe2, 0x54, 0x3d, 0x7a, 0xde, - 0xa8, 0xfc, 0x28, 0x60, 0x1a, 0x3f, 0xb7, 0xe7, 0x48, 0xa1, 0x37, 0xa4, 0xad, 0x20, 0x8a, 0xaf, - 0x93, 0xf8, 0x4e, 0x10, 0x6e, 0x8b, 0x88, 0x74, 0x49, 0x70, 0xd4, 0x04, 0x84, 0x75, 0x3c, 0x2a, - 0x11, 0xb1, 0x47, 0xbb, 0x95, 0x0a, 0x7b, 0x43, 0x19, 0x4a, 0xf6, 0xc9, 0x15, 0x5e, 0x8c, 0x25, - 0x5c, 0xa2, 0xae, 0x54, 0x17, 0xd9, 0xcb, 0x48, 0x0a, 0x75, 0xa5, 0xba, 0x88, 0x25, 0x1c, 0x91, - 0xf6, 0xb4, 0x9d, 0x63, 0xf9, 0x6f, 0x5a, 0xed, 0x7c, 0xb9, 0xc7, 0xcc, 0x9d, 0x3e, 0x4c, 0xa8, - 0x84, 0xa1, 0x3c, 0x54, 0x5f, 0x54, 0x1e, 0x67, 0x8b, 0xa4, 0xf7, 0x38, 0x7f, 0x4a, 0xa7, 0xb7, - 0x92, 0xa2, 0x84, 0xdb, 0x68, 0x1b, 0x41, 0x53, 0x26, 0xba, 0xe6, 0xb7, 0x99, 0x83, 0x52, 0xd4, - 0x5a, 0x6f, 0x04, 0x3b, 0x8e, 0xeb, 0xb3, 0x87, 0x0c, 0x4d, 0x10, 0xa9, 0x49, 0x00, 0x4e, 0x70, - 0xd0, 0x32, 0x0c, 0x39, 0xe2, 0xf2, 0x25, 0x9e, 0x1e, 0x32, 0xa3, 0x28, 0xc8, 0x0b, 0x1a, 0xd7, - 0xa7, 0xca, 0x7f, 0x58, 0xd5, 0x45, 0x2f, 0xc1, 0xa8, 0x70, 0xf4, 0x13, 0x36, 0xba, 0x27, 0x4c, - 0x9f, 0x90, 0x9a, 0x0e, 0xc4, 0x26, 0x2e, 0xfa, 0x39, 0x18, 0xa3, 0x54, 0x12, 0xc6, 0x56, 0x9e, - 0xea, 0x85, 0x23, 0x6a, 0x79, 0x0b, 0xf4, 0xca, 0x38, 0x45, 0x0c, 0x35, 0xe0, 0x11, 0xa7, 0x15, - 0x07, 0x4c, 0xe9, 0x69, 0xae, 0xff, 0xb5, 0x60, 0x9b, 0xf8, 0xec, 0xbd, 0x61, 0x68, 0xe1, 0xdc, - 0xbd, 0xfd, 0x99, 0x47, 0xe6, 0x3b, 0xe0, 0xe1, 0x8e, 0x54, 0xd0, 0x4d, 0x18, 0x8e, 0x03, 0x4f, - 0x18, 0xd7, 0x47, 0xe5, 0x53, 0xf9, 0x41, 0x9f, 0xd6, 0x14, 0x9a, 0xae, 0x4e, 0x50, 0x55, 0xb1, - 0x4e, 0x07, 0xad, 0xf1, 0x3d, 0xc6, 0xc2, 0xe1, 0x92, 0xa8, 0xfc, 0x50, 0xfe, 0xc0, 0xa8, 0xa8, - 0xb9, 0xe6, 0x16, 0x14, 0x35, 0xb1, 0x4e, 0x06, 0x5d, 0x86, 0xc9, 0x66, 0xe8, 0x06, 0x6c, 0x61, - 0x2b, 0x85, 0x73, 0xd9, 0x08, 0x07, 0x38, 0x59, 0x4d, 0x23, 0xe0, 0xf6, 0x3a, 0xe8, 0x02, 0x15, - 0x50, 0x79, 0x61, 0xf9, 0x34, 0xcf, 0x7b, 0xc4, 0x85, 0x53, 0x5e, 0x86, 0x15, 0x74, 0xfa, 0xa7, - 0x61, 0xb2, 0x8d, 0x53, 0x1e, 0xca, 0xd0, 0xf9, 0x9f, 0xf7, 0x43, 0x49, 0xa9, 0x03, 0xd1, 0x9c, - 0xa9, 0xe5, 0x3d, 0x9d, 0xd6, 0xf2, 0x0e, 0x51, 0x79, 0x4d, 0x57, 0xec, 0xae, 0x19, 0x66, 0x3a, - 0x85, 0xfc, 0x7c, 0x43, 0xfa, 0x5d, 0xb8, 0xab, 0x57, 0xa2, 0x76, 0xbb, 0x2b, 0xf6, 0xac, 0x2e, - 0xee, 0xeb, 0x78, 0x61, 0xec, 0x31, 0x85, 0x2a, 0xbd, 0x1a, 0x36, 0x83, 0xc6, 0x4a, 0x35, 0x9d, - 0x53, 0xb0, 0x4a, 0x0b, 0x31, 0x87, 0x31, 0xe1, 0x9e, 0x1e, 0xeb, 0x4c, 0xb8, 0x1f, 0xbc, 0x4f, - 0xe1, 0x5e, 0x12, 0xc0, 0x09, 0x2d, 0xe4, 0xc1, 0x64, 0xdd, 0x4c, 0x07, 0xa9, 0x3c, 0x11, 0x1f, - 0xeb, 0x9a, 0x98, 0xb1, 0xa5, 0xe5, 0x89, 0x5a, 0x4c, 0x53, 0xc1, 0xed, 0x84, 0xd1, 0x4b, 0x30, - 0xf4, 0x4e, 0x10, 0xb1, 0x65, 0x27, 0xce, 0x36, 0xe9, 0xfb, 0x35, 0xf4, 0xda, 0x8d, 0x1a, 0x2b, - 0x3f, 0xd8, 0x9f, 0x19, 0xae, 0x06, 0x0d, 0xf9, 0x17, 0xab, 0x0a, 0xe8, 0x2e, 0x9c, 0x34, 0x38, - 0x82, 0xea, 0x2e, 0xf4, 0xde, 0xdd, 0x33, 0xa2, 0xb9, 0x93, 0x2b, 0x59, 0x94, 0x70, 0x76, 0x03, - 0xf6, 0x37, 0xb8, 0xd2, 0x53, 0xa8, 0x46, 0x48, 0xd4, 0xf2, 0x8e, 0x23, 0x19, 0xcc, 0x92, 0xa1, - 0xb5, 0xb9, 0x6f, 0xc5, 0xfa, 0xef, 0x5b, 0x4c, 0xb1, 0xbe, 0x46, 0x76, 0x9a, 0x9e, 0x13, 0x1f, - 0x87, 0x79, 0xfb, 0x6b, 0x30, 0x14, 0x8b, 0xd6, 0x3a, 0xe5, 0xaf, 0xd1, 0x3a, 0xc5, 0x1e, 0x17, - 0xd4, 0x81, 0x28, 0x4b, 0xb1, 0x22, 0x63, 0xff, 0x4b, 0x3e, 0x03, 0x12, 0x72, 0x0c, 0xba, 0x85, - 0x8a, 0xa9, 0x5b, 0x98, 0xe9, 0xf2, 0x05, 0x39, 0x3a, 0x86, 0x7f, 0x61, 0xf6, 0x9b, 0xdd, 0x3d, - 0x3e, 0xec, 0x2f, 0x3a, 0xf6, 0x2f, 0x5b, 0x30, 0x95, 0x65, 0xa4, 0x40, 0x85, 0x18, 0x7e, 0xf3, - 0x51, 0x2f, 0x5c, 0x6a, 0x04, 0x6f, 0x89, 0x72, 0xac, 0x30, 0x7a, 0xce, 0x21, 0x71, 0xb8, 0x40, - 0x67, 0x37, 0xc0, 0xcc, 0x1c, 0x8a, 0x5e, 0xe1, 0xfe, 0x2a, 0x96, 0x4a, 0xed, 0x79, 0x38, 0x5f, - 0x15, 0xfb, 0xab, 0x05, 0x98, 0xe2, 0x2a, 0xea, 0xf9, 0xdd, 0xc0, 0x6d, 0x54, 0x83, 0x86, 0xf0, - 0xde, 0x79, 0x03, 0x46, 0x9a, 0xda, 0x75, 0xb5, 0x53, 0xa8, 0x25, 0xfd, 0x5a, 0x9b, 0x5c, 0x1b, - 0xf4, 0x52, 0x6c, 0xd0, 0x42, 0x0d, 0x18, 0x21, 0xbb, 0x6e, 0x5d, 0xe9, 0x39, 0x0b, 0x87, 0x66, - 0xe9, 0xaa, 0x95, 0x25, 0x8d, 0x0e, 0x36, 0xa8, 0x3e, 0x80, 0x4c, 0x4f, 0xf6, 0x97, 0x2d, 0x78, - 0x28, 0x27, 0x30, 0x13, 0x6d, 0xee, 0x0e, 0x7b, 0x0c, 0x10, 0x69, 0x68, 0x55, 0x73, 0xfc, 0x89, - 0x00, 0x0b, 0x28, 0xfa, 0x34, 0x00, 0x57, 0xf1, 0x53, 0x29, 0x5a, 0x7c, 0x7a, 0x6f, 0x01, 0x4b, - 0xb4, 0xa8, 0x16, 0xb2, 0x3e, 0xd6, 0x68, 0xd9, 0xbf, 0x5e, 0x84, 0x7e, 0xa6, 0x52, 0x46, 0xcb, - 0x30, 0xb8, 0xc5, 0xc3, 0x40, 0xf7, 0x12, 0x71, 0x3a, 0xb9, 0x8e, 0xf0, 0x02, 0x2c, 0x2b, 0xa3, - 0x55, 0x38, 0x21, 0x3c, 0xc4, 0x2a, 0xc4, 0x73, 0xf6, 0xe4, 0xad, 0x96, 0xa7, 0xff, 0x91, 0xa9, - 0x29, 0x4e, 0xac, 0xb4, 0xa3, 0xe0, 0xac, 0x7a, 0xe8, 0x95, 0xb6, 0xe0, 0x8f, 0x3c, 0x80, 0xb6, - 0x92, 0x81, 0xbb, 0x04, 0x80, 0x7c, 0x09, 0x46, 0x9b, 0x6d, 0xf7, 0x77, 0x2d, 0x1d, 0xbc, 0x79, - 0x67, 0x37, 0x71, 0x99, 0x75, 0x42, 0x8b, 0xd9, 0x62, 0xac, 0x6d, 0x85, 0x24, 0xda, 0x0a, 0xbc, - 0x86, 0xc8, 0x7d, 0x9c, 0x58, 0x27, 0xa4, 0xe0, 0xb8, 0xad, 0x06, 0xa5, 0xb2, 0xe1, 0xb8, 0x5e, - 0x2b, 0x24, 0x09, 0x95, 0x01, 0x93, 0xca, 0x72, 0x0a, 0x8e, 0xdb, 0x6a, 0xd0, 0x75, 0x74, 0x52, - 0x24, 0xce, 0x95, 0x71, 0x03, 0x94, 0xc9, 0xc9, 0xa0, 0xf4, 0x1f, 0xe8, 0x10, 0xcb, 0x46, 0x3c, - 0xf9, 0xab, 0xd4, 0xbb, 0x5a, 0x5a, 0x46, 0xe1, 0x39, 0x20, 0xa9, 0xdc, 0x4f, 0xfa, 0xd6, 0x3f, - 0xb6, 0xe0, 0x44, 0x86, 0x69, 0x1b, 0x67, 0x55, 0x9b, 0x6e, 0x14, 0xab, 0xac, 0x33, 0x1a, 0xab, - 0xe2, 0xe5, 0x58, 0x61, 0xd0, 0xfd, 0xc0, 0x99, 0x61, 0x9a, 0x01, 0x0a, 0xd3, 0x11, 0x01, 0x3d, - 0x1c, 0x03, 0x44, 0xe7, 0xa0, 0xaf, 0x15, 0x91, 0x50, 0xe6, 0x3d, 0x95, 0xfc, 0x9b, 0x69, 0x04, - 0x19, 0x84, 0x4a, 0x94, 0x9b, 0x4a, 0x19, 0xa7, 0x49, 0x94, 0x5c, 0x1d, 0xc7, 0x61, 0xf6, 0x17, - 0x8b, 0x70, 0x3a, 0xd7, 0x60, 0x95, 0x76, 0x69, 0x27, 0xf0, 0xdd, 0x38, 0x50, 0x51, 0x08, 0x79, - 0xd0, 0x15, 0xd2, 0xdc, 0x5a, 0x15, 0xe5, 0x58, 0x61, 0xa0, 0xf3, 0x32, 0x2d, 0x76, 0x3a, 0xaf, - 0xce, 0x42, 0xc5, 0xc8, 0x8c, 0xdd, 0x6b, 0x82, 0xac, 0xc7, 0xa0, 0xaf, 0x19, 0x04, 0x5e, 0x9a, - 0x19, 0xd1, 0xee, 0x06, 0x81, 0x87, 0x19, 0x10, 0x7d, 0x4c, 0x8c, 0x43, 0xea, 0xe5, 0x02, 0x3b, - 0x8d, 0x20, 0xd2, 0x06, 0xe3, 0x09, 0x18, 0xdc, 0x26, 0x7b, 0xa1, 0xeb, 0x6f, 0xa6, 0xdf, 0x6d, - 0xae, 0xf2, 0x62, 0x2c, 0xe1, 0x66, 0x5a, 0x89, 0xc1, 0xa3, 0x48, 0x2b, 0xa1, 0xcf, 0xec, 0x50, - 0xd7, 0xa3, 0xed, 0x0b, 0x45, 0x18, 0xc7, 0x0b, 0x95, 0x9f, 0x4c, 0xc4, 0xcd, 0xf6, 0x89, 0x38, - 0xea, 0x64, 0x63, 0xdd, 0x67, 0xe3, 0xeb, 0x16, 0x8c, 0xb3, 0xd0, 0xcb, 0x22, 0x68, 0x88, 0x1b, - 0xf8, 0xc7, 0x20, 0xba, 0x3d, 0x06, 0xfd, 0x21, 0x6d, 0x34, 0x9d, 0x41, 0x88, 0xf5, 0x04, 0x73, - 0x18, 0x7a, 0x04, 0xfa, 0x58, 0x17, 0xe8, 0xe4, 0x8d, 0xf0, 0xe4, 0x0b, 0x15, 0x27, 0x76, 0x30, - 0x2b, 0x65, 0xde, 0x9b, 0x98, 0x34, 0x3d, 0x97, 0x77, 0x3a, 0xd1, 0x80, 0x7f, 0x38, 0xbc, 0x37, - 0x33, 0xbb, 0xf6, 0xfe, 0xbc, 0x37, 0xb3, 0x49, 0x76, 0xbe, 0x16, 0xfd, 0x8f, 0x02, 0x9c, 0xcd, - 0xac, 0xd7, 0xb3, 0xf7, 0x66, 0xe7, 0xda, 0x47, 0xf3, 0xfc, 0x9e, 0xfd, 0x2a, 0x5e, 0x3c, 0xc6, - 0x57, 0xf1, 0xbe, 0x5e, 0x25, 0xc7, 0xfe, 0x1e, 0x9c, 0x2a, 0x33, 0x87, 0xec, 0x43, 0xe2, 0x54, - 0x99, 0xd9, 0xb7, 0x9c, 0x6b, 0xdd, 0x0f, 0x0b, 0x39, 0xdf, 0xc2, 0x2e, 0x78, 0x17, 0x28, 0x9f, - 0x61, 0xc0, 0x48, 0x48, 0xc2, 0x23, 0x9c, 0xc7, 0xf0, 0x32, 0xac, 0xa0, 0xc8, 0xd5, 0xdc, 0x13, - 0x79, 0xd7, 0x5e, 0x3a, 0xd4, 0x96, 0x99, 0x35, 0x1f, 0x2c, 0xf4, 0x08, 0x27, 0x69, 0x57, 0xc5, - 0x55, 0xed, 0x52, 0x5e, 0xec, 0xfd, 0x52, 0x3e, 0x92, 0x7d, 0x21, 0x47, 0xf3, 0x30, 0xbe, 0xe3, - 0xfa, 0x2c, 0x0d, 0xb8, 0x29, 0x8a, 0x2a, 0x6f, 0xfd, 0x55, 0x13, 0x8c, 0xd3, 0xf8, 0xd3, 0x2f, - 0xc1, 0xe8, 0xfd, 0x6b, 0x11, 0xbf, 0x5b, 0x84, 0x87, 0x3b, 0x6c, 0x7b, 0xce, 0xeb, 0x8d, 0x39, - 0xd0, 0x78, 0x7d, 0xdb, 0x3c, 0x54, 0x61, 0x6a, 0xa3, 0xe5, 0x79, 0x7b, 0xcc, 0xf0, 0x8c, 0x34, - 0x24, 0x86, 0x90, 0x15, 0x55, 0x5c, 0xf5, 0xe5, 0x0c, 0x1c, 0x9c, 0x59, 0x13, 0xbd, 0x0a, 0x28, - 0x58, 0x67, 0xb1, 0xbe, 0x1b, 0x49, 0xdc, 0x16, 0x36, 0xf0, 0xc5, 0x64, 0x33, 0xde, 0x68, 0xc3, - 0xc0, 0x19, 0xb5, 0xa8, 0xd0, 0x4f, 0x4f, 0xa5, 0x3d, 0xd5, 0xad, 0x94, 0xd0, 0x8f, 0x75, 0x20, - 0x36, 0x71, 0xd1, 0x65, 0x98, 0x74, 0x76, 0x1d, 0x97, 0xc7, 0xf1, 0x93, 0x04, 0xb8, 0xd4, 0xaf, - 0x74, 0x77, 0xf3, 0x69, 0x04, 0xdc, 0x5e, 0x27, 0xe5, 0x1f, 0x39, 0x90, 0xef, 0x1f, 0xd9, 0x99, - 0x2f, 0x76, 0x53, 0xc5, 0xda, 0xff, 0xd9, 0xa2, 0xc7, 0x57, 0x46, 0xde, 0x69, 0x3a, 0x0e, 0x4a, - 0xa5, 0xa8, 0xb9, 0x2a, 0xaa, 0x71, 0x58, 0xd4, 0x81, 0xd8, 0xc4, 0xe5, 0x0b, 0x22, 0x4a, 0xec, - 0xe7, 0x0d, 0xd1, 0x5d, 0xf8, 0x22, 0x2b, 0x0c, 0xf4, 0x3a, 0x0c, 0x36, 0xdc, 0x5d, 0x37, 0x0a, - 0x42, 0xb1, 0x59, 0x0e, 0x69, 0xe3, 0x9c, 0xf0, 0xc1, 0x0a, 0x27, 0x83, 0x25, 0x3d, 0xfb, 0x0b, - 0x05, 0x18, 0x95, 0x2d, 0xbe, 0xd6, 0x0a, 0x62, 0xe7, 0x18, 0x8e, 0xe5, 0xcb, 0xc6, 0xb1, 0xfc, - 0xb1, 0x4e, 0x0e, 0xd9, 0xac, 0x4b, 0xb9, 0xc7, 0xf1, 0x8d, 0xd4, 0x71, 0xfc, 0x78, 0x77, 0x52, - 0x9d, 0x8f, 0xe1, 0x7f, 0x65, 0xc1, 0xa4, 0x81, 0x7f, 0x0c, 0xa7, 0xc1, 0xb2, 0x79, 0x1a, 0x3c, - 0xda, 0xf5, 0x1b, 0x72, 0x4e, 0x81, 0xaf, 0x14, 0x52, 0x7d, 0x67, 0xdc, 0xff, 0x1d, 0xe8, 0xdb, - 0x72, 0xc2, 0x46, 0xa7, 0x68, 0xb4, 0x6d, 0x95, 0x66, 0xaf, 0x38, 0x61, 0x83, 0xf3, 0xf0, 0xa7, - 0x55, 0x4a, 0x4c, 0x27, 0x6c, 0x74, 0x75, 0x17, 0x61, 0x4d, 0xa1, 0x4b, 0x30, 0x10, 0xd5, 0x83, - 0xa6, 0x32, 0x87, 0x3d, 0xc7, 0xd3, 0x65, 0xd2, 0x92, 0x83, 0xfd, 0x19, 0x64, 0x36, 0x47, 0x8b, - 0xb1, 0xc0, 0x9f, 0xde, 0x84, 0x92, 0x6a, 0xfa, 0x81, 0x1a, 0xfa, 0x7f, 0xa7, 0x08, 0x27, 0x32, - 0xd6, 0x05, 0x8a, 0x8c, 0xd1, 0x7a, 0xb6, 0xc7, 0xe5, 0xf4, 0x3e, 0xc7, 0x2b, 0x62, 0x37, 0x96, - 0x86, 0x98, 0xff, 0x9e, 0x1b, 0xbd, 0x19, 0x91, 0x74, 0xa3, 0xb4, 0xa8, 0x7b, 0xa3, 0xb4, 0xb1, - 0x63, 0x1b, 0x6a, 0xda, 0x90, 0xea, 0xe9, 0x03, 0x9d, 0xd3, 0x3f, 0x2b, 0xc2, 0x54, 0x56, 0x1c, - 0x07, 0xf4, 0xf3, 0xa9, 0xdc, 0x36, 0xcf, 0xf7, 0x1a, 0x01, 0x82, 0x27, 0xbc, 0x11, 0x81, 0xaf, - 0x66, 0xcd, 0x6c, 0x37, 0x5d, 0x87, 0x59, 0xb4, 0xc9, 0xfc, 0xb7, 0x42, 0x9e, 0x93, 0x48, 0x6e, - 0xf1, 0x4f, 0xf4, 0xdc, 0x01, 0x91, 0xcc, 0x28, 0x4a, 0xf9, 0x6f, 0xc9, 0xe2, 0xee, 0xfe, 0x5b, - 0xb2, 0xe5, 0x69, 0x17, 0x86, 0xb5, 0xaf, 0x79, 0xa0, 0x33, 0xbe, 0x4d, 0x4f, 0x14, 0xad, 0xdf, - 0x0f, 0x74, 0xd6, 0xbf, 0x6c, 0x41, 0xca, 0x74, 0x4d, 0xa9, 0xa4, 0xac, 0x5c, 0x95, 0xd4, 0x39, - 0xe8, 0x0b, 0x03, 0x8f, 0xa4, 0xd3, 0x9d, 0xe0, 0xc0, 0x23, 0x98, 0x41, 0x54, 0xfe, 0xfb, 0x62, - 0x5e, 0xfe, 0x7b, 0x7a, 0x35, 0xf6, 0xc8, 0x2e, 0x91, 0xda, 0x08, 0xc5, 0x93, 0xaf, 0xd1, 0x42, - 0xcc, 0x61, 0xf6, 0xd7, 0xfb, 0xe0, 0x4c, 0x47, 0x0f, 0x48, 0x7a, 0x65, 0xd9, 0x74, 0x62, 0x72, - 0xc7, 0xd9, 0x4b, 0x07, 0x63, 0xbe, 0xcc, 0x8b, 0xb1, 0x84, 0x33, 0x43, 0x5b, 0x1e, 0xcf, 0x31, - 0xa5, 0xc0, 0x13, 0x61, 0x1c, 0x05, 0xd4, 0x54, 0x1c, 0x15, 0x8f, 0x42, 0x71, 0x74, 0x11, 0x20, - 0x8a, 0xbc, 0x25, 0x9f, 0x4a, 0x60, 0x0d, 0x61, 0xc1, 0x9b, 0xc4, 0xfd, 0xac, 0x5d, 0x13, 0x10, - 0xac, 0x61, 0xa1, 0x0a, 0x4c, 0x34, 0xc3, 0x20, 0xe6, 0xfa, 0xd0, 0x0a, 0xb7, 0x1d, 0xe9, 0x37, - 0x9d, 0xcf, 0xaa, 0x29, 0x38, 0x6e, 0xab, 0x81, 0x5e, 0x80, 0x61, 0xe1, 0x90, 0x56, 0x0d, 0x02, - 0x4f, 0xa8, 0x6a, 0x94, 0x25, 0x42, 0x2d, 0x01, 0x61, 0x1d, 0x4f, 0xab, 0xc6, 0x94, 0xac, 0x83, - 0x99, 0xd5, 0xb8, 0xa2, 0x55, 0xc3, 0x4b, 0xc5, 0x74, 0x19, 0xea, 0x29, 0xa6, 0x4b, 0xa2, 0xbc, - 0x2a, 0xf5, 0xfc, 0xae, 0x04, 0x5d, 0xd5, 0x3d, 0xbf, 0xd9, 0x07, 0x27, 0xc4, 0xc2, 0x79, 0xd0, - 0xcb, 0xe5, 0x01, 0xe5, 0xd2, 0xff, 0xc9, 0x9a, 0x39, 0xee, 0x35, 0xf3, 0x8d, 0x22, 0x0c, 0xf0, - 0xa9, 0x38, 0x06, 0x19, 0x7e, 0x59, 0x28, 0xfd, 0x3a, 0x44, 0x33, 0xe1, 0x7d, 0x99, 0xad, 0x38, - 0xb1, 0xc3, 0xcf, 0x2f, 0xc5, 0x46, 0x13, 0xf5, 0x20, 0x9a, 0x35, 0x18, 0xed, 0x74, 0x4a, 0xab, - 0x05, 0x9c, 0x86, 0xc6, 0x76, 0xdf, 0x02, 0x88, 0x58, 0x3e, 0x77, 0x4a, 0x43, 0xc4, 0xc5, 0x79, - 0xb2, 0x43, 0xeb, 0x35, 0x85, 0xcc, 0xfb, 0x90, 0x2c, 0x41, 0x05, 0xc0, 0x1a, 0xc5, 0xe9, 0x17, - 0xa1, 0xa4, 0x90, 0xbb, 0xa9, 0x00, 0x46, 0xf4, 0x53, 0xef, 0x53, 0x30, 0x9e, 0x6a, 0xeb, 0x50, - 0x1a, 0x84, 0xdf, 0xb6, 0x60, 0x9c, 0x77, 0x79, 0xc9, 0xdf, 0x15, 0x9b, 0xfd, 0x5d, 0x98, 0xf2, - 0x32, 0x36, 0x9d, 0x98, 0xd1, 0xde, 0x37, 0xa9, 0xd2, 0x18, 0x64, 0x41, 0x71, 0x66, 0x1b, 0xe8, - 0x02, 0x0c, 0x05, 0xec, 0x3c, 0x75, 0x3c, 0xe1, 0x4d, 0x30, 0xc2, 0xf3, 0x23, 0xf0, 0x32, 0xac, - 0xa0, 0xf6, 0xf7, 0x2c, 0x98, 0xe4, 0x3d, 0xbf, 0x4a, 0xf6, 0xd4, 0xed, 0xf8, 0x83, 0xec, 0xbb, - 0x48, 0xff, 0x50, 0xc8, 0x49, 0xff, 0xa0, 0x7f, 0x5a, 0xb1, 0xe3, 0xa7, 0x7d, 0xd5, 0x02, 0xb1, - 0x02, 0x8f, 0xe1, 0x1e, 0xf8, 0xd3, 0xe6, 0x3d, 0x70, 0x3a, 0x7f, 0x51, 0xe7, 0x5c, 0x00, 0xff, - 0xc2, 0x82, 0x09, 0x8e, 0x90, 0x3c, 0x44, 0x7e, 0xa0, 0xf3, 0xd0, 0x4b, 0x4e, 0x32, 0x95, 0x04, - 0x3a, 0xfb, 0xa3, 0x8c, 0xc9, 0xea, 0xeb, 0x38, 0x59, 0x0d, 0xb9, 0x81, 0x0e, 0x91, 0x6b, 0xef, - 0xd0, 0x11, 0x4b, 0xed, 0x3f, 0xb5, 0x00, 0xf1, 0x66, 0x8c, 0x73, 0x99, 0x9e, 0x76, 0xac, 0x54, - 0xd3, 0x04, 0x25, 0xac, 0x46, 0x41, 0xb0, 0x86, 0x75, 0x24, 0xc3, 0x93, 0x7a, 0x4d, 0x2e, 0x76, - 0x7f, 0x4d, 0x3e, 0xc4, 0x88, 0xfe, 0xcd, 0x3e, 0x48, 0x9b, 0x2e, 0xa3, 0x5b, 0x30, 0x52, 0x77, - 0x9a, 0xce, 0xba, 0xeb, 0xb9, 0xb1, 0x4b, 0xa2, 0x4e, 0x66, 0x28, 0x8b, 0x1a, 0x9e, 0x78, 0x27, - 0xd4, 0x4a, 0xb0, 0x41, 0x07, 0xcd, 0x02, 0x34, 0x43, 0x77, 0xd7, 0xf5, 0xc8, 0x26, 0xbb, 0x0a, - 0x33, 0xff, 0x25, 0x6e, 0x5b, 0x21, 0x4b, 0xb1, 0x86, 0x91, 0xe1, 0xef, 0x52, 0x7c, 0x70, 0xfe, - 0x2e, 0x7d, 0x87, 0xf4, 0x77, 0xe9, 0xef, 0xc9, 0xdf, 0x05, 0xc3, 0x29, 0x79, 0x76, 0xd3, 0xff, - 0xcb, 0xae, 0x47, 0x84, 0xc0, 0xc6, 0xbd, 0x9a, 0xa6, 0xef, 0xed, 0xcf, 0x9c, 0xc2, 0x99, 0x18, - 0x38, 0xa7, 0x26, 0xfa, 0x34, 0x94, 0x1d, 0xcf, 0x0b, 0xee, 0xa8, 0x51, 0x5b, 0x8a, 0xea, 0x8e, - 0x97, 0x04, 0xf0, 0x1e, 0x5a, 0x78, 0xe4, 0xde, 0xfe, 0x4c, 0x79, 0x3e, 0x07, 0x07, 0xe7, 0xd6, - 0xb6, 0xb7, 0xe1, 0x44, 0x8d, 0x84, 0x32, 0x7d, 0xa7, 0xda, 0x62, 0x6b, 0x50, 0x0a, 0x53, 0x4c, - 0xa5, 0xa7, 0x10, 0x1a, 0x5a, 0x70, 0x45, 0xc9, 0x44, 0x12, 0x42, 0xf6, 0x9f, 0x5b, 0x30, 0x28, - 0xcc, 0xa1, 0x8f, 0x41, 0x96, 0x99, 0x37, 0xf4, 0x91, 0x33, 0xd9, 0x8c, 0x97, 0x75, 0x26, 0x57, - 0x13, 0xb9, 0x92, 0xd2, 0x44, 0x3e, 0xda, 0x89, 0x48, 0x67, 0x1d, 0xe4, 0x2f, 0x15, 0x61, 0xcc, - 0x34, 0x05, 0x3f, 0x86, 0x21, 0xb8, 0x0e, 0x83, 0x91, 0xf0, 0x3b, 0x28, 0xe4, 0xdb, 0xaf, 0xa6, - 0x27, 0x31, 0xb1, 0x72, 0x11, 0x9e, 0x06, 0x92, 0x48, 0xa6, 0x43, 0x43, 0xf1, 0x01, 0x3a, 0x34, - 0x74, 0xb3, 0xc6, 0xef, 0x3b, 0x0a, 0x6b, 0x7c, 0xfb, 0x9b, 0x8c, 0xf9, 0xeb, 0xe5, 0xc7, 0x20, - 0x17, 0x5c, 0x36, 0x8f, 0x09, 0xbb, 0xc3, 0xca, 0x12, 0x9d, 0xca, 0x91, 0x0f, 0xfe, 0xa9, 0x05, - 0xc3, 0x02, 0xf1, 0x18, 0xba, 0xfd, 0x33, 0x66, 0xb7, 0x1f, 0xee, 0xd0, 0xed, 0x9c, 0xfe, 0xfe, - 0xfd, 0x82, 0xea, 0x6f, 0x35, 0x08, 0xe3, 0x9e, 0x12, 0x3a, 0x0c, 0xd1, 0xdb, 0x60, 0x50, 0x0f, - 0x3c, 0x71, 0x98, 0x3f, 0x92, 0x38, 0xb6, 0xf2, 0xf2, 0x03, 0xed, 0x37, 0x56, 0xd8, 0xcc, 0xef, - 0x32, 0x08, 0x63, 0x71, 0x80, 0x26, 0x7e, 0x97, 0x41, 0x18, 0x63, 0x06, 0x41, 0x0d, 0x80, 0xd8, - 0x09, 0x37, 0x49, 0x4c, 0xcb, 0x84, 0x27, 0x78, 0xfe, 0x2e, 0x6c, 0xc5, 0xae, 0x37, 0xeb, 0xfa, - 0x71, 0x14, 0x87, 0xb3, 0x2b, 0x7e, 0x7c, 0x23, 0xe4, 0x77, 0x03, 0xcd, 0x53, 0x55, 0xd1, 0xc2, - 0x1a, 0x5d, 0xe9, 0x2a, 0xc5, 0xda, 0xe8, 0x37, 0x1f, 0x0a, 0xaf, 0x8b, 0x72, 0xac, 0x30, 0xec, - 0x17, 0x19, 0x4f, 0x66, 0x03, 0x74, 0x38, 0x27, 0xd2, 0x6f, 0x0f, 0xa9, 0xa1, 0x65, 0xaf, 0x04, - 0x15, 0xdd, 0x55, 0xb5, 0x33, 0x0b, 0xa4, 0x0d, 0xeb, 0x6e, 0x01, 0x89, 0x3f, 0x2b, 0xfa, 0xd9, - 0xb6, 0xf7, 0xe3, 0x67, 0xba, 0xf0, 0xd2, 0x43, 0xbc, 0x18, 0xb3, 0xa8, 0xa0, 0x2c, 0x7a, 0xe2, - 0x4a, 0x35, 0x9d, 0x72, 0x63, 0x51, 0x02, 0x70, 0x82, 0x83, 0xe6, 0xc4, 0xcd, 0x92, 0xeb, 0xe7, - 0x1e, 0x4e, 0xdd, 0x2c, 0xe5, 0xe7, 0x6b, 0x57, 0xcb, 0x67, 0x61, 0x58, 0xa5, 0x31, 0xab, 0xf2, - 0x6c, 0x50, 0x25, 0x2e, 0x4b, 0x2d, 0x25, 0xc5, 0x58, 0xc7, 0x41, 0x6b, 0x30, 0x1e, 0xf1, 0x1c, - 0x6b, 0xd2, 0x7b, 0x49, 0xe8, 0x0d, 0x9e, 0x94, 0xef, 0xce, 0x35, 0x13, 0x7c, 0xc0, 0x8a, 0xf8, - 0x66, 0x95, 0xfe, 0x4e, 0x69, 0x12, 0xe8, 0x15, 0x18, 0xf3, 0xf4, 0x5c, 0xd3, 0x55, 0xa1, 0x56, - 0x50, 0x66, 0x99, 0x46, 0x26, 0xea, 0x2a, 0x4e, 0x61, 0x53, 0x21, 0x40, 0x2f, 0x11, 0x41, 0xb5, - 0x1c, 0x7f, 0x93, 0x44, 0x22, 0x09, 0x13, 0x13, 0x02, 0xae, 0xe5, 0xe0, 0xe0, 0xdc, 0xda, 0xe8, - 0x12, 0x8c, 0xc8, 0xcf, 0xd7, 0xbc, 0xf9, 0x12, 0xe3, 0x5f, 0x0d, 0x86, 0x0d, 0x4c, 0x74, 0x07, - 0x4e, 0xca, 0xff, 0x6b, 0xa1, 0xb3, 0xb1, 0xe1, 0xd6, 0x85, 0x33, 0xe5, 0x30, 0x23, 0x31, 0x2f, - 0x3d, 0x21, 0x96, 0xb2, 0x90, 0x0e, 0xf6, 0x67, 0xce, 0x89, 0x51, 0xcb, 0x84, 0xb3, 0x49, 0xcc, - 0xa6, 0x8f, 0x56, 0xe1, 0xc4, 0x16, 0x71, 0xbc, 0x78, 0x6b, 0x71, 0x8b, 0xd4, 0xb7, 0xe5, 0x26, - 0x62, 0x3e, 0x82, 0x9a, 0xc9, 0xec, 0x95, 0x76, 0x14, 0x9c, 0x55, 0x0f, 0xbd, 0x09, 0xe5, 0x66, - 0x6b, 0xdd, 0x73, 0xa3, 0xad, 0xeb, 0x41, 0xcc, 0x9e, 0xba, 0x55, 0x16, 0x30, 0xe1, 0x4c, 0xa8, - 0xfc, 0x23, 0xab, 0x39, 0x78, 0x38, 0x97, 0x02, 0x7a, 0x17, 0x4e, 0xa6, 0x16, 0x03, 0x4f, 0x2c, - 0x27, 0x9c, 0x0e, 0x9f, 0xc8, 0xde, 0x4e, 0x19, 0x15, 0xb8, 0x8b, 0x6b, 0x26, 0x08, 0x67, 0x37, - 0xf1, 0xfe, 0x0c, 0x20, 0xde, 0xa1, 0x95, 0x35, 0xe9, 0x06, 0x7d, 0x06, 0x46, 0xf4, 0x55, 0x24, - 0x0e, 0x98, 0xf3, 0xdd, 0xf2, 0xaa, 0x0b, 0xd9, 0x48, 0xad, 0x28, 0x1d, 0x86, 0x0d, 0x8a, 0x36, - 0x81, 0xec, 0xef, 0x43, 0xd7, 0x60, 0xa8, 0xee, 0xb9, 0xc4, 0x8f, 0x57, 0xaa, 0x9d, 0x9c, 0xe0, - 0x17, 0x05, 0x8e, 0x18, 0x30, 0x11, 0xd3, 0x8d, 0x97, 0x61, 0x45, 0xc1, 0xfe, 0xbd, 0x02, 0xcc, - 0x74, 0x09, 0x10, 0x98, 0xd2, 0x01, 0x5a, 0x3d, 0xe9, 0x00, 0xe7, 0x65, 0x4e, 0xb3, 0xeb, 0xa9, - 0xfb, 0x67, 0x2a, 0x5f, 0x59, 0x72, 0x0b, 0x4d, 0xe3, 0xf7, 0x6c, 0x37, 0xa9, 0xab, 0x11, 0xfb, - 0xba, 0x5a, 0xf4, 0x1a, 0xcf, 0x07, 0xfd, 0xbd, 0x4b, 0xf4, 0xb9, 0xaa, 0x60, 0xfb, 0x9b, 0x05, - 0x38, 0xa9, 0x86, 0xf0, 0xc7, 0x77, 0xe0, 0x6e, 0xb6, 0x0f, 0xdc, 0x11, 0x28, 0xd2, 0xed, 0x1b, - 0x30, 0x50, 0xdb, 0x8b, 0xea, 0xb1, 0xd7, 0x83, 0x00, 0xf4, 0x98, 0xb1, 0x41, 0x93, 0x63, 0x9a, - 0xa5, 0x25, 0x15, 0xfb, 0xd5, 0xfe, 0x6b, 0x16, 0x8c, 0xaf, 0x2d, 0x56, 0x6b, 0x41, 0x7d, 0x9b, - 0xc4, 0xf3, 0x5c, 0x4d, 0x84, 0x85, 0xfc, 0x63, 0xdd, 0xa7, 0x5c, 0x93, 0x25, 0x31, 0x9d, 0x83, - 0xbe, 0xad, 0x20, 0x8a, 0xd3, 0xaf, 0x6c, 0x57, 0x82, 0x28, 0xc6, 0x0c, 0x62, 0xff, 0x91, 0x05, - 0xfd, 0x2c, 0x13, 0x67, 0xb7, 0x8c, 0xad, 0xbd, 0x7c, 0x17, 0x7a, 0x01, 0x06, 0xc8, 0xc6, 0x06, - 0xa9, 0xc7, 0x62, 0x56, 0xa5, 0x77, 0xdd, 0xc0, 0x12, 0x2b, 0xa5, 0x87, 0x3e, 0x6b, 0x8c, 0xff, - 0xc5, 0x02, 0x19, 0xdd, 0x86, 0x52, 0xec, 0xee, 0x90, 0xf9, 0x46, 0x43, 0xbc, 0x53, 0xdc, 0x87, - 0x33, 0xe3, 0x9a, 0x24, 0x80, 0x13, 0x5a, 0xf6, 0x17, 0x0b, 0x00, 0x89, 0x07, 0x6e, 0xb7, 0x4f, - 0x5c, 0x68, 0x4b, 0x4a, 0x7b, 0x3e, 0x23, 0x29, 0x2d, 0x4a, 0x08, 0x66, 0xa4, 0xa4, 0x55, 0xc3, - 0x54, 0xec, 0x69, 0x98, 0xfa, 0x0e, 0x33, 0x4c, 0x8b, 0x30, 0x99, 0x78, 0x10, 0x9b, 0xe1, 0x14, - 0x58, 0x98, 0xf0, 0xb5, 0x34, 0x10, 0xb7, 0xe3, 0xdb, 0x9f, 0xb7, 0x40, 0xb8, 0x1b, 0xf4, 0xb0, - 0x98, 0xdf, 0x90, 0xf9, 0x23, 0x8d, 0x38, 0xa3, 0xe7, 0xf2, 0xfd, 0x2f, 0x44, 0x74, 0x51, 0x75, - 0x78, 0x18, 0x31, 0x45, 0x0d, 0x5a, 0x76, 0x03, 0x04, 0xb4, 0x42, 0x98, 0x92, 0xa1, 0x7b, 0x6f, - 0x2e, 0x02, 0x34, 0x18, 0xae, 0x96, 0x8f, 0x4e, 0xb1, 0xaa, 0x8a, 0x82, 0x60, 0x0d, 0xcb, 0xfe, - 0xdb, 0x05, 0x18, 0x96, 0x71, 0x2d, 0xe9, 0x3d, 0xbe, 0x7b, 0x2b, 0x87, 0x0a, 0x65, 0xcf, 0x12, - 0x38, 0x52, 0xc2, 0x2a, 0xe2, 0xb9, 0x9e, 0xc0, 0x51, 0x02, 0x70, 0x82, 0x83, 0x9e, 0x80, 0xc1, - 0xa8, 0xb5, 0xce, 0xd0, 0x53, 0x46, 0xf4, 0x35, 0x5e, 0x8c, 0x25, 0x1c, 0x7d, 0x1a, 0x26, 0x78, - 0xbd, 0x30, 0x68, 0x3a, 0x9b, 0x5c, 0x83, 0xd4, 0xaf, 0xbc, 0xda, 0x26, 0x56, 0x53, 0xb0, 0x83, - 0xfd, 0x99, 0xa9, 0x74, 0x19, 0xd3, 0x3d, 0xb6, 0x51, 0xa1, 0xfb, 0x62, 0x22, 0xed, 0x30, 0x83, - 0xae, 0xc0, 0x00, 0x67, 0x79, 0x82, 0x05, 0x75, 0x78, 0x51, 0xd2, 0xdc, 0x6c, 0x58, 0x6c, 0x6f, - 0xc1, 0x35, 0x45, 0x7d, 0xf4, 0x26, 0x0c, 0x37, 0x82, 0x3b, 0xfe, 0x1d, 0x27, 0x6c, 0xcc, 0x57, - 0x57, 0xc4, 0xaa, 0xc9, 0x94, 0x9c, 0x2a, 0x09, 0x9a, 0xee, 0xba, 0xc3, 0xb4, 0xa7, 0x09, 0x08, - 0xeb, 0xe4, 0xd0, 0x1a, 0x0b, 0xca, 0xc4, 0x33, 0xac, 0x77, 0xb2, 0x3a, 0x53, 0x49, 0xd9, 0x35, - 0xca, 0xa3, 0x22, 0x72, 0x93, 0xc8, 0xcf, 0x9e, 0x10, 0xb2, 0xdf, 0x3b, 0x01, 0xc6, 0x6a, 0x35, - 0x42, 0xd9, 0x5b, 0x47, 0x14, 0xca, 0x1e, 0xc3, 0x10, 0xd9, 0x69, 0xc6, 0x7b, 0x15, 0x37, 0xec, - 0x94, 0x0b, 0x65, 0x49, 0xe0, 0xb4, 0xd3, 0x94, 0x10, 0xac, 0xe8, 0x64, 0xe7, 0x1b, 0x28, 0x7e, - 0x80, 0xf9, 0x06, 0xfa, 0x8e, 0x31, 0xdf, 0xc0, 0x75, 0x18, 0xdc, 0x74, 0x63, 0x4c, 0x9a, 0x81, - 0x38, 0xee, 0x33, 0x57, 0xc2, 0x65, 0x8e, 0xd2, 0x1e, 0xf7, 0x5a, 0x00, 0xb0, 0x24, 0x82, 0x5e, - 0x55, 0x7b, 0x60, 0x20, 0x5f, 0x5a, 0x6e, 0x7f, 0x7c, 0xc8, 0xdc, 0x05, 0x22, 0xbf, 0xc0, 0xe0, - 0xfd, 0xe6, 0x17, 0x58, 0x96, 0x59, 0x01, 0x86, 0xf2, 0x8d, 0x34, 0x59, 0xd0, 0xff, 0x2e, 0xb9, - 0x00, 0x8c, 0xfc, 0x09, 0xa5, 0xa3, 0xcb, 0x9f, 0xf0, 0x79, 0x0b, 0x4e, 0x36, 0xb3, 0x52, 0x89, - 0x88, 0xa8, 0xfe, 0x2f, 0xf4, 0x9c, 0x2b, 0xc5, 0x68, 0x90, 0x5d, 0x9b, 0x32, 0xd1, 0x70, 0x76, - 0x73, 0x74, 0xa0, 0xc3, 0xf5, 0x86, 0x48, 0x05, 0xf0, 0x58, 0x4e, 0x22, 0x86, 0x0e, 0xe9, 0x17, - 0x1e, 0x4c, 0xf8, 0xff, 0x24, 0x05, 0xc3, 0xe8, 0xfb, 0x4e, 0xc1, 0xf0, 0xaa, 0x4a, 0xc1, 0xd0, - 0x21, 0xf4, 0x0d, 0x4f, 0xb0, 0xd0, 0x35, 0xf1, 0x82, 0x96, 0x3c, 0x61, 0xfc, 0x28, 0x92, 0x27, - 0xbc, 0x65, 0x32, 0x7b, 0x1e, 0xc9, 0xff, 0xa9, 0x2e, 0xcc, 0xde, 0xa0, 0xdb, 0x99, 0xdd, 0xf3, - 0x44, 0x11, 0x93, 0xf7, 0x95, 0x28, 0xe2, 0x96, 0x9e, 0x82, 0x01, 0x75, 0xc9, 0x31, 0x40, 0x91, - 0x7a, 0x4c, 0xbc, 0x70, 0x4b, 0x3f, 0x82, 0x4e, 0xe4, 0xd3, 0x55, 0x27, 0x4d, 0x3b, 0xdd, 0xac, - 0x43, 0xa8, 0x3d, 0xa1, 0xc3, 0xd4, 0xf1, 0x24, 0x74, 0x38, 0x79, 0xe4, 0x09, 0x1d, 0x4e, 0x1d, - 0x43, 0x42, 0x87, 0x87, 0x3e, 0xd0, 0x84, 0x0e, 0xe5, 0x07, 0x90, 0xd0, 0xe1, 0x7a, 0x92, 0xd0, - 0xe1, 0x74, 0xfe, 0x94, 0x64, 0x58, 0xa5, 0xe5, 0xa4, 0x71, 0xb8, 0x05, 0xa5, 0xa6, 0xf4, 0xa9, - 0x2e, 0x4f, 0xe7, 0x4f, 0x49, 0xa6, 0xe3, 0x35, 0x9f, 0x12, 0x05, 0xc2, 0x09, 0x29, 0x4a, 0x37, - 0x49, 0xeb, 0xf0, 0x70, 0x07, 0xc5, 0x58, 0x96, 0xca, 0x21, 0x3f, 0x99, 0x83, 0xfd, 0xd7, 0x0b, - 0x70, 0xb6, 0xf3, 0xba, 0x4e, 0xf4, 0x15, 0xd5, 0x44, 0xbf, 0x9e, 0xd2, 0x57, 0xf0, 0x4b, 0x40, - 0x82, 0xd5, 0x73, 0xe0, 0x89, 0xcb, 0x30, 0xa9, 0xcc, 0xd1, 0x3c, 0xb7, 0xbe, 0xa7, 0xe5, 0x95, - 0x53, 0xae, 0x31, 0xb5, 0x34, 0x02, 0x6e, 0xaf, 0x83, 0xe6, 0x61, 0xdc, 0x28, 0x5c, 0xa9, 0x08, - 0x61, 0x5f, 0x29, 0x48, 0x6a, 0x26, 0x18, 0xa7, 0xf1, 0xed, 0xaf, 0x58, 0xf0, 0x50, 0x4e, 0x24, - 0xe5, 0x9e, 0xe3, 0x2a, 0x6c, 0xc0, 0x78, 0xd3, 0xac, 0xda, 0x25, 0xfc, 0x8a, 0x11, 0xaf, 0x59, - 0xf5, 0x35, 0x05, 0xc0, 0x69, 0xa2, 0x0b, 0x17, 0xbe, 0xf5, 0xfd, 0xb3, 0x1f, 0xf9, 0xc3, 0xef, - 0x9f, 0xfd, 0xc8, 0xf7, 0xbe, 0x7f, 0xf6, 0x23, 0x7f, 0xf9, 0xde, 0x59, 0xeb, 0x5b, 0xf7, 0xce, - 0x5a, 0x7f, 0x78, 0xef, 0xac, 0xf5, 0xbd, 0x7b, 0x67, 0xad, 0x3f, 0xbe, 0x77, 0xd6, 0xfa, 0xe2, - 0x0f, 0xce, 0x7e, 0xe4, 0x8d, 0xc2, 0xee, 0xb3, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x6f, - 0x73, 0x33, 0xff, 0xd9, 0x00, 0x00, + 0x9e, 0x2a, 0x21, 0x58, 0xd1, 0x41, 0xb7, 0xa1, 0xb4, 0x25, 0xfd, 0x68, 0x05, 0xcf, 0xce, 0x3c, + 0x04, 0x33, 0x9d, 0x6d, 0xb9, 0xef, 0x88, 0x02, 0xe1, 0x84, 0x14, 0x7a, 0x0d, 0x8a, 0xfe, 0x66, + 0xd4, 0x29, 0x87, 0x4c, 0xca, 0x96, 0x8f, 0x7b, 0xf7, 0xaf, 0x2d, 0xd7, 0x30, 0xad, 0x88, 0xae, + 0x41, 0x31, 0xdc, 0x68, 0x88, 0xa7, 0x85, 0x4c, 0xb9, 0x14, 0x2f, 0x54, 0xb2, 0x17, 0x09, 0xa7, + 0x84, 0x17, 0x2a, 0x98, 0x92, 0x40, 0x55, 0xe8, 0x67, 0x4e, 0x53, 0xe2, 0x05, 0x21, 0x53, 0x20, + 0xed, 0xe0, 0x7c, 0xc8, 0x43, 0x00, 0x30, 0x04, 0xcc, 0x09, 0xa1, 0xd7, 0x61, 0xa0, 0xce, 0xd2, + 0xac, 0x08, 0xc5, 0x4f, 0x76, 0x14, 0x9e, 0xb6, 0x44, 0x2c, 0xfc, 0x05, 0x95, 0x97, 0x63, 0x41, + 0x01, 0xad, 0xc3, 0x40, 0x9d, 0x34, 0xb7, 0x37, 0x23, 0xa1, 0xcf, 0xf9, 0x74, 0x26, 0xad, 0x0e, + 0x59, 0x85, 0x04, 0x55, 0x86, 0x81, 0x05, 0x2d, 0xf4, 0x59, 0x28, 0x6c, 0xd6, 0x85, 0x27, 0x55, + 0xe6, 0x1b, 0x82, 0x19, 0x96, 0x61, 0x61, 0xe0, 0xfe, 0xc1, 0x4c, 0x61, 0x79, 0x11, 0x17, 0x36, + 0xeb, 0x68, 0x0d, 0x06, 0x37, 0xb9, 0x6f, 0xbd, 0x08, 0x87, 0xfd, 0x64, 0xb6, 0xdb, 0x7f, 0x9b, + 0xfb, 0x3d, 0xf7, 0x00, 0x12, 0x00, 0x2c, 0x89, 0xa0, 0x75, 0x80, 0x4d, 0x15, 0x23, 0x40, 0xc4, + 0xc3, 0xfe, 0x64, 0x2f, 0x91, 0x04, 0x84, 0x72, 0x43, 0x95, 0x62, 0x8d, 0x0e, 0xfa, 0x02, 0x94, + 0x1c, 0x99, 0xe6, 0x8b, 0xc5, 0xc2, 0x36, 0x65, 0x8d, 0x64, 0x13, 0x76, 0xce, 0x80, 0xc6, 0x57, + 0xb0, 0x42, 0xc2, 0x09, 0x51, 0xb4, 0x03, 0xa3, 0x7b, 0x51, 0x73, 0x9b, 0xc8, 0x4d, 0xcb, 0x02, + 0x64, 0xe7, 0x1c, 0x52, 0xb7, 0x05, 0xa2, 0x1b, 0xc6, 0x2d, 0xc7, 0x6b, 0xe3, 0x33, 0xcc, 0x5d, + 0xec, 0xb6, 0x4e, 0x0c, 0x9b, 0xb4, 0xe9, 0xa0, 0xbf, 0xd7, 0x0a, 0x36, 0xf6, 0x63, 0x22, 0xc2, + 0x66, 0x67, 0x0e, 0xfa, 0x1b, 0x1c, 0xa5, 0x7d, 0xd0, 0x05, 0x00, 0x4b, 0x22, 0x74, 0x5b, 0x3b, + 0x32, 0x85, 0x9e, 0xd0, 0xe0, 0x3c, 0x95, 0x3b, 0x3c, 0x6d, 0xfd, 0x4d, 0x06, 0x85, 0xf1, 0xc3, + 0x84, 0x14, 0xe3, 0x83, 0xcd, 0xed, 0x20, 0x0e, 0xfc, 0x14, 0x0f, 0x9e, 0xcc, 0xe7, 0x83, 0xd5, + 0x0c, 0xfc, 0x76, 0x3e, 0x98, 0x85, 0x85, 0x33, 0xdb, 0x42, 0x0d, 0x18, 0x6b, 0x06, 0x61, 0x7c, + 0x37, 0x08, 0xe5, 0xaa, 0x42, 0x1d, 0xae, 0xf6, 0x06, 0xa6, 0x68, 0x91, 0x59, 0x7f, 0x9b, 0x10, + 0x9c, 0xa2, 0x89, 0x3e, 0x0f, 0x83, 0x51, 0xdd, 0xf1, 0xc8, 0xca, 0xcd, 0xf2, 0xa9, 0xfc, 0x03, + 0xa6, 0xc6, 0x51, 0x72, 0x56, 0x17, 0x9b, 0x1c, 0x81, 0x82, 0x25, 0x39, 0xb4, 0x0c, 0xfd, 0x2c, + 0x17, 0x03, 0x8b, 0xf8, 0x9d, 0x13, 0x39, 0xa9, 0xcd, 0x42, 0x9a, 0xf3, 0x21, 0x56, 0x8c, 0x79, + 0x75, 0xba, 0x07, 0x84, 0x84, 0x1b, 0x44, 0xe5, 0xd3, 0xf9, 0x7b, 0x40, 0x08, 0xc6, 0x37, 0x6b, + 0x9d, 0xf6, 0x80, 0x42, 0xc2, 0x09, 0x51, 0xca, 0x85, 0x29, 0xe7, 0x3c, 0x93, 0xcf, 0x85, 0xf3, + 0xf9, 0x26, 0xe3, 0xc2, 0x94, 0x6b, 0x52, 0x12, 0xf6, 0x07, 0x83, 0xed, 0x52, 0x09, 0xbb, 0x13, + 0xfd, 0xb8, 0xd5, 0x66, 0x30, 0xf0, 0x99, 0x5e, 0x55, 0x34, 0xc7, 0x28, 0x8f, 0x7e, 0x60, 0xc1, + 0x99, 0x66, 0xe6, 0x87, 0x88, 0x23, 0xbe, 0x37, 0x4d, 0x0f, 0xff, 0x74, 0x15, 0x95, 0x3f, 0x1b, + 0x8e, 0x73, 0x5a, 0x4a, 0xcb, 0xfc, 0xc5, 0x0f, 0x2d, 0xf3, 0xaf, 0xc2, 0x10, 0x13, 0x23, 0x93, + 0x30, 0x5d, 0x3d, 0x99, 0xdd, 0x31, 0x61, 0x61, 0x51, 0x54, 0xc4, 0x8a, 0x04, 0xfa, 0x29, 0x0b, + 0xce, 0xa5, 0xbb, 0x8e, 0x09, 0x03, 0x8b, 0x90, 0xaf, 0xfc, 0x3a, 0xb6, 0x2c, 0xbe, 0xff, 0x5c, + 0xb5, 0x13, 0xf2, 0x61, 0x37, 0x04, 0xdc, 0xb9, 0x31, 0x54, 0xc9, 0xb8, 0x0f, 0x0e, 0x98, 0xef, + 0x89, 0x3d, 0xdc, 0x09, 0x5f, 0x84, 0x91, 0xdd, 0xa0, 0xe5, 0x4b, 0x9f, 0x18, 0xe1, 0xf1, 0xcc, + 0x74, 0xd7, 0xab, 0x5a, 0x39, 0x36, 0xb0, 0x52, 0x37, 0xc9, 0xa1, 0x07, 0xbd, 0x49, 0x9e, 0xec, + 0xfd, 0xe4, 0x4b, 0x56, 0x86, 0x60, 0xcd, 0x6f, 0xac, 0xaf, 0x9a, 0x37, 0xd6, 0x8b, 0xe9, 0x1b, + 0x6b, 0x9b, 0x86, 0xd2, 0xb8, 0xac, 0xf6, 0x1e, 0x12, 0xbb, 0xd7, 0x78, 0x68, 0xb6, 0x07, 0x17, + 0xba, 0x1d, 0x1c, 0xcc, 0x84, 0xb1, 0xa1, 0xde, 0xf6, 0x13, 0x13, 0xc6, 0xc6, 0x4a, 0x05, 0x33, + 0x48, 0xaf, 0x91, 0x75, 0xec, 0xff, 0x6e, 0x41, 0xb1, 0x1a, 0x34, 0x4e, 0x40, 0xe3, 0xfa, 0x39, + 0x43, 0xe3, 0xfa, 0x68, 0x4e, 0xb2, 0xe0, 0x5c, 0xfd, 0xea, 0x52, 0x4a, 0xbf, 0x7a, 0x2e, 0x8f, + 0x40, 0x67, 0x6d, 0xea, 0x2f, 0x15, 0x41, 0x4f, 0x6d, 0x8c, 0xfe, 0xed, 0x83, 0xd8, 0xc2, 0x17, + 0x3b, 0x65, 0x3b, 0x16, 0x94, 0x99, 0xe5, 0xa3, 0x74, 0xb3, 0xfd, 0x2e, 0x33, 0x89, 0xbf, 0x43, + 0xdc, 0xad, 0xed, 0x98, 0x34, 0xd2, 0x9f, 0x73, 0x72, 0x26, 0xf1, 0xff, 0xd5, 0x82, 0xf1, 0x54, + 0xeb, 0xc8, 0xcb, 0xf2, 0xd9, 0x7b, 0x40, 0x4d, 0xdb, 0x64, 0x57, 0x27, 0xbf, 0x59, 0x00, 0xf5, + 0x9c, 0x25, 0xb5, 0x50, 0x4c, 0x2e, 0x57, 0xef, 0x5d, 0x11, 0xd6, 0x30, 0xd0, 0x4b, 0x30, 0x1c, + 0x07, 0xcd, 0xc0, 0x0b, 0xb6, 0xf6, 0xaf, 0x13, 0x19, 0xcb, 0x49, 0x3d, 0x3a, 0xae, 0x27, 0x20, + 0xac, 0xe3, 0xd9, 0xbf, 0x52, 0x84, 0x74, 0x3a, 0xec, 0xef, 0xaf, 0xc9, 0x8f, 0xe7, 0x9a, 0xfc, + 0x86, 0x05, 0x13, 0xb4, 0x75, 0x66, 0x55, 0x26, 0x8f, 0x43, 0x95, 0x9a, 0xc7, 0xea, 0x90, 0x9a, + 0xe7, 0x22, 0xe5, 0x5d, 0x8d, 0xa0, 0x15, 0x0b, 0x2d, 0x96, 0xc6, 0x9c, 0x68, 0x29, 0x16, 0x50, + 0x81, 0x47, 0xc2, 0x50, 0x78, 0xe2, 0xe9, 0x78, 0x24, 0x0c, 0xb1, 0x80, 0xca, 0xcc, 0x3d, 0x7d, + 0x39, 0x99, 0x7b, 0x58, 0x18, 0x44, 0x61, 0xc9, 0x24, 0x04, 0x13, 0x2d, 0x0c, 0xa2, 0x34, 0x71, + 0x4a, 0x70, 0xec, 0x5f, 0x2f, 0xc2, 0x48, 0x35, 0x68, 0x24, 0x0f, 0x4a, 0x2f, 0x1a, 0x0f, 0x4a, + 0x17, 0x52, 0x0f, 0x4a, 0x13, 0x3a, 0xee, 0xf7, 0x9f, 0x8f, 0x3e, 0xaa, 0xe7, 0xa3, 0x7f, 0x65, + 0xb1, 0x59, 0xab, 0xac, 0xd5, 0x44, 0x66, 0xd9, 0xe7, 0x61, 0x98, 0x31, 0x24, 0xe6, 0xfa, 0x29, + 0x5f, 0x59, 0x58, 0x00, 0xf9, 0xb5, 0xa4, 0x18, 0xeb, 0x38, 0xe8, 0x12, 0x0c, 0x45, 0xc4, 0x09, + 0xeb, 0xdb, 0x8a, 0xc7, 0x89, 0x37, 0x08, 0x5e, 0x86, 0x15, 0x14, 0xbd, 0x91, 0x04, 0x45, 0x2c, + 0xe6, 0xe7, 0x48, 0xd5, 0xfb, 0xc3, 0xb7, 0x48, 0x7e, 0x24, 0x44, 0xfb, 0x0e, 0xa0, 0x76, 0xfc, + 0x1e, 0xcc, 0xbb, 0x66, 0xcc, 0xf0, 0x67, 0xa5, 0xb6, 0xd0, 0x67, 0x7f, 0x6e, 0xc1, 0x58, 0x35, + 0x68, 0xd0, 0xad, 0xfb, 0xbd, 0xb4, 0x4f, 0xf5, 0xf0, 0xa3, 0x03, 0x1d, 0xc2, 0x8f, 0xfe, 0x03, + 0x0b, 0x06, 0xab, 0x41, 0xe3, 0x04, 0x74, 0xdf, 0xaf, 0x9a, 0xba, 0xef, 0x47, 0x72, 0x96, 0x44, + 0x8e, 0xba, 0xfb, 0x37, 0x8b, 0x30, 0x4a, 0xfb, 0x19, 0x6c, 0xc9, 0x59, 0x32, 0x46, 0xc4, 0xea, + 0x61, 0x44, 0xa8, 0x98, 0x1b, 0x78, 0x5e, 0x70, 0x37, 0x3d, 0x63, 0xcb, 0xac, 0x14, 0x0b, 0x28, + 0x7a, 0x16, 0x86, 0x9a, 0x21, 0xd9, 0x73, 0x83, 0x56, 0x94, 0xf6, 0x72, 0xae, 0x8a, 0x72, 0xac, + 0x30, 0xe8, 0xcd, 0x28, 0x72, 0xfd, 0x3a, 0x91, 0x76, 0x5f, 0x7d, 0xcc, 0xee, 0x8b, 0x47, 0x70, + 0xd6, 0xca, 0xb1, 0x81, 0x85, 0xee, 0x40, 0x89, 0xfd, 0x67, 0x1c, 0xe5, 0xe8, 0x39, 0x85, 0x44, + 0xda, 0x04, 0x41, 0x00, 0x27, 0xb4, 0xd0, 0x65, 0x80, 0x58, 0x5a, 0xa8, 0x45, 0xc2, 0x09, 0x5f, + 0xc9, 0xda, 0xca, 0x76, 0x2d, 0xc2, 0x1a, 0x16, 0x7a, 0x06, 0x4a, 0xb1, 0xe3, 0x7a, 0x37, 0x5c, + 0x9f, 0x44, 0xc2, 0xc2, 0x4f, 0x64, 0x45, 0x10, 0x85, 0x38, 0x81, 0x53, 0x59, 0x87, 0x85, 0x78, + 0xe0, 0x19, 0xc9, 0x86, 0x18, 0x36, 0x93, 0x75, 0x6e, 0xa8, 0x52, 0xac, 0x61, 0xd8, 0x57, 0xe0, + 0x74, 0x35, 0x68, 0x54, 0x83, 0x30, 0x5e, 0x0e, 0xc2, 0xbb, 0x4e, 0xd8, 0x90, 0xf3, 0x37, 0x23, + 0x03, 0xf4, 0x53, 0xde, 0xd3, 0xcf, 0x77, 0xa6, 0x11, 0x7a, 0xff, 0x05, 0x26, 0xed, 0x1c, 0xd1, + 0x1d, 0xeb, 0xdf, 0x17, 0x18, 0xa3, 0x48, 0xa5, 0xc9, 0x43, 0xef, 0xc0, 0x58, 0x44, 0x6e, 0xb8, + 0x7e, 0xeb, 0x9e, 0xbc, 0xc1, 0x76, 0xf0, 0x75, 0xab, 0x2d, 0xe9, 0x98, 0x5c, 0x0f, 0x66, 0x96, + 0xe1, 0x14, 0x35, 0x3a, 0x84, 0x61, 0xcb, 0x9f, 0x8f, 0x6e, 0x45, 0x24, 0x14, 0x69, 0xda, 0xd8, + 0x10, 0x62, 0x59, 0x88, 0x13, 0x38, 0x5d, 0x32, 0xec, 0xcf, 0x5a, 0xe0, 0xe3, 0x20, 0x88, 0xe5, + 0x22, 0x63, 0x89, 0x7e, 0xb4, 0x72, 0x6c, 0x60, 0xa1, 0x65, 0x40, 0x51, 0xab, 0xd9, 0xf4, 0xd8, + 0xc3, 0xb4, 0xe3, 0x5d, 0x0d, 0x83, 0x56, 0x93, 0x3f, 0x0a, 0x8a, 0x1c, 0x39, 0xb5, 0x36, 0x28, + 0xce, 0xa8, 0x41, 0x19, 0xc3, 0x66, 0xc4, 0x7e, 0x8b, 0x28, 0x0f, 0x5c, 0x23, 0x5d, 0x63, 0x45, + 0x58, 0xc2, 0xec, 0x1f, 0x63, 0x07, 0x06, 0xcb, 0xae, 0x15, 0xb7, 0x42, 0x82, 0x76, 0x61, 0xb4, + 0xc9, 0x8e, 0xf2, 0x38, 0x0c, 0x3c, 0x8f, 0x48, 0x89, 0xfa, 0xc1, 0xec, 0xf9, 0x78, 0xb6, 0x1d, + 0x9d, 0x1c, 0x36, 0xa9, 0xdb, 0xff, 0x69, 0x9c, 0xf1, 0xa5, 0x1a, 0xbf, 0xce, 0x0d, 0x0a, 0x2b, + 0x7d, 0x21, 0xbb, 0x4e, 0xe7, 0xe7, 0xe3, 0x4b, 0x8e, 0x10, 0x61, 0xe9, 0x8f, 0x65, 0x5d, 0xf4, + 0x06, 0x7b, 0x4d, 0xe5, 0xcc, 0xa0, 0x5b, 0x9a, 0x5e, 0x8e, 0x65, 0x3c, 0x9c, 0x8a, 0x8a, 0x58, + 0x23, 0x82, 0x6e, 0xc0, 0xa8, 0x48, 0xc6, 0x24, 0x54, 0x3b, 0x45, 0x43, 0x31, 0x30, 0x8a, 0x75, + 0xe0, 0x61, 0xba, 0x00, 0x9b, 0x95, 0xd1, 0x16, 0x9c, 0xd3, 0x32, 0x13, 0x66, 0xd8, 0x94, 0x72, + 0xde, 0xf2, 0xf8, 0xfd, 0x83, 0x99, 0x73, 0xeb, 0x9d, 0x10, 0x71, 0x67, 0x3a, 0xe8, 0x26, 0x9c, + 0x76, 0xea, 0xb1, 0xbb, 0x47, 0x2a, 0xc4, 0x69, 0x78, 0xae, 0x4f, 0xcc, 0xb0, 0x1f, 0x67, 0xef, + 0x1f, 0xcc, 0x9c, 0x9e, 0xcf, 0x42, 0xc0, 0xd9, 0xf5, 0xd0, 0xab, 0x50, 0x6a, 0xf8, 0x91, 0x18, + 0x83, 0x01, 0x23, 0xe9, 0x66, 0xa9, 0xb2, 0x56, 0x53, 0xdf, 0x9f, 0xfc, 0xc1, 0x49, 0x05, 0xb4, + 0x05, 0x23, 0xba, 0x6b, 0x9f, 0x48, 0xd8, 0xfa, 0x5c, 0x87, 0x5b, 0xbf, 0xe1, 0x0f, 0xc7, 0xf5, + 0x9a, 0xca, 0x62, 0xdb, 0x70, 0x95, 0x33, 0x08, 0xa3, 0xd7, 0x01, 0x51, 0x61, 0xc6, 0xad, 0x93, + 0xf9, 0x3a, 0x0b, 0x71, 0xce, 0xb4, 0x61, 0x43, 0x86, 0xfb, 0x11, 0xaa, 0xb5, 0x61, 0xe0, 0x8c, + 0x5a, 0xe8, 0x1a, 0xe5, 0x28, 0x7a, 0xa9, 0x30, 0xb0, 0x97, 0x02, 0x70, 0xb9, 0x42, 0x9a, 0x21, + 0xa9, 0x3b, 0x31, 0x69, 0x98, 0x14, 0x71, 0xaa, 0x1e, 0x3d, 0x6f, 0x54, 0xe6, 0x18, 0x30, 0xcd, + 0xc2, 0xdb, 0xb3, 0xc7, 0xd0, 0xbb, 0xe3, 0x76, 0x10, 0xc5, 0x6b, 0x24, 0xbe, 0x1b, 0x84, 0x3b, + 0x22, 0x56, 0x5f, 0x12, 0x36, 0x36, 0x01, 0x61, 0x1d, 0x8f, 0xca, 0x8a, 0xec, 0x39, 0x73, 0xa5, + 0xc2, 0x5e, 0x97, 0x86, 0x92, 0x7d, 0x72, 0x8d, 0x17, 0x63, 0x09, 0x97, 0xa8, 0x2b, 0xd5, 0x45, + 0xf6, 0x66, 0x94, 0x42, 0x5d, 0xa9, 0x2e, 0x62, 0x09, 0x47, 0xa4, 0x3d, 0xa1, 0xe9, 0x58, 0xfe, + 0x6b, 0x5f, 0x3b, 0x5f, 0xee, 0x31, 0xa7, 0xa9, 0x0f, 0x13, 0x2a, 0x95, 0x2a, 0x0f, 0x62, 0x18, + 0x95, 0xc7, 0xd9, 0x22, 0xe9, 0x3d, 0x02, 0xa2, 0xd2, 0x76, 0xae, 0xa4, 0x28, 0xe1, 0x36, 0xda, + 0x46, 0x38, 0x99, 0x89, 0xae, 0x99, 0x7f, 0xe6, 0xa0, 0x14, 0xb5, 0x36, 0x1a, 0xc1, 0xae, 0xe3, + 0xfa, 0xec, 0x89, 0x47, 0x13, 0x44, 0x6a, 0x12, 0x80, 0x13, 0x1c, 0xb4, 0x0c, 0x43, 0x8e, 0xb8, + 0x96, 0x8a, 0x47, 0x99, 0xcc, 0xf8, 0x12, 0xf2, 0xea, 0xca, 0xc5, 0x6c, 0xf9, 0x0f, 0xab, 0xba, + 0xe8, 0x15, 0x18, 0x15, 0x2e, 0x90, 0xc2, 0x7a, 0xf9, 0x94, 0xe9, 0x2d, 0x53, 0xd3, 0x81, 0xd8, + 0xc4, 0x45, 0x3f, 0x02, 0x63, 0x94, 0x4a, 0xc2, 0xd8, 0xca, 0x53, 0xbd, 0x70, 0x44, 0x2d, 0xa3, + 0x83, 0x5e, 0x19, 0xa7, 0x88, 0xa1, 0x06, 0x3c, 0xe6, 0xb4, 0xe2, 0x80, 0xa9, 0x83, 0xcd, 0xf5, + 0xbf, 0x1e, 0xec, 0x10, 0x9f, 0xbd, 0xc4, 0x0c, 0x2d, 0x5c, 0xb8, 0x7f, 0x30, 0xf3, 0xd8, 0x7c, + 0x07, 0x3c, 0xdc, 0x91, 0x0a, 0xba, 0x05, 0xc3, 0x71, 0xe0, 0x09, 0xb7, 0x83, 0xa8, 0x7c, 0x26, + 0x3f, 0x1c, 0xd6, 0xba, 0x42, 0xd3, 0x15, 0x2d, 0xaa, 0x2a, 0xd6, 0xe9, 0xa0, 0x75, 0xbe, 0xc7, + 0x58, 0xa0, 0x60, 0x12, 0x95, 0x1f, 0xc9, 0x1f, 0x18, 0x15, 0x4f, 0xd8, 0xdc, 0x82, 0xa2, 0x26, + 0xd6, 0xc9, 0xa0, 0xab, 0x30, 0xd9, 0x0c, 0xdd, 0x80, 0x2d, 0x6c, 0xa5, 0x8a, 0x2f, 0x1b, 0x81, + 0x12, 0x27, 0xab, 0x69, 0x04, 0xdc, 0x5e, 0x87, 0x5e, 0xc4, 0x64, 0x61, 0xf9, 0x2c, 0xcf, 0x08, + 0xc5, 0x85, 0x53, 0x5e, 0x86, 0x15, 0x14, 0xad, 0x32, 0xbe, 0xcc, 0xaf, 0x4c, 0xe5, 0xe9, 0xfc, + 0xb8, 0x1c, 0xfa, 0xd5, 0x8a, 0x0b, 0x2e, 0xea, 0x2f, 0x4e, 0x28, 0x4c, 0xff, 0x20, 0x4c, 0xb6, + 0x31, 0xde, 0x23, 0x59, 0x94, 0xff, 0xd3, 0x7e, 0x28, 0x29, 0xbd, 0x2b, 0x9a, 0x33, 0xd5, 0xe9, + 0x67, 0xd3, 0xea, 0xf4, 0x21, 0x2a, 0xfe, 0xe9, 0x1a, 0xf4, 0x75, 0xc3, 0x1e, 0xaa, 0x90, 0x9f, + 0xd8, 0x49, 0x57, 0x3a, 0x74, 0x75, 0xff, 0xd4, 0xae, 0xd1, 0xc5, 0x9e, 0xf5, 0xf2, 0x7d, 0x1d, + 0x6f, 0xe6, 0x3d, 0xe6, 0xaa, 0xa5, 0x37, 0xcd, 0x66, 0xd0, 0x58, 0xa9, 0xa6, 0x93, 0x37, 0x56, + 0x69, 0x21, 0xe6, 0x30, 0x76, 0x57, 0xa0, 0x52, 0x02, 0xbb, 0x2b, 0x0c, 0x3e, 0xe0, 0x5d, 0x41, + 0x12, 0xc0, 0x09, 0x2d, 0xe4, 0xc1, 0x64, 0xdd, 0xcc, 0xbb, 0xa9, 0x5c, 0x3e, 0x9f, 0xe8, 0x9a, + 0x01, 0xb3, 0xa5, 0x25, 0xe4, 0x5a, 0x4c, 0x53, 0xc1, 0xed, 0x84, 0xd1, 0x2b, 0x30, 0xf4, 0x5e, + 0x10, 0xb1, 0x55, 0x2c, 0x8e, 0x4a, 0xe9, 0x64, 0x37, 0xf4, 0xc6, 0xcd, 0x1a, 0x2b, 0x3f, 0x3c, + 0x98, 0x19, 0xae, 0x06, 0x0d, 0xf9, 0x17, 0xab, 0x0a, 0xe8, 0x1e, 0x9c, 0x36, 0x18, 0x8c, 0xea, + 0x2e, 0xf4, 0xde, 0xdd, 0x73, 0xa2, 0xb9, 0xd3, 0x2b, 0x59, 0x94, 0x70, 0x76, 0x03, 0xf6, 0x97, + 0xb9, 0x76, 0x59, 0xe8, 0xa0, 0x48, 0xd4, 0xf2, 0x4e, 0x22, 0xeb, 0xce, 0x92, 0xa1, 0x1e, 0x7b, + 0xe0, 0x17, 0x8c, 0xdf, 0xb3, 0xd8, 0x0b, 0xc6, 0x3a, 0xd9, 0x6d, 0x7a, 0x4e, 0x7c, 0x12, 0x7e, + 0x04, 0x6f, 0xc0, 0x50, 0x2c, 0x5a, 0xeb, 0x94, 0x28, 0x48, 0xeb, 0x14, 0x7b, 0xc5, 0x51, 0xe7, + 0xab, 0x2c, 0xc5, 0x8a, 0x8c, 0xfd, 0xcf, 0xf9, 0x0c, 0x48, 0xc8, 0x09, 0xa8, 0x2a, 0x2a, 0xa6, + 0xaa, 0x62, 0xa6, 0xcb, 0x17, 0xe4, 0xa8, 0x2c, 0xfe, 0x99, 0xd9, 0x6f, 0x76, 0x95, 0xf9, 0xb8, + 0x3f, 0x9d, 0xd9, 0x3f, 0x67, 0xc1, 0x54, 0x96, 0x35, 0x08, 0x95, 0x89, 0xf8, 0x45, 0x4a, 0x3d, + 0x25, 0xaa, 0x11, 0xbc, 0x2d, 0xca, 0xb1, 0xc2, 0xe8, 0x39, 0x59, 0xc7, 0xd1, 0x22, 0xca, 0xdd, + 0x04, 0x33, 0x45, 0x2b, 0x7a, 0x8d, 0x3b, 0x06, 0x59, 0x2a, 0x87, 0xea, 0xd1, 0x9c, 0x82, 0xec, + 0x5f, 0x2d, 0xc0, 0x14, 0x7f, 0x0b, 0x98, 0xdf, 0x0b, 0xdc, 0x46, 0x35, 0x68, 0x08, 0x37, 0xa9, + 0xb7, 0x60, 0xa4, 0xa9, 0xdd, 0x7e, 0x3b, 0xc5, 0xb4, 0xd2, 0x6f, 0xc9, 0xc9, 0x2d, 0x44, 0x2f, + 0xc5, 0x06, 0x2d, 0xd4, 0x80, 0x11, 0xb2, 0xe7, 0xd6, 0x95, 0x42, 0xb9, 0x70, 0x64, 0x96, 0xae, + 0x5a, 0x59, 0xd2, 0xe8, 0x60, 0x83, 0xea, 0x43, 0x48, 0xa9, 0x65, 0xff, 0xbc, 0x05, 0x8f, 0xe4, + 0x44, 0xc0, 0xa2, 0xcd, 0xdd, 0x65, 0xaf, 0x2e, 0x22, 0xdf, 0xaf, 0x6a, 0x8e, 0xbf, 0xc5, 0x60, + 0x01, 0x45, 0x9f, 0x07, 0xe0, 0x6f, 0x29, 0x54, 0x28, 0x17, 0x9f, 0xde, 0x5b, 0x64, 0x18, 0x2d, + 0x7c, 0x88, 0xac, 0x8f, 0x35, 0x5a, 0xf6, 0x2f, 0x17, 0xa1, 0x9f, 0xe9, 0xee, 0xd1, 0x32, 0x0c, + 0x6e, 0xf3, 0x78, 0xdb, 0xbd, 0x84, 0xf6, 0x4e, 0x6e, 0x37, 0xbc, 0x00, 0xcb, 0xca, 0x68, 0x15, + 0x4e, 0x09, 0x57, 0xbc, 0x0a, 0xf1, 0x9c, 0x7d, 0x79, 0x49, 0xe6, 0x79, 0x96, 0x64, 0x0e, 0x90, + 0x53, 0x2b, 0xed, 0x28, 0x38, 0xab, 0x1e, 0x7a, 0xad, 0x2d, 0xca, 0x26, 0x8f, 0x54, 0xae, 0x44, + 0xea, 0x2e, 0x91, 0x36, 0x5f, 0x81, 0xd1, 0x66, 0x9b, 0x3a, 0x40, 0xcb, 0xbb, 0x6f, 0xaa, 0x00, + 0x4c, 0x5c, 0x66, 0x06, 0xd2, 0x62, 0x46, 0x2f, 0xeb, 0xdb, 0x21, 0x89, 0xb6, 0x03, 0xaf, 0x21, + 0x92, 0x4c, 0x27, 0x66, 0x20, 0x29, 0x38, 0x6e, 0xab, 0x41, 0xa9, 0x6c, 0x3a, 0xae, 0xd7, 0x0a, + 0x49, 0x42, 0x65, 0xc0, 0xa4, 0xb2, 0x9c, 0x82, 0xe3, 0xb6, 0x1a, 0x74, 0x1d, 0x9d, 0x16, 0x19, + 0x8a, 0x65, 0x80, 0x06, 0x65, 0xdb, 0x33, 0x28, 0x1d, 0x35, 0x3a, 0x04, 0x0d, 0x12, 0xb6, 0x15, + 0x2a, 0xc7, 0xb1, 0x96, 0xff, 0x52, 0xb8, 0x68, 0x48, 0x2a, 0x0f, 0x92, 0x27, 0xf7, 0x8f, 0x2c, + 0x38, 0x95, 0x61, 0x43, 0xc8, 0x59, 0xd5, 0x96, 0x1b, 0xc5, 0x2a, 0xbd, 0x8f, 0xc6, 0xaa, 0x78, + 0x39, 0x56, 0x18, 0x74, 0x3f, 0x70, 0x66, 0x98, 0x66, 0x80, 0xc2, 0x46, 0x47, 0x40, 0x8f, 0xc6, + 0x00, 0xd1, 0x05, 0xe8, 0x6b, 0x45, 0x24, 0x94, 0x09, 0x66, 0x25, 0xff, 0x66, 0x0a, 0x46, 0x06, + 0xa1, 0x12, 0xe5, 0x96, 0xd2, 0xed, 0x69, 0x12, 0x25, 0xd7, 0xee, 0x71, 0x98, 0xfd, 0xd3, 0x45, + 0x38, 0x9b, 0x6b, 0x19, 0x4c, 0xbb, 0xb4, 0x1b, 0xf8, 0x6e, 0x1c, 0xa8, 0x77, 0x21, 0x1e, 0xdd, + 0x86, 0x34, 0xb7, 0x57, 0x45, 0x39, 0x56, 0x18, 0xe8, 0xa2, 0xcc, 0x3f, 0x9e, 0x4e, 0x60, 0xb4, + 0x50, 0x31, 0x52, 0x90, 0xf7, 0x9a, 0x89, 0xec, 0x09, 0xe8, 0x6b, 0x06, 0x81, 0x97, 0x66, 0x46, + 0xb4, 0xbb, 0x41, 0xe0, 0x61, 0x06, 0x44, 0x9f, 0x12, 0xe3, 0x90, 0x7a, 0x08, 0xc1, 0x4e, 0x23, + 0x88, 0xb4, 0xc1, 0x78, 0x0a, 0x06, 0x77, 0xc8, 0x7e, 0xe8, 0xfa, 0x5b, 0xe9, 0x07, 0xb2, 0xeb, + 0xbc, 0x18, 0x4b, 0xb8, 0x99, 0xbf, 0x63, 0xf0, 0x38, 0xf2, 0x77, 0xe8, 0x33, 0x3b, 0xd4, 0xf5, + 0x68, 0xfb, 0xc9, 0x22, 0x8c, 0xe3, 0x85, 0xca, 0xf7, 0x27, 0xe2, 0x56, 0xfb, 0x44, 0x1c, 0x77, + 0x56, 0xb7, 0xee, 0xb3, 0xf1, 0x9b, 0x16, 0x8c, 0xb3, 0x18, 0xd7, 0x22, 0x3a, 0x8b, 0x1b, 0xf8, + 0x27, 0x20, 0xba, 0x3d, 0x01, 0xfd, 0x21, 0x6d, 0x34, 0x9d, 0xaa, 0x89, 0xf5, 0x04, 0x73, 0x18, + 0x7a, 0x0c, 0xfa, 0x58, 0x17, 0xe8, 0xe4, 0x8d, 0xf0, 0x2c, 0x17, 0x15, 0x27, 0x76, 0x30, 0x2b, + 0x65, 0x6e, 0xb2, 0x98, 0x34, 0x3d, 0x97, 0x77, 0x3a, 0x51, 0xa8, 0x7f, 0x3c, 0xdc, 0x64, 0x33, + 0xbb, 0xf6, 0xe1, 0xdc, 0x64, 0xb3, 0x49, 0x76, 0xbe, 0x16, 0xfd, 0x8f, 0x02, 0x9c, 0xcf, 0xac, + 0xd7, 0xb3, 0x9b, 0x6c, 0xe7, 0xda, 0xc7, 0x63, 0xe7, 0x90, 0x6d, 0x7e, 0x50, 0x3c, 0x41, 0xf3, + 0x83, 0xbe, 0x5e, 0x25, 0xc7, 0xfe, 0x1e, 0xbc, 0x57, 0x33, 0x87, 0xec, 0x63, 0xe2, 0xbd, 0x9a, + 0xd9, 0xb7, 0x9c, 0x6b, 0xdd, 0x77, 0x0a, 0x39, 0xdf, 0xc2, 0x2e, 0x78, 0x97, 0x28, 0x9f, 0x61, + 0xc0, 0x48, 0x48, 0xc2, 0x23, 0x9c, 0xc7, 0xf0, 0x32, 0xac, 0xa0, 0xc8, 0xd5, 0xfc, 0x40, 0x79, + 0xd7, 0x5e, 0x39, 0xd2, 0x96, 0x99, 0x35, 0xdf, 0x3f, 0xf4, 0x50, 0x32, 0x69, 0x9f, 0xd0, 0x55, + 0xed, 0x52, 0x5e, 0xec, 0xfd, 0x52, 0x3e, 0x92, 0x7d, 0x21, 0x47, 0xf3, 0x30, 0xbe, 0xeb, 0xfa, + 0x2c, 0xdf, 0xba, 0x29, 0x8a, 0xaa, 0xb0, 0x08, 0xab, 0x26, 0x18, 0xa7, 0xf1, 0xa7, 0x5f, 0x81, + 0xd1, 0x07, 0xd7, 0x22, 0x7e, 0xa3, 0x08, 0x8f, 0x76, 0xd8, 0xf6, 0x9c, 0xd7, 0x1b, 0x73, 0xa0, + 0xf1, 0xfa, 0xb6, 0x79, 0xa8, 0xc2, 0xd4, 0x66, 0xcb, 0xf3, 0xf6, 0x99, 0x85, 0x1f, 0x69, 0x48, + 0x0c, 0x21, 0x2b, 0xaa, 0x00, 0xf6, 0xcb, 0x19, 0x38, 0x38, 0xb3, 0x26, 0x7a, 0x1d, 0x50, 0xb0, + 0xc1, 0xac, 0x66, 0x1a, 0x49, 0x80, 0x1c, 0x36, 0xf0, 0xc5, 0x64, 0x33, 0xde, 0x6c, 0xc3, 0xc0, + 0x19, 0xb5, 0xa8, 0xd0, 0x4f, 0x4f, 0xa5, 0x7d, 0xd5, 0xad, 0x94, 0xd0, 0x8f, 0x75, 0x20, 0x36, + 0x71, 0xd1, 0x55, 0x98, 0x74, 0xf6, 0x1c, 0x97, 0x07, 0x4c, 0x94, 0x04, 0xb8, 0xd4, 0xaf, 0x74, + 0x77, 0xf3, 0x69, 0x04, 0xdc, 0x5e, 0x27, 0xe5, 0x88, 0x3a, 0x90, 0xef, 0x88, 0xda, 0x99, 0x2f, + 0x76, 0x53, 0xc5, 0xda, 0xff, 0xd9, 0xa2, 0xc7, 0x57, 0x46, 0x82, 0x6f, 0x3a, 0x0e, 0x4a, 0xa5, + 0xa8, 0xf9, 0x84, 0xaa, 0x71, 0x58, 0xd4, 0x81, 0xd8, 0xc4, 0xe5, 0x0b, 0x22, 0x4a, 0x1c, 0x15, + 0x0c, 0xd1, 0x5d, 0x38, 0x7d, 0x2b, 0x0c, 0xf4, 0x26, 0x0c, 0x36, 0xdc, 0x3d, 0x37, 0x0a, 0x42, + 0xb1, 0x59, 0x8e, 0x68, 0x4c, 0x9e, 0xf0, 0xc1, 0x0a, 0x27, 0x83, 0x25, 0x3d, 0xfb, 0x27, 0x0b, + 0x30, 0x2a, 0x5b, 0x7c, 0xa3, 0x15, 0xc4, 0xce, 0x09, 0x1c, 0xcb, 0x57, 0x8d, 0x63, 0xf9, 0x53, + 0x9d, 0x3c, 0xdf, 0x59, 0x97, 0x72, 0x8f, 0xe3, 0x9b, 0xa9, 0xe3, 0xf8, 0xc9, 0xee, 0xa4, 0x3a, + 0x1f, 0xc3, 0xff, 0xc2, 0x82, 0x49, 0x03, 0xff, 0x04, 0x4e, 0x83, 0x65, 0xf3, 0x34, 0x78, 0xbc, + 0xeb, 0x37, 0xe4, 0x9c, 0x02, 0x5f, 0x2a, 0xa4, 0xfa, 0xce, 0xb8, 0xff, 0x7b, 0xd0, 0xb7, 0xed, + 0x84, 0x8d, 0x4e, 0x61, 0x7f, 0xdb, 0x2a, 0xcd, 0x5e, 0x73, 0xc2, 0x06, 0xe7, 0xe1, 0xcf, 0xaa, + 0xdc, 0xa3, 0x4e, 0xd8, 0xe8, 0xea, 0x97, 0xc3, 0x9a, 0x42, 0x57, 0x60, 0x20, 0xaa, 0x07, 0x4d, + 0x65, 0x93, 0x77, 0x81, 0xe7, 0x25, 0xa5, 0x25, 0x87, 0x07, 0x33, 0xc8, 0x6c, 0x8e, 0x16, 0x63, + 0x81, 0x3f, 0xbd, 0x05, 0x25, 0xd5, 0xf4, 0x43, 0xf5, 0xa8, 0xf8, 0x7a, 0x11, 0x4e, 0x65, 0xac, + 0x0b, 0x14, 0x19, 0xa3, 0xf5, 0x7c, 0x8f, 0xcb, 0xe9, 0x43, 0x8e, 0x57, 0xc4, 0x6e, 0x2c, 0x0d, + 0x31, 0xff, 0x3d, 0x37, 0x7a, 0x2b, 0x22, 0xe9, 0x46, 0x69, 0x51, 0xf7, 0x46, 0x69, 0x63, 0x27, + 0x36, 0xd4, 0xb4, 0x21, 0xd5, 0xd3, 0x87, 0x3a, 0xa7, 0x7f, 0x5a, 0x84, 0xa9, 0xac, 0x80, 0x19, + 0xe8, 0x47, 0x53, 0x49, 0x84, 0x5e, 0xec, 0x35, 0xd4, 0x06, 0xcf, 0x2c, 0x24, 0x22, 0x8c, 0xcd, + 0x9a, 0x69, 0x85, 0xba, 0x0e, 0xb3, 0x68, 0x93, 0x39, 0xca, 0x85, 0x3c, 0xf9, 0x93, 0xdc, 0xe2, + 0x9f, 0xe9, 0xb9, 0x03, 0x22, 0x6b, 0x54, 0x94, 0x72, 0x94, 0x93, 0xc5, 0xdd, 0x1d, 0xe5, 0x64, + 0xcb, 0xd3, 0x2e, 0x0c, 0x6b, 0x5f, 0xf3, 0x50, 0x67, 0x7c, 0x87, 0x9e, 0x28, 0x5a, 0xbf, 0x1f, + 0xea, 0xac, 0xff, 0xbc, 0x05, 0x29, 0x4b, 0x38, 0xa5, 0x92, 0xb2, 0x72, 0x55, 0x52, 0x17, 0xa0, + 0x2f, 0x0c, 0x3c, 0x92, 0xce, 0x2b, 0x83, 0x03, 0x8f, 0x60, 0x06, 0xa1, 0x18, 0x71, 0xa2, 0x90, + 0x18, 0xd1, 0x2f, 0x5b, 0xe2, 0x1a, 0xf5, 0x04, 0xf4, 0x7b, 0x64, 0x8f, 0x48, 0x6d, 0x84, 0xe2, + 0xc9, 0x37, 0x68, 0x21, 0xe6, 0x30, 0xfb, 0x37, 0xfb, 0xe0, 0x5c, 0x47, 0x57, 0x53, 0x7a, 0x65, + 0xd9, 0x72, 0x62, 0x72, 0xd7, 0xd9, 0x4f, 0x47, 0xbd, 0xbe, 0xca, 0x8b, 0xb1, 0x84, 0x33, 0xbb, + 0x5d, 0x1e, 0x38, 0x33, 0xa5, 0xc0, 0x13, 0xf1, 0x32, 0x05, 0xd4, 0x54, 0x1c, 0x15, 0x8f, 0x43, + 0x71, 0x74, 0x19, 0x20, 0x8a, 0xbc, 0x25, 0x9f, 0x4a, 0x60, 0x0d, 0x61, 0x10, 0x9c, 0x04, 0x58, + 0xad, 0xdd, 0x10, 0x10, 0xac, 0x61, 0xa1, 0x0a, 0x4c, 0x34, 0xc3, 0x20, 0xe6, 0xfa, 0xd0, 0x0a, + 0x37, 0x45, 0xe9, 0x37, 0xbd, 0xfc, 0xaa, 0x29, 0x38, 0x6e, 0xab, 0x81, 0x5e, 0x82, 0x61, 0xe1, + 0xf9, 0x57, 0x0d, 0x02, 0x4f, 0xa8, 0x6a, 0x94, 0x61, 0x43, 0x2d, 0x01, 0x61, 0x1d, 0x4f, 0xab, + 0xc6, 0x94, 0xac, 0x83, 0x99, 0xd5, 0xb8, 0xa2, 0x55, 0xc3, 0x4b, 0x05, 0xcf, 0x19, 0xea, 0x29, + 0x78, 0x4e, 0xa2, 0xbc, 0x2a, 0xf5, 0xfc, 0xae, 0x04, 0x5d, 0xd5, 0x3d, 0xbf, 0xd6, 0x07, 0xa7, + 0xc4, 0xc2, 0x79, 0xd8, 0xcb, 0xe5, 0x56, 0xfb, 0x72, 0x39, 0x0e, 0xf5, 0xd6, 0xf7, 0xd7, 0xcc, + 0x49, 0xaf, 0x99, 0x2f, 0x17, 0x61, 0x80, 0x4f, 0xc5, 0x09, 0xc8, 0xf0, 0xcb, 0x42, 0xe9, 0xd7, + 0x21, 0x6c, 0x0c, 0xef, 0xcb, 0x6c, 0xc5, 0x89, 0x1d, 0x7e, 0x7e, 0x29, 0x36, 0x9a, 0xa8, 0x07, + 0xd1, 0xac, 0xc1, 0x68, 0xa7, 0x53, 0x5a, 0x2d, 0xe0, 0x34, 0x34, 0xb6, 0xfb, 0x0e, 0x40, 0xc4, + 0x12, 0xe7, 0x53, 0x1a, 0x22, 0x00, 0xd1, 0xd3, 0x1d, 0x5a, 0xaf, 0x29, 0x64, 0xde, 0x87, 0x64, + 0x09, 0x2a, 0x00, 0xd6, 0x28, 0x4e, 0xbf, 0x0c, 0x25, 0x85, 0xdc, 0x4d, 0x05, 0x30, 0xa2, 0x9f, + 0x7a, 0x9f, 0x83, 0xf1, 0x54, 0x5b, 0x47, 0xd2, 0x20, 0xfc, 0x96, 0x05, 0xe3, 0xbc, 0xcb, 0x4b, + 0xfe, 0x9e, 0xd8, 0xec, 0xef, 0xc3, 0x94, 0x97, 0xb1, 0xe9, 0xc4, 0x8c, 0xf6, 0xbe, 0x49, 0x95, + 0xc6, 0x20, 0x0b, 0x8a, 0x33, 0xdb, 0x40, 0x97, 0x60, 0x88, 0x3b, 0xba, 0x38, 0x9e, 0x70, 0x4e, + 0x18, 0xe1, 0x89, 0x28, 0x78, 0x19, 0x56, 0x50, 0xfb, 0x9b, 0x16, 0x4c, 0xf2, 0x9e, 0x5f, 0x27, + 0xfb, 0xea, 0x76, 0xfc, 0x51, 0xf6, 0x5d, 0xe4, 0xd9, 0x28, 0xe4, 0xe4, 0xd9, 0xd0, 0x3f, 0xad, + 0xd8, 0xf1, 0xd3, 0x7e, 0xd5, 0x02, 0xb1, 0x02, 0x4f, 0xe0, 0x1e, 0xf8, 0x83, 0xe6, 0x3d, 0x70, + 0x3a, 0x7f, 0x51, 0xe7, 0x5c, 0x00, 0xff, 0xdc, 0x82, 0x09, 0x8e, 0x90, 0x3c, 0x44, 0x7e, 0xa4, + 0xf3, 0xd0, 0x4b, 0xf2, 0x37, 0x95, 0x6d, 0x3b, 0xfb, 0xa3, 0x8c, 0xc9, 0xea, 0xeb, 0x38, 0x59, + 0x0d, 0xb9, 0x81, 0x8e, 0x90, 0xd4, 0xf0, 0xc8, 0xa1, 0x61, 0xed, 0x3f, 0xb1, 0x00, 0xf1, 0x66, + 0x8c, 0x73, 0x99, 0x9e, 0x76, 0xac, 0x54, 0xd3, 0x04, 0x25, 0xac, 0x46, 0x41, 0xb0, 0x86, 0x75, + 0x2c, 0xc3, 0x93, 0x7a, 0x4d, 0x2e, 0x76, 0x7f, 0x4d, 0x3e, 0xc2, 0x88, 0xfe, 0xf5, 0x3e, 0x48, + 0x5b, 0x42, 0xa3, 0xdb, 0x30, 0x52, 0x77, 0x9a, 0xce, 0x86, 0xeb, 0xb9, 0xb1, 0x4b, 0xa2, 0x4e, + 0x66, 0x28, 0x8b, 0x1a, 0x9e, 0x78, 0x27, 0xd4, 0x4a, 0xb0, 0x41, 0x07, 0xcd, 0x02, 0x34, 0x43, + 0x77, 0xcf, 0xf5, 0xc8, 0x16, 0xbb, 0x0a, 0x33, 0x77, 0x28, 0x6e, 0x5b, 0x21, 0x4b, 0xb1, 0x86, + 0x91, 0xe1, 0x3e, 0x53, 0x7c, 0x78, 0xee, 0x33, 0x7d, 0x47, 0x74, 0x9f, 0xe9, 0xef, 0xc9, 0x7d, + 0x06, 0xc3, 0x19, 0x79, 0x76, 0xd3, 0xff, 0xcb, 0xae, 0x47, 0x84, 0xc0, 0xc6, 0x9d, 0xa4, 0xa6, + 0xef, 0x1f, 0xcc, 0x9c, 0xc1, 0x99, 0x18, 0x38, 0xa7, 0x26, 0xfa, 0x3c, 0x94, 0x1d, 0xcf, 0x0b, + 0xee, 0xaa, 0x51, 0x5b, 0x8a, 0xea, 0x8e, 0x97, 0x44, 0x4a, 0x1f, 0x5a, 0x78, 0xec, 0xfe, 0xc1, + 0x4c, 0x79, 0x3e, 0x07, 0x07, 0xe7, 0xd6, 0xb6, 0x77, 0xe0, 0x54, 0x8d, 0x84, 0x32, 0x4f, 0xaa, + 0xda, 0x62, 0xeb, 0x50, 0x0a, 0x53, 0x4c, 0xa5, 0xa7, 0x58, 0x25, 0x5a, 0x14, 0x4b, 0xc9, 0x44, + 0x12, 0x42, 0xf6, 0x9f, 0x59, 0x30, 0x28, 0xac, 0xab, 0x4f, 0x40, 0x96, 0x99, 0x37, 0xf4, 0x91, + 0x33, 0xd9, 0x8c, 0x97, 0x75, 0x26, 0x57, 0x13, 0xb9, 0x92, 0xd2, 0x44, 0x3e, 0xde, 0x89, 0x48, + 0x67, 0x1d, 0xe4, 0xcf, 0x16, 0x61, 0xcc, 0xb4, 0x2c, 0x3f, 0x81, 0x21, 0x58, 0x83, 0xc1, 0x48, + 0xb8, 0x31, 0x14, 0xf2, 0xed, 0x57, 0xd3, 0x93, 0x98, 0x58, 0xb9, 0x08, 0xc7, 0x05, 0x49, 0x24, + 0xd3, 0x3f, 0xa2, 0xf8, 0x10, 0xfd, 0x23, 0xba, 0x19, 0xf7, 0xf7, 0x1d, 0x87, 0x71, 0xbf, 0xfd, + 0x15, 0xc6, 0xfc, 0xf5, 0xf2, 0x13, 0x90, 0x0b, 0xae, 0x9a, 0xc7, 0x84, 0xdd, 0x61, 0x65, 0x89, + 0x4e, 0xe5, 0xc8, 0x07, 0xff, 0xd8, 0x82, 0x61, 0x81, 0x78, 0x02, 0xdd, 0xfe, 0x21, 0xb3, 0xdb, + 0x8f, 0x76, 0xe8, 0x76, 0x4e, 0x7f, 0xff, 0x6e, 0x41, 0xf5, 0xb7, 0x1a, 0x84, 0x71, 0x4f, 0x99, + 0x33, 0x86, 0xe8, 0x6d, 0x30, 0xa8, 0x07, 0x9e, 0x38, 0xcc, 0x1f, 0x4b, 0xfc, 0x64, 0x79, 0xf9, + 0xa1, 0xf6, 0x1b, 0x2b, 0x6c, 0xe6, 0xc6, 0x19, 0x84, 0xb1, 0x38, 0x40, 0x13, 0x37, 0xce, 0x20, + 0x8c, 0x31, 0x83, 0xa0, 0x06, 0x40, 0xec, 0x84, 0x5b, 0x24, 0xa6, 0x65, 0xc2, 0xe5, 0x3e, 0x7f, + 0x17, 0xb6, 0x62, 0xd7, 0x9b, 0x75, 0xfd, 0x38, 0x8a, 0xc3, 0xd9, 0x15, 0x3f, 0xbe, 0x19, 0xf2, + 0xbb, 0x81, 0xe6, 0xf8, 0xaa, 0x68, 0x61, 0x8d, 0xae, 0xf4, 0xbc, 0x62, 0x6d, 0xf4, 0x9b, 0x0f, + 0x85, 0x6b, 0xa2, 0x1c, 0x2b, 0x0c, 0xfb, 0x65, 0xc6, 0x93, 0xd9, 0x00, 0x1d, 0xcd, 0x27, 0xf5, + 0x6b, 0x43, 0x6a, 0x68, 0xd9, 0x2b, 0x41, 0x45, 0xf7, 0x7c, 0xed, 0xcc, 0x02, 0x69, 0xc3, 0xba, + 0x5b, 0x40, 0xe2, 0x1e, 0x8b, 0x7e, 0xb8, 0xed, 0xfd, 0xf8, 0xb9, 0x2e, 0xbc, 0xf4, 0x08, 0x2f, + 0xc6, 0x2c, 0xfc, 0x2a, 0x0b, 0x53, 0xb9, 0x52, 0x4d, 0xe7, 0x36, 0x59, 0x94, 0x00, 0x9c, 0xe0, + 0xa0, 0x39, 0x71, 0xb3, 0xe4, 0xfa, 0xb9, 0x47, 0x53, 0x37, 0x4b, 0xf9, 0xf9, 0xda, 0xd5, 0xf2, + 0x79, 0x18, 0x56, 0xf9, 0xe2, 0xaa, 0x3c, 0xed, 0x96, 0x08, 0x40, 0xb0, 0x94, 0x14, 0x63, 0x1d, + 0x07, 0xad, 0xc3, 0x78, 0xc4, 0x93, 0xd9, 0x49, 0x67, 0x28, 0xa1, 0x37, 0x78, 0x5a, 0xbe, 0x3b, + 0xd7, 0x4c, 0xf0, 0x21, 0x2b, 0xe2, 0x9b, 0x55, 0xba, 0x4f, 0xa5, 0x49, 0xa0, 0xd7, 0x60, 0xcc, + 0xd3, 0x93, 0x7a, 0x57, 0x85, 0x5a, 0x41, 0x99, 0x65, 0x1a, 0x29, 0xbf, 0xab, 0x38, 0x85, 0x4d, + 0x85, 0x00, 0xbd, 0x44, 0x44, 0x2f, 0x73, 0xfc, 0x2d, 0x12, 0x89, 0x6c, 0x57, 0x4c, 0x08, 0xb8, + 0x91, 0x83, 0x83, 0x73, 0x6b, 0xa3, 0x2b, 0x30, 0x22, 0x3f, 0x5f, 0x73, 0x0e, 0x4c, 0x8c, 0x7f, + 0x35, 0x18, 0x36, 0x30, 0xd1, 0x5d, 0x38, 0x2d, 0xff, 0xaf, 0x87, 0xce, 0xe6, 0xa6, 0x5b, 0x17, + 0xbe, 0x99, 0xc3, 0x8c, 0xc4, 0xbc, 0xf4, 0x84, 0x58, 0xca, 0x42, 0x3a, 0x3c, 0x98, 0xb9, 0x20, + 0x46, 0x2d, 0x13, 0xce, 0x26, 0x31, 0x9b, 0x3e, 0x5a, 0x85, 0x53, 0xdb, 0xc4, 0xf1, 0xe2, 0xed, + 0xc5, 0x6d, 0x52, 0xdf, 0x91, 0x9b, 0x88, 0xb9, 0x1c, 0x6a, 0x26, 0xb3, 0xd7, 0xda, 0x51, 0x70, + 0x56, 0x3d, 0xf4, 0x36, 0x94, 0x9b, 0xad, 0x0d, 0xcf, 0x8d, 0xb6, 0xd7, 0x82, 0x98, 0x3d, 0x75, + 0xab, 0x74, 0x6b, 0xc2, 0x37, 0x51, 0xb9, 0x5b, 0x56, 0x73, 0xf0, 0x70, 0x2e, 0x05, 0xf4, 0x3e, + 0x9c, 0x4e, 0x2d, 0x06, 0xe1, 0x29, 0x35, 0x96, 0x1f, 0x0b, 0xb2, 0x96, 0x55, 0x81, 0x7b, 0xcc, + 0x66, 0x82, 0x70, 0x76, 0x13, 0x1f, 0xce, 0x00, 0xe2, 0x3d, 0x5a, 0x59, 0x93, 0x6e, 0xd0, 0x17, + 0x60, 0x44, 0x5f, 0x45, 0xe2, 0x80, 0xb9, 0xd8, 0x2d, 0x81, 0xbd, 0x90, 0x8d, 0xd4, 0x8a, 0xd2, + 0x61, 0xd8, 0xa0, 0x68, 0x13, 0xc8, 0xfe, 0x3e, 0x74, 0x03, 0x86, 0xea, 0x9e, 0x4b, 0xfc, 0x78, + 0xa5, 0xda, 0xc9, 0xa7, 0x7e, 0x51, 0xe0, 0x88, 0x01, 0x13, 0xc1, 0xf3, 0x78, 0x19, 0x56, 0x14, + 0xec, 0xdf, 0x2d, 0xc0, 0x4c, 0x97, 0x48, 0x8c, 0x29, 0x1d, 0xa0, 0xd5, 0x93, 0x0e, 0x70, 0x5e, + 0x26, 0x8f, 0x5b, 0x4b, 0xdd, 0x3f, 0x53, 0x89, 0xe1, 0x92, 0x5b, 0x68, 0x1a, 0xbf, 0x67, 0xbb, + 0x49, 0x5d, 0x8d, 0xd8, 0xd7, 0xd5, 0xa2, 0xd7, 0x78, 0x3e, 0xe8, 0xef, 0x5d, 0xa2, 0xcf, 0x55, + 0x05, 0xdb, 0x5f, 0x29, 0xc0, 0x69, 0x35, 0x84, 0xdf, 0xbb, 0x03, 0x77, 0xab, 0x7d, 0xe0, 0x8e, + 0x41, 0x91, 0x6e, 0xdf, 0x84, 0x81, 0xda, 0x7e, 0x54, 0x8f, 0xbd, 0x1e, 0x04, 0xa0, 0x27, 0xcc, + 0xd8, 0x32, 0xea, 0x98, 0x36, 0xe2, 0xcb, 0xfc, 0x15, 0x0b, 0xc6, 0xd7, 0x17, 0xab, 0xb5, 0xa0, + 0xbe, 0x43, 0xe2, 0x79, 0xae, 0x26, 0xc2, 0x42, 0xfe, 0xb1, 0x1e, 0x50, 0xae, 0xc9, 0x92, 0x98, + 0x2e, 0x40, 0xdf, 0x76, 0x10, 0xc5, 0xe9, 0x57, 0xb6, 0x6b, 0x41, 0x14, 0x63, 0x06, 0xb1, 0xff, + 0xd0, 0x82, 0x7e, 0x96, 0xf2, 0xb4, 0x5b, 0x6a, 0xdc, 0x5e, 0xbe, 0x0b, 0xbd, 0x04, 0x03, 0x64, + 0x73, 0x93, 0xd4, 0x63, 0x31, 0xab, 0xd2, 0xbb, 0x6e, 0x60, 0x89, 0x95, 0xd2, 0x43, 0x9f, 0x35, + 0xc6, 0xff, 0x62, 0x81, 0x8c, 0xee, 0x40, 0x29, 0x76, 0x77, 0xc9, 0x7c, 0xa3, 0x21, 0xde, 0x29, + 0x1e, 0xc0, 0x99, 0x71, 0x5d, 0x12, 0xc0, 0x09, 0x2d, 0xfb, 0xa7, 0x0b, 0x00, 0x89, 0x43, 0x6f, + 0xb7, 0x4f, 0x5c, 0x68, 0xcb, 0xfe, 0x7b, 0x31, 0x23, 0xfb, 0x2f, 0x4a, 0x08, 0x66, 0xe4, 0xfe, + 0x55, 0xc3, 0x54, 0xec, 0x69, 0x98, 0xfa, 0x8e, 0x32, 0x4c, 0x8b, 0x30, 0x99, 0x38, 0x24, 0x9b, + 0xd1, 0x19, 0x58, 0x3c, 0xf6, 0xf5, 0x34, 0x10, 0xb7, 0xe3, 0xdb, 0x5f, 0xb4, 0x40, 0xb8, 0x1b, + 0xf4, 0xb0, 0x98, 0xdf, 0x92, 0x89, 0x3a, 0x8d, 0x80, 0xae, 0x17, 0xf2, 0xfd, 0x2f, 0x44, 0x18, + 0x57, 0x75, 0x78, 0x18, 0xc1, 0x5b, 0x0d, 0x5a, 0x76, 0x03, 0x04, 0xb4, 0x42, 0x98, 0x92, 0xa1, + 0x7b, 0x6f, 0x2e, 0x03, 0x34, 0x18, 0xae, 0x96, 0xf8, 0x4f, 0xb1, 0xaa, 0x8a, 0x82, 0x60, 0x0d, + 0xcb, 0xfe, 0x9b, 0x05, 0x18, 0x96, 0x01, 0x44, 0xe9, 0x3d, 0xbe, 0x7b, 0x2b, 0x47, 0xca, 0x19, + 0xc0, 0x32, 0x65, 0x52, 0xc2, 0x2a, 0xb4, 0xbc, 0x9e, 0x29, 0x53, 0x02, 0x70, 0x82, 0x83, 0x9e, + 0x82, 0xc1, 0xa8, 0xb5, 0xc1, 0xd0, 0x53, 0x46, 0xf4, 0x35, 0x5e, 0x8c, 0x25, 0x1c, 0x7d, 0x1e, + 0x26, 0x78, 0xbd, 0x30, 0x68, 0x3a, 0x5b, 0x5c, 0x83, 0xd4, 0xaf, 0xbc, 0xda, 0x26, 0x56, 0x53, + 0xb0, 0xc3, 0x83, 0x99, 0xa9, 0x74, 0x19, 0xd3, 0x3d, 0xb6, 0x51, 0xa1, 0xfb, 0x62, 0x22, 0xed, + 0x30, 0x83, 0xae, 0xc1, 0x00, 0x67, 0x79, 0x82, 0x05, 0x75, 0x78, 0x51, 0xd2, 0xdc, 0x6c, 0x58, + 0x10, 0x75, 0xc1, 0x35, 0x45, 0x7d, 0xf4, 0x36, 0x0c, 0x37, 0x82, 0xbb, 0xfe, 0x5d, 0x27, 0x6c, + 0xcc, 0x57, 0x57, 0xc4, 0xaa, 0xc9, 0x94, 0x9c, 0x2a, 0x09, 0x9a, 0xee, 0xba, 0xc3, 0xb4, 0xa7, + 0x09, 0x08, 0xeb, 0xe4, 0xd0, 0x3a, 0x8b, 0xf1, 0xc4, 0x53, 0xd9, 0x77, 0xb2, 0x3a, 0x53, 0xd9, + 0xef, 0x35, 0xca, 0xa3, 0x22, 0x10, 0x94, 0x48, 0x84, 0x9f, 0x10, 0xb2, 0x3f, 0x38, 0x05, 0xc6, + 0x6a, 0x35, 0x72, 0x06, 0x58, 0xc7, 0x94, 0x33, 0x00, 0xc3, 0x10, 0xd9, 0x6d, 0xc6, 0xfb, 0x15, + 0x37, 0xec, 0x94, 0x74, 0x66, 0x49, 0xe0, 0xb4, 0xd3, 0x94, 0x10, 0xac, 0xe8, 0x64, 0x27, 0x76, + 0x28, 0x7e, 0x84, 0x89, 0x1d, 0xfa, 0x4e, 0x30, 0xb1, 0xc3, 0x1a, 0x0c, 0x6e, 0xb9, 0x31, 0x26, + 0xcd, 0x40, 0x1c, 0xf7, 0x99, 0x2b, 0xe1, 0x2a, 0x47, 0x69, 0x0f, 0x30, 0x2e, 0x00, 0x58, 0x12, + 0x41, 0xaf, 0xab, 0x3d, 0x30, 0x90, 0x2f, 0x2d, 0xb7, 0x3f, 0x3e, 0x64, 0xee, 0x02, 0x91, 0xc8, + 0x61, 0xf0, 0x41, 0x13, 0x39, 0x2c, 0xcb, 0xf4, 0x0b, 0x43, 0xf9, 0x46, 0x9a, 0x2c, 0xbb, 0x42, + 0x97, 0xa4, 0x0b, 0x46, 0xa2, 0x8a, 0xd2, 0xf1, 0x25, 0xaa, 0xf8, 0xa2, 0x05, 0xa7, 0x9b, 0x59, + 0x39, 0x5b, 0x44, 0xfa, 0x84, 0x97, 0x7a, 0x4e, 0x4a, 0x63, 0x34, 0xc8, 0xae, 0x4d, 0x99, 0x68, + 0x38, 0xbb, 0x39, 0x3a, 0xd0, 0xe1, 0x46, 0x43, 0xe4, 0x5c, 0x78, 0x22, 0x27, 0xe3, 0x45, 0x87, + 0x3c, 0x17, 0x0f, 0x27, 0xcf, 0x42, 0x92, 0xeb, 0x62, 0xf4, 0x43, 0xe7, 0xba, 0x78, 0x5d, 0xe5, + 0xba, 0xe8, 0x10, 0x49, 0x87, 0x67, 0xb2, 0xe8, 0x9a, 0xe1, 0x42, 0xcb, 0x52, 0x31, 0x7e, 0x1c, + 0x59, 0x2a, 0xde, 0x31, 0x99, 0x3d, 0x4f, 0x99, 0xf0, 0x4c, 0x17, 0x66, 0x6f, 0xd0, 0xed, 0xcc, + 0xee, 0x79, 0x46, 0x8e, 0xc9, 0x07, 0xca, 0xc8, 0x71, 0x5b, 0xcf, 0x75, 0x81, 0xba, 0x24, 0x73, + 0xa0, 0x48, 0x3d, 0x66, 0xb8, 0xb8, 0xad, 0x1f, 0x41, 0xa7, 0xf2, 0xe9, 0xaa, 0x93, 0xa6, 0x9d, + 0x6e, 0xd6, 0x21, 0xd4, 0x9e, 0x39, 0x63, 0xea, 0x64, 0x32, 0x67, 0x9c, 0x3e, 0xf6, 0xcc, 0x19, + 0x67, 0x4e, 0x20, 0x73, 0xc6, 0x23, 0x1f, 0x69, 0xe6, 0x8c, 0xf2, 0x43, 0xc8, 0x9c, 0xb1, 0x96, + 0x64, 0xce, 0x38, 0x9b, 0x3f, 0x25, 0x19, 0x56, 0x69, 0x39, 0xf9, 0x32, 0x6e, 0x43, 0xa9, 0x29, + 0x7d, 0xaa, 0x45, 0xa8, 0x9f, 0xec, 0x44, 0x7d, 0x59, 0x8e, 0xd7, 0x7c, 0x4a, 0x14, 0x08, 0x27, + 0xa4, 0x28, 0xdd, 0x24, 0x7f, 0xc6, 0xa3, 0x1d, 0x14, 0x63, 0x59, 0x2a, 0x87, 0xfc, 0xac, 0x19, + 0xf6, 0x5f, 0x2d, 0xc0, 0xf9, 0xce, 0xeb, 0x3a, 0xd1, 0x57, 0x54, 0x13, 0xfd, 0x7a, 0x4a, 0x5f, + 0xc1, 0x2f, 0x01, 0x09, 0x56, 0xcf, 0x81, 0x27, 0xae, 0xc2, 0xa4, 0x32, 0x47, 0xf3, 0xdc, 0xfa, + 0xbe, 0x96, 0xc0, 0x4f, 0xb9, 0xc6, 0xd4, 0xd2, 0x08, 0xb8, 0xbd, 0x0e, 0x9a, 0x87, 0x71, 0xa3, + 0x70, 0xa5, 0x22, 0x84, 0x7d, 0xa5, 0x20, 0xa9, 0x99, 0x60, 0x9c, 0xc6, 0xb7, 0xbf, 0x64, 0xc1, + 0x23, 0x39, 0x21, 0xab, 0x7b, 0x8e, 0xab, 0xb0, 0x09, 0xe3, 0x4d, 0xb3, 0x6a, 0x97, 0xf0, 0x2b, + 0x46, 0x60, 0x6c, 0xd5, 0xd7, 0x14, 0x00, 0xa7, 0x89, 0x2e, 0x5c, 0xfa, 0xea, 0xb7, 0xce, 0x7f, + 0xe2, 0x0f, 0xbe, 0x75, 0xfe, 0x13, 0xdf, 0xfc, 0xd6, 0xf9, 0x4f, 0xfc, 0xc5, 0xfb, 0xe7, 0xad, + 0xaf, 0xde, 0x3f, 0x6f, 0xfd, 0xc1, 0xfd, 0xf3, 0xd6, 0x37, 0xef, 0x9f, 0xb7, 0xfe, 0xe8, 0xfe, + 0x79, 0xeb, 0xa7, 0xbf, 0x7d, 0xfe, 0x13, 0x6f, 0x15, 0xf6, 0x9e, 0xff, 0xff, 0x01, 0x00, 0x00, + 0xff, 0xff, 0xa5, 0x89, 0xfa, 0xa7, 0x68, 0xdb, 0x00, 0x00, } diff --git a/staging/src/k8s.io/api/core/v1/generated.proto b/staging/src/k8s.io/api/core/v1/generated.proto index 0a5b088a08f..641b8f637c3 100644 --- a/staging/src/k8s.io/api/core/v1/generated.proto +++ b/staging/src/k8s.io/api/core/v1/generated.proto @@ -2681,6 +2681,38 @@ message PodCondition { optional string message = 6; } +// PodDNSConfig defines the DNS parameters of a pod in addition to +// those generated from DNSPolicy. +message PodDNSConfig { + // A list of DNS name server IP addresses. + // This will be appended to the base nameservers generated from DNSPolicy. + // Duplicated nameservers will be removed. + // +optional + repeated string nameservers = 1; + + // A list of DNS search domains for host-name lookup. + // This will be appended to the base search paths generated from DNSPolicy. + // Duplicated search paths will be removed. + // +optional + repeated string searches = 2; + + // A list of DNS resolver options. + // This will be merged with the base options generated from DNSPolicy. + // Duplicated entries will be removed. Resolution options given in Options + // will override those that appear in the base DNSPolicy. + // +optional + repeated PodDNSConfigOption options = 3; +} + +// PodDNSConfigOption defines DNS resolver options of a pod. +message PodDNSConfigOption { + // Required. + optional string name = 1; + + // +optional + optional string value = 2; +} + // PodExecOptions is the query options to a Pod's remote exec call. // --- // TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging @@ -2905,10 +2937,12 @@ message PodSpec { // +optional optional int64 activeDeadlineSeconds = 5; - // Set DNS policy for containers within the pod. - // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. + // Set DNS policy for the pod. // Defaults to "ClusterFirst". - // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. + // DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. + // To have DNS options set along with hostNetwork, you have to specify DNS policy + // explicitly to 'ClusterFirstWithHostNet'. // +optional optional string dnsPolicy = 6; @@ -3017,6 +3051,12 @@ message PodSpec { // The higher the value, the higher the priority. // +optional optional int32 priority = 25; + + // Specifies the DNS parameters of a pod. + // Parameters specified here will be merged to the generated DNS + // configuration based on DNSPolicy. + // +optional + optional PodDNSConfig dnsConfig = 26; } // PodStatus represents information about the status of a pod. Status may trail the actual diff --git a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go index bae48fb84c4..4580c8e9b33 100644 --- a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -1356,6 +1356,26 @@ func (PodCondition) SwaggerDoc() map[string]string { return map_PodCondition } +var map_PodDNSConfig = map[string]string{ + "": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "nameservers": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", + "searches": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", + "options": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", +} + +func (PodDNSConfig) SwaggerDoc() map[string]string { + return map_PodDNSConfig +} + +var map_PodDNSConfigOption = map[string]string{ + "": "PodDNSConfigOption defines DNS resolver options of a pod.", + "name": "Required.", +} + +func (PodDNSConfigOption) SwaggerDoc() map[string]string { + return map_PodDNSConfigOption +} + var map_PodExecOptions = map[string]string{ "": "PodExecOptions is the query options to a Pod's remote exec call.", "stdin": "Redirect the standard input stream of the pod for this call. Defaults to false.", @@ -1444,7 +1464,7 @@ var map_PodSpec = map[string]string{ "restartPolicy": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", "terminationGracePeriodSeconds": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.", "activeDeadlineSeconds": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.", - "dnsPolicy": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "dnsPolicy": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "nodeSelector": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", "serviceAccountName": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", "serviceAccount": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", @@ -1463,6 +1483,7 @@ var map_PodSpec = map[string]string{ "hostAliases": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", "priorityClassName": "If specified, indicates the pod's priority. \"SYSTEM\" is a special keyword which indicates the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", "priority": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.", + "dnsConfig": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", } func (PodSpec) SwaggerDoc() map[string]string { diff --git a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go index c3a017fd0a1..b81d8eff891 100644 --- a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -3483,6 +3483,64 @@ func (in *PodCondition) DeepCopy() *PodCondition { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDNSConfig) DeepCopyInto(out *PodDNSConfig) { + *out = *in + if in.Nameservers != nil { + in, out := &in.Nameservers, &out.Nameservers + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Searches != nil { + in, out := &in.Searches, &out.Searches + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]PodDNSConfigOption, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDNSConfig. +func (in *PodDNSConfig) DeepCopy() *PodDNSConfig { + if in == nil { + return nil + } + out := new(PodDNSConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDNSConfigOption) DeepCopyInto(out *PodDNSConfigOption) { + *out = *in + if in.Value != nil { + in, out := &in.Value, &out.Value + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDNSConfigOption. +func (in *PodDNSConfigOption) DeepCopy() *PodDNSConfigOption { + if in == nil { + return nil + } + out := new(PodDNSConfigOption) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodExecOptions) DeepCopyInto(out *PodExecOptions) { *out = *in @@ -3853,6 +3911,15 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { **out = **in } } + if in.DNSConfig != nil { + in, out := &in.DNSConfig, &out.DNSConfig + if *in == nil { + *out = nil + } else { + *out = new(PodDNSConfig) + (*in).DeepCopyInto(*out) + } + } return } From 9f9c721b20a42ade847ab9ef7e6015e83df14ec5 Mon Sep 17 00:00:00 2001 From: MrHohn Date: Sat, 18 Nov 2017 19:46:24 -0800 Subject: [PATCH 4/4] Support Custom Pod DNS in kubelet, gated by feature gate --- pkg/kubelet/network/dns/BUILD | 6 + pkg/kubelet/network/dns/dns.go | 242 +++++++++++------ pkg/kubelet/network/dns/dns_test.go | 385 ++++++++++++++++++++++++++-- 3 files changed, 533 insertions(+), 100 deletions(-) diff --git a/pkg/kubelet/network/dns/BUILD b/pkg/kubelet/network/dns/BUILD index 0f18f442e76..c0a4c05463a 100644 --- a/pkg/kubelet/network/dns/BUILD +++ b/pkg/kubelet/network/dns/BUILD @@ -6,11 +6,14 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/network/dns", visibility = ["//visibility:public"], deps = [ + "//pkg/apis/core/validation:go_default_library", + "//pkg/features:go_default_library", "//pkg/kubelet/apis/cri/v1alpha1/runtime:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/util/format:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -21,11 +24,14 @@ go_test( importpath = "k8s.io/kubernetes/pkg/kubelet/network/dns", library = ":go_default_library", deps = [ + "//pkg/kubelet/apis/cri/v1alpha1/runtime:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/pkg/kubelet/network/dns/dns.go b/pkg/kubelet/network/dns/dns.go index d37661c725a..bcc717e01c1 100644 --- a/pkg/kubelet/network/dns/dns.go +++ b/pkg/kubelet/network/dns/dns.go @@ -26,7 +26,10 @@ import ( "strings" "k8s.io/api/core/v1" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" + "k8s.io/kubernetes/pkg/apis/core/validation" + "k8s.io/kubernetes/pkg/features" runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/util/format" @@ -39,6 +42,14 @@ var ( defaultDNSOptions = []string{"ndots:5"} ) +type podDNSType int + +const ( + podDNSCluster podDNSType = iota + podDNSHost + podDNSNone +) + // Configurer is used for setting up DNS resolver configuration when launching pods. type Configurer struct { recorder record.EventRecorder @@ -67,37 +78,35 @@ func NewConfigurer(recorder record.EventRecorder, nodeRef *v1.ObjectReference, n } } -func omitDuplicates(pod *v1.Pod, combinedSearch []string) []string { - uniqueDomains := map[string]bool{} +func omitDuplicates(strs []string) []string { + uniqueStrs := make(map[string]bool) - for _, dnsDomain := range combinedSearch { - if _, exists := uniqueDomains[dnsDomain]; !exists { - combinedSearch[len(uniqueDomains)] = dnsDomain - uniqueDomains[dnsDomain] = true + var ret []string + for _, str := range strs { + if !uniqueStrs[str] { + ret = append(ret, str) + uniqueStrs[str] = true } } - return combinedSearch[:len(uniqueDomains)] + return ret } -func (c *Configurer) formDNSSearchFitsLimits(pod *v1.Pod, composedSearch []string) []string { - // resolver file Search line current limitations - resolvSearchLineDNSDomainsLimit := 6 - resolvSearchLineLenLimit := 255 +func (c *Configurer) formDNSSearchFitsLimits(composedSearch []string, pod *v1.Pod) []string { limitsExceeded := false - if len(composedSearch) > resolvSearchLineDNSDomainsLimit { - composedSearch = composedSearch[:resolvSearchLineDNSDomainsLimit] + if len(composedSearch) > validation.MaxDNSSearchPaths { + composedSearch = composedSearch[:validation.MaxDNSSearchPaths] limitsExceeded = true } - if resolvSearchhLineStrLen := len(strings.Join(composedSearch, " ")); resolvSearchhLineStrLen > resolvSearchLineLenLimit { + if resolvSearchLineStrLen := len(strings.Join(composedSearch, " ")); resolvSearchLineStrLen > validation.MaxDNSSearchListChars { cutDomainsNum := 0 - cutDoaminsLen := 0 + cutDomainsLen := 0 for i := len(composedSearch) - 1; i >= 0; i-- { - cutDoaminsLen += len(composedSearch[i]) + 1 + cutDomainsLen += len(composedSearch[i]) + 1 cutDomainsNum++ - if (resolvSearchhLineStrLen - cutDoaminsLen) <= resolvSearchLineLenLimit { + if (resolvSearchLineStrLen - cutDomainsLen) <= validation.MaxDNSSearchListChars { break } } @@ -107,39 +116,43 @@ func (c *Configurer) formDNSSearchFitsLimits(pod *v1.Pod, composedSearch []strin } if limitsExceeded { - log := fmt.Sprintf("Search Line limits were exceeded, some dns names have been omitted, the applied search line is: %s", strings.Join(composedSearch, " ")) - c.recorder.Event(pod, v1.EventTypeWarning, "DNSSearchForming", log) + log := fmt.Sprintf("Search Line limits were exceeded, some search paths have been omitted, the applied search line is: %s", strings.Join(composedSearch, " ")) + c.recorder.Event(pod, v1.EventTypeWarning, "DNSConfigForming", log) glog.Error(log) } return composedSearch } -func (c *Configurer) formDNSSearchForDNSDefault(hostSearch []string, pod *v1.Pod) []string { - return c.formDNSSearchFitsLimits(pod, hostSearch) +func (c *Configurer) formDNSNameserversFitsLimits(nameservers []string, pod *v1.Pod) []string { + if len(nameservers) > validation.MaxDNSNameservers { + nameservers = nameservers[0:validation.MaxDNSNameservers] + log := fmt.Sprintf("Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: %s", strings.Join(nameservers, " ")) + c.recorder.Event(pod, v1.EventTypeWarning, "DNSConfigForming", log) + glog.Error(log) + } + return nameservers } -func (c *Configurer) formDNSSearch(hostSearch []string, pod *v1.Pod) []string { +func (c *Configurer) formDNSConfigFitsLimits(dnsConfig *runtimeapi.DNSConfig, pod *v1.Pod) *runtimeapi.DNSConfig { + dnsConfig.Servers = c.formDNSNameserversFitsLimits(dnsConfig.Servers, pod) + dnsConfig.Searches = c.formDNSSearchFitsLimits(dnsConfig.Searches, pod) + return dnsConfig +} + +func (c *Configurer) generateSearchesForDNSClusterFirst(hostSearch []string, pod *v1.Pod) []string { if c.ClusterDomain == "" { - c.formDNSSearchFitsLimits(pod, hostSearch) return hostSearch } nsSvcDomain := fmt.Sprintf("%s.svc.%s", pod.Namespace, c.ClusterDomain) svcDomain := fmt.Sprintf("svc.%s", c.ClusterDomain) - dnsSearch := []string{nsSvcDomain, svcDomain, c.ClusterDomain} + clusterSearch := []string{nsSvcDomain, svcDomain, c.ClusterDomain} - combinedSearch := append(dnsSearch, hostSearch...) - - combinedSearch = omitDuplicates(pod, combinedSearch) - return c.formDNSSearchFitsLimits(pod, combinedSearch) + return omitDuplicates(append(clusterSearch, hostSearch...)) } // CheckLimitsForResolvConf checks limits in resolv.conf. func (c *Configurer) CheckLimitsForResolvConf() { - // resolver file Search line current limitations - resolvSearchLineDNSDomainsLimit := 6 - resolvSearchLineLenLimit := 255 - f, err := os.Open(c.ResolverConfig) if err != nil { c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", err.Error()) @@ -155,21 +168,21 @@ func (c *Configurer) CheckLimitsForResolvConf() { return } - domainCntLimit := resolvSearchLineDNSDomainsLimit + domainCountLimit := validation.MaxDNSSearchPaths if c.ClusterDomain != "" { - domainCntLimit -= 3 + domainCountLimit -= 3 } - if len(hostSearch) > domainCntLimit { - log := fmt.Sprintf("Resolv.conf file '%s' contains search line consisting of more than %d domains!", c.ResolverConfig, domainCntLimit) + if len(hostSearch) > domainCountLimit { + log := fmt.Sprintf("Resolv.conf file '%s' contains search line consisting of more than %d domains!", c.ResolverConfig, domainCountLimit) c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", log) glog.Error("CheckLimitsForResolvConf: " + log) return } - if len(strings.Join(hostSearch, " ")) > resolvSearchLineLenLimit { - log := fmt.Sprintf("Resolv.conf file '%s' contains search line which length is more than allowed %d chars!", c.ResolverConfig, resolvSearchLineLenLimit) + if len(strings.Join(hostSearch, " ")) > validation.MaxDNSSearchListChars { + log := fmt.Sprintf("Resolv.conf file '%s' contains search line which length is more than allowed %d chars!", c.ResolverConfig, validation.MaxDNSSearchListChars) c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", log) glog.Error("CheckLimitsForResolvConf: " + log) return @@ -180,7 +193,6 @@ func (c *Configurer) CheckLimitsForResolvConf() { // parseResolveConf reads a resolv.conf file from the given reader, and parses // it into nameservers, searches and options, possibly returning an error. -// TODO: move to utility package func parseResolvConf(reader io.Reader) (nameservers []string, searches []string, options []string, err error) { file, err := ioutil.ReadAll(reader) if err != nil { @@ -218,15 +230,10 @@ func parseResolvConf(reader io.Reader) (nameservers []string, searches []string, } } - // There used to be code here to scrub DNS for each cloud, but doesn't - // make sense anymore since cloudproviders are being factored out. - // contact @thockin or @wlan0 for more information - return nameservers, searches, options, nil } -// GetPodDNS returns DNS setttings for the pod. -func (c *Configurer) GetPodDNS(pod *v1.Pod) (*runtimeapi.DNSConfig, error) { +func (c *Configurer) getHostDNSConfig(pod *v1.Pod) (*runtimeapi.DNSConfig, error) { var hostDNS, hostSearch, hostOptions []string // Get host DNS settings if c.ResolverConfig != "" { @@ -241,19 +248,117 @@ func (c *Configurer) GetPodDNS(pod *v1.Pod) (*runtimeapi.DNSConfig, error) { return nil, err } } - useClusterFirstPolicy := ((pod.Spec.DNSPolicy == v1.DNSClusterFirst && !kubecontainer.IsHostNetworkPod(pod)) || pod.Spec.DNSPolicy == v1.DNSClusterFirstWithHostNet) - if useClusterFirstPolicy && len(c.clusterDNS) == 0 { - // clusterDNS is not known. - // pod with ClusterDNSFirst Policy cannot be created - c.recorder.Eventf(pod, v1.EventTypeWarning, "MissingClusterDNS", "kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. Falling back to DNSDefault policy.", pod.Spec.DNSPolicy) - log := fmt.Sprintf("kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. pod: %q. Falling back to DNSDefault policy.", pod.Spec.DNSPolicy, format.Pod(pod)) - c.recorder.Eventf(c.nodeRef, v1.EventTypeWarning, "MissingClusterDNS", log) + return &runtimeapi.DNSConfig{ + Servers: hostDNS, + Searches: hostSearch, + Options: hostOptions, + }, nil +} - // fallback to DNSDefault - useClusterFirstPolicy = false +func getPodDNSType(pod *v1.Pod) (podDNSType, error) { + dnsPolicy := pod.Spec.DNSPolicy + switch dnsPolicy { + case v1.DNSNone: + if utilfeature.DefaultFeatureGate.Enabled(features.CustomPodDNS) { + return podDNSNone, nil + } + // This should not happen as kube-apiserver should have rejected + // setting dnsPolicy to DNSNone when feature gate is disabled. + return podDNSCluster, fmt.Errorf(fmt.Sprintf("invalid DNSPolicy=%v: custom pod DNS is disabled", dnsPolicy)) + case v1.DNSClusterFirstWithHostNet: + return podDNSCluster, nil + case v1.DNSClusterFirst: + if !kubecontainer.IsHostNetworkPod(pod) { + return podDNSCluster, nil + } + // Fallback to DNSDefault for pod on hostnetowrk. + fallthrough + case v1.DNSDefault: + return podDNSHost, nil + } + // This should not happen as kube-apiserver should have rejected + // invalid dnsPolicy. + return podDNSCluster, fmt.Errorf(fmt.Sprintf("invalid DNSPolicy=%v", dnsPolicy)) +} + +// Merge DNS options. If duplicated, entries given by PodDNSConfigOption will +// overwrite the existing ones. +func mergeDNSOptions(existingDNSConfigOptions []string, dnsConfigOptions []v1.PodDNSConfigOption) []string { + optionsMap := make(map[string]string) + for _, op := range existingDNSConfigOptions { + if index := strings.Index(op, ":"); index != -1 { + optionsMap[op[:index]] = op[index+1:] + } else { + optionsMap[op] = "" + } + } + for _, op := range dnsConfigOptions { + if op.Value != nil { + optionsMap[op.Name] = *op.Value + } else { + optionsMap[op.Name] = "" + } + } + // Reconvert DNS options into a string array. + options := []string{} + for opName, opValue := range optionsMap { + op := opName + if opValue != "" { + op = op + ":" + opValue + } + options = append(options, op) + } + return options +} + +// appendDNSConfig appends DNS servers, search paths and options given by +// PodDNSConfig to the existing DNS config. Duplicated entries will be merged. +// This assumes existingDNSConfig and dnsConfig are not nil. +func appendDNSConfig(existingDNSConfig *runtimeapi.DNSConfig, dnsConfig *v1.PodDNSConfig) *runtimeapi.DNSConfig { + existingDNSConfig.Servers = omitDuplicates(append(existingDNSConfig.Servers, dnsConfig.Nameservers...)) + existingDNSConfig.Searches = omitDuplicates(append(existingDNSConfig.Searches, dnsConfig.Searches...)) + existingDNSConfig.Options = mergeDNSOptions(existingDNSConfig.Options, dnsConfig.Options) + return existingDNSConfig +} + +// GetPodDNS returns DNS setttings for the pod. +func (c *Configurer) GetPodDNS(pod *v1.Pod) (*runtimeapi.DNSConfig, error) { + dnsConfig, err := c.getHostDNSConfig(pod) + if err != nil { + return nil, err } - if !useClusterFirstPolicy { + dnsType, err := getPodDNSType(pod) + if err != nil { + glog.Errorf("Failed to get DNS type for pod %q: %v. Falling back to DNSClusterFirst policy.", format.Pod(pod), err) + dnsType = podDNSCluster + } + switch dnsType { + case podDNSNone: + // DNSNone should use empty DNS settings as the base. + dnsConfig = &runtimeapi.DNSConfig{} + case podDNSCluster: + if len(c.clusterDNS) != 0 { + // For a pod with DNSClusterFirst policy, the cluster DNS server is + // the only nameserver configured for the pod. The cluster DNS server + // itself will forward queries to other nameservers that is configured + // to use, in case the cluster DNS server cannot resolve the DNS query + // itself. + dnsConfig.Servers = []string{} + for _, ip := range c.clusterDNS { + dnsConfig.Servers = append(dnsConfig.Servers, ip.String()) + } + dnsConfig.Searches = c.generateSearchesForDNSClusterFirst(dnsConfig.Searches, pod) + dnsConfig.Options = defaultDNSOptions + break + } + // clusterDNS is not known. Pod with ClusterDNSFirst Policy cannot be created. + nodeErrorMsg := fmt.Sprintf("kubelet does not have ClusterDNS IP configured and cannot create Pod using %q policy. Falling back to %q policy.", v1.DNSClusterFirst, v1.DNSDefault) + c.recorder.Eventf(c.nodeRef, v1.EventTypeWarning, "MissingClusterDNS", nodeErrorMsg) + c.recorder.Eventf(pod, v1.EventTypeWarning, "MissingClusterDNS", "pod: %q. %s", format.Pod(pod), nodeErrorMsg) + // Fallback to DNSDefault. + fallthrough + case podDNSHost: // When the kubelet --resolv-conf flag is set to the empty string, use // DNS settings that override the docker default (which is to use // /etc/resolv.conf) and effectively disable DNS lookups. According to @@ -262,35 +367,20 @@ func (c *Configurer) GetPodDNS(pod *v1.Pod) (*runtimeapi.DNSConfig, error) { // local machine". A nameserver setting of localhost is equivalent to // this documented behavior. if c.ResolverConfig == "" { - hostSearch = []string{"."} switch { case c.nodeIP == nil || c.nodeIP.To4() != nil: - hostDNS = []string{"127.0.0.1"} + dnsConfig.Servers = []string{"127.0.0.1"} case c.nodeIP.To16() != nil: - hostDNS = []string{"::1"} + dnsConfig.Servers = []string{"::1"} } - } else { - hostSearch = c.formDNSSearchForDNSDefault(hostSearch, pod) + dnsConfig.Searches = []string{"."} } - return &runtimeapi.DNSConfig{ - Servers: hostDNS, - Searches: hostSearch, - Options: hostOptions}, nil } - // for a pod with DNSClusterFirst policy, the cluster DNS server is the only nameserver configured for - // the pod. The cluster DNS server itself will forward queries to other nameservers that is configured to use, - // in case the cluster DNS server cannot resolve the DNS query itself - dns := make([]string, len(c.clusterDNS)) - for i, ip := range c.clusterDNS { - dns[i] = ip.String() + if utilfeature.DefaultFeatureGate.Enabled(features.CustomPodDNS) && pod.Spec.DNSConfig != nil { + dnsConfig = appendDNSConfig(dnsConfig, pod.Spec.DNSConfig) } - dnsSearch := c.formDNSSearch(hostSearch, pod) - - return &runtimeapi.DNSConfig{ - Servers: dns, - Searches: dnsSearch, - Options: defaultDNSOptions}, nil + return c.formDNSConfigFitsLimits(dnsConfig, pod), nil } // SetupDNSinContainerizedMounter replaces the nameserver in containerized-mounter's rootfs/etc/resolve.conf with kubelet.ClusterDNS diff --git a/pkg/kubelet/network/dns/dns_test.go b/pkg/kubelet/network/dns/dns_test.go index 4a53f66cc5e..3ff551f4a6e 100644 --- a/pkg/kubelet/network/dns/dns_test.go +++ b/pkg/kubelet/network/dns/dns_test.go @@ -25,12 +25,26 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/sets" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" + runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) +var ( + fetchEvent = func(recorder *record.FakeRecorder) string { + select { + case event := <-recorder.Events: + return event + default: + return "" + } + } +) + func TestParseResolvConf(t *testing.T) { testCases := []struct { data string @@ -74,7 +88,7 @@ func TestParseResolvConf(t *testing.T) { } } -func TestComposeDNSSearch(t *testing.T) { +func TestFormDNSSearchFitsLimits(t *testing.T) { recorder := record.NewFakeRecorder(20) nodeRef := &v1.ObjectReference{ Kind: "Node", @@ -96,62 +110,272 @@ func TestComposeDNSSearch(t *testing.T) { } testCases := []struct { - dnsNames []string hostNames []string resultSearch []string events []string }{ { []string{"testNS.svc.TEST", "svc.TEST", "TEST"}, - []string{}, []string{"testNS.svc.TEST", "svc.TEST", "TEST"}, []string{}, }, { - []string{"testNS.svc.TEST", "svc.TEST", "TEST"}, - []string{"AAA", "svc.TEST", "BBB", "TEST"}, + []string{"testNS.svc.TEST", "svc.TEST", "TEST", "AAA", "BBB"}, []string{"testNS.svc.TEST", "svc.TEST", "TEST", "AAA", "BBB"}, []string{}, }, { - []string{"testNS.svc.TEST", "svc.TEST", "TEST"}, - []string{"AAA", strings.Repeat("B", 256), "BBB"}, + []string{"testNS.svc.TEST", "svc.TEST", "TEST", "AAA", strings.Repeat("B", 256), "BBB"}, []string{"testNS.svc.TEST", "svc.TEST", "TEST", "AAA"}, - []string{"Search Line limits were exceeded, some dns names have been omitted, the applied search line is: testNS.svc.TEST svc.TEST TEST AAA"}, + []string{"Search Line limits were exceeded, some search paths have been omitted, the applied search line is: testNS.svc.TEST svc.TEST TEST AAA"}, }, { - []string{"testNS.svc.TEST", "svc.TEST", "TEST"}, - []string{"AAA", "TEST", "BBB", "TEST", "CCC", "DDD"}, + []string{"testNS.svc.TEST", "svc.TEST", "TEST", "AAA", "BBB", "CCC", "DDD"}, []string{"testNS.svc.TEST", "svc.TEST", "TEST", "AAA", "BBB", "CCC"}, - []string{ - "Search Line limits were exceeded, some dns names have been omitted, the applied search line is: testNS.svc.TEST svc.TEST TEST AAA BBB CCC", - }, + []string{"Search Line limits were exceeded, some search paths have been omitted, the applied search line is: testNS.svc.TEST svc.TEST TEST AAA BBB CCC"}, }, } - fetchEvent := func(recorder *record.FakeRecorder) string { - select { - case event := <-recorder.Events: - return event - default: - return "No more events!" - } - } - for i, tc := range testCases { - dnsSearch := configurer.formDNSSearch(tc.hostNames, pod) + dnsSearch := configurer.formDNSSearchFitsLimits(tc.hostNames, pod) assert.EqualValues(t, tc.resultSearch, dnsSearch, "test [%d]", i) for _, expectedEvent := range tc.events { - expected := fmt.Sprintf("%s %s %s", v1.EventTypeWarning, "DNSSearchForming", expectedEvent) + expected := fmt.Sprintf("%s %s %s", v1.EventTypeWarning, "DNSConfigForming", expectedEvent) event := fetchEvent(recorder) assert.Equal(t, expected, event, "test [%d]", i) } } } +func TestFormDNSNameserversFitsLimits(t *testing.T) { + recorder := record.NewFakeRecorder(20) + nodeRef := &v1.ObjectReference{ + Kind: "Node", + Name: string("testNode"), + UID: types.UID("testNode"), + Namespace: "", + } + testClusterDNSDomain := "TEST" + + configurer := NewConfigurer(recorder, nodeRef, nil, nil, testClusterDNSDomain, "") + + pod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: "", + Name: "test_pod", + Namespace: "testNS", + Annotations: map[string]string{}, + }, + } + + testCases := []struct { + desc string + nameservers []string + expectedNameserver []string + expectedEvent bool + }{ + { + desc: "valid: 1 nameserver", + nameservers: []string{"127.0.0.1"}, + expectedNameserver: []string{"127.0.0.1"}, + expectedEvent: false, + }, + { + desc: "valid: 3 nameservers", + nameservers: []string{"127.0.0.1", "10.0.0.10", "8.8.8.8"}, + expectedNameserver: []string{"127.0.0.1", "10.0.0.10", "8.8.8.8"}, + expectedEvent: false, + }, + { + desc: "invalid: 4 nameservers, trimmed to 3", + nameservers: []string{"127.0.0.1", "10.0.0.10", "8.8.8.8", "1.2.3.4"}, + expectedNameserver: []string{"127.0.0.1", "10.0.0.10", "8.8.8.8"}, + expectedEvent: true, + }, + } + + for _, tc := range testCases { + appliedNameservers := configurer.formDNSNameserversFitsLimits(tc.nameservers, pod) + assert.EqualValues(t, tc.expectedNameserver, appliedNameservers, tc.desc) + event := fetchEvent(recorder) + if tc.expectedEvent && len(event) == 0 { + t.Errorf("%s: formDNSNameserversFitsLimits(%v) expected event, got no event.", tc.desc, tc.nameservers) + } else if !tc.expectedEvent && len(event) > 0 { + t.Errorf("%s: formDNSNameserversFitsLimits(%v) expected no event, got event: %v", tc.desc, tc.nameservers, event) + } + } +} + +func TestMergeDNSOptions(t *testing.T) { + testOptionValue := "3" + + testCases := []struct { + desc string + existingDNSConfigOptions []string + dnsConfigOptions []v1.PodDNSConfigOption + expectedOptions []string + }{ + { + desc: "Empty dnsConfigOptions", + existingDNSConfigOptions: []string{"ndots:5", "debug"}, + dnsConfigOptions: nil, + expectedOptions: []string{"ndots:5", "debug"}, + }, + { + desc: "No duplicated entries", + existingDNSConfigOptions: []string{"ndots:5", "debug"}, + dnsConfigOptions: []v1.PodDNSConfigOption{ + {Name: "single-request"}, + {Name: "attempts", Value: &testOptionValue}, + }, + expectedOptions: []string{"ndots:5", "debug", "single-request", "attempts:3"}, + }, + { + desc: "Overwrite duplicated entries", + existingDNSConfigOptions: []string{"ndots:5", "debug"}, + dnsConfigOptions: []v1.PodDNSConfigOption{ + {Name: "ndots", Value: &testOptionValue}, + {Name: "debug"}, + {Name: "single-request"}, + {Name: "attempts", Value: &testOptionValue}, + }, + expectedOptions: []string{"ndots:3", "debug", "single-request", "attempts:3"}, + }, + } + + for _, tc := range testCases { + options := mergeDNSOptions(tc.existingDNSConfigOptions, tc.dnsConfigOptions) + // Options order may be changed after conversion. + if !sets.NewString(options...).Equal(sets.NewString(tc.expectedOptions...)) { + t.Errorf("%s: mergeDNSOptions(%v, %v)=%v, want %v", tc.desc, tc.existingDNSConfigOptions, tc.dnsConfigOptions, options, tc.expectedOptions) + } + } +} + +func TestGetPodDNSType(t *testing.T) { + customDNSEnabled := utilfeature.DefaultFeatureGate.Enabled("CustomPodDNS") + defer func() { + // Restoring the old value. + if err := utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("CustomPodDNS=%v", customDNSEnabled)); err != nil { + t.Errorf("Failed to set CustomPodDNS feature gate: %v", err) + } + }() + + recorder := record.NewFakeRecorder(20) + nodeRef := &v1.ObjectReference{ + Kind: "Node", + Name: string("testNode"), + UID: types.UID("testNode"), + Namespace: "", + } + testClusterDNSDomain := "TEST" + clusterNS := "203.0.113.1" + testClusterDNS := []net.IP{net.ParseIP(clusterNS)} + + configurer := NewConfigurer(recorder, nodeRef, nil, nil, testClusterDNSDomain, "") + + pod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: "", + Name: "test_pod", + Namespace: "testNS", + Annotations: map[string]string{}, + }, + } + + testCases := []struct { + desc string + customPodDNSFeatureGate bool + hasClusterDNS bool + hostNetwork bool + dnsPolicy v1.DNSPolicy + expectedDNSType podDNSType + expectedError bool + }{ + { + desc: "valid DNSClusterFirst without hostnetwork", + hasClusterDNS: true, + dnsPolicy: v1.DNSClusterFirst, + expectedDNSType: podDNSCluster, + }, + { + desc: "valid DNSClusterFirstWithHostNet with hostnetwork", + hasClusterDNS: true, + hostNetwork: true, + dnsPolicy: v1.DNSClusterFirstWithHostNet, + expectedDNSType: podDNSCluster, + }, + { + desc: "valid DNSClusterFirstWithHostNet without hostnetwork", + hasClusterDNS: true, + dnsPolicy: v1.DNSClusterFirstWithHostNet, + expectedDNSType: podDNSCluster, + }, + { + desc: "valid DNSDefault without hostnetwork", + dnsPolicy: v1.DNSDefault, + expectedDNSType: podDNSHost, + }, + { + desc: "valid DNSDefault with hostnetwork", + hostNetwork: true, + dnsPolicy: v1.DNSDefault, + expectedDNSType: podDNSHost, + }, + { + desc: "DNSClusterFirst with hostnetwork, fallback to DNSDefault", + hasClusterDNS: true, + hostNetwork: true, + dnsPolicy: v1.DNSClusterFirst, + expectedDNSType: podDNSHost, + }, + { + desc: "valid DNSNone with feature gate", + customPodDNSFeatureGate: true, + dnsPolicy: v1.DNSNone, + expectedDNSType: podDNSNone, + }, + { + desc: "DNSNone without feature gate, should return error", + dnsPolicy: v1.DNSNone, + expectedError: true, + }, + { + desc: "invalid DNS policy, should return error", + dnsPolicy: "invalidPolicy", + expectedError: true, + }, + } + + for _, tc := range testCases { + if err := utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("CustomPodDNS=%v", tc.customPodDNSFeatureGate)); err != nil { + t.Errorf("Failed to set CustomPodDNS feature gate: %v", err) + } + + if tc.hasClusterDNS { + configurer.clusterDNS = testClusterDNS + } else { + configurer.clusterDNS = nil + } + pod.Spec.DNSPolicy = tc.dnsPolicy + pod.Spec.HostNetwork = tc.hostNetwork + + resType, err := getPodDNSType(pod) + if tc.expectedError { + if err == nil { + t.Errorf("%s: GetPodDNSType(%v) got no error, want error", tc.desc, pod) + } + continue + } + if resType != tc.expectedDNSType { + t.Errorf("%s: GetPodDNSType(%v)=%v, want %v", tc.desc, pod, resType, tc.expectedDNSType) + } + } +} + func TestGetPodDNS(t *testing.T) { recorder := record.NewFakeRecorder(20) nodeRef := &v1.ObjectReference{ @@ -247,6 +471,119 @@ func TestGetPodDNS(t *testing.T) { } } +func TestGetPodDNSCustom(t *testing.T) { + customDNSEnabled := utilfeature.DefaultFeatureGate.Enabled("CustomPodDNS") + defer func() { + // Restoring the old value. + if err := utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("CustomPodDNS=%v", customDNSEnabled)); err != nil { + t.Errorf("Failed to set CustomPodDNS feature gate: %v", err) + } + }() + + recorder := record.NewFakeRecorder(20) + nodeRef := &v1.ObjectReference{ + Kind: "Node", + Name: string("testNode"), + UID: types.UID("testNode"), + Namespace: "", + } + clusterNS := "203.0.113.1" + testClusterDNSDomain := "kubernetes.io" + testClusterDNS := []net.IP{net.ParseIP(clusterNS)} + testOptionValue := "3" + + configurer := NewConfigurer(recorder, nodeRef, nil, testClusterDNS, testClusterDNSDomain, "") + + pod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: "", + Name: "test_pod", + Namespace: "testNS", + Annotations: map[string]string{}, + }, + Spec: v1.PodSpec{ + DNSPolicy: v1.DNSClusterFirst, + }, + } + clusterFirstDNSConfig, err := configurer.GetPodDNS(pod) + if err != nil { + t.Fatalf("Preparing clusterFirstDNSConfig: GetPodDNS(%v), unexpected error: %v", pod, err) + } + + // Overwrite DNSPolicy for testing. + pod.Spec.DNSPolicy = v1.DNSNone + + testCases := []struct { + desc string + customPodDNSFeatureGate bool + dnsConfig *v1.PodDNSConfig + expectedDNSConfig *runtimeapi.DNSConfig + }{ + { + desc: "feature gate is disabled, DNSNone should fallback to DNSClusterFirst", + expectedDNSConfig: clusterFirstDNSConfig, + }, + { + desc: "feature gate is enabled, DNSNone without DNSConfig should have empty DNS settings", + customPodDNSFeatureGate: true, + expectedDNSConfig: &runtimeapi.DNSConfig{}, + }, + { + desc: "feature gate is enabled, DNSNone with DNSConfig should have a merged DNS settings", + customPodDNSFeatureGate: true, + dnsConfig: &v1.PodDNSConfig{ + Nameservers: []string{"10.0.0.10"}, + Searches: []string{"my.domain", "second.domain"}, + Options: []v1.PodDNSConfigOption{ + {Name: "ndots", Value: &testOptionValue}, + {Name: "debug"}, + }, + }, + expectedDNSConfig: &runtimeapi.DNSConfig{ + Servers: []string{"10.0.0.10"}, + Searches: []string{"my.domain", "second.domain"}, + Options: []string{"ndots:3", "debug"}, + }, + }, + } + + for _, tc := range testCases { + if err := utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("CustomPodDNS=%v", tc.customPodDNSFeatureGate)); err != nil { + t.Errorf("Failed to set CustomPodDNS feature gate: %v", err) + } + + pod.Spec.DNSConfig = tc.dnsConfig + + resDNSConfig, err := configurer.GetPodDNS(pod) + if err != nil { + t.Errorf("%s: GetPodDNS(%v), unexpected error: %v", tc.desc, pod, err) + } + if !dnsConfigsAreEqual(resDNSConfig, tc.expectedDNSConfig) { + t.Errorf("%s: GetPodDNS(%v)=%v, want %v", tc.desc, pod, resDNSConfig, tc.expectedDNSConfig) + } + } +} + +func dnsConfigsAreEqual(resConfig, expectedConfig *runtimeapi.DNSConfig) bool { + if len(resConfig.Servers) != len(expectedConfig.Servers) || + len(resConfig.Searches) != len(expectedConfig.Searches) || + len(resConfig.Options) != len(expectedConfig.Options) { + return false + } + for i, server := range resConfig.Servers { + if expectedConfig.Servers[i] != server { + return false + } + } + for i, search := range resConfig.Searches { + if expectedConfig.Searches[i] != search { + return false + } + } + // Options order may be changed after conversion. + return sets.NewString(resConfig.Options...).Equal(sets.NewString(expectedConfig.Options...)) +} + func newTestPods(count int) []*v1.Pod { pods := make([]*v1.Pod, count) for i := 0; i < count; i++ {