diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index c1a6d551f5..cd23ca3fb6 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -58320,6 +58320,16 @@ } } }, + "io.k8s.api.core.v1.ClientIPConfig": { + "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "properties": { + "timeoutSeconds": { + "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", + "type": "integer", + "format": "int32" + } + } + }, "io.k8s.api.core.v1.ComponentCondition": { "description": "Information about the condition of a component.", "required": [ @@ -62066,6 +62076,10 @@ "description": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", "type": "string" }, + "sessionAffinityConfig": { + "description": "sessionAffinityConfig contains the configurations of session affinity.", + "$ref": "#/definitions/io.k8s.api.core.v1.SessionAffinityConfig" + }, "type": { "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types", "type": "string" @@ -62081,6 +62095,15 @@ } } }, + "io.k8s.api.core.v1.SessionAffinityConfig": { + "description": "SessionAffinityConfig represents the configurations of session affinity.", + "properties": { + "clientIP": { + "description": "clientIP contains the configurations of Client IP based session affinity.", + "$ref": "#/definitions/io.k8s.api.core.v1.ClientIPConfig" + } + } + }, "io.k8s.api.core.v1.StorageOSPersistentVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "properties": { diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json index 893be84f2e..d33172a205 100644 --- a/api/swagger-spec/v1.json +++ b/api/swagger-spec/v1.json @@ -21907,6 +21907,10 @@ "publishNotReadyAddresses": { "type": "boolean", "description": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints when that annotation is deprecated and all clients have been converted to use this field." + }, + "sessionAffinityConfig": { + "$ref": "v1.SessionAffinityConfig", + "description": "sessionAffinityConfig contains the configurations of session affinity." } } }, @@ -21941,6 +21945,27 @@ } } }, + "v1.SessionAffinityConfig": { + "id": "v1.SessionAffinityConfig", + "description": "SessionAffinityConfig represents the configurations of session affinity.", + "properties": { + "clientIP": { + "$ref": "v1.ClientIPConfig", + "description": "clientIP contains the configurations of Client IP based session affinity." + } + } + }, + "v1.ClientIPConfig": { + "id": "v1.ClientIPConfig", + "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours)." + } + } + }, "v1.ServiceStatus": { "id": "v1.ServiceStatus", "description": "ServiceStatus represents the current status of a service.", diff --git a/docs/api-reference/v1/definitions.html b/docs/api-reference/v1/definitions.html index a6f1b12579..ee36292742 100755 --- a/docs/api-reference/v1/definitions.html +++ b/docs/api-reference/v1/definitions.html @@ -6144,6 +6144,40 @@ Examples:
+ +
+

v1.SessionAffinityConfig

+
+

SessionAffinityConfig represents the configurations of session affinity.

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

clientIP

clientIP contains the configurations of Client IP based session affinity.

false

v1.ClientIPConfig

+

v1.PodCondition

@@ -7995,6 +8029,40 @@ Examples:
+
+
+

v1.ClientIPConfig

+
+

ClientIPConfig represents the configurations of Client IP based session affinity.

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

timeoutSeconds

timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && ⇐86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).

false

integer (int32)

+

v1.APIResource

@@ -10224,6 +10292,13 @@ Examples:

boolean

false

+ +

sessionAffinityConfig

+

sessionAffinityConfig contains the configurations of session affinity.

+

false

+

v1.SessionAffinityConfig

+ + diff --git a/examples/meteor/meteor-service.json b/examples/meteor/meteor-service.json index 2dc55a041b..2e494c0a2c 100644 --- a/examples/meteor/meteor-service.json +++ b/examples/meteor/meteor-service.json @@ -15,6 +15,11 @@ "name": "meteor" }, "sessionAffinity": "ClientIP", + "sessionAffinityConfig": { + "clientIP": { + "timeoutSeconds": 90 + } + }, "type": "LoadBalancer" } } diff --git a/federation/apis/openapi-spec/swagger.json b/federation/apis/openapi-spec/swagger.json index 96f9d9284c..6bfe197cc0 100644 --- a/federation/apis/openapi-spec/swagger.json +++ b/federation/apis/openapi-spec/swagger.json @@ -9844,6 +9844,16 @@ } } }, + "io.k8s.api.core.v1.ClientIPConfig": { + "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "properties": { + "timeoutSeconds": { + "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", + "type": "integer", + "format": "int32" + } + } + }, "io.k8s.api.core.v1.ConfigMap": { "description": "ConfigMap holds configuration data for pods to consume.", "properties": { @@ -11874,6 +11884,10 @@ "description": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", "type": "string" }, + "sessionAffinityConfig": { + "description": "sessionAffinityConfig contains the configurations of session affinity.", + "$ref": "#/definitions/io.k8s.api.core.v1.SessionAffinityConfig" + }, "type": { "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types", "type": "string" @@ -11889,6 +11903,15 @@ } } }, + "io.k8s.api.core.v1.SessionAffinityConfig": { + "description": "SessionAffinityConfig represents the configurations of session affinity.", + "properties": { + "clientIP": { + "description": "clientIP contains the configurations of Client IP based session affinity.", + "$ref": "#/definitions/io.k8s.api.core.v1.ClientIPConfig" + } + } + }, "io.k8s.api.core.v1.StorageOSVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "properties": { diff --git a/federation/apis/swagger-spec/v1.json b/federation/apis/swagger-spec/v1.json index de5cbc562d..54ca88fed9 100644 --- a/federation/apis/swagger-spec/v1.json +++ b/federation/apis/swagger-spec/v1.json @@ -5128,6 +5128,10 @@ "publishNotReadyAddresses": { "type": "boolean", "description": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints when that annotation is deprecated and all clients have been converted to use this field." + }, + "sessionAffinityConfig": { + "$ref": "v1.SessionAffinityConfig", + "description": "sessionAffinityConfig contains the configurations of session affinity." } } }, @@ -5162,6 +5166,27 @@ } } }, + "v1.SessionAffinityConfig": { + "id": "v1.SessionAffinityConfig", + "description": "SessionAffinityConfig represents the configurations of session affinity.", + "properties": { + "clientIP": { + "$ref": "v1.ClientIPConfig", + "description": "clientIP contains the configurations of Client IP based session affinity." + } + } + }, + "v1.ClientIPConfig": { + "id": "v1.ClientIPConfig", + "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours)." + } + } + }, "v1.ServiceStatus": { "id": "v1.ServiceStatus", "description": "ServiceStatus represents the current status of a service.", diff --git a/federation/docs/api-reference/v1/definitions.html b/federation/docs/api-reference/v1/definitions.html index b4ba4127bb..f02c870307 100755 --- a/federation/docs/api-reference/v1/definitions.html +++ b/federation/docs/api-reference/v1/definitions.html @@ -2049,6 +2049,40 @@ When an object is created, the system will populate this list with the current s +
+
+

v1.ClientIPConfig

+
+

ClientIPConfig represents the configurations of Client IP based session affinity.

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

timeoutSeconds

timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && ⇐86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).

false

integer (int32)

+

v1.APIResource

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

boolean

false

+ +

sessionAffinityConfig

+

sessionAffinityConfig contains the configurations of session affinity.

+

false

+

v1.SessionAffinityConfig

+ + @@ -2333,6 +2374,40 @@ Examples:
+
+
+

v1.SessionAffinityConfig

+
+

SessionAffinityConfig represents the configurations of session affinity.

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

clientIP

clientIP contains the configurations of Client IP based session affinity.

false

v1.ClientIPConfig

+

any

diff --git a/pkg/api/types.go b/pkg/api/types.go index a84ee8da13..7359453daf 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -2660,6 +2660,31 @@ const ( ServiceAffinityNone ServiceAffinity = "None" ) +const ( + // DefaultClientIPServiceAffinitySeconds is the default timeout seconds + // of Client IP based session affinity - 3 hours. + DefaultClientIPServiceAffinitySeconds int32 = 10800 + // MaxClientIPServiceAffinitySeconds is the max timeout seconds + // of Client IP based session affinity - 1 day. + MaxClientIPServiceAffinitySeconds int32 = 86400 +) + +// SessionAffinityConfig represents the configurations of session affinity. +type SessionAffinityConfig struct { + // clientIP contains the configurations of Client IP based session affinity. + // +optional + ClientIP *ClientIPConfig +} + +// ClientIPConfig represents the configurations of Client IP based session affinity. +type ClientIPConfig struct { + // timeoutSeconds specifies the seconds of ClientIP type session sticky time. + // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". + // Default value is 10800(for 3 hours). + // +optional + TimeoutSeconds *int32 +} + // Service Type string describes ingress methods for a service type ServiceType string @@ -2787,6 +2812,10 @@ type ServiceSpec struct { // +optional SessionAffinity ServiceAffinity + // sessionAffinityConfig contains the configurations of session affinity. + // +optional + SessionAffinityConfig *SessionAffinityConfig + // Optional: If specified and supported by the platform, this will restrict traffic through the cloud-provider // load-balancer will be restricted to the specified client IPs. This field will be ignored if the // cloud-provider does not support the feature." diff --git a/pkg/api/v1/zz_generated.conversion.go b/pkg/api/v1/zz_generated.conversion.go index b1e6276a87..2f5c85acf6 100644 --- a/pkg/api/v1/zz_generated.conversion.go +++ b/pkg/api/v1/zz_generated.conversion.go @@ -62,6 +62,8 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource, Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource, Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource, + Convert_v1_ClientIPConfig_To_api_ClientIPConfig, + Convert_api_ClientIPConfig_To_v1_ClientIPConfig, Convert_v1_ComponentCondition_To_api_ComponentCondition, Convert_api_ComponentCondition_To_v1_ComponentCondition, Convert_v1_ComponentStatus_To_api_ComponentStatus, @@ -364,6 +366,8 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_api_ServiceSpec_To_v1_ServiceSpec, Convert_v1_ServiceStatus_To_api_ServiceStatus, Convert_api_ServiceStatus_To_v1_ServiceStatus, + Convert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig, + Convert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig, Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource, Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource, Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource, @@ -703,6 +707,26 @@ func Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolum return autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in, out, s) } +func autoConvert_v1_ClientIPConfig_To_api_ClientIPConfig(in *v1.ClientIPConfig, out *api.ClientIPConfig, s conversion.Scope) error { + out.TimeoutSeconds = (*int32)(unsafe.Pointer(in.TimeoutSeconds)) + return nil +} + +// Convert_v1_ClientIPConfig_To_api_ClientIPConfig is an autogenerated conversion function. +func Convert_v1_ClientIPConfig_To_api_ClientIPConfig(in *v1.ClientIPConfig, out *api.ClientIPConfig, s conversion.Scope) error { + return autoConvert_v1_ClientIPConfig_To_api_ClientIPConfig(in, out, s) +} + +func autoConvert_api_ClientIPConfig_To_v1_ClientIPConfig(in *api.ClientIPConfig, out *v1.ClientIPConfig, s conversion.Scope) error { + out.TimeoutSeconds = (*int32)(unsafe.Pointer(in.TimeoutSeconds)) + return nil +} + +// Convert_api_ClientIPConfig_To_v1_ClientIPConfig is an autogenerated conversion function. +func Convert_api_ClientIPConfig_To_v1_ClientIPConfig(in *api.ClientIPConfig, out *v1.ClientIPConfig, s conversion.Scope) error { + return autoConvert_api_ClientIPConfig_To_v1_ClientIPConfig(in, out, s) +} + func autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in *v1.ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error { out.Type = api.ComponentConditionType(in.Type) out.Status = api.ConditionStatus(in.Status) @@ -4930,6 +4954,7 @@ func autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in *v1.ServiceSpec, out *api. out.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy) out.HealthCheckNodePort = in.HealthCheckNodePort out.PublishNotReadyAddresses = in.PublishNotReadyAddresses + out.SessionAffinityConfig = (*api.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig)) return nil } @@ -4947,6 +4972,7 @@ func autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *v1. out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs)) out.LoadBalancerIP = in.LoadBalancerIP out.SessionAffinity = v1.ServiceAffinity(in.SessionAffinity) + out.SessionAffinityConfig = (*v1.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig)) out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges)) out.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy) out.HealthCheckNodePort = in.HealthCheckNodePort @@ -4983,6 +5009,26 @@ func Convert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *v return autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in, out, s) } +func autoConvert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig(in *v1.SessionAffinityConfig, out *api.SessionAffinityConfig, s conversion.Scope) error { + out.ClientIP = (*api.ClientIPConfig)(unsafe.Pointer(in.ClientIP)) + return nil +} + +// Convert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig is an autogenerated conversion function. +func Convert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig(in *v1.SessionAffinityConfig, out *api.SessionAffinityConfig, s conversion.Scope) error { + return autoConvert_v1_SessionAffinityConfig_To_api_SessionAffinityConfig(in, out, s) +} + +func autoConvert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig(in *api.SessionAffinityConfig, out *v1.SessionAffinityConfig, s conversion.Scope) error { + out.ClientIP = (*v1.ClientIPConfig)(unsafe.Pointer(in.ClientIP)) + return nil +} + +// Convert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig is an autogenerated conversion function. +func Convert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig(in *api.SessionAffinityConfig, out *v1.SessionAffinityConfig, s conversion.Scope) error { + return autoConvert_api_SessionAffinityConfig_To_v1_SessionAffinityConfig(in, out, s) +} + func autoConvert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in *v1.StorageOSPersistentVolumeSource, out *api.StorageOSPersistentVolumeSource, s conversion.Scope) error { out.VolumeName = in.VolumeName out.VolumeNamespace = in.VolumeNamespace diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 200e0c15d3..23a3458b3a 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -19,6 +19,7 @@ package validation import ( "encoding/json" "fmt" + "math" "net" "path" "path/filepath" @@ -28,8 +29,6 @@ import ( "github.com/golang/glog" - "math" - "k8s.io/api/core/v1" apiequality "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/api/resource" @@ -1873,6 +1872,33 @@ func validateProbe(probe *api.Probe, fldPath *field.Path) field.ErrorList { return allErrs } +func validateClientIPAffinityConfig(config *api.SessionAffinityConfig, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if config == nil { + allErrs = append(allErrs, field.Required(fldPath, fmt.Sprintf("when session affinity type is %s", api.ServiceAffinityClientIP))) + return allErrs + } + if config.ClientIP == nil { + allErrs = append(allErrs, field.Required(fldPath.Child("clientIP"), fmt.Sprintf("when session affinity type is %s", api.ServiceAffinityClientIP))) + return allErrs + } + if config.ClientIP.TimeoutSeconds == nil { + allErrs = append(allErrs, field.Required(fldPath.Child("clientIP").Child("timeoutSeconds"), fmt.Sprintf("when session affinity type is %s", api.ServiceAffinityClientIP))) + return allErrs + } + allErrs = append(allErrs, validateAffinityTimeout(config.ClientIP.TimeoutSeconds, fldPath.Child("clientIP").Child("timeoutSeconds"))...) + + return allErrs +} + +func validateAffinityTimeout(timeout *int32, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if *timeout <= 0 || *timeout > api.MaxClientIPServiceAffinitySeconds { + allErrs = append(allErrs, field.Invalid(fldPath, timeout, fmt.Sprintf("must be greater than 0 and less than %d", api.MaxClientIPServiceAffinitySeconds))) + } + return allErrs +} + // AccumulateUniqueHostPorts extracts each HostPort of each Container, // accumulating the results and returning an error if any ports conflict. func AccumulateUniqueHostPorts(containers []api.Container, accumulator *sets.String, fldPath *field.Path) field.ErrorList { @@ -2914,6 +2940,14 @@ func ValidateService(service *api.Service) field.ErrorList { allErrs = append(allErrs, field.NotSupported(specPath.Child("sessionAffinity"), service.Spec.SessionAffinity, supportedSessionAffinityType.List())) } + if service.Spec.SessionAffinity == api.ServiceAffinityClientIP { + allErrs = append(allErrs, validateClientIPAffinityConfig(service.Spec.SessionAffinityConfig, specPath.Child("sessionAffinityConfig"))...) + } else if service.Spec.SessionAffinity == api.ServiceAffinityNone { + if service.Spec.SessionAffinityConfig != nil { + allErrs = append(allErrs, field.Forbidden(specPath.Child("sessionAffinityConfig"), fmt.Sprintf("must not be set when session affinity is %s", string(api.ServiceAffinityNone)))) + } + } + if helper.IsServiceIPSet(service) { if ip := net.ParseIP(service.Spec.ClusterIP); ip == nil { allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "must be empty, 'None', or a valid IP address")) diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index 50e36fe6b6..bdd514ceb0 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -6792,6 +6792,32 @@ func TestValidateService(t *testing.T) { numErrs: 0, }, // ESIPP section ends. + { + name: "invalid timeoutSeconds field", + tweakSvc: func(s *api.Service) { + s.Spec.Type = api.ServiceTypeClusterIP + s.Spec.SessionAffinity = api.ServiceAffinityClientIP + s.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(-1), + }, + } + }, + numErrs: 1, + }, + { + name: "sessionAffinityConfig can't be set when session affinity is None", + tweakSvc: func(s *api.Service) { + s.Spec.Type = api.ServiceTypeLoadBalancer + s.Spec.SessionAffinity = api.ServiceAffinityNone + s.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(90), + }, + } + }, + numErrs: 1, + }, } for _, tc := range testCases { @@ -8193,6 +8219,11 @@ func TestValidateServiceUpdate(t *testing.T) { name: "change affinity", tweakSvc: func(oldSvc, newSvc *api.Service) { newSvc.Spec.SessionAffinity = "ClientIP" + newSvc.Spec.SessionAffinityConfig = &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(90), + }, + } }, numErrs: 0, }, @@ -10314,3 +10345,62 @@ func TestValidateFlexVolumeSource(t *testing.T) { } } } + +func TestValidateOrSetClientIPAffinityConfig(t *testing.T) { + successCases := map[string]*api.SessionAffinityConfig{ + "non-empty config, valid timeout: 1": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(1), + }, + }, + "non-empty config, valid timeout: api.MaxClientIPServiceAffinitySeconds-1": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(int(api.MaxClientIPServiceAffinitySeconds - 1)), + }, + }, + "non-empty config, valid timeout: api.MaxClientIPServiceAffinitySeconds": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(int(api.MaxClientIPServiceAffinitySeconds)), + }, + }, + } + + for name, test := range successCases { + if errs := validateClientIPAffinityConfig(test, field.NewPath("field")); len(errs) != 0 { + t.Errorf("case: %s, expected success: %v", name, errs) + } + } + + errorCases := map[string]*api.SessionAffinityConfig{ + "empty session affinity config": nil, + "empty client IP config": { + ClientIP: nil, + }, + "empty timeoutSeconds": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: nil, + }, + }, + "non-empty config, invalid timeout: api.MaxClientIPServiceAffinitySeconds+1": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(int(api.MaxClientIPServiceAffinitySeconds + 1)), + }, + }, + "non-empty config, invalid timeout: -1": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(-1), + }, + }, + "non-empty config, invalid timeout: 0": { + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: newInt32(0), + }, + }, + } + + for name, test := range errorCases { + if errs := validateClientIPAffinityConfig(test, field.NewPath("field")); len(errs) == 0 { + t.Errorf("case: %v, expected failures: %v", name, errs) + } + } +} diff --git a/pkg/api/zz_generated.deepcopy.go b/pkg/api/zz_generated.deepcopy.go index fb5377d667..1c2f7bd751 100644 --- a/pkg/api/zz_generated.deepcopy.go +++ b/pkg/api/zz_generated.deepcopy.go @@ -86,6 +86,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*CinderVolumeSource).DeepCopyInto(out.(*CinderVolumeSource)) return nil }, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClientIPConfig).DeepCopyInto(out.(*ClientIPConfig)) + return nil + }, InType: reflect.TypeOf(&ClientIPConfig{})}, conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { in.(*ComponentCondition).DeepCopyInto(out.(*ComponentCondition)) return nil @@ -690,6 +694,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*ServiceStatus).DeepCopyInto(out.(*ServiceStatus)) return nil }, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SessionAffinityConfig).DeepCopyInto(out.(*SessionAffinityConfig)) + return nil + }, InType: reflect.TypeOf(&SessionAffinityConfig{})}, conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { in.(*StorageOSPersistentVolumeSource).DeepCopyInto(out.(*StorageOSPersistentVolumeSource)) return nil @@ -1062,6 +1070,31 @@ func (in *CinderVolumeSource) DeepCopy() *CinderVolumeSource { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) { + *out = *in + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientIPConfig. +func (in *ClientIPConfig) DeepCopy() *ClientIPConfig { + if in == nil { + return nil + } + out := new(ClientIPConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ComponentCondition) DeepCopyInto(out *ComponentCondition) { *out = *in @@ -5670,6 +5703,15 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.SessionAffinityConfig != nil { + in, out := &in.SessionAffinityConfig, &out.SessionAffinityConfig + if *in == nil { + *out = nil + } else { + *out = new(SessionAffinityConfig) + (*in).DeepCopyInto(*out) + } + } if in.LoadBalancerSourceRanges != nil { in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges *out = make([]string, len(*in)) @@ -5705,6 +5747,31 @@ func (in *ServiceStatus) DeepCopy() *ServiceStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { + *out = *in + if in.ClientIP != nil { + in, out := &in.ClientIP, &out.ClientIP + if *in == nil { + *out = nil + } else { + *out = new(ClientIPConfig) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SessionAffinityConfig. +func (in *SessionAffinityConfig) DeepCopy() *SessionAffinityConfig { + if in == nil { + return nil + } + out := new(SessionAffinityConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StorageOSPersistentVolumeSource) DeepCopyInto(out *StorageOSPersistentVolumeSource) { *out = *in diff --git a/pkg/master/controller.go b/pkg/master/controller.go index 0e922e17b8..e38718c616 100644 --- a/pkg/master/controller.go +++ b/pkg/master/controller.go @@ -250,6 +250,7 @@ func (c *Controller) CreateOrUpdateMasterServiceIfNeeded(serviceName string, ser } return nil } + timeoutSeconds := api.DefaultClientIPServiceAffinitySeconds svc := &api.Service{ ObjectMeta: metav1.ObjectMeta{ Name: serviceName, @@ -263,6 +264,11 @@ func (c *Controller) CreateOrUpdateMasterServiceIfNeeded(serviceName string, ser ClusterIP: serviceIP.String(), SessionAffinity: api.ServiceAffinityClientIP, Type: serviceType, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, }, } diff --git a/pkg/master/controller_test.go b/pkg/master/controller_test.go index 50dc1bab73..f001122334 100644 --- a/pkg/master/controller_test.go +++ b/pkg/master/controller_test.go @@ -546,6 +546,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) { om := func(name string) metav1.ObjectMeta { return metav1.ObjectMeta{Namespace: ns, Name: name} } + timeoutSeconds := api.DefaultClientIPServiceAffinitySeconds create_tests := []struct { testName string @@ -570,7 +571,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -625,7 +631,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: &api.Service{ @@ -637,7 +648,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -658,7 +674,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: &api.Service{ @@ -671,7 +692,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -691,7 +717,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: &api.Service{ @@ -703,7 +734,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -723,7 +759,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: &api.Service{ @@ -735,7 +776,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -755,7 +801,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: &api.Service{ @@ -767,7 +818,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -787,7 +843,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: &api.Service{ @@ -799,7 +860,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -819,7 +885,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeNodePort, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeNodePort, }, }, expectUpdate: &api.Service{ @@ -831,7 +902,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, }, @@ -851,7 +927,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: nil, @@ -910,7 +991,12 @@ func TestCreateOrUpdateMasterService(t *testing.T) { Selector: nil, ClusterIP: "1.2.3.4", SessionAffinity: api.ServiceAffinityClientIP, - Type: api.ServiceTypeClusterIP, + SessionAffinityConfig: &api.SessionAffinityConfig{ + ClientIP: &api.ClientIPConfig{ + TimeoutSeconds: &timeoutSeconds, + }, + }, + Type: api.ServiceTypeClusterIP, }, }, expectUpdate: nil, diff --git a/pkg/proxy/iptables/proxier.go b/pkg/proxy/iptables/proxier.go index 3ba5dcd0c6..f745833268 100644 --- a/pkg/proxy/iptables/proxier.go +++ b/pkg/proxy/iptables/proxier.go @@ -143,7 +143,7 @@ type serviceInfo struct { nodePort int loadBalancerStatus api.LoadBalancerStatus sessionAffinityType api.ServiceAffinity - stickyMaxAgeMinutes int + stickyMaxAgeSeconds int externalIPs []string loadBalancerSourceRanges []string onlyNodeLocalEndpoints bool @@ -194,6 +194,10 @@ func newServiceInfo(svcPortName proxy.ServicePortName, port *api.ServicePort, se apiservice.RequestsOnlyLocalTraffic(service) { onlyNodeLocalEndpoints = true } + var stickyMaxAgeSeconds int + if service.Spec.SessionAffinity == api.ServiceAffinityClientIP { + stickyMaxAgeSeconds = int(*service.Spec.SessionAffinityConfig.ClientIP.TimeoutSeconds) + } info := &serviceInfo{ clusterIP: net.ParseIP(service.Spec.ClusterIP), port: int(port.Port), @@ -202,11 +206,12 @@ func newServiceInfo(svcPortName proxy.ServicePortName, port *api.ServicePort, se // Deep-copy in case the service instance changes loadBalancerStatus: *helper.LoadBalancerStatusDeepCopy(&service.Status.LoadBalancer), sessionAffinityType: service.Spec.SessionAffinity, - stickyMaxAgeMinutes: 180, // TODO: paramaterize this in the API. + stickyMaxAgeSeconds: stickyMaxAgeSeconds, externalIPs: make([]string, len(service.Spec.ExternalIPs)), loadBalancerSourceRanges: make([]string, len(service.Spec.LoadBalancerSourceRanges)), onlyNodeLocalEndpoints: onlyNodeLocalEndpoints, } + copy(info.loadBalancerSourceRanges, service.Spec.LoadBalancerSourceRanges) copy(info.externalIPs, service.Spec.ExternalIPs) @@ -1419,7 +1424,7 @@ func (proxier *Proxier) syncProxyRules() { "-A", string(svcChain), "-m", "comment", "--comment", svcNameString, "-m", "recent", "--name", string(endpointChain), - "--rcheck", "--seconds", strconv.Itoa(svcInfo.stickyMaxAgeMinutes*60), "--reap", + "--rcheck", "--seconds", strconv.Itoa(svcInfo.stickyMaxAgeSeconds), "--reap", "-j", string(endpointChain)) } } diff --git a/pkg/proxy/iptables/proxier_test.go b/pkg/proxy/iptables/proxier_test.go index e9057f423a..ee900e3f0d 100644 --- a/pkg/proxy/iptables/proxier_test.go +++ b/pkg/proxy/iptables/proxier_test.go @@ -179,8 +179,8 @@ func TestGetChainLinesMultipleTables(t *testing.T) { func newFakeServiceInfo(service proxy.ServicePortName, ip net.IP, port int, protocol api.Protocol, onlyNodeLocalEndpoints bool) *serviceInfo { return &serviceInfo{ - sessionAffinityType: api.ServiceAffinityNone, // default - stickyMaxAgeMinutes: 180, // TODO: paramaterize this in the API. + sessionAffinityType: api.ServiceAffinityNone, // default + stickyMaxAgeSeconds: int(api.DefaultClientIPServiceAffinitySeconds), // default clusterIP: ip, port: port, protocol: protocol, diff --git a/pkg/proxy/userspace/loadbalancer.go b/pkg/proxy/userspace/loadbalancer.go index 2bf23d5b94..369094e329 100644 --- a/pkg/proxy/userspace/loadbalancer.go +++ b/pkg/proxy/userspace/loadbalancer.go @@ -28,7 +28,7 @@ type LoadBalancer interface { // NextEndpoint returns the endpoint to handle a request for the given // service-port and source address. NextEndpoint(service proxy.ServicePortName, srcAddr net.Addr, sessionAffinityReset bool) (string, error) - NewService(service proxy.ServicePortName, sessionAffinityType api.ServiceAffinity, stickyMaxAgeMinutes int) error + NewService(service proxy.ServicePortName, sessionAffinityType api.ServiceAffinity, stickyMaxAgeSeconds int) error DeleteService(service proxy.ServicePortName) CleanupStaleStickySessions(service proxy.ServicePortName) ServiceHasEndpoints(service proxy.ServicePortName) bool diff --git a/pkg/proxy/userspace/proxier.go b/pkg/proxy/userspace/proxier.go index 7d3502ce79..d299544da2 100644 --- a/pkg/proxy/userspace/proxier.go +++ b/pkg/proxy/userspace/proxier.go @@ -61,7 +61,7 @@ type ServiceInfo struct { nodePort int loadBalancerStatus api.LoadBalancerStatus sessionAffinityType api.ServiceAffinity - stickyMaxAgeMinutes int + stickyMaxAgeSeconds int // Deprecated, but required for back-compat (including e2e) externalIPs []string } @@ -378,15 +378,13 @@ func (proxier *Proxier) addServiceOnPort(service proxy.ServicePortName, protocol return nil, err } si := &ServiceInfo{ - Timeout: timeout, - ActiveClients: newClientCache(), - + Timeout: timeout, + ActiveClients: newClientCache(), isAliveAtomic: 1, proxyPort: portNum, protocol: protocol, socket: sock, sessionAffinityType: api.ServiceAffinityNone, // default - stickyMaxAgeMinutes: 180, // TODO: parameterize this in the API. } proxier.setServiceInfo(service, si) @@ -450,12 +448,17 @@ func (proxier *Proxier) mergeService(service *api.Service) sets.String { info.loadBalancerStatus = *helper.LoadBalancerStatusDeepCopy(&service.Status.LoadBalancer) info.nodePort = int(servicePort.NodePort) info.sessionAffinityType = service.Spec.SessionAffinity + // Set session affinity timeout value when sessionAffinity==ClientIP + if service.Spec.SessionAffinity == api.ServiceAffinityClientIP { + info.stickyMaxAgeSeconds = int(*service.Spec.SessionAffinityConfig.ClientIP.TimeoutSeconds) + } + glog.V(4).Infof("info: %#v", info) if err := proxier.openPortal(serviceName, info); err != nil { glog.Errorf("Failed to open portal for %q: %v", serviceName, err) } - proxier.loadBalancer.NewService(serviceName, info.sessionAffinityType, info.stickyMaxAgeMinutes) + proxier.loadBalancer.NewService(serviceName, info.sessionAffinityType, info.stickyMaxAgeSeconds) } return existingPorts diff --git a/pkg/proxy/userspace/roundrobin.go b/pkg/proxy/userspace/roundrobin.go index b610ebbbd7..b32d69d877 100644 --- a/pkg/proxy/userspace/roundrobin.go +++ b/pkg/proxy/userspace/roundrobin.go @@ -48,7 +48,7 @@ type affinityState struct { type affinityPolicy struct { affinityType api.ServiceAffinity affinityMap map[string]*affinityState // map client IP -> affinity info - ttlMinutes int + ttlSeconds int } // LoadBalancerRR is a round-robin load balancer. @@ -66,11 +66,11 @@ type balancerState struct { affinity affinityPolicy } -func newAffinityPolicy(affinityType api.ServiceAffinity, ttlMinutes int) *affinityPolicy { +func newAffinityPolicy(affinityType api.ServiceAffinity, ttlSeconds int) *affinityPolicy { return &affinityPolicy{ affinityType: affinityType, affinityMap: make(map[string]*affinityState), - ttlMinutes: ttlMinutes, + ttlSeconds: ttlSeconds, } } @@ -81,22 +81,22 @@ func NewLoadBalancerRR() *LoadBalancerRR { } } -func (lb *LoadBalancerRR) NewService(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlMinutes int) error { +func (lb *LoadBalancerRR) NewService(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlSeconds int) error { glog.V(4).Infof("LoadBalancerRR NewService %q", svcPort) lb.lock.Lock() defer lb.lock.Unlock() - lb.newServiceInternal(svcPort, affinityType, ttlMinutes) + lb.newServiceInternal(svcPort, affinityType, ttlSeconds) return nil } // This assumes that lb.lock is already held. -func (lb *LoadBalancerRR) newServiceInternal(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlMinutes int) *balancerState { - if ttlMinutes == 0 { - ttlMinutes = 180 //default to 3 hours if not specified. Should 0 be unlimited instead???? +func (lb *LoadBalancerRR) newServiceInternal(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlSeconds int) *balancerState { + if ttlSeconds == 0 { + ttlSeconds = int(api.DefaultClientIPServiceAffinitySeconds) //default to 3 hours if not specified. Should 0 be unlimited instead???? } if _, exists := lb.services[svcPort]; !exists { - lb.services[svcPort] = &balancerState{affinity: *newAffinityPolicy(affinityType, ttlMinutes)} + lb.services[svcPort] = &balancerState{affinity: *newAffinityPolicy(affinityType, ttlSeconds)} glog.V(4).Infof("LoadBalancerRR service %q did not exist, created", svcPort) } else if affinityType != "" { lb.services[svcPort].affinity.affinityType = affinityType @@ -159,7 +159,7 @@ func (lb *LoadBalancerRR) NextEndpoint(svcPort proxy.ServicePortName, srcAddr ne } if !sessionAffinityReset { sessionAffinity, exists := state.affinity.affinityMap[ipaddr] - if exists && int(time.Now().Sub(sessionAffinity.lastUsed).Minutes()) < state.affinity.ttlMinutes { + if exists && int(time.Now().Sub(sessionAffinity.lastUsed).Seconds()) < state.affinity.ttlSeconds { // Affinity wins. endpoint := sessionAffinity.endpoint sessionAffinity.lastUsed = time.Now() @@ -378,7 +378,7 @@ func (lb *LoadBalancerRR) CleanupStaleStickySessions(svcPort proxy.ServicePortNa return } for ip, affinity := range state.affinity.affinityMap { - if int(time.Now().Sub(affinity.lastUsed).Minutes()) >= state.affinity.ttlMinutes { + if int(time.Now().Sub(affinity.lastUsed).Seconds()) >= state.affinity.ttlSeconds { glog.V(4).Infof("Removing client %s from affinityMap for service %q", affinity.clientIP, svcPort) delete(state.affinity.affinityMap, ip) } diff --git a/pkg/proxy/userspace/roundrobin_test.go b/pkg/proxy/userspace/roundrobin_test.go index de3a64de77..05ccbd37a8 100644 --- a/pkg/proxy/userspace/roundrobin_test.go +++ b/pkg/proxy/userspace/roundrobin_test.go @@ -357,7 +357,7 @@ func TestStickyLoadBalanceWorksWithNewServiceCalledFirst(t *testing.T) { } // Call NewService() before OnEndpointsUpdate() - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ @@ -421,7 +421,7 @@ func TestStickyLoadBalanceWorksWithNewServiceCalledSecond(t *testing.T) { }, } loadBalancer.OnEndpointsAdd(endpoints) - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) client1 := &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0} client2 := &net.TCPAddr{IP: net.IPv4(127, 0, 0, 2), Port: 0} @@ -473,7 +473,7 @@ func TestStickyLoadBalanaceWorksWithMultipleEndpointsRemoveOne(t *testing.T) { t.Errorf("Didn't fail with non-existent service") } - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpointsv1 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ @@ -546,7 +546,7 @@ func TestStickyLoadBalanceWorksWithMultipleEndpointsAndUpdates(t *testing.T) { t.Errorf("Didn't fail with non-existent service") } - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpointsv1 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ @@ -605,7 +605,7 @@ func TestStickyLoadBalanceWorksWithServiceRemoval(t *testing.T) { if err == nil || len(endpoint) != 0 { t.Errorf("Didn't fail with non-existent service") } - loadBalancer.NewService(fooService, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(fooService, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints1 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: fooService.Name, Namespace: fooService.Namespace}, Subsets: []api.EndpointSubset{ @@ -616,7 +616,7 @@ func TestStickyLoadBalanceWorksWithServiceRemoval(t *testing.T) { }, } barService := proxy.ServicePortName{NamespacedName: types.NamespacedName{Namespace: "testnamespace", Name: "bar"}, Port: ""} - loadBalancer.NewService(barService, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(barService, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints2 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: barService.Name, Namespace: barService.Namespace}, Subsets: []api.EndpointSubset{ @@ -674,7 +674,7 @@ func TestStickyLoadBalanceWorksWithEndpointFails(t *testing.T) { } // Call NewService() before OnEndpointsUpdate() - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ diff --git a/pkg/proxy/winuserspace/proxier.go b/pkg/proxy/winuserspace/proxier.go index 03fd9546c4..4e6382918c 100644 --- a/pkg/proxy/winuserspace/proxier.go +++ b/pkg/proxy/winuserspace/proxier.go @@ -36,7 +36,6 @@ import ( ) const allAvailableInterfaces string = "" -const stickyMaxAgeMinutes int = 180 // TODO: parameterize this in the API. type portal struct { ip string @@ -360,7 +359,11 @@ func (proxier *Proxier) mergeService(service *api.Service) map[ServicePortPortal }, Port: servicePort.Name, } - proxier.loadBalancer.NewService(servicePortName, service.Spec.SessionAffinity, stickyMaxAgeMinutes) + timeoutSeconds := 0 + if service.Spec.SessionAffinity == api.ServiceAffinityClientIP { + timeoutSeconds = int(*service.Spec.SessionAffinityConfig.ClientIP.TimeoutSeconds) + } + proxier.loadBalancer.NewService(servicePortName, service.Spec.SessionAffinity, timeoutSeconds) } } diff --git a/pkg/proxy/winuserspace/roundrobin.go b/pkg/proxy/winuserspace/roundrobin.go index ff2026bd8f..86d7614c85 100644 --- a/pkg/proxy/winuserspace/roundrobin.go +++ b/pkg/proxy/winuserspace/roundrobin.go @@ -48,7 +48,7 @@ type affinityState struct { type affinityPolicy struct { affinityType api.ServiceAffinity affinityMap map[string]*affinityState // map client IP -> affinity info - ttlMinutes int + ttlSeconds int } // LoadBalancerRR is a round-robin load balancer. @@ -66,11 +66,11 @@ type balancerState struct { affinity affinityPolicy } -func newAffinityPolicy(affinityType api.ServiceAffinity, ttlMinutes int) *affinityPolicy { +func newAffinityPolicy(affinityType api.ServiceAffinity, ttlSeconds int) *affinityPolicy { return &affinityPolicy{ affinityType: affinityType, affinityMap: make(map[string]*affinityState), - ttlMinutes: ttlMinutes, + ttlSeconds: ttlSeconds, } } @@ -81,22 +81,22 @@ func NewLoadBalancerRR() *LoadBalancerRR { } } -func (lb *LoadBalancerRR) NewService(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlMinutes int) error { +func (lb *LoadBalancerRR) NewService(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlSeconds int) error { glog.V(4).Infof("LoadBalancerRR NewService %q", svcPort) lb.lock.Lock() defer lb.lock.Unlock() - lb.newServiceInternal(svcPort, affinityType, ttlMinutes) + lb.newServiceInternal(svcPort, affinityType, ttlSeconds) return nil } // This assumes that lb.lock is already held. -func (lb *LoadBalancerRR) newServiceInternal(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlMinutes int) *balancerState { - if ttlMinutes == 0 { - ttlMinutes = 180 //default to 3 hours if not specified. Should 0 be unlimited instead???? +func (lb *LoadBalancerRR) newServiceInternal(svcPort proxy.ServicePortName, affinityType api.ServiceAffinity, ttlSeconds int) *balancerState { + if ttlSeconds == 0 { + ttlSeconds = int(api.DefaultClientIPServiceAffinitySeconds) //default to 3 hours if not specified. Should 0 be unlimited instead???? } if _, exists := lb.services[svcPort]; !exists { - lb.services[svcPort] = &balancerState{affinity: *newAffinityPolicy(affinityType, ttlMinutes)} + lb.services[svcPort] = &balancerState{affinity: *newAffinityPolicy(affinityType, ttlSeconds)} glog.V(4).Infof("LoadBalancerRR service %q did not exist, created", svcPort) } else if affinityType != "" { lb.services[svcPort].affinity.affinityType = affinityType @@ -149,7 +149,7 @@ func (lb *LoadBalancerRR) NextEndpoint(svcPort proxy.ServicePortName, srcAddr ne } if !sessionAffinityReset { sessionAffinity, exists := state.affinity.affinityMap[ipaddr] - if exists && int(time.Now().Sub(sessionAffinity.lastUsed).Minutes()) < state.affinity.ttlMinutes { + if exists && int(time.Now().Sub(sessionAffinity.lastUsed).Seconds()) < state.affinity.ttlSeconds { // Affinity wins. endpoint := sessionAffinity.endpoint sessionAffinity.lastUsed = time.Now() @@ -366,7 +366,7 @@ func (lb *LoadBalancerRR) CleanupStaleStickySessions(svcPort proxy.ServicePortNa return } for ip, affinity := range state.affinity.affinityMap { - if int(time.Now().Sub(affinity.lastUsed).Minutes()) >= state.affinity.ttlMinutes { + if int(time.Now().Sub(affinity.lastUsed).Seconds()) >= state.affinity.ttlSeconds { glog.V(4).Infof("Removing client %s from affinityMap for service %q", affinity.clientIP, svcPort) delete(state.affinity.affinityMap, ip) } diff --git a/pkg/proxy/winuserspace/roundrobin_test.go b/pkg/proxy/winuserspace/roundrobin_test.go index b334a3ccc2..1f4973ee1a 100644 --- a/pkg/proxy/winuserspace/roundrobin_test.go +++ b/pkg/proxy/winuserspace/roundrobin_test.go @@ -357,7 +357,7 @@ func TestStickyLoadBalanceWorksWithNewServiceCalledFirst(t *testing.T) { } // Call NewService() before OnEndpointsUpdate() - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ @@ -421,7 +421,7 @@ func TestStickyLoadBalanceWorksWithNewServiceCalledSecond(t *testing.T) { }, } loadBalancer.OnEndpointsAdd(endpoints) - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) client1 := &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0} client2 := &net.TCPAddr{IP: net.IPv4(127, 0, 0, 2), Port: 0} @@ -473,7 +473,7 @@ func TestStickyLoadBalanaceWorksWithMultipleEndpointsRemoveOne(t *testing.T) { t.Errorf("Didn't fail with non-existent service") } - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpointsv1 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ @@ -546,7 +546,7 @@ func TestStickyLoadBalanceWorksWithMultipleEndpointsAndUpdates(t *testing.T) { t.Errorf("Didn't fail with non-existent service") } - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpointsv1 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ @@ -605,7 +605,7 @@ func TestStickyLoadBalanceWorksWithServiceRemoval(t *testing.T) { if err == nil || len(endpoint) != 0 { t.Errorf("Didn't fail with non-existent service") } - loadBalancer.NewService(fooService, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(fooService, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints1 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: fooService.Name, Namespace: fooService.Namespace}, Subsets: []api.EndpointSubset{ @@ -616,7 +616,7 @@ func TestStickyLoadBalanceWorksWithServiceRemoval(t *testing.T) { }, } barService := proxy.ServicePortName{NamespacedName: types.NamespacedName{Namespace: "testnamespace", Name: "bar"}, Port: ""} - loadBalancer.NewService(barService, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(barService, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints2 := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: barService.Name, Namespace: barService.Namespace}, Subsets: []api.EndpointSubset{ @@ -674,7 +674,7 @@ func TestStickyLoadBalanceWorksWithEndpointFails(t *testing.T) { } // Call NewService() before OnEndpointsUpdate() - loadBalancer.NewService(service, api.ServiceAffinityClientIP, 0) + loadBalancer.NewService(service, api.ServiceAffinityClientIP, int(api.DefaultClientIPServiceAffinitySeconds)) endpoints := &api.Endpoints{ ObjectMeta: metav1.ObjectMeta{Name: service.Name, Namespace: service.Namespace}, Subsets: []api.EndpointSubset{ 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 77e938ee56..2e8c6ddaf0 100644 --- a/staging/src/k8s.io/api/core/v1/generated.pb.go +++ b/staging/src/k8s.io/api/core/v1/generated.pb.go @@ -37,6 +37,7 @@ limitations under the License. CephFSPersistentVolumeSource CephFSVolumeSource CinderVolumeSource + ClientIPConfig ComponentCondition ComponentStatus ComponentStatusList @@ -188,6 +189,7 @@ limitations under the License. ServiceProxyOptions ServiceSpec ServiceStatus + SessionAffinityConfig StorageOSPersistentVolumeSource StorageOSVolumeSource Sysctl @@ -285,694 +287,702 @@ func (m *CinderVolumeSource) Reset() { *m = CinderVolumeSourc func (*CinderVolumeSource) ProtoMessage() {} func (*CinderVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } +func (m *ClientIPConfig) Reset() { *m = ClientIPConfig{} } +func (*ClientIPConfig) ProtoMessage() {} +func (*ClientIPConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + func (m *ComponentCondition) Reset() { *m = ComponentCondition{} } func (*ComponentCondition) ProtoMessage() {} -func (*ComponentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } +func (*ComponentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } func (m *ComponentStatus) Reset() { *m = ComponentStatus{} } func (*ComponentStatus) ProtoMessage() {} -func (*ComponentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } +func (*ComponentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } func (m *ComponentStatusList) Reset() { *m = ComponentStatusList{} } func (*ComponentStatusList) ProtoMessage() {} -func (*ComponentStatusList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } +func (*ComponentStatusList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } func (m *ConfigMap) Reset() { *m = ConfigMap{} } func (*ConfigMap) ProtoMessage() {} -func (*ConfigMap) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } +func (*ConfigMap) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } func (m *ConfigMapEnvSource) Reset() { *m = ConfigMapEnvSource{} } func (*ConfigMapEnvSource) ProtoMessage() {} -func (*ConfigMapEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } +func (*ConfigMapEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } func (m *ConfigMapKeySelector) Reset() { *m = ConfigMapKeySelector{} } func (*ConfigMapKeySelector) ProtoMessage() {} -func (*ConfigMapKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } +func (*ConfigMapKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } func (m *ConfigMapList) Reset() { *m = ConfigMapList{} } func (*ConfigMapList) ProtoMessage() {} -func (*ConfigMapList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } +func (*ConfigMapList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } func (m *ConfigMapProjection) Reset() { *m = ConfigMapProjection{} } func (*ConfigMapProjection) ProtoMessage() {} -func (*ConfigMapProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } +func (*ConfigMapProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } func (m *ConfigMapVolumeSource) Reset() { *m = ConfigMapVolumeSource{} } func (*ConfigMapVolumeSource) ProtoMessage() {} -func (*ConfigMapVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } +func (*ConfigMapVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} -func (*Container) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } +func (*Container) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } func (m *ContainerImage) Reset() { *m = ContainerImage{} } func (*ContainerImage) ProtoMessage() {} -func (*ContainerImage) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } +func (*ContainerImage) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } func (m *ContainerPort) Reset() { *m = ContainerPort{} } func (*ContainerPort) ProtoMessage() {} -func (*ContainerPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } +func (*ContainerPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } func (m *ContainerState) Reset() { *m = ContainerState{} } func (*ContainerState) ProtoMessage() {} -func (*ContainerState) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } +func (*ContainerState) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } func (m *ContainerStateRunning) Reset() { *m = ContainerStateRunning{} } func (*ContainerStateRunning) ProtoMessage() {} -func (*ContainerStateRunning) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } +func (*ContainerStateRunning) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } func (m *ContainerStateTerminated) Reset() { *m = ContainerStateTerminated{} } func (*ContainerStateTerminated) ProtoMessage() {} func (*ContainerStateTerminated) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{26} + return fileDescriptorGenerated, []int{27} } func (m *ContainerStateWaiting) Reset() { *m = ContainerStateWaiting{} } func (*ContainerStateWaiting) ProtoMessage() {} -func (*ContainerStateWaiting) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } +func (*ContainerStateWaiting) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } func (*ContainerStatus) ProtoMessage() {} -func (*ContainerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } +func (*ContainerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } func (m *DaemonEndpoint) Reset() { *m = DaemonEndpoint{} } func (*DaemonEndpoint) ProtoMessage() {} -func (*DaemonEndpoint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } +func (*DaemonEndpoint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } func (m *DeleteOptions) Reset() { *m = DeleteOptions{} } func (*DeleteOptions) ProtoMessage() {} -func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } +func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } func (m *DownwardAPIProjection) Reset() { *m = DownwardAPIProjection{} } func (*DownwardAPIProjection) ProtoMessage() {} -func (*DownwardAPIProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } +func (*DownwardAPIProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } func (m *DownwardAPIVolumeFile) Reset() { *m = DownwardAPIVolumeFile{} } func (*DownwardAPIVolumeFile) ProtoMessage() {} -func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } +func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } func (m *DownwardAPIVolumeSource) Reset() { *m = DownwardAPIVolumeSource{} } func (*DownwardAPIVolumeSource) ProtoMessage() {} func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{33} + return fileDescriptorGenerated, []int{34} } func (m *EmptyDirVolumeSource) Reset() { *m = EmptyDirVolumeSource{} } func (*EmptyDirVolumeSource) ProtoMessage() {} -func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } +func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } func (m *EndpointAddress) Reset() { *m = EndpointAddress{} } func (*EndpointAddress) ProtoMessage() {} -func (*EndpointAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } +func (*EndpointAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } func (m *EndpointPort) Reset() { *m = EndpointPort{} } func (*EndpointPort) ProtoMessage() {} -func (*EndpointPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } +func (*EndpointPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } func (m *EndpointSubset) Reset() { *m = EndpointSubset{} } func (*EndpointSubset) ProtoMessage() {} -func (*EndpointSubset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } +func (*EndpointSubset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } func (m *Endpoints) Reset() { *m = Endpoints{} } func (*Endpoints) ProtoMessage() {} -func (*Endpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } +func (*Endpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } func (m *EndpointsList) Reset() { *m = EndpointsList{} } func (*EndpointsList) ProtoMessage() {} -func (*EndpointsList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } +func (*EndpointsList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } func (m *EnvFromSource) Reset() { *m = EnvFromSource{} } func (*EnvFromSource) ProtoMessage() {} -func (*EnvFromSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } +func (*EnvFromSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } func (m *EnvVar) Reset() { *m = EnvVar{} } func (*EnvVar) ProtoMessage() {} -func (*EnvVar) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } +func (*EnvVar) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } func (m *EnvVarSource) Reset() { *m = EnvVarSource{} } func (*EnvVarSource) ProtoMessage() {} -func (*EnvVarSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } +func (*EnvVarSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } func (m *Event) Reset() { *m = Event{} } func (*Event) ProtoMessage() {} -func (*Event) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } +func (*Event) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } func (m *EventList) Reset() { *m = EventList{} } func (*EventList) ProtoMessage() {} -func (*EventList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } +func (*EventList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } func (m *EventSource) Reset() { *m = EventSource{} } func (*EventSource) ProtoMessage() {} -func (*EventSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } +func (*EventSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } func (m *ExecAction) Reset() { *m = ExecAction{} } func (*ExecAction) ProtoMessage() {} -func (*ExecAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } +func (*ExecAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{47} } func (m *FCVolumeSource) Reset() { *m = FCVolumeSource{} } func (*FCVolumeSource) ProtoMessage() {} -func (*FCVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{47} } +func (*FCVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{48} } func (m *FlexVolumeSource) Reset() { *m = FlexVolumeSource{} } func (*FlexVolumeSource) ProtoMessage() {} -func (*FlexVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{48} } +func (*FlexVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } func (m *FlockerVolumeSource) Reset() { *m = FlockerVolumeSource{} } func (*FlockerVolumeSource) ProtoMessage() {} -func (*FlockerVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } +func (*FlockerVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{50} } func (m *GCEPersistentDiskVolumeSource) Reset() { *m = GCEPersistentDiskVolumeSource{} } func (*GCEPersistentDiskVolumeSource) ProtoMessage() {} func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{50} + return fileDescriptorGenerated, []int{51} } func (m *GitRepoVolumeSource) Reset() { *m = GitRepoVolumeSource{} } func (*GitRepoVolumeSource) ProtoMessage() {} -func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{51} } +func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } func (m *GlusterfsVolumeSource) Reset() { *m = GlusterfsVolumeSource{} } func (*GlusterfsVolumeSource) ProtoMessage() {} -func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } +func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } func (m *HTTPGetAction) Reset() { *m = HTTPGetAction{} } func (*HTTPGetAction) ProtoMessage() {} -func (*HTTPGetAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } +func (*HTTPGetAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } func (m *HTTPHeader) Reset() { *m = HTTPHeader{} } func (*HTTPHeader) ProtoMessage() {} -func (*HTTPHeader) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } +func (*HTTPHeader) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } func (m *Handler) Reset() { *m = Handler{} } func (*Handler) ProtoMessage() {} -func (*Handler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } +func (*Handler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{56} } func (m *HostAlias) Reset() { *m = HostAlias{} } func (*HostAlias) ProtoMessage() {} -func (*HostAlias) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{56} } +func (*HostAlias) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } func (m *HostPathVolumeSource) Reset() { *m = HostPathVolumeSource{} } func (*HostPathVolumeSource) ProtoMessage() {} -func (*HostPathVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } +func (*HostPathVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{58} } func (m *ISCSIVolumeSource) Reset() { *m = ISCSIVolumeSource{} } func (*ISCSIVolumeSource) ProtoMessage() {} -func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{58} } +func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{59} } func (m *KeyToPath) Reset() { *m = KeyToPath{} } func (*KeyToPath) ProtoMessage() {} -func (*KeyToPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{59} } +func (*KeyToPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } func (m *Lifecycle) Reset() { *m = Lifecycle{} } func (*Lifecycle) ProtoMessage() {} -func (*Lifecycle) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } +func (*Lifecycle) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{61} } func (m *LimitRange) Reset() { *m = LimitRange{} } func (*LimitRange) ProtoMessage() {} -func (*LimitRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{61} } +func (*LimitRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{62} } func (m *LimitRangeItem) Reset() { *m = LimitRangeItem{} } func (*LimitRangeItem) ProtoMessage() {} -func (*LimitRangeItem) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{62} } +func (*LimitRangeItem) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{63} } func (m *LimitRangeList) Reset() { *m = LimitRangeList{} } func (*LimitRangeList) ProtoMessage() {} -func (*LimitRangeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{63} } +func (*LimitRangeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{64} } func (m *LimitRangeSpec) Reset() { *m = LimitRangeSpec{} } func (*LimitRangeSpec) ProtoMessage() {} -func (*LimitRangeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{64} } +func (*LimitRangeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{65} } func (m *List) Reset() { *m = List{} } func (*List) ProtoMessage() {} -func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{65} } +func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{66} } func (m *ListOptions) Reset() { *m = ListOptions{} } func (*ListOptions) ProtoMessage() {} -func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{66} } +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{67} } func (m *LoadBalancerIngress) Reset() { *m = LoadBalancerIngress{} } func (*LoadBalancerIngress) ProtoMessage() {} -func (*LoadBalancerIngress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{67} } +func (*LoadBalancerIngress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{68} } func (m *LoadBalancerStatus) Reset() { *m = LoadBalancerStatus{} } func (*LoadBalancerStatus) ProtoMessage() {} -func (*LoadBalancerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{68} } +func (*LoadBalancerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{69} } func (m *LocalObjectReference) Reset() { *m = LocalObjectReference{} } func (*LocalObjectReference) ProtoMessage() {} -func (*LocalObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{69} } +func (*LocalObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{70} } func (m *LocalVolumeSource) Reset() { *m = LocalVolumeSource{} } func (*LocalVolumeSource) ProtoMessage() {} -func (*LocalVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{70} } +func (*LocalVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{71} } func (m *NFSVolumeSource) Reset() { *m = NFSVolumeSource{} } func (*NFSVolumeSource) ProtoMessage() {} -func (*NFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{71} } +func (*NFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{72} } func (m *Namespace) Reset() { *m = Namespace{} } func (*Namespace) ProtoMessage() {} -func (*Namespace) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{72} } +func (*Namespace) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{73} } func (m *NamespaceList) Reset() { *m = NamespaceList{} } func (*NamespaceList) ProtoMessage() {} -func (*NamespaceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{73} } +func (*NamespaceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{74} } func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } func (*NamespaceSpec) ProtoMessage() {} -func (*NamespaceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{74} } +func (*NamespaceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{75} } func (m *NamespaceStatus) Reset() { *m = NamespaceStatus{} } func (*NamespaceStatus) ProtoMessage() {} -func (*NamespaceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{75} } +func (*NamespaceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } func (m *Node) Reset() { *m = Node{} } func (*Node) ProtoMessage() {} -func (*Node) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } +func (*Node) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{77} } func (m *NodeAddress) Reset() { *m = NodeAddress{} } func (*NodeAddress) ProtoMessage() {} -func (*NodeAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{77} } +func (*NodeAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{78} } func (m *NodeAffinity) Reset() { *m = NodeAffinity{} } func (*NodeAffinity) ProtoMessage() {} -func (*NodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{78} } +func (*NodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } func (m *NodeCondition) Reset() { *m = NodeCondition{} } func (*NodeCondition) ProtoMessage() {} -func (*NodeCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } +func (*NodeCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } func (m *NodeConfigSource) Reset() { *m = NodeConfigSource{} } func (*NodeConfigSource) ProtoMessage() {} -func (*NodeConfigSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } +func (*NodeConfigSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } func (m *NodeDaemonEndpoints) Reset() { *m = NodeDaemonEndpoints{} } func (*NodeDaemonEndpoints) ProtoMessage() {} -func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } +func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } func (m *NodeList) Reset() { *m = NodeList{} } func (*NodeList) ProtoMessage() {} -func (*NodeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } +func (*NodeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{83} } func (m *NodeProxyOptions) Reset() { *m = NodeProxyOptions{} } func (*NodeProxyOptions) ProtoMessage() {} -func (*NodeProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{83} } +func (*NodeProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } func (m *NodeResources) Reset() { *m = NodeResources{} } func (*NodeResources) ProtoMessage() {} -func (*NodeResources) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } +func (*NodeResources) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } func (m *NodeSelector) Reset() { *m = NodeSelector{} } func (*NodeSelector) ProtoMessage() {} -func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } +func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{86} } func (m *NodeSelectorRequirement) Reset() { *m = NodeSelectorRequirement{} } func (*NodeSelectorRequirement) ProtoMessage() {} func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{86} + return fileDescriptorGenerated, []int{87} } func (m *NodeSelectorTerm) Reset() { *m = NodeSelectorTerm{} } func (*NodeSelectorTerm) ProtoMessage() {} -func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{87} } +func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{88} } func (m *NodeSpec) Reset() { *m = NodeSpec{} } func (*NodeSpec) ProtoMessage() {} -func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{88} } +func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{89} } func (m *NodeStatus) Reset() { *m = NodeStatus{} } func (*NodeStatus) ProtoMessage() {} -func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{89} } +func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{90} } func (m *NodeSystemInfo) Reset() { *m = NodeSystemInfo{} } func (*NodeSystemInfo) ProtoMessage() {} -func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{90} } +func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{91} } func (m *ObjectFieldSelector) Reset() { *m = ObjectFieldSelector{} } func (*ObjectFieldSelector) ProtoMessage() {} -func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{91} } +func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{92} } func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } func (*ObjectMeta) ProtoMessage() {} -func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{92} } +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{93} } func (m *ObjectReference) Reset() { *m = ObjectReference{} } func (*ObjectReference) ProtoMessage() {} -func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{93} } +func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{94} } func (m *PersistentVolume) Reset() { *m = PersistentVolume{} } func (*PersistentVolume) ProtoMessage() {} -func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{94} } +func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{95} } func (m *PersistentVolumeClaim) Reset() { *m = PersistentVolumeClaim{} } func (*PersistentVolumeClaim) ProtoMessage() {} -func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{95} } +func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{96} } func (m *PersistentVolumeClaimList) Reset() { *m = PersistentVolumeClaimList{} } func (*PersistentVolumeClaimList) ProtoMessage() {} func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{96} + return fileDescriptorGenerated, []int{97} } func (m *PersistentVolumeClaimSpec) Reset() { *m = PersistentVolumeClaimSpec{} } func (*PersistentVolumeClaimSpec) ProtoMessage() {} func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{97} + return fileDescriptorGenerated, []int{98} } func (m *PersistentVolumeClaimStatus) Reset() { *m = PersistentVolumeClaimStatus{} } func (*PersistentVolumeClaimStatus) ProtoMessage() {} func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{98} + return fileDescriptorGenerated, []int{99} } func (m *PersistentVolumeClaimVolumeSource) Reset() { *m = PersistentVolumeClaimVolumeSource{} } func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {} func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{99} + return fileDescriptorGenerated, []int{100} } func (m *PersistentVolumeList) Reset() { *m = PersistentVolumeList{} } func (*PersistentVolumeList) ProtoMessage() {} -func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{100} } +func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{101} } func (m *PersistentVolumeSource) Reset() { *m = PersistentVolumeSource{} } func (*PersistentVolumeSource) ProtoMessage() {} func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{101} + return fileDescriptorGenerated, []int{102} } func (m *PersistentVolumeSpec) Reset() { *m = PersistentVolumeSpec{} } func (*PersistentVolumeSpec) ProtoMessage() {} -func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{102} } +func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{103} } func (m *PersistentVolumeStatus) Reset() { *m = PersistentVolumeStatus{} } func (*PersistentVolumeStatus) ProtoMessage() {} func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{103} + return fileDescriptorGenerated, []int{104} } func (m *PhotonPersistentDiskVolumeSource) Reset() { *m = PhotonPersistentDiskVolumeSource{} } func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {} func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{104} + return fileDescriptorGenerated, []int{105} } func (m *Pod) Reset() { *m = Pod{} } func (*Pod) ProtoMessage() {} -func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{105} } +func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{106} } func (m *PodAffinity) Reset() { *m = PodAffinity{} } func (*PodAffinity) ProtoMessage() {} -func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{106} } +func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } func (m *PodAffinityTerm) Reset() { *m = PodAffinityTerm{} } func (*PodAffinityTerm) ProtoMessage() {} -func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } +func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } func (m *PodAntiAffinity) Reset() { *m = PodAntiAffinity{} } func (*PodAntiAffinity) ProtoMessage() {} -func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } +func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } func (m *PodAttachOptions) Reset() { *m = PodAttachOptions{} } func (*PodAttachOptions) ProtoMessage() {} -func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } +func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } func (m *PodCondition) Reset() { *m = PodCondition{} } func (*PodCondition) ProtoMessage() {} -func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } +func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } func (*PodExecOptions) ProtoMessage() {} -func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } +func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } func (m *PodList) Reset() { *m = PodList{} } func (*PodList) ProtoMessage() {} -func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } +func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } func (*PodLogOptions) ProtoMessage() {} -func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } +func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } func (m *PodPortForwardOptions) Reset() { *m = PodPortForwardOptions{} } func (*PodPortForwardOptions) ProtoMessage() {} -func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } +func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } func (*PodProxyOptions) ProtoMessage() {} -func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } +func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } func (*PodSecurityContext) ProtoMessage() {} -func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } +func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } func (m *PodSignature) Reset() { *m = PodSignature{} } func (*PodSignature) ProtoMessage() {} -func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } +func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } func (m *PodSpec) Reset() { *m = PodSpec{} } func (*PodSpec) ProtoMessage() {} -func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } +func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } func (m *PodStatus) Reset() { *m = PodStatus{} } func (*PodStatus) ProtoMessage() {} -func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } +func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } func (*PodStatusResult) ProtoMessage() {} -func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } +func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } func (m *PodTemplate) Reset() { *m = PodTemplate{} } func (*PodTemplate) ProtoMessage() {} -func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } +func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } func (*PodTemplateList) ProtoMessage() {} -func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } +func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } func (*PodTemplateSpec) ProtoMessage() {} -func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } +func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{124} } func (m *PortworxVolumeSource) Reset() { *m = PortworxVolumeSource{} } func (*PortworxVolumeSource) ProtoMessage() {} -func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{124} } +func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} -func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } func (*PreferAvoidPodsEntry) ProtoMessage() {} -func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } +func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } func (*PreferredSchedulingTerm) ProtoMessage() {} func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{127} + return fileDescriptorGenerated, []int{128} } func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} -func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } +func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } func (m *ProjectedVolumeSource) Reset() { *m = ProjectedVolumeSource{} } func (*ProjectedVolumeSource) ProtoMessage() {} -func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } +func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } func (*QuobyteVolumeSource) ProtoMessage() {} -func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } +func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } func (*RBDVolumeSource) ProtoMessage() {} -func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } +func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } func (*RangeAllocation) ProtoMessage() {} -func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } +func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } func (m *ReplicationController) Reset() { *m = ReplicationController{} } func (*ReplicationController) ProtoMessage() {} -func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } +func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } func (*ReplicationControllerCondition) ProtoMessage() {} func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{134} + return fileDescriptorGenerated, []int{135} } func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } func (*ReplicationControllerList) ProtoMessage() {} func (*ReplicationControllerList) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{135} + return fileDescriptorGenerated, []int{136} } func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } func (*ReplicationControllerSpec) ProtoMessage() {} func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{136} + return fileDescriptorGenerated, []int{137} } func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } func (*ReplicationControllerStatus) ProtoMessage() {} func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{137} + return fileDescriptorGenerated, []int{138} } func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } func (*ResourceFieldSelector) ProtoMessage() {} -func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } +func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } func (*ResourceQuota) ProtoMessage() {} -func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } +func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } func (*ResourceQuotaList) ProtoMessage() {} -func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } +func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } func (*ResourceQuotaSpec) ProtoMessage() {} -func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } +func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } func (*ResourceQuotaStatus) ProtoMessage() {} -func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } +func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } func (*ResourceRequirements) ProtoMessage() {} -func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } +func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } func (*SELinuxOptions) ProtoMessage() {} -func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } +func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } func (*ScaleIOVolumeSource) ProtoMessage() {} -func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } +func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } func (*SecretEnvSource) ProtoMessage() {} -func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } +func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } func (*SecretKeySelector) ProtoMessage() {} -func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } func (m *SecretList) Reset() { *m = SecretList{} } func (*SecretList) ProtoMessage() {} -func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } func (m *SecretProjection) Reset() { *m = SecretProjection{} } func (*SecretProjection) ProtoMessage() {} -func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } +func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} -func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } func (*SecretVolumeSource) ProtoMessage() {} -func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } func (m *SecurityContext) Reset() { *m = SecurityContext{} } func (*SecurityContext) ProtoMessage() {} -func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } func (m *SerializedReference) Reset() { *m = SerializedReference{} } func (*SerializedReference) ProtoMessage() {} -func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } func (m *Service) Reset() { *m = Service{} } func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } func (*ServiceAccount) ProtoMessage() {} -func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } func (*ServiceAccountList) ProtoMessage() {} -func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} -func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} -func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} -func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} -func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} -func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } + +func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } +func (*SessionAffinityConfig) ProtoMessage() {} +func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } func (*StorageOSPersistentVolumeSource) ProtoMessage() {} func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{163} + return fileDescriptorGenerated, []int{165} } func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } func (*StorageOSVolumeSource) ProtoMessage() {} -func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } +func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } func (m *Sysctl) Reset() { *m = Sysctl{} } func (*Sysctl) ProtoMessage() {} -func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} -func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} -func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} -func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} -func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} -func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} -func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{173} + return fileDescriptorGenerated, []int{175} } func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{174} + return fileDescriptorGenerated, []int{176} } func init() { @@ -988,6 +998,7 @@ func init() { proto.RegisterType((*CephFSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CephFSPersistentVolumeSource") proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.api.core.v1.CephFSVolumeSource") proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.api.core.v1.CinderVolumeSource") + proto.RegisterType((*ClientIPConfig)(nil), "k8s.io.api.core.v1.ClientIPConfig") proto.RegisterType((*ComponentCondition)(nil), "k8s.io.api.core.v1.ComponentCondition") proto.RegisterType((*ComponentStatus)(nil), "k8s.io.api.core.v1.ComponentStatus") proto.RegisterType((*ComponentStatusList)(nil), "k8s.io.api.core.v1.ComponentStatusList") @@ -1139,6 +1150,7 @@ func init() { proto.RegisterType((*ServiceProxyOptions)(nil), "k8s.io.api.core.v1.ServiceProxyOptions") proto.RegisterType((*ServiceSpec)(nil), "k8s.io.api.core.v1.ServiceSpec") proto.RegisterType((*ServiceStatus)(nil), "k8s.io.api.core.v1.ServiceStatus") + proto.RegisterType((*SessionAffinityConfig)(nil), "k8s.io.api.core.v1.SessionAffinityConfig") proto.RegisterType((*StorageOSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.StorageOSPersistentVolumeSource") proto.RegisterType((*StorageOSVolumeSource)(nil), "k8s.io.api.core.v1.StorageOSVolumeSource") proto.RegisterType((*Sysctl)(nil), "k8s.io.api.core.v1.Sysctl") @@ -1663,6 +1675,29 @@ func (m *CinderVolumeSource) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *ClientIPConfig) 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 *ClientIPConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.TimeoutSeconds != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds)) + } + return i, nil +} + func (m *ComponentCondition) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8975,6 +9010,16 @@ func (m *ServiceSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0 } i++ + if m.SessionAffinityConfig != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SessionAffinityConfig.Size())) + n181, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n181 + } return i, nil } @@ -8996,11 +9041,39 @@ func (m *ServiceStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LoadBalancer.Size())) - n181, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + n182, err := m.LoadBalancer.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n181 + i += n182 + return i, nil +} + +func (m *SessionAffinityConfig) 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 *SessionAffinityConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ClientIP != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ClientIP.Size())) + n183, err := m.ClientIP.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n183 + } return i, nil } @@ -9043,11 +9116,11 @@ func (m *StorageOSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n182, err := m.SecretRef.MarshalTo(dAtA[i:]) + n184, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n182 + i += n184 } return i, nil } @@ -9091,11 +9164,11 @@ func (m *StorageOSVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n183, err := m.SecretRef.MarshalTo(dAtA[i:]) + n185, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n183 + i += n185 } return i, nil } @@ -9144,11 +9217,11 @@ func (m *TCPSocketAction) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) - n184, err := m.Port.MarshalTo(dAtA[i:]) + n186, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n184 + i += n186 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) @@ -9186,11 +9259,11 @@ func (m *Taint) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TimeAdded.Size())) - n185, err := m.TimeAdded.MarshalTo(dAtA[i:]) + n187, err := m.TimeAdded.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n185 + i += n187 return i, nil } @@ -9255,11 +9328,11 @@ func (m *Volume) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VolumeSource.Size())) - n186, err := m.VolumeSource.MarshalTo(dAtA[i:]) + n188, err := m.VolumeSource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n186 + i += n188 return i, nil } @@ -9320,31 +9393,31 @@ func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n187, err := m.Secret.MarshalTo(dAtA[i:]) + n189, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n187 + i += n189 } if m.DownwardAPI != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n188, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n190, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n188 + i += n190 } if m.ConfigMap != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n189, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n191, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n189 + i += n191 } return i, nil } @@ -9368,163 +9441,163 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) - n190, err := m.HostPath.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n190 - } - if m.EmptyDir != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) - n191, err := m.EmptyDir.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n191 - } - if m.GCEPersistentDisk != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) - n192, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + n192, err := m.HostPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n192 } - if m.AWSElasticBlockStore != nil { - dAtA[i] = 0x22 + if m.EmptyDir != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) - n193, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) + n193, err := m.EmptyDir.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n193 } - if m.GitRepo != nil { - dAtA[i] = 0x2a + if m.GCEPersistentDisk != nil { + dAtA[i] = 0x1a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) - n194, err := m.GitRepo.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n194, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n194 } - if m.Secret != nil { - dAtA[i] = 0x32 + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n195, err := m.Secret.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n195, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n195 } - if m.NFS != nil { - dAtA[i] = 0x3a + if m.GitRepo != nil { + dAtA[i] = 0x2a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) - n196, err := m.NFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) + n196, err := m.GitRepo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n196 } - if m.ISCSI != nil { - dAtA[i] = 0x42 + if m.Secret != nil { + dAtA[i] = 0x32 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) - n197, err := m.ISCSI.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n197, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n197 } - if m.Glusterfs != nil { - dAtA[i] = 0x4a + if m.NFS != nil { + dAtA[i] = 0x3a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) - n198, err := m.Glusterfs.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n198, err := m.NFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n198 } - if m.PersistentVolumeClaim != nil { - dAtA[i] = 0x52 + if m.ISCSI != nil { + dAtA[i] = 0x42 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) - n199, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n199, err := m.ISCSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n199 } - if m.RBD != nil { - dAtA[i] = 0x5a + if m.Glusterfs != nil { + dAtA[i] = 0x4a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) - n200, err := m.RBD.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n200, err := m.Glusterfs.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n200 } - if m.FlexVolume != nil { - dAtA[i] = 0x62 + if m.PersistentVolumeClaim != nil { + dAtA[i] = 0x52 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) - n201, err := m.FlexVolume.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) + n201, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n201 } - if m.Cinder != nil { - dAtA[i] = 0x6a + if m.RBD != nil { + dAtA[i] = 0x5a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) - n202, err := m.Cinder.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n202, err := m.RBD.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n202 } - if m.CephFS != nil { - dAtA[i] = 0x72 + if m.FlexVolume != nil { + dAtA[i] = 0x62 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) - n203, err := m.CephFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n203, err := m.FlexVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n203 } - if m.Flocker != nil { - dAtA[i] = 0x7a + if m.Cinder != nil { + dAtA[i] = 0x6a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) - n204, err := m.Flocker.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n204, err := m.Cinder.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n204 } + if m.CephFS != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n205, err := m.CephFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n205 + } + if m.Flocker != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n206, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n206 + } if m.DownwardAPI != nil { dAtA[i] = 0x82 i++ dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n205, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n207, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n205 + i += n207 } if m.FC != nil { dAtA[i] = 0x8a @@ -9532,11 +9605,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) - n206, err := m.FC.MarshalTo(dAtA[i:]) + n208, err := m.FC.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n206 + i += n208 } if m.AzureFile != nil { dAtA[i] = 0x92 @@ -9544,11 +9617,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) - n207, err := m.AzureFile.MarshalTo(dAtA[i:]) + n209, err := m.AzureFile.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n207 + i += n209 } if m.ConfigMap != nil { dAtA[i] = 0x9a @@ -9556,11 +9629,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n208, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n210, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n208 + i += n210 } if m.VsphereVolume != nil { dAtA[i] = 0xa2 @@ -9568,11 +9641,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) - n209, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + n211, err := m.VsphereVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n209 + i += n211 } if m.Quobyte != nil { dAtA[i] = 0xaa @@ -9580,11 +9653,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) - n210, err := m.Quobyte.MarshalTo(dAtA[i:]) + n212, err := m.Quobyte.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n210 + i += n212 } if m.AzureDisk != nil { dAtA[i] = 0xb2 @@ -9592,11 +9665,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) - n211, err := m.AzureDisk.MarshalTo(dAtA[i:]) + n213, err := m.AzureDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n211 + i += n213 } if m.PhotonPersistentDisk != nil { dAtA[i] = 0xba @@ -9604,11 +9677,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) - n212, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + n214, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n212 + i += n214 } if m.PortworxVolume != nil { dAtA[i] = 0xc2 @@ -9616,11 +9689,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) - n213, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + n215, err := m.PortworxVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n213 + i += n215 } if m.ScaleIO != nil { dAtA[i] = 0xca @@ -9628,11 +9701,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) - n214, err := m.ScaleIO.MarshalTo(dAtA[i:]) + n216, err := m.ScaleIO.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n214 + i += n216 } if m.Projected != nil { dAtA[i] = 0xd2 @@ -9640,11 +9713,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) - n215, err := m.Projected.MarshalTo(dAtA[i:]) + n217, err := m.Projected.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n215 + i += n217 } if m.StorageOS != nil { dAtA[i] = 0xda @@ -9652,11 +9725,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) - n216, err := m.StorageOS.MarshalTo(dAtA[i:]) + n218, err := m.StorageOS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n216 + i += n218 } return i, nil } @@ -9716,11 +9789,11 @@ func (m *WeightedPodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinityTerm.Size())) - n217, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + n219, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n217 + i += n219 return i, nil } @@ -9939,6 +10012,15 @@ func (m *CinderVolumeSource) Size() (n int) { return n } +func (m *ClientIPConfig) Size() (n int) { + var l int + _ = l + if m.TimeoutSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) + } + return n +} + func (m *ComponentCondition) Size() (n int) { var l int _ = l @@ -12582,6 +12664,10 @@ func (m *ServiceSpec) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) n += 1 + sovGenerated(uint64(m.HealthCheckNodePort)) n += 2 + if m.SessionAffinityConfig != nil { + l = m.SessionAffinityConfig.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -12593,6 +12679,16 @@ func (m *ServiceStatus) Size() (n int) { return n } +func (m *SessionAffinityConfig) Size() (n int) { + var l int + _ = l + if m.ClientIP != nil { + l = m.ClientIP.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *StorageOSPersistentVolumeSource) Size() (n int) { var l int _ = l @@ -13019,6 +13115,16 @@ func (this *CinderVolumeSource) String() string { }, "") return s } +func (this *ClientIPConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClientIPConfig{`, + `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, + `}`, + }, "") + return s +} func (this *ComponentCondition) String() string { if this == nil { return "nil" @@ -15169,6 +15275,7 @@ func (this *ServiceSpec) String() string { `ExternalTrafficPolicy:` + fmt.Sprintf("%v", this.ExternalTrafficPolicy) + `,`, `HealthCheckNodePort:` + fmt.Sprintf("%v", this.HealthCheckNodePort) + `,`, `PublishNotReadyAddresses:` + fmt.Sprintf("%v", this.PublishNotReadyAddresses) + `,`, + `SessionAffinityConfig:` + strings.Replace(fmt.Sprintf("%v", this.SessionAffinityConfig), "SessionAffinityConfig", "SessionAffinityConfig", 1) + `,`, `}`, }, "") return s @@ -15183,6 +15290,16 @@ func (this *ServiceStatus) String() string { }, "") return s } +func (this *SessionAffinityConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SessionAffinityConfig{`, + `ClientIP:` + strings.Replace(fmt.Sprintf("%v", this.ClientIP), "ClientIPConfig", "ClientIPConfig", 1) + `,`, + `}`, + }, "") + return s +} func (this *StorageOSPersistentVolumeSource) String() string { if this == nil { return "nil" @@ -17138,6 +17255,76 @@ func (m *CinderVolumeSource) Unmarshal(dAtA []byte) error { } return nil } +func (m *ClientIPConfig) 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: ClientIPConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClientIPConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TimeoutSeconds = &v + 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 *ComponentCondition) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -42786,6 +42973,39 @@ func (m *ServiceSpec) Unmarshal(dAtA []byte) error { } } m.PublishNotReadyAddresses = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionAffinityConfig", 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.SessionAffinityConfig == nil { + m.SessionAffinityConfig = &SessionAffinityConfig{} + } + if err := m.SessionAffinityConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -42887,6 +43107,89 @@ func (m *ServiceStatus) Unmarshal(dAtA []byte) error { } return nil } +func (m *SessionAffinityConfig) 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: SessionAffinityConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SessionAffinityConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientIP", 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.ClientIP == nil { + m.ClientIP = &ClientIPConfig{} + } + if err := m.ClientIP.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 *StorageOSPersistentVolumeSource) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -45568,734 +45871,738 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 11649 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x69, 0x90, 0x24, 0xc7, - 0x75, 0x18, 0xcc, 0xea, 0x9e, 0xab, 0xdf, 0xdc, 0xb9, 0x07, 0x7a, 0x07, 0xc0, 0xf6, 0xa2, 0x40, - 0x02, 0x8b, 0x6b, 0x86, 0x58, 0x00, 0x04, 0x44, 0x80, 0x90, 0x66, 0xa6, 0x67, 0x76, 0x07, 0x7b, - 0x35, 0xb2, 0x67, 0x17, 0x02, 0x08, 0x41, 0xac, 0xed, 0xca, 0x99, 0x29, 0x4c, 0x4d, 0x55, 0xa3, - 0xaa, 0x7a, 0x76, 0x07, 0x21, 0x45, 0x7c, 0x1f, 0x4d, 0xd1, 0x07, 0xf5, 0x43, 0xe1, 0x50, 0xd8, - 0xb2, 0xc8, 0x90, 0x23, 0x7c, 0x84, 0x44, 0xcb, 0x76, 0x48, 0xa6, 0xac, 0x83, 0x94, 0xc3, 0xb2, - 0x7c, 0x04, 0xf9, 0x47, 0x96, 0xf4, 0x87, 0x8c, 0x70, 0x78, 0x24, 0x0e, 0x1d, 0x76, 0xe8, 0x87, - 0x1d, 0xb6, 0xf5, 0x4b, 0x63, 0xd9, 0x74, 0xe4, 0x59, 0x99, 0xd5, 0x55, 0xdd, 0x3d, 0x8b, 0xdd, - 0x01, 0xc8, 0xf0, 0xbf, 0xee, 0xf7, 0x5e, 0xbe, 0xcc, 0xca, 0xe3, 0xe5, 0xcb, 0x97, 0xef, 0xbd, - 0x84, 0x97, 0xb7, 0x5f, 0x8a, 0xe7, 0xbd, 0x70, 0x61, 0xbb, 0x73, 0x8b, 0x44, 0x01, 0x49, 0x48, - 0xbc, 0xb0, 0x4b, 0x02, 0x37, 0x8c, 0x16, 0x04, 0xc2, 0x69, 0x7b, 0x0b, 0xad, 0x30, 0x22, 0x0b, - 0xbb, 0xcf, 0x2e, 0x6c, 0x92, 0x80, 0x44, 0x4e, 0x42, 0xdc, 0xf9, 0x76, 0x14, 0x26, 0x21, 0x42, - 0x9c, 0x66, 0xde, 0x69, 0x7b, 0xf3, 0x94, 0x66, 0x7e, 0xf7, 0xd9, 0xb9, 0x67, 0x36, 0xbd, 0x64, - 0xab, 0x73, 0x6b, 0xbe, 0x15, 0xee, 0x2c, 0x6c, 0x86, 0x9b, 0xe1, 0x02, 0x23, 0xbd, 0xd5, 0xd9, - 0x60, 0xff, 0xd8, 0x1f, 0xf6, 0x8b, 0xb3, 0x98, 0x7b, 0x3e, 0xad, 0x66, 0xc7, 0x69, 0x6d, 0x79, - 0x01, 0x89, 0xf6, 0x16, 0xda, 0xdb, 0x9b, 0xac, 0xde, 0x88, 0xc4, 0x61, 0x27, 0x6a, 0x91, 0x6c, - 0xc5, 0x3d, 0x4b, 0xc5, 0x0b, 0x3b, 0x24, 0x71, 0x72, 0x9a, 0x3b, 0xb7, 0x50, 0x54, 0x2a, 0xea, - 0x04, 0x89, 0xb7, 0xd3, 0x5d, 0xcd, 0xa7, 0xfa, 0x15, 0x88, 0x5b, 0x5b, 0x64, 0xc7, 0xe9, 0x2a, - 0xf7, 0x5c, 0x51, 0xb9, 0x4e, 0xe2, 0xf9, 0x0b, 0x5e, 0x90, 0xc4, 0x49, 0x94, 0x2d, 0x64, 0x7f, - 0xdb, 0x82, 0x73, 0x8b, 0x6f, 0x34, 0x57, 0x7c, 0x27, 0x4e, 0xbc, 0xd6, 0x92, 0x1f, 0xb6, 0xb6, - 0x9b, 0x49, 0x18, 0x91, 0x9b, 0xa1, 0xdf, 0xd9, 0x21, 0x4d, 0xd6, 0x11, 0xe8, 0x69, 0x18, 0xdb, - 0x65, 0xff, 0xd7, 0xea, 0x55, 0xeb, 0x9c, 0x75, 0xbe, 0xb2, 0x34, 0xf3, 0xcd, 0xfd, 0xda, 0xc7, - 0x0e, 0xf6, 0x6b, 0x63, 0x37, 0x05, 0x1c, 0x2b, 0x0a, 0xf4, 0x18, 0x8c, 0x6c, 0xc4, 0xeb, 0x7b, - 0x6d, 0x52, 0x2d, 0x31, 0xda, 0x29, 0x41, 0x3b, 0xb2, 0xda, 0xa4, 0x50, 0x2c, 0xb0, 0x68, 0x01, - 0x2a, 0x6d, 0x27, 0x4a, 0xbc, 0xc4, 0x0b, 0x83, 0x6a, 0xf9, 0x9c, 0x75, 0x7e, 0x78, 0x69, 0x56, - 0x90, 0x56, 0x1a, 0x12, 0x81, 0x53, 0x1a, 0xda, 0x8c, 0x88, 0x38, 0xee, 0xf5, 0xc0, 0xdf, 0xab, - 0x0e, 0x9d, 0xb3, 0xce, 0x8f, 0xa5, 0xcd, 0xc0, 0x02, 0x8e, 0x15, 0x85, 0xfd, 0x8b, 0x25, 0x18, - 0x5b, 0xdc, 0xd8, 0xf0, 0x02, 0x2f, 0xd9, 0x43, 0x37, 0x61, 0x22, 0x08, 0x5d, 0x22, 0xff, 0xb3, - 0xaf, 0x18, 0xbf, 0x70, 0x6e, 0xbe, 0x7b, 0x2a, 0xcd, 0x5f, 0xd3, 0xe8, 0x96, 0x66, 0x0e, 0xf6, - 0x6b, 0x13, 0x3a, 0x04, 0x1b, 0x7c, 0x10, 0x86, 0xf1, 0x76, 0xe8, 0x2a, 0xb6, 0x25, 0xc6, 0xb6, - 0x96, 0xc7, 0xb6, 0x91, 0x92, 0x2d, 0x4d, 0x1f, 0xec, 0xd7, 0xc6, 0x35, 0x00, 0xd6, 0x99, 0xa0, - 0x5b, 0x30, 0x4d, 0xff, 0x06, 0x89, 0xa7, 0xf8, 0x96, 0x19, 0xdf, 0x47, 0x8b, 0xf8, 0x6a, 0xa4, - 0x4b, 0x27, 0x0e, 0xf6, 0x6b, 0xd3, 0x19, 0x20, 0xce, 0x32, 0xb4, 0xdf, 0x87, 0xa9, 0xc5, 0x24, - 0x71, 0x5a, 0x5b, 0xc4, 0xe5, 0x23, 0x88, 0x9e, 0x87, 0xa1, 0xc0, 0xd9, 0x21, 0x62, 0x7c, 0xcf, - 0x89, 0x8e, 0x1d, 0xba, 0xe6, 0xec, 0x90, 0xc3, 0xfd, 0xda, 0xcc, 0x8d, 0xc0, 0x7b, 0xaf, 0x23, - 0x66, 0x05, 0x85, 0x61, 0x46, 0x8d, 0x2e, 0x00, 0xb8, 0x64, 0xd7, 0x6b, 0x91, 0x86, 0x93, 0x6c, - 0x89, 0xf1, 0x46, 0xa2, 0x2c, 0xd4, 0x15, 0x06, 0x6b, 0x54, 0xf6, 0x1d, 0xa8, 0x2c, 0xee, 0x86, - 0x9e, 0xdb, 0x08, 0xdd, 0x18, 0x6d, 0xc3, 0x74, 0x3b, 0x22, 0x1b, 0x24, 0x52, 0xa0, 0xaa, 0x75, - 0xae, 0x7c, 0x7e, 0xfc, 0xc2, 0xf9, 0xdc, 0x8f, 0x35, 0x49, 0x57, 0x82, 0x24, 0xda, 0x5b, 0x7a, - 0x40, 0xd4, 0x37, 0x9d, 0xc1, 0xe2, 0x2c, 0x67, 0xfb, 0xdf, 0x94, 0xe0, 0xd4, 0xe2, 0xfb, 0x9d, - 0x88, 0xd4, 0xbd, 0x78, 0x3b, 0x3b, 0xc3, 0x5d, 0x2f, 0xde, 0xbe, 0x96, 0xf6, 0x80, 0x9a, 0x5a, - 0x75, 0x01, 0xc7, 0x8a, 0x02, 0x3d, 0x03, 0xa3, 0xf4, 0xf7, 0x0d, 0xbc, 0x26, 0x3e, 0xf9, 0x84, - 0x20, 0x1e, 0xaf, 0x3b, 0x89, 0x53, 0xe7, 0x28, 0x2c, 0x69, 0xd0, 0x55, 0x18, 0x6f, 0xb1, 0x05, - 0xb9, 0x79, 0x35, 0x74, 0x09, 0x1b, 0xcc, 0xca, 0xd2, 0x53, 0x94, 0x7c, 0x39, 0x05, 0x1f, 0xee, - 0xd7, 0xaa, 0xbc, 0x6d, 0x82, 0x85, 0x86, 0xc3, 0x7a, 0x79, 0x64, 0xab, 0xf5, 0x35, 0xc4, 0x38, - 0x41, 0xce, 0xda, 0x3a, 0xaf, 0x2d, 0x95, 0x61, 0xb6, 0x54, 0x26, 0xf2, 0x97, 0x09, 0x7a, 0x16, - 0x86, 0xb6, 0xbd, 0xc0, 0xad, 0x8e, 0x30, 0x5e, 0x0f, 0xd3, 0x31, 0xbf, 0xec, 0x05, 0xee, 0xe1, - 0x7e, 0x6d, 0xd6, 0x68, 0x0e, 0x05, 0x62, 0x46, 0x6a, 0xff, 0xb9, 0x05, 0x35, 0x86, 0x5b, 0xf5, - 0x7c, 0xd2, 0x20, 0x51, 0xec, 0xc5, 0x09, 0x09, 0x12, 0xa3, 0x43, 0x2f, 0x00, 0xc4, 0xa4, 0x15, - 0x91, 0x44, 0xeb, 0x52, 0x35, 0x31, 0x9a, 0x0a, 0x83, 0x35, 0x2a, 0x2a, 0x10, 0xe2, 0x2d, 0x27, - 0x62, 0xf3, 0x4b, 0x74, 0xac, 0x12, 0x08, 0x4d, 0x89, 0xc0, 0x29, 0x8d, 0x21, 0x10, 0xca, 0xfd, - 0x04, 0x02, 0xfa, 0x0c, 0x4c, 0xa7, 0x95, 0xc5, 0x6d, 0xa7, 0x25, 0x3b, 0x90, 0x2d, 0x99, 0xa6, - 0x89, 0xc2, 0x59, 0x5a, 0xfb, 0x1f, 0x59, 0x62, 0xf2, 0xd0, 0xaf, 0xfe, 0x88, 0x7f, 0xab, 0xfd, - 0xdb, 0x16, 0x8c, 0x2e, 0x79, 0x81, 0xeb, 0x05, 0x9b, 0xe8, 0x73, 0x30, 0x46, 0xf7, 0x26, 0xd7, - 0x49, 0x1c, 0x21, 0xf7, 0x3e, 0xa9, 0xad, 0x2d, 0xb5, 0x55, 0xcc, 0xb7, 0xb7, 0x37, 0x29, 0x20, - 0x9e, 0xa7, 0xd4, 0x74, 0xb5, 0x5d, 0xbf, 0xf5, 0x2e, 0x69, 0x25, 0x57, 0x49, 0xe2, 0xa4, 0x9f, - 0x93, 0xc2, 0xb0, 0xe2, 0x8a, 0x2e, 0xc3, 0x48, 0xe2, 0x44, 0x9b, 0x24, 0x11, 0x02, 0x30, 0x57, - 0x50, 0xf1, 0x92, 0x98, 0xae, 0x48, 0x12, 0xb4, 0x48, 0xba, 0x2d, 0xac, 0xb3, 0xa2, 0x58, 0xb0, - 0xb0, 0x5b, 0x30, 0xb1, 0xec, 0xb4, 0x9d, 0x5b, 0x9e, 0xef, 0x25, 0x1e, 0x89, 0xd1, 0xe3, 0x50, - 0x76, 0x5c, 0x97, 0x49, 0x85, 0xca, 0xd2, 0xa9, 0x83, 0xfd, 0x5a, 0x79, 0xd1, 0xa5, 0xd3, 0x13, - 0x14, 0xd5, 0x1e, 0xa6, 0x14, 0xe8, 0x49, 0x18, 0x72, 0xa3, 0xb0, 0x5d, 0x2d, 0x31, 0xca, 0xd3, - 0x74, 0x26, 0xd7, 0xa3, 0xb0, 0x9d, 0x21, 0x65, 0x34, 0xf6, 0xef, 0x95, 0xe0, 0xa1, 0x65, 0xd2, - 0xde, 0x5a, 0x6d, 0x16, 0xcc, 0xdf, 0xf3, 0x30, 0xb6, 0x13, 0x06, 0x5e, 0x12, 0x46, 0xb1, 0xa8, - 0x9a, 0x2d, 0xa0, 0xab, 0x02, 0x86, 0x15, 0x16, 0x9d, 0x83, 0xa1, 0x76, 0x2a, 0xfc, 0x26, 0xa4, - 0xe0, 0x64, 0x62, 0x8f, 0x61, 0x28, 0x45, 0x27, 0x26, 0x91, 0x58, 0xf8, 0x8a, 0xe2, 0x46, 0x4c, - 0x22, 0xcc, 0x30, 0xe9, 0x0c, 0xa2, 0x73, 0x4b, 0xcc, 0xca, 0xcc, 0x0c, 0xa2, 0x18, 0xac, 0x51, - 0xa1, 0x06, 0x54, 0xf8, 0x3f, 0x4c, 0x36, 0xd8, 0x1a, 0x2f, 0xe8, 0xf7, 0xa6, 0x24, 0x12, 0xfd, - 0x3e, 0xc9, 0xa6, 0x98, 0x04, 0xe2, 0x94, 0x89, 0x31, 0xc5, 0x46, 0xfa, 0x4e, 0xb1, 0x6f, 0x94, - 0x00, 0xf1, 0x2e, 0xfc, 0x01, 0xeb, 0xb8, 0x1b, 0xdd, 0x1d, 0x97, 0xbb, 0xd9, 0x5c, 0x09, 0x5b, - 0x8e, 0x9f, 0x9d, 0xb5, 0xf7, 0xaa, 0xf7, 0x7e, 0xc1, 0x02, 0xb4, 0xec, 0x05, 0x2e, 0x89, 0x8e, - 0x41, 0xd3, 0x3a, 0x9a, 0xec, 0xf8, 0x0f, 0xb4, 0x69, 0xe1, 0x4e, 0x3b, 0x0c, 0x48, 0x90, 0x2c, - 0x87, 0x81, 0xcb, 0xb5, 0xaf, 0x4f, 0xc3, 0x50, 0x42, 0xab, 0xe2, 0xcd, 0x7a, 0x4c, 0x0e, 0x06, - 0xad, 0xe0, 0x70, 0xbf, 0x76, 0xba, 0xbb, 0x04, 0x6b, 0x02, 0x2b, 0x83, 0x7e, 0x04, 0x46, 0xe2, - 0xc4, 0x49, 0x3a, 0xb1, 0x68, 0xe8, 0x23, 0xb2, 0xa1, 0x4d, 0x06, 0x3d, 0xdc, 0xaf, 0x4d, 0xab, - 0x62, 0x1c, 0x84, 0x45, 0x01, 0xf4, 0x04, 0x8c, 0xee, 0x90, 0x38, 0x76, 0x36, 0xe5, 0xc6, 0x39, - 0x2d, 0xca, 0x8e, 0x5e, 0xe5, 0x60, 0x2c, 0xf1, 0xe8, 0x51, 0x18, 0x26, 0x51, 0x14, 0x46, 0x62, - 0x1e, 0x4c, 0x0a, 0xc2, 0xe1, 0x15, 0x0a, 0xc4, 0x1c, 0x67, 0xff, 0x7b, 0x0b, 0xa6, 0x55, 0x5b, - 0x79, 0x5d, 0xc7, 0x20, 0x21, 0xdf, 0x02, 0x68, 0xc9, 0x0f, 0x8c, 0x99, 0x84, 0x1a, 0xbf, 0xf0, - 0x58, 0xde, 0xa4, 0xeb, 0xee, 0xc6, 0x94, 0xb3, 0x02, 0xc5, 0x58, 0xe3, 0x66, 0xff, 0x0b, 0x0b, - 0x4e, 0x64, 0xbe, 0xe8, 0x8a, 0x17, 0x27, 0xe8, 0xed, 0xae, 0xaf, 0x9a, 0x1f, 0xec, 0xab, 0x68, - 0x69, 0xf6, 0x4d, 0x6a, 0x96, 0x48, 0x88, 0xf6, 0x45, 0x97, 0x60, 0xd8, 0x4b, 0xc8, 0x8e, 0xfc, - 0x98, 0x47, 0x7b, 0x7e, 0x0c, 0x6f, 0x55, 0x3a, 0x22, 0x6b, 0xb4, 0x24, 0xe6, 0x0c, 0xec, 0xff, - 0x61, 0x41, 0x65, 0x39, 0x0c, 0x36, 0xbc, 0xcd, 0xab, 0x4e, 0xfb, 0x18, 0xc6, 0x62, 0x0d, 0x86, - 0x18, 0x77, 0xde, 0xf0, 0xc7, 0xf3, 0x1b, 0x2e, 0x9a, 0x33, 0x4f, 0xd5, 0x1f, 0xae, 0x66, 0x2a, - 0xf1, 0x43, 0x41, 0x98, 0xb1, 0x98, 0x7b, 0x11, 0x2a, 0x8a, 0x00, 0xcd, 0x40, 0x79, 0x9b, 0xf0, - 0xa3, 0x45, 0x05, 0xd3, 0x9f, 0xe8, 0x24, 0x0c, 0xef, 0x3a, 0x7e, 0x47, 0x2c, 0x4f, 0xcc, 0xff, - 0x7c, 0xba, 0xf4, 0x92, 0x65, 0x7f, 0x9d, 0xad, 0x31, 0x51, 0xc9, 0x4a, 0xb0, 0x2b, 0x96, 0xff, - 0xfb, 0x70, 0xd2, 0xcf, 0x91, 0x3a, 0xa2, 0x23, 0x06, 0x97, 0x52, 0x0f, 0x89, 0xb6, 0x9e, 0xcc, - 0xc3, 0xe2, 0xdc, 0x3a, 0xa8, 0xe0, 0x0e, 0xdb, 0x74, 0x46, 0x39, 0x3e, 0x6b, 0xaf, 0x50, 0x19, - 0xaf, 0x0b, 0x18, 0x56, 0x58, 0x2a, 0x20, 0x4e, 0xaa, 0xc6, 0x5f, 0x26, 0x7b, 0x4d, 0xe2, 0x93, - 0x56, 0x12, 0x46, 0x1f, 0x6a, 0xf3, 0x1f, 0xe6, 0xbd, 0xcf, 0xe5, 0xcb, 0xb8, 0x60, 0x50, 0xbe, - 0x4c, 0xf6, 0xf8, 0x50, 0xe8, 0x5f, 0x57, 0xee, 0xf9, 0x75, 0xbf, 0x6e, 0xc1, 0xa4, 0xfa, 0xba, - 0x63, 0x58, 0x48, 0x4b, 0xe6, 0x42, 0x7a, 0xb8, 0xe7, 0x7c, 0x2c, 0x58, 0x42, 0xdf, 0x67, 0x22, - 0x40, 0xd0, 0x34, 0xa2, 0x90, 0x76, 0x0d, 0x95, 0xd9, 0x1f, 0xe6, 0x80, 0x0c, 0xf2, 0x5d, 0x97, - 0xc9, 0xde, 0x7a, 0x48, 0x37, 0xfc, 0xfc, 0xef, 0x32, 0x46, 0x6d, 0xa8, 0xe7, 0xa8, 0xfd, 0x46, - 0x09, 0x4e, 0xa9, 0x1e, 0x30, 0xb6, 0xd4, 0x1f, 0xf4, 0x3e, 0x78, 0x16, 0xc6, 0x5d, 0xb2, 0xe1, - 0x74, 0xfc, 0x44, 0x9d, 0x1e, 0x87, 0xb9, 0x05, 0xa1, 0x9e, 0x82, 0xb1, 0x4e, 0x73, 0x84, 0x6e, - 0xfb, 0xb7, 0xc0, 0x64, 0x6f, 0xe2, 0xd0, 0x19, 0x4c, 0xf5, 0x2d, 0xcd, 0x06, 0x30, 0xa1, 0xdb, - 0x00, 0xc4, 0x79, 0xff, 0x51, 0x18, 0xf6, 0x76, 0xe8, 0x5e, 0x5c, 0x32, 0xb7, 0xd8, 0x35, 0x0a, - 0xc4, 0x1c, 0x87, 0x3e, 0x01, 0xa3, 0xad, 0x70, 0x67, 0xc7, 0x09, 0xdc, 0x6a, 0x99, 0x69, 0x80, - 0xe3, 0x74, 0xbb, 0x5e, 0xe6, 0x20, 0x2c, 0x71, 0xe8, 0x21, 0x18, 0x72, 0xa2, 0xcd, 0xb8, 0x3a, - 0xc4, 0x68, 0xc6, 0x68, 0x4d, 0x8b, 0xd1, 0x66, 0x8c, 0x19, 0x94, 0x6a, 0x76, 0xb7, 0xc3, 0x68, - 0xdb, 0x0b, 0x36, 0xeb, 0x5e, 0xc4, 0xd4, 0x34, 0x4d, 0xb3, 0x7b, 0x43, 0x61, 0xb0, 0x46, 0x85, - 0x56, 0x61, 0xb8, 0x1d, 0x46, 0x49, 0x5c, 0x1d, 0x61, 0xdd, 0xfd, 0x48, 0xc1, 0x52, 0xe2, 0x5f, - 0xdb, 0x08, 0xa3, 0x24, 0xfd, 0x00, 0xfa, 0x2f, 0xc6, 0xbc, 0x38, 0xfa, 0x11, 0x28, 0x93, 0x60, - 0xb7, 0x3a, 0xca, 0xb8, 0xcc, 0xe5, 0x71, 0x59, 0x09, 0x76, 0x6f, 0x3a, 0x51, 0x2a, 0x67, 0x56, - 0x82, 0x5d, 0x4c, 0xcb, 0xa0, 0x37, 0xa1, 0x22, 0xed, 0x87, 0x71, 0x75, 0xac, 0x78, 0x8a, 0x61, - 0x41, 0x84, 0xc9, 0x7b, 0x1d, 0x2f, 0x22, 0x3b, 0x24, 0x48, 0xe2, 0xf4, 0x04, 0x28, 0xb1, 0x31, - 0x4e, 0xb9, 0xa1, 0x37, 0x61, 0x82, 0x6b, 0x7e, 0x57, 0xc3, 0x4e, 0x90, 0xc4, 0xd5, 0x0a, 0x6b, - 0x5e, 0xae, 0xb1, 0xe9, 0x66, 0x4a, 0xb7, 0x74, 0x52, 0x30, 0x9d, 0xd0, 0x80, 0x31, 0x36, 0x58, - 0x21, 0x0c, 0x93, 0xbe, 0xb7, 0x4b, 0x02, 0x12, 0xc7, 0x8d, 0x28, 0xbc, 0x45, 0xaa, 0xc0, 0x5a, - 0x7e, 0x26, 0xdf, 0x06, 0x13, 0xde, 0x22, 0x4b, 0xb3, 0x07, 0xfb, 0xb5, 0xc9, 0x2b, 0x7a, 0x19, - 0x6c, 0xb2, 0x40, 0x37, 0x60, 0x8a, 0xaa, 0x94, 0x5e, 0xca, 0x74, 0xbc, 0x1f, 0x53, 0x74, 0xb0, - 0x5f, 0x9b, 0xc2, 0x46, 0x21, 0x9c, 0x61, 0x82, 0x5e, 0x83, 0x8a, 0xef, 0x6d, 0x90, 0xd6, 0x5e, - 0xcb, 0x27, 0xd5, 0x09, 0xc6, 0x31, 0x77, 0x59, 0x5d, 0x91, 0x44, 0x5c, 0x65, 0x57, 0x7f, 0x71, - 0x5a, 0x1c, 0xdd, 0x84, 0xd3, 0x09, 0x89, 0x76, 0xbc, 0xc0, 0xa1, 0xcb, 0x41, 0xe8, 0x93, 0xcc, - 0x92, 0x35, 0xc9, 0xe6, 0xdb, 0x59, 0xd1, 0x75, 0xa7, 0xd7, 0x73, 0xa9, 0x70, 0x41, 0x69, 0x74, - 0x1d, 0xa6, 0xd9, 0x4a, 0x68, 0x74, 0x7c, 0xbf, 0x11, 0xfa, 0x5e, 0x6b, 0xaf, 0x3a, 0xc5, 0x18, - 0x7e, 0x42, 0x9a, 0xaa, 0xd6, 0x4c, 0x34, 0x3d, 0xa3, 0xa6, 0xff, 0x70, 0xb6, 0x34, 0xba, 0xc5, - 0x4c, 0x17, 0x9d, 0xc8, 0x4b, 0xf6, 0xe8, 0xfc, 0x25, 0x77, 0x92, 0xea, 0x74, 0xcf, 0x13, 0x9f, - 0x4e, 0xaa, 0xec, 0x1b, 0x3a, 0x10, 0x67, 0x19, 0xd2, 0xa5, 0x1d, 0x27, 0xae, 0x17, 0x54, 0x67, - 0x98, 0xc4, 0x50, 0x2b, 0xa3, 0x49, 0x81, 0x98, 0xe3, 0x98, 0xd9, 0x82, 0xfe, 0xb8, 0x4e, 0x25, - 0xe8, 0x2c, 0x23, 0x4c, 0xcd, 0x16, 0x12, 0x81, 0x53, 0x1a, 0xba, 0x2d, 0x27, 0xc9, 0x5e, 0x15, - 0x31, 0x52, 0xb5, 0x5c, 0xd6, 0xd7, 0xdf, 0xc4, 0x14, 0x8e, 0xae, 0xc0, 0x28, 0x09, 0x76, 0x57, - 0xa3, 0x70, 0xa7, 0x7a, 0xa2, 0x78, 0xcd, 0xae, 0x70, 0x12, 0x2e, 0xd0, 0xd3, 0x03, 0x80, 0x00, - 0x63, 0xc9, 0x02, 0xdd, 0x81, 0x6a, 0xce, 0x88, 0xf0, 0x01, 0x38, 0xc9, 0x06, 0xe0, 0x15, 0x51, - 0xb6, 0xba, 0x5e, 0x40, 0x77, 0xd8, 0x03, 0x87, 0x0b, 0xb9, 0xdb, 0xb7, 0x60, 0x4a, 0x09, 0x16, - 0x36, 0xb6, 0xa8, 0x06, 0xc3, 0x54, 0x62, 0xca, 0x43, 0x70, 0x85, 0x76, 0x25, 0x33, 0x26, 0x61, - 0x0e, 0x67, 0x5d, 0xe9, 0xbd, 0x4f, 0x96, 0xf6, 0x12, 0xc2, 0x8f, 0x45, 0x65, 0xad, 0x2b, 0x25, - 0x02, 0xa7, 0x34, 0xf6, 0xff, 0xe1, 0x8a, 0x49, 0x2a, 0xbd, 0x06, 0x90, 0xd7, 0x4f, 0xc3, 0xd8, - 0x56, 0x18, 0x27, 0x94, 0x9a, 0xd5, 0x31, 0x9c, 0xaa, 0x22, 0x97, 0x04, 0x1c, 0x2b, 0x0a, 0xf4, - 0x32, 0x4c, 0xb6, 0xf4, 0x0a, 0xc4, 0x66, 0x73, 0x4a, 0x14, 0x31, 0x6b, 0xc7, 0x26, 0x2d, 0x7a, - 0x09, 0xc6, 0xd8, 0x95, 0x42, 0x2b, 0xf4, 0xc5, 0x01, 0x4c, 0xee, 0x98, 0x63, 0x0d, 0x01, 0x3f, - 0xd4, 0x7e, 0x63, 0x45, 0x4d, 0x8f, 0xb1, 0xb4, 0x09, 0x6b, 0x0d, 0x21, 0xe6, 0xd5, 0x31, 0xf6, - 0x12, 0x83, 0x62, 0x81, 0xb5, 0xff, 0x66, 0x49, 0xeb, 0x65, 0x7a, 0xa4, 0x20, 0xa8, 0x01, 0xa3, - 0xb7, 0x1d, 0x2f, 0xf1, 0x82, 0x4d, 0xb1, 0x9f, 0x3f, 0xd1, 0x53, 0xe6, 0xb3, 0x42, 0x6f, 0xf0, - 0x02, 0x7c, 0x57, 0x12, 0x7f, 0xb0, 0x64, 0x43, 0x39, 0x46, 0x9d, 0x20, 0xa0, 0x1c, 0x4b, 0x83, - 0x72, 0xc4, 0xbc, 0x00, 0xe7, 0x28, 0xfe, 0x60, 0xc9, 0x06, 0xbd, 0x0d, 0x20, 0xe7, 0x0d, 0x71, - 0x85, 0x29, 0xff, 0xe9, 0xfe, 0x4c, 0xd7, 0x55, 0x99, 0xa5, 0x29, 0xba, 0xe7, 0xa5, 0xff, 0xb1, - 0xc6, 0xcf, 0x4e, 0x98, 0xde, 0xd3, 0xdd, 0x18, 0xf4, 0x59, 0xba, 0x54, 0x9d, 0x28, 0x21, 0xee, - 0x62, 0x22, 0x3a, 0xe7, 0xc9, 0xc1, 0xd4, 0xd6, 0x75, 0x6f, 0x87, 0xe8, 0xcb, 0x5a, 0x30, 0xc1, - 0x29, 0x3f, 0xfb, 0xb7, 0xca, 0x50, 0x2d, 0x6a, 0x2e, 0x9d, 0x74, 0xe4, 0x8e, 0x97, 0x2c, 0x53, - 0x75, 0xc5, 0x32, 0x27, 0xdd, 0x8a, 0x80, 0x63, 0x45, 0x41, 0x47, 0x3f, 0xf6, 0x36, 0xe5, 0xa9, - 0x63, 0x38, 0x1d, 0xfd, 0x26, 0x83, 0x62, 0x81, 0xa5, 0x74, 0x11, 0x71, 0x62, 0x71, 0x57, 0xa4, - 0xcd, 0x12, 0xcc, 0xa0, 0x58, 0x60, 0x75, 0x83, 0xc1, 0x50, 0x1f, 0x83, 0x81, 0xd1, 0x45, 0xc3, - 0xf7, 0xb6, 0x8b, 0xd0, 0x3b, 0x00, 0x1b, 0x5e, 0xe0, 0xc5, 0x5b, 0x8c, 0xfb, 0xc8, 0x91, 0xb9, - 0x2b, 0x65, 0x67, 0x55, 0x71, 0xc1, 0x1a, 0x47, 0xf4, 0x02, 0x8c, 0xab, 0x05, 0xb8, 0x56, 0xaf, - 0x8e, 0x9a, 0x17, 0x11, 0xa9, 0x34, 0xaa, 0x63, 0x9d, 0xce, 0x7e, 0x37, 0x3b, 0x5f, 0xc4, 0x0a, - 0xd0, 0xfa, 0xd7, 0x1a, 0xb4, 0x7f, 0x4b, 0xbd, 0xfb, 0xd7, 0xfe, 0xfd, 0x32, 0x4c, 0x1b, 0x95, - 0x75, 0xe2, 0x01, 0x64, 0xd6, 0x45, 0xba, 0x11, 0x39, 0x09, 0x11, 0xeb, 0xcf, 0xee, 0xbf, 0x54, - 0xf4, 0xcd, 0x8a, 0xae, 0x00, 0x5e, 0x1e, 0xbd, 0x03, 0x15, 0xdf, 0x89, 0x99, 0xf1, 0x81, 0x88, - 0x75, 0x37, 0x08, 0xb3, 0x54, 0xd1, 0x77, 0xe2, 0x44, 0xdb, 0x0b, 0x38, 0xef, 0x94, 0x25, 0xdd, - 0x31, 0xa9, 0x72, 0x22, 0x2f, 0x23, 0x55, 0x23, 0xa8, 0x06, 0xb3, 0x87, 0x39, 0x0e, 0xbd, 0x04, - 0x13, 0x11, 0x61, 0xb3, 0x62, 0x99, 0xea, 0x5a, 0x6c, 0x9a, 0x0d, 0xa7, 0x4a, 0x19, 0xd6, 0x70, - 0xd8, 0xa0, 0x4c, 0x75, 0xed, 0x91, 0x1e, 0xba, 0xf6, 0x13, 0x30, 0xca, 0x7e, 0xa8, 0x19, 0xa0, - 0x46, 0x63, 0x8d, 0x83, 0xb1, 0xc4, 0x67, 0x27, 0xcc, 0xd8, 0x80, 0x13, 0xe6, 0x49, 0x98, 0xaa, - 0x3b, 0x64, 0x27, 0x0c, 0x56, 0x02, 0xb7, 0x1d, 0x7a, 0x41, 0x82, 0xaa, 0x30, 0xc4, 0x76, 0x07, - 0xbe, 0xb6, 0x87, 0x28, 0x07, 0x3c, 0x44, 0x35, 0x67, 0xfb, 0x8f, 0x4a, 0x30, 0x59, 0x27, 0x3e, - 0x49, 0x08, 0x3f, 0x6b, 0xc4, 0x68, 0x15, 0xd0, 0x66, 0xe4, 0xb4, 0x48, 0x83, 0x44, 0x5e, 0xe8, - 0x36, 0x49, 0x2b, 0x0c, 0xd8, 0x15, 0x1f, 0xdd, 0xee, 0x4e, 0x1f, 0xec, 0xd7, 0xd0, 0xc5, 0x2e, - 0x2c, 0xce, 0x29, 0x81, 0xde, 0x82, 0xc9, 0x76, 0x44, 0x0c, 0x1b, 0x9a, 0x55, 0xa4, 0x2e, 0x34, - 0x74, 0x42, 0xae, 0xa9, 0x1a, 0x20, 0x6c, 0xb2, 0x42, 0x3f, 0x06, 0x33, 0x61, 0xd4, 0xde, 0x72, - 0x82, 0x3a, 0x69, 0x93, 0xc0, 0xa5, 0xaa, 0xb8, 0xb0, 0x11, 0x9c, 0x3c, 0xd8, 0xaf, 0xcd, 0x5c, - 0xcf, 0xe0, 0x70, 0x17, 0x35, 0x7a, 0x0b, 0x66, 0xdb, 0x51, 0xd8, 0x76, 0x36, 0xd9, 0x44, 0x11, - 0x1a, 0x07, 0x97, 0x3e, 0x4f, 0x1f, 0xec, 0xd7, 0x66, 0x1b, 0x59, 0xe4, 0xe1, 0x7e, 0xed, 0x04, - 0xeb, 0x28, 0x0a, 0x49, 0x91, 0xb8, 0x9b, 0x8d, 0xbd, 0x09, 0xa7, 0xea, 0xe1, 0xed, 0xe0, 0xb6, - 0x13, 0xb9, 0x8b, 0x8d, 0x35, 0xed, 0x70, 0x7f, 0x4d, 0x1e, 0x2e, 0xf9, 0x85, 0x69, 0xee, 0x3e, - 0xa5, 0x95, 0xe4, 0xea, 0xff, 0xaa, 0xe7, 0x93, 0x02, 0x23, 0xc2, 0xdf, 0x2e, 0x19, 0x35, 0xa5, - 0xf4, 0xca, 0x52, 0x6f, 0x15, 0x5a, 0xea, 0x5f, 0x87, 0xb1, 0x0d, 0x8f, 0xf8, 0x2e, 0x26, 0x1b, - 0x62, 0x64, 0x1e, 0x2f, 0xbe, 0x03, 0x5a, 0xa5, 0x94, 0xd2, 0x68, 0xc4, 0x8f, 0xa6, 0xab, 0xa2, - 0x30, 0x56, 0x6c, 0xd0, 0x36, 0xcc, 0xc8, 0xb3, 0x8f, 0xc4, 0x8a, 0x45, 0xfc, 0x44, 0xaf, 0x03, - 0x95, 0xc9, 0x9c, 0x0d, 0x20, 0xce, 0xb0, 0xc1, 0x5d, 0x8c, 0xe9, 0x59, 0x74, 0x87, 0x6e, 0x57, - 0x43, 0x6c, 0x4a, 0xb3, 0xb3, 0x28, 0x3b, 0x56, 0x33, 0xa8, 0xfd, 0x15, 0x0b, 0x1e, 0xe8, 0xea, - 0x19, 0x61, 0x5e, 0xb8, 0xc7, 0xa3, 0x90, 0x3d, 0xee, 0x97, 0xfa, 0x1f, 0xf7, 0xed, 0x5f, 0xb3, - 0xe0, 0xe4, 0xca, 0x4e, 0x3b, 0xd9, 0xab, 0x7b, 0xe6, 0x6d, 0xc2, 0x8b, 0x30, 0xb2, 0x43, 0x5c, - 0xaf, 0xb3, 0x23, 0x46, 0xae, 0x26, 0x45, 0xfa, 0x55, 0x06, 0x3d, 0xdc, 0xaf, 0x4d, 0x36, 0x93, - 0x30, 0x72, 0x36, 0x09, 0x07, 0x60, 0x41, 0x8e, 0x7e, 0x92, 0xeb, 0xa6, 0x57, 0xbc, 0x1d, 0x4f, - 0xde, 0xe9, 0xf5, 0x34, 0x79, 0xcd, 0xcb, 0x0e, 0x9d, 0x7f, 0xbd, 0xe3, 0x04, 0x89, 0x97, 0xec, - 0x99, 0xba, 0x2c, 0x63, 0x84, 0x53, 0x9e, 0xf6, 0xb7, 0x2d, 0x98, 0x96, 0xf2, 0x64, 0xd1, 0x75, - 0x23, 0x12, 0xc7, 0x68, 0x0e, 0x4a, 0x5e, 0x5b, 0xb4, 0x14, 0x44, 0xe9, 0xd2, 0x5a, 0x03, 0x97, - 0xbc, 0x36, 0x6a, 0x40, 0x85, 0x5f, 0x0f, 0xa6, 0x13, 0x6c, 0xa0, 0x4b, 0x46, 0x76, 0xf6, 0x5b, - 0x97, 0x25, 0x71, 0xca, 0x44, 0x6a, 0xc6, 0x6c, 0x2f, 0x2a, 0x9b, 0x37, 0x2d, 0x97, 0x04, 0x1c, - 0x2b, 0x0a, 0x74, 0x1e, 0xc6, 0x82, 0xd0, 0xe5, 0xb7, 0xb5, 0x7c, 0x5d, 0xb3, 0x69, 0x7b, 0x4d, - 0xc0, 0xb0, 0xc2, 0xda, 0x3f, 0x6b, 0xc1, 0x84, 0xfc, 0xb2, 0x01, 0x95, 0x74, 0xba, 0xbc, 0x52, - 0x05, 0x3d, 0x5d, 0x5e, 0x54, 0xc9, 0x66, 0x18, 0x43, 0xb7, 0x2e, 0x1f, 0x45, 0xb7, 0xb6, 0xbf, - 0x5c, 0x82, 0x29, 0xd9, 0x9c, 0x66, 0xe7, 0x56, 0x4c, 0x12, 0xb4, 0x0e, 0x15, 0x87, 0x77, 0x39, - 0x91, 0xb3, 0xf6, 0xd1, 0xfc, 0x53, 0x97, 0x31, 0x3e, 0xe9, 0x88, 0x2e, 0xca, 0xd2, 0x38, 0x65, - 0x84, 0x7c, 0x98, 0x0d, 0xc2, 0x84, 0x6d, 0x7d, 0x0a, 0xdf, 0xeb, 0x6e, 0x20, 0xcb, 0xfd, 0x8c, - 0xe0, 0x3e, 0x7b, 0x2d, 0xcb, 0x05, 0x77, 0x33, 0x46, 0x2b, 0xd2, 0xd2, 0x53, 0x66, 0x35, 0x9c, - 0xeb, 0x55, 0x43, 0xb1, 0xa1, 0xc7, 0xfe, 0x5d, 0x0b, 0x2a, 0x92, 0xec, 0x38, 0xae, 0x81, 0xae, - 0xc2, 0x68, 0xcc, 0x06, 0x41, 0x76, 0x8d, 0xdd, 0xab, 0xe1, 0x7c, 0xbc, 0xd2, 0x1d, 0x9d, 0xff, - 0x8f, 0xb1, 0xe4, 0xc1, 0x4c, 0xd5, 0xaa, 0xf9, 0x1f, 0x11, 0x53, 0xb5, 0x6a, 0x4f, 0xc1, 0x2e, - 0xf3, 0x5f, 0x58, 0x9b, 0xb5, 0xf3, 0x3c, 0x55, 0x3c, 0xdb, 0x11, 0xd9, 0xf0, 0xee, 0x64, 0x15, - 0xcf, 0x06, 0x83, 0x62, 0x81, 0x45, 0x6f, 0xc3, 0x44, 0x4b, 0x5a, 0x78, 0x53, 0x31, 0xf0, 0x58, - 0x4f, 0x7b, 0xb9, 0xba, 0x5a, 0xe1, 0x9e, 0x5c, 0xcb, 0x5a, 0x79, 0x6c, 0x70, 0x33, 0xaf, 0xd3, - 0xcb, 0xfd, 0xae, 0xd3, 0x53, 0xbe, 0x85, 0x17, 0xc2, 0xf6, 0x2f, 0x59, 0x30, 0xc2, 0xed, 0x84, - 0x83, 0x19, 0x56, 0xb5, 0xab, 0xa2, 0xb4, 0xef, 0x6e, 0x52, 0xa0, 0xb8, 0x39, 0x42, 0x57, 0xa1, - 0xc2, 0x7e, 0x30, 0x7b, 0x49, 0xb9, 0xd8, 0x85, 0x8d, 0xd7, 0xaa, 0x37, 0xf0, 0xa6, 0x2c, 0x86, - 0x53, 0x0e, 0xf6, 0xcf, 0x97, 0xa9, 0xa8, 0x4a, 0x49, 0x8d, 0x5d, 0xdc, 0xba, 0x7f, 0xbb, 0x78, - 0xe9, 0x7e, 0xed, 0xe2, 0x9b, 0x30, 0xdd, 0xd2, 0xee, 0xa5, 0xd2, 0x91, 0x3c, 0xdf, 0x73, 0x92, - 0x68, 0x57, 0x58, 0xdc, 0x56, 0xb6, 0x6c, 0x32, 0xc1, 0x59, 0xae, 0xe8, 0xb3, 0x30, 0xc1, 0xc7, - 0x59, 0xd4, 0x32, 0xc4, 0x6a, 0xf9, 0x44, 0xf1, 0x7c, 0xd1, 0xab, 0x60, 0x33, 0xb1, 0xa9, 0x15, - 0xc7, 0x06, 0x33, 0xfb, 0x8b, 0xc3, 0x30, 0xbc, 0xb2, 0x4b, 0x82, 0xe4, 0x18, 0x04, 0x52, 0x0b, - 0xa6, 0xbc, 0x60, 0x37, 0xf4, 0x77, 0x89, 0xcb, 0xf1, 0x47, 0xd9, 0x5c, 0x4f, 0x0b, 0xd6, 0x53, - 0x6b, 0x06, 0x0b, 0x9c, 0x61, 0x79, 0x3f, 0x4e, 0xee, 0x17, 0x61, 0x84, 0x8f, 0xbd, 0x38, 0xb6, - 0xe7, 0x5a, 0xc1, 0x59, 0x27, 0x8a, 0x55, 0x90, 0x5a, 0x15, 0xb8, 0xd9, 0x5d, 0x14, 0x47, 0xef, - 0xc2, 0xd4, 0x86, 0x17, 0xc5, 0x09, 0x3d, 0x72, 0xc7, 0x89, 0xb3, 0xd3, 0xbe, 0x8b, 0x93, 0xba, - 0xea, 0x87, 0x55, 0x83, 0x13, 0xce, 0x70, 0x46, 0x9b, 0x30, 0x49, 0x0f, 0x8f, 0x69, 0x55, 0xa3, - 0x47, 0xae, 0x4a, 0x99, 0xe2, 0xae, 0xe8, 0x8c, 0xb0, 0xc9, 0x97, 0x0a, 0x93, 0x16, 0x3b, 0x6c, - 0x8e, 0x31, 0x8d, 0x42, 0x09, 0x13, 0x7e, 0xca, 0xe4, 0x38, 0x2a, 0x93, 0x98, 0x3f, 0x47, 0xc5, - 0x94, 0x49, 0xa9, 0xd7, 0x86, 0xfd, 0x55, 0xba, 0x3b, 0xd2, 0x3e, 0x3c, 0x86, 0xad, 0xe5, 0x55, - 0x73, 0x6b, 0x39, 0x53, 0x38, 0x9e, 0x05, 0xdb, 0xca, 0xe7, 0x60, 0x5c, 0x1b, 0x6e, 0xb4, 0x00, - 0x95, 0x96, 0x74, 0x3e, 0x10, 0x52, 0x57, 0xa9, 0x2f, 0xca, 0x2b, 0x01, 0xa7, 0x34, 0xb4, 0x37, - 0xa8, 0xb2, 0x97, 0x75, 0x46, 0xa2, 0xaa, 0x20, 0x66, 0x18, 0xfb, 0x39, 0x80, 0x95, 0x3b, 0xa4, - 0xb5, 0xc8, 0x0f, 0x5f, 0xda, 0x1d, 0x97, 0x55, 0x7c, 0xc7, 0x65, 0xff, 0xb1, 0x05, 0x53, 0xab, - 0xcb, 0x86, 0x52, 0x3e, 0x0f, 0xc0, 0xb5, 0xd0, 0x37, 0xde, 0xb8, 0x26, 0xad, 0xc3, 0xdc, 0xc0, - 0xa7, 0xa0, 0x58, 0xa3, 0x40, 0x67, 0xa0, 0xec, 0x77, 0x02, 0xa1, 0x1c, 0x8e, 0x1e, 0xec, 0xd7, - 0xca, 0x57, 0x3a, 0x01, 0xa6, 0x30, 0xcd, 0xff, 0xa7, 0x3c, 0xb0, 0xff, 0x4f, 0x5f, 0xc7, 0x69, - 0x54, 0x83, 0xe1, 0xdb, 0xb7, 0x3d, 0x37, 0xae, 0x0e, 0xa7, 0x96, 0xeb, 0x37, 0xde, 0x58, 0xab, - 0xc7, 0x98, 0xc3, 0xed, 0xff, 0xbf, 0x0c, 0x33, 0xab, 0x3e, 0xb9, 0x63, 0x7c, 0xd6, 0x63, 0x30, - 0xe2, 0x46, 0xde, 0x2e, 0x89, 0xb2, 0xbb, 0x78, 0x9d, 0x41, 0xb1, 0xc0, 0x0e, 0xec, 0xb3, 0x74, - 0xa3, 0x7b, 0x3f, 0xbe, 0xd7, 0x5e, 0x5a, 0xfd, 0xbb, 0xe2, 0x6d, 0x18, 0xe5, 0x57, 0xa5, 0xbc, - 0x33, 0xc6, 0x2f, 0x3c, 0x9b, 0xd7, 0x84, 0x6c, 0x5f, 0xcc, 0x0b, 0xe3, 0x07, 0xf7, 0x1b, 0x51, - 0x42, 0x4c, 0x40, 0xb1, 0x64, 0x39, 0xf7, 0x69, 0x98, 0xd0, 0x29, 0x8f, 0xe4, 0x40, 0xf2, 0x57, - 0x2c, 0x38, 0xb1, 0xea, 0x87, 0xad, 0xed, 0x8c, 0x03, 0xd9, 0x0b, 0x30, 0x4e, 0xd7, 0x53, 0x6c, - 0x38, 0xa3, 0x1a, 0xee, 0xc9, 0x02, 0x85, 0x75, 0x3a, 0xad, 0xd8, 0x8d, 0x1b, 0x6b, 0xf5, 0x3c, - 0xaf, 0x66, 0x81, 0xc2, 0x3a, 0x9d, 0xfd, 0x07, 0x16, 0x3c, 0x7c, 0x71, 0x79, 0x25, 0xf5, 0xa1, - 0xec, 0x72, 0xac, 0xa6, 0xca, 0x9d, 0xab, 0x35, 0x25, 0x55, 0xee, 0xea, 0xac, 0x15, 0x02, 0xfb, - 0x51, 0x09, 0x1a, 0xf8, 0x15, 0x0b, 0x4e, 0x5c, 0xf4, 0x12, 0x4c, 0xda, 0x61, 0xd6, 0xc5, 0x37, - 0x22, 0xed, 0x30, 0xf6, 0x92, 0x30, 0xda, 0xcb, 0xba, 0xf8, 0x62, 0x85, 0xc1, 0x1a, 0x15, 0xaf, - 0x79, 0xd7, 0x8b, 0x69, 0x4b, 0x4b, 0xe6, 0x09, 0x13, 0x0b, 0x38, 0x56, 0x14, 0xf4, 0xc3, 0x5c, - 0x2f, 0x62, 0x1a, 0xc2, 0x9e, 0x58, 0xce, 0xea, 0xc3, 0xea, 0x12, 0x81, 0x53, 0x1a, 0xfb, 0x2b, - 0x16, 0x9c, 0xba, 0xe8, 0x77, 0xe2, 0x84, 0x44, 0x1b, 0xb1, 0xd1, 0xd8, 0xe7, 0xa0, 0x42, 0xa4, - 0x16, 0x2e, 0xda, 0xaa, 0xf6, 0x0d, 0xa5, 0x9e, 0x73, 0xff, 0x62, 0x45, 0x37, 0x80, 0x37, 0xe6, - 0xd1, 0xbc, 0x08, 0xbf, 0x56, 0x82, 0xc9, 0x4b, 0xeb, 0xeb, 0x8d, 0x8b, 0x24, 0x11, 0x22, 0xb3, - 0xbf, 0x15, 0x09, 0x6b, 0x07, 0xe1, 0x5e, 0xba, 0x4e, 0x27, 0xf1, 0xfc, 0x79, 0x1e, 0xd0, 0x32, - 0xbf, 0x16, 0x24, 0xd7, 0xa3, 0x66, 0x12, 0x79, 0xc1, 0x66, 0xee, 0xd1, 0x59, 0x0a, 0xf6, 0x72, - 0x91, 0x60, 0x47, 0xcf, 0xc1, 0x08, 0x8b, 0xa8, 0x91, 0x5a, 0xc7, 0x83, 0x4a, 0x55, 0x60, 0xd0, - 0xc3, 0xfd, 0x5a, 0xe5, 0x06, 0x5e, 0xe3, 0x7f, 0xb0, 0x20, 0x45, 0x37, 0x60, 0x7c, 0x2b, 0x49, - 0xda, 0x97, 0x88, 0xe3, 0x92, 0x48, 0x4a, 0x87, 0xb3, 0x79, 0xd2, 0x81, 0x76, 0x02, 0x27, 0x4b, - 0x17, 0x54, 0x0a, 0x8b, 0xb1, 0xce, 0xc7, 0x6e, 0x02, 0xa4, 0xb8, 0x7b, 0x74, 0x6c, 0xb0, 0xbf, - 0x67, 0xc1, 0xe8, 0x25, 0x27, 0x70, 0x7d, 0x12, 0xa1, 0x57, 0x60, 0x88, 0xdc, 0x21, 0x2d, 0xb1, - 0x83, 0xe7, 0x36, 0x38, 0xdd, 0xe5, 0xb8, 0x21, 0x8c, 0xfe, 0xc7, 0xac, 0x14, 0xba, 0x04, 0xa3, - 0xb4, 0xb5, 0x17, 0x95, 0xa7, 0xf7, 0x23, 0x45, 0x5f, 0xac, 0x86, 0x9d, 0x6f, 0x8c, 0x02, 0x84, - 0x65, 0x71, 0x66, 0xd0, 0x69, 0xb5, 0x9b, 0x54, 0x80, 0x25, 0xbd, 0x8e, 0x5b, 0xeb, 0xcb, 0x0d, - 0x4e, 0x24, 0xb8, 0x71, 0x83, 0x8e, 0x04, 0xe2, 0x94, 0x89, 0xbd, 0x0e, 0x15, 0x3a, 0xa8, 0x8b, - 0xbe, 0xe7, 0xf4, 0xb6, 0x25, 0x3d, 0x05, 0x15, 0x69, 0xd7, 0x89, 0x85, 0xb3, 0x38, 0xe3, 0x2a, - 0xcd, 0x3e, 0x31, 0x4e, 0xf1, 0xf6, 0x06, 0x9c, 0x64, 0x17, 0xa5, 0x4e, 0xb2, 0x65, 0xac, 0xb1, - 0xfe, 0x93, 0xf9, 0x69, 0xa1, 0x5f, 0xf1, 0x91, 0xa9, 0x6a, 0xbe, 0xb2, 0x13, 0x92, 0xa3, 0xa6, - 0x6b, 0xfd, 0xa7, 0x21, 0x98, 0x5d, 0x6b, 0x2e, 0x37, 0x4d, 0xe3, 0xe2, 0x4b, 0x30, 0xc1, 0x35, - 0x01, 0x3a, 0xa1, 0x1d, 0x5f, 0xd4, 0xa6, 0x2e, 0x0f, 0xd6, 0x35, 0x1c, 0x36, 0x28, 0xd1, 0xc3, - 0x50, 0xf6, 0xde, 0x0b, 0xb2, 0xee, 0x70, 0x6b, 0xaf, 0x5f, 0xc3, 0x14, 0x4e, 0xd1, 0x54, 0xa9, - 0xe0, 0x02, 0x54, 0xa1, 0x95, 0x62, 0xf1, 0x2a, 0x4c, 0x79, 0x71, 0x2b, 0xf6, 0xd6, 0x02, 0x2a, - 0x5d, 0xd2, 0x48, 0x89, 0x54, 0xe3, 0xa7, 0x4d, 0x55, 0x58, 0x9c, 0xa1, 0xd6, 0xa4, 0xf9, 0xf0, - 0xc0, 0x8a, 0x49, 0x5f, 0x9f, 0x69, 0xaa, 0x73, 0xb5, 0xd9, 0xd7, 0xc5, 0xcc, 0x35, 0x47, 0xe8, - 0x5c, 0xfc, 0x83, 0x63, 0x2c, 0x71, 0xe8, 0x22, 0xcc, 0xb6, 0xb6, 0x9c, 0xf6, 0x62, 0x27, 0xd9, - 0xaa, 0x7b, 0x71, 0x2b, 0xdc, 0x25, 0xd1, 0x1e, 0xd3, 0x84, 0xc7, 0x52, 0x23, 0x93, 0x42, 0x2c, - 0x5f, 0x5a, 0x6c, 0x50, 0x4a, 0xdc, 0x5d, 0xc6, 0x54, 0x41, 0xe0, 0x9e, 0xa9, 0x20, 0x8b, 0x30, - 0x2d, 0xeb, 0x6a, 0x92, 0x98, 0x6d, 0x0f, 0xe3, 0xac, 0x75, 0x2a, 0x90, 0x49, 0x80, 0x55, 0xdb, - 0xb2, 0xf4, 0xe8, 0x45, 0x98, 0xf4, 0x02, 0x2f, 0xf1, 0x9c, 0x24, 0x8c, 0xd8, 0xe6, 0x3a, 0xc1, - 0x37, 0x0c, 0x2a, 0xe1, 0xd7, 0x74, 0x04, 0x36, 0xe9, 0xec, 0x77, 0xa1, 0xa2, 0xfc, 0xcd, 0xa4, - 0xcb, 0xa4, 0x55, 0xe0, 0x32, 0xd9, 0x7f, 0x47, 0x90, 0x56, 0xf3, 0x72, 0xae, 0xd5, 0xfc, 0xef, - 0x58, 0x90, 0xba, 0xdd, 0xa0, 0x4b, 0x50, 0x69, 0x87, 0xec, 0xe6, 0x2c, 0x92, 0xd7, 0xd1, 0x0f, - 0xe6, 0x0a, 0x0f, 0x2e, 0xa8, 0x78, 0xff, 0x35, 0x64, 0x09, 0x9c, 0x16, 0x46, 0x4b, 0x30, 0xda, - 0x8e, 0x48, 0x33, 0x61, 0xa1, 0x1e, 0x7d, 0xf9, 0xf0, 0x39, 0xc2, 0xe9, 0xb1, 0x2c, 0x68, 0xff, - 0x86, 0x05, 0xc0, 0x8d, 0xd2, 0x4e, 0xb0, 0x49, 0x8e, 0xe1, 0xa0, 0x5d, 0x87, 0xa1, 0xb8, 0x4d, - 0x5a, 0xbd, 0xee, 0x34, 0xd3, 0xf6, 0x34, 0xdb, 0xa4, 0x95, 0x76, 0x38, 0xfd, 0x87, 0x59, 0x69, - 0xfb, 0x67, 0x00, 0xa6, 0x52, 0x32, 0x7a, 0x00, 0x42, 0xcf, 0x18, 0x6e, 0xf9, 0x67, 0x32, 0x6e, - 0xf9, 0x15, 0x46, 0xad, 0x79, 0xe2, 0xbf, 0x0b, 0xe5, 0x1d, 0xe7, 0x8e, 0x38, 0x65, 0x3d, 0xd5, - 0xbb, 0x19, 0x94, 0xff, 0xfc, 0x55, 0xe7, 0x0e, 0xd7, 0x63, 0x9f, 0x92, 0x13, 0xe4, 0xaa, 0x73, - 0xe7, 0x90, 0xdf, 0x5c, 0x32, 0x21, 0x45, 0x0f, 0x73, 0x9f, 0xff, 0x93, 0xf4, 0x3f, 0x9b, 0x76, - 0xb4, 0x12, 0x56, 0x97, 0x17, 0x08, 0x13, 0xed, 0x40, 0x75, 0x79, 0x41, 0xb6, 0x2e, 0x2f, 0x18, - 0xa0, 0x2e, 0x2f, 0x40, 0xef, 0xc3, 0xa8, 0xb8, 0x12, 0x61, 0xfe, 0x84, 0xe3, 0x17, 0x16, 0x06, - 0xa8, 0x4f, 0xdc, 0xa8, 0xf0, 0x3a, 0x17, 0xa4, 0x9e, 0x2e, 0xa0, 0x7d, 0xeb, 0x95, 0x15, 0xa2, - 0xbf, 0x65, 0xc1, 0x94, 0xf8, 0x8d, 0xc9, 0x7b, 0x1d, 0x12, 0x27, 0x42, 0x1f, 0xf8, 0xd4, 0xe0, - 0x6d, 0x10, 0x05, 0x79, 0x53, 0x3e, 0x25, 0xc5, 0xac, 0x89, 0xec, 0xdb, 0xa2, 0x4c, 0x2b, 0xd0, - 0x3f, 0xb5, 0xe0, 0xe4, 0x8e, 0x73, 0x87, 0xd7, 0xc8, 0x61, 0xd8, 0x49, 0xbc, 0x50, 0xf8, 0x47, - 0xbe, 0x32, 0xd8, 0xf0, 0x77, 0x15, 0xe7, 0x8d, 0x94, 0xae, 0x54, 0x27, 0xf3, 0x48, 0xfa, 0x36, - 0x35, 0xb7, 0x5d, 0x73, 0x1b, 0x30, 0x26, 0xe7, 0x5b, 0xce, 0x69, 0xa8, 0xae, 0x2b, 0x3b, 0x47, - 0xbe, 0x91, 0xd2, 0x4e, 0x4f, 0xac, 0x1e, 0x31, 0xd7, 0xee, 0x6b, 0x3d, 0xef, 0xc2, 0x84, 0x3e, - 0xc7, 0xee, 0x6b, 0x5d, 0xef, 0xc1, 0x89, 0x9c, 0xb9, 0x74, 0x5f, 0xab, 0xbc, 0x0d, 0x67, 0x0a, - 0xe7, 0xc7, 0xfd, 0xac, 0xd8, 0xfe, 0x9a, 0xa5, 0xcb, 0xc1, 0x63, 0x30, 0x4f, 0x2d, 0x9b, 0xe6, - 0xa9, 0xb3, 0xbd, 0x57, 0x4e, 0x81, 0x8d, 0xea, 0x6d, 0xbd, 0xd1, 0x54, 0xaa, 0xa3, 0xd7, 0x60, - 0xc4, 0xa7, 0x10, 0x79, 0x0f, 0x67, 0xf7, 0x5f, 0x91, 0xa9, 0x2e, 0xc5, 0xe0, 0x31, 0x16, 0x1c, - 0xec, 0xdf, 0xb6, 0x60, 0xe8, 0x18, 0x7a, 0x02, 0x9b, 0x3d, 0xf1, 0x4c, 0x21, 0x6b, 0x91, 0xad, - 0x60, 0x1e, 0x3b, 0xb7, 0x57, 0xee, 0x24, 0x24, 0x88, 0x99, 0xfa, 0x9e, 0xdb, 0x31, 0xff, 0xbb, - 0x04, 0xe3, 0xb4, 0x2a, 0xe9, 0x34, 0xf2, 0x32, 0x4c, 0xfa, 0xce, 0x2d, 0xe2, 0x4b, 0x93, 0x79, - 0xf6, 0x10, 0x7b, 0x45, 0x47, 0x62, 0x93, 0x96, 0x16, 0xde, 0xd0, 0x6f, 0x0f, 0x84, 0xfe, 0xa2, - 0x0a, 0x1b, 0x57, 0x0b, 0xd8, 0xa4, 0xa5, 0xe7, 0xa9, 0xdb, 0x4e, 0xd2, 0xda, 0x12, 0x07, 0x5c, - 0xd5, 0xdc, 0x37, 0x28, 0x10, 0x73, 0x1c, 0x55, 0xe0, 0xe4, 0xec, 0xbc, 0x49, 0x22, 0xa6, 0xc0, - 0x71, 0xf5, 0x58, 0x29, 0x70, 0xd8, 0x44, 0xe3, 0x2c, 0x3d, 0xfa, 0x34, 0x4c, 0xd1, 0xce, 0x09, - 0x3b, 0x89, 0x74, 0x89, 0x19, 0x66, 0x2e, 0x31, 0xcc, 0x03, 0x7a, 0xdd, 0xc0, 0xe0, 0x0c, 0x25, - 0x6a, 0xc0, 0x49, 0x2f, 0x68, 0xf9, 0x1d, 0x97, 0xdc, 0x08, 0xb8, 0x76, 0xe7, 0x7b, 0xef, 0x13, - 0x57, 0x28, 0xd0, 0xca, 0x7b, 0x69, 0x2d, 0x87, 0x06, 0xe7, 0x96, 0xb4, 0x7f, 0x12, 0x4e, 0x5c, - 0x09, 0x1d, 0x77, 0xc9, 0xf1, 0x9d, 0xa0, 0x45, 0xa2, 0xb5, 0x60, 0xb3, 0xef, 0x85, 0xbc, 0x7e, - 0x7d, 0x5e, 0xea, 0x77, 0x7d, 0x6e, 0x6f, 0x01, 0xd2, 0x2b, 0x10, 0xae, 0x60, 0x18, 0x46, 0x3d, - 0x5e, 0x95, 0x98, 0xfe, 0x8f, 0xe7, 0x6b, 0xd7, 0x5d, 0x2d, 0xd3, 0x9c, 0x9c, 0x38, 0x00, 0x4b, - 0x46, 0xf6, 0x4b, 0x90, 0x1b, 0x9f, 0xd1, 0xff, 0x28, 0x6d, 0xbf, 0x00, 0xb3, 0xac, 0xe4, 0xd1, - 0x8e, 0x79, 0xf6, 0x5f, 0xb7, 0x60, 0xfa, 0x5a, 0x26, 0x06, 0xf6, 0x31, 0x18, 0x89, 0x49, 0x94, - 0x63, 0x0b, 0x6d, 0x32, 0x28, 0x16, 0xd8, 0x7b, 0x6e, 0x73, 0xf9, 0xbe, 0x05, 0x15, 0x15, 0xb0, - 0x7e, 0x0c, 0x4a, 0xed, 0xb2, 0xa1, 0xd4, 0xe6, 0xda, 0x02, 0x54, 0x73, 0x8a, 0x74, 0x5a, 0x74, - 0x59, 0xc5, 0x86, 0xf6, 0x30, 0x03, 0xa4, 0x6c, 0x78, 0x24, 0xe1, 0x94, 0x19, 0x40, 0x2a, 0xa3, - 0x45, 0xd9, 0x8d, 0xb8, 0xa2, 0xfd, 0x88, 0xdc, 0x88, 0xab, 0xf6, 0x14, 0x48, 0xbf, 0x86, 0xd6, - 0x64, 0xb6, 0x2b, 0xfc, 0x28, 0xf3, 0x1c, 0x65, 0x6b, 0x53, 0x05, 0x51, 0xd7, 0x84, 0x27, 0xa8, - 0x80, 0x1e, 0x32, 0x41, 0x26, 0xfe, 0xf1, 0xe4, 0x02, 0x69, 0x11, 0xfb, 0x12, 0x4c, 0x67, 0x3a, - 0x0c, 0xbd, 0x00, 0xc3, 0xed, 0x2d, 0x27, 0x26, 0x19, 0x4f, 0xa0, 0xe1, 0x06, 0x05, 0x1e, 0xee, - 0xd7, 0xa6, 0x54, 0x01, 0x06, 0xc1, 0x9c, 0xda, 0xfe, 0xef, 0x16, 0x0c, 0x5d, 0x0b, 0xdd, 0xe3, - 0x98, 0x4c, 0xaf, 0x1a, 0x93, 0xe9, 0xa1, 0xa2, 0xd4, 0x2c, 0x85, 0xf3, 0x68, 0x35, 0x33, 0x8f, - 0xce, 0x16, 0x72, 0xe8, 0x3d, 0x85, 0x76, 0x60, 0x9c, 0x25, 0x7c, 0x11, 0x5e, 0x49, 0xcf, 0x19, - 0xe7, 0xab, 0x5a, 0xe6, 0x7c, 0x35, 0xad, 0x91, 0x6a, 0xa7, 0xac, 0x27, 0x60, 0x54, 0x78, 0xc6, - 0x64, 0x7d, 0x64, 0x05, 0x2d, 0x96, 0x78, 0xfb, 0x97, 0xca, 0x60, 0x24, 0x98, 0x41, 0xbf, 0x6b, - 0xc1, 0x7c, 0xc4, 0xa3, 0x82, 0xdc, 0x7a, 0x27, 0xf2, 0x82, 0xcd, 0x66, 0x6b, 0x8b, 0xb8, 0x1d, - 0xdf, 0x0b, 0x36, 0xd7, 0x36, 0x83, 0x50, 0x81, 0x57, 0xee, 0x90, 0x56, 0x87, 0xd9, 0xc1, 0xfb, - 0x64, 0xb3, 0x51, 0x37, 0xcf, 0x17, 0x0e, 0xf6, 0x6b, 0xf3, 0xf8, 0x48, 0xbc, 0xf1, 0x11, 0xdb, - 0x82, 0xfe, 0xc0, 0x82, 0x05, 0x9e, 0x77, 0x65, 0xf0, 0xf6, 0xf7, 0x38, 0x8d, 0x36, 0x24, 0xab, - 0x94, 0xc9, 0x3a, 0x89, 0x76, 0x96, 0x5e, 0x14, 0x1d, 0xba, 0xd0, 0x38, 0x5a, 0x5d, 0xf8, 0xa8, - 0x8d, 0xb3, 0xff, 0x55, 0x19, 0x26, 0x69, 0x2f, 0xa6, 0x91, 0xf0, 0x2f, 0x18, 0x53, 0xe2, 0x91, - 0xcc, 0x94, 0x98, 0x35, 0x88, 0xef, 0x4d, 0x10, 0x7c, 0x0c, 0xb3, 0xbe, 0x13, 0x27, 0x97, 0x88, - 0x13, 0x25, 0xb7, 0x88, 0xc3, 0xae, 0x7a, 0xc5, 0x34, 0x3f, 0xca, 0xed, 0xb1, 0x32, 0x7f, 0x5d, - 0xc9, 0x32, 0xc3, 0xdd, 0xfc, 0xd1, 0x2e, 0x20, 0x76, 0xad, 0x1c, 0x39, 0x41, 0xcc, 0xbf, 0xc5, - 0x13, 0x36, 0xf2, 0xa3, 0xd5, 0x3a, 0x27, 0x6a, 0x45, 0x57, 0xba, 0xb8, 0xe1, 0x9c, 0x1a, 0x34, - 0x77, 0x81, 0xe1, 0x41, 0xdd, 0x05, 0x46, 0xfa, 0x38, 0xa2, 0xef, 0xc0, 0x8c, 0x18, 0x95, 0x0d, - 0x6f, 0x53, 0x6c, 0xd2, 0x6f, 0x66, 0xdc, 0x89, 0xac, 0xc1, 0x1d, 0x1f, 0xfa, 0xf8, 0x12, 0xd9, - 0x3f, 0x05, 0x27, 0x68, 0x75, 0xa6, 0xdb, 0x74, 0x8c, 0x08, 0x4c, 0x6f, 0x77, 0x6e, 0x11, 0x9f, - 0x24, 0x12, 0x26, 0x2a, 0xcd, 0x55, 0xfb, 0xcd, 0xd2, 0xa9, 0x6e, 0x79, 0xd9, 0x64, 0x81, 0xb3, - 0x3c, 0xed, 0x5f, 0xb6, 0x80, 0x39, 0x26, 0x1e, 0xc3, 0xf6, 0xf7, 0x19, 0x73, 0xfb, 0xab, 0x16, - 0x49, 0xa0, 0x82, 0x9d, 0xef, 0x79, 0x3e, 0x2c, 0x8d, 0x28, 0xbc, 0xb3, 0x27, 0x75, 0xff, 0xfe, - 0x1a, 0xd7, 0xff, 0xb2, 0xf8, 0x82, 0x54, 0x41, 0x92, 0xe8, 0xa7, 0x61, 0xac, 0xe5, 0xb4, 0x9d, - 0x16, 0xcf, 0xec, 0x55, 0x68, 0xfd, 0x31, 0x0a, 0xcd, 0x2f, 0x8b, 0x12, 0xdc, 0x9a, 0xf1, 0x49, - 0xf9, 0x95, 0x12, 0xdc, 0xd7, 0x82, 0xa1, 0xaa, 0x9c, 0xdb, 0x86, 0x49, 0x83, 0xd9, 0x7d, 0x3d, - 0xfa, 0xfe, 0x34, 0xdf, 0x2e, 0xd4, 0x89, 0x65, 0x07, 0x66, 0x03, 0xed, 0x3f, 0x15, 0x8e, 0x52, - 0x9d, 0xfe, 0x78, 0xbf, 0x0d, 0x81, 0x49, 0x52, 0xcd, 0xf1, 0x32, 0xc3, 0x06, 0x77, 0x73, 0xb6, - 0xff, 0x9e, 0x05, 0x0f, 0xe8, 0x84, 0x5a, 0xfc, 0x6a, 0x3f, 0x7b, 0x72, 0x1d, 0xc6, 0xc2, 0x36, - 0x89, 0x9c, 0xf4, 0x4c, 0x76, 0x5e, 0x76, 0xfa, 0x75, 0x01, 0x3f, 0xdc, 0xaf, 0x9d, 0xd4, 0xb9, - 0x4b, 0x38, 0x56, 0x25, 0x91, 0x0d, 0x23, 0xac, 0x33, 0x62, 0x11, 0x5b, 0xcc, 0xb2, 0x5f, 0xb1, - 0xeb, 0xae, 0x18, 0x0b, 0x8c, 0xfd, 0x33, 0x16, 0x9f, 0x58, 0x7a, 0xd3, 0xd1, 0x7b, 0x30, 0xb3, - 0x43, 0x8f, 0x6f, 0x2b, 0x77, 0xda, 0x11, 0x37, 0xa3, 0xcb, 0x7e, 0x7a, 0xaa, 0x5f, 0x3f, 0x69, - 0x1f, 0xb9, 0x54, 0x15, 0x6d, 0x9e, 0xb9, 0x9a, 0x61, 0x86, 0xbb, 0xd8, 0xdb, 0x7f, 0x51, 0xe2, - 0x2b, 0x91, 0x69, 0x75, 0x4f, 0xc0, 0x68, 0x3b, 0x74, 0x97, 0xd7, 0xea, 0x58, 0xf4, 0x90, 0x12, - 0x57, 0x0d, 0x0e, 0xc6, 0x12, 0x8f, 0x2e, 0x00, 0x90, 0x3b, 0x09, 0x89, 0x02, 0xc7, 0x57, 0x97, - 0xf1, 0x4a, 0x79, 0x5a, 0x51, 0x18, 0xac, 0x51, 0xd1, 0x32, 0xed, 0x28, 0xdc, 0xf5, 0x5c, 0x16, - 0xdc, 0x51, 0x36, 0xcb, 0x34, 0x14, 0x06, 0x6b, 0x54, 0xf4, 0xa8, 0xdc, 0x09, 0x62, 0xbe, 0x01, - 0x3a, 0xb7, 0x44, 0x02, 0x9d, 0xb1, 0xf4, 0xa8, 0x7c, 0x43, 0x47, 0x62, 0x93, 0x16, 0x2d, 0xc2, - 0x48, 0xe2, 0xb0, 0x2b, 0xe6, 0xe1, 0x62, 0x97, 0x9d, 0x75, 0x4a, 0xa1, 0xa7, 0x7a, 0xa2, 0x05, - 0xb0, 0x28, 0x88, 0xde, 0x92, 0x22, 0x98, 0x8b, 0x64, 0xe1, 0x7a, 0x55, 0x38, 0x6d, 0x75, 0xf1, - 0xad, 0xcb, 0x60, 0xe1, 0xd2, 0x65, 0xf0, 0xb2, 0xbf, 0x50, 0x01, 0x48, 0xb5, 0x3d, 0xf4, 0x7e, - 0x97, 0x88, 0x78, 0xba, 0xb7, 0x7e, 0x78, 0xef, 0xe4, 0x03, 0xfa, 0xa2, 0x05, 0xe3, 0x8e, 0xef, - 0x87, 0x2d, 0x27, 0x61, 0xbd, 0x5c, 0xea, 0x2d, 0xa2, 0x44, 0xfd, 0x8b, 0x69, 0x09, 0xde, 0x84, - 0xe7, 0xe4, 0xed, 0xb1, 0x86, 0xe9, 0xdb, 0x0a, 0xbd, 0x62, 0xf4, 0x49, 0x79, 0x08, 0xe0, 0xd3, - 0x63, 0x2e, 0x7b, 0x08, 0xa8, 0x30, 0x69, 0xac, 0xe9, 0xff, 0xe8, 0x86, 0x91, 0xb7, 0x66, 0xa8, - 0x38, 0x44, 0xd7, 0x50, 0x7a, 0xfa, 0xa5, 0xac, 0x41, 0x0d, 0xdd, 0x05, 0x7d, 0xb8, 0x38, 0x8e, - 0x5d, 0xd3, 0xae, 0xfb, 0xb8, 0x9f, 0xbf, 0x0b, 0xd3, 0xae, 0xb9, 0xdd, 0x8a, 0xd9, 0xf4, 0x78, - 0x11, 0xdf, 0xcc, 0xee, 0x9c, 0x6e, 0xb0, 0x19, 0x04, 0xce, 0x32, 0x46, 0x0d, 0x1e, 0x0c, 0xb0, - 0x16, 0x6c, 0x84, 0xc2, 0x85, 0xcf, 0x2e, 0x1c, 0xcb, 0xbd, 0x38, 0x21, 0x3b, 0x94, 0x32, 0xdd, - 0x47, 0xaf, 0x89, 0xb2, 0x58, 0x71, 0x41, 0xaf, 0xc1, 0x08, 0x8b, 0xd2, 0x8a, 0xab, 0x63, 0xc5, - 0x76, 0x40, 0x33, 0xc0, 0x38, 0x5d, 0x54, 0xec, 0x6f, 0x8c, 0x05, 0x07, 0x74, 0x49, 0xa6, 0x09, - 0x88, 0xd7, 0x82, 0x1b, 0x31, 0x61, 0x69, 0x02, 0x2a, 0x4b, 0x1f, 0x4f, 0x33, 0x00, 0x70, 0x78, - 0x6e, 0x52, 0x47, 0xa3, 0x24, 0xd5, 0x57, 0xc4, 0x7f, 0x99, 0x2b, 0xb2, 0x0a, 0xc5, 0xcd, 0x33, - 0xf3, 0x49, 0xa6, 0xdd, 0x79, 0xd3, 0x64, 0x81, 0xb3, 0x3c, 0x8f, 0x75, 0xfb, 0x9c, 0x0b, 0x60, - 0x26, 0xbb, 0xb0, 0xee, 0xeb, 0x76, 0xfd, 0xbd, 0x21, 0x98, 0x32, 0x27, 0x02, 0x5a, 0x80, 0x8a, - 0x60, 0xa2, 0x92, 0x7c, 0xa9, 0xb9, 0x7d, 0x55, 0x22, 0x70, 0x4a, 0xc3, 0x92, 0x9c, 0xb1, 0xe2, - 0x9a, 0x6f, 0x56, 0x9a, 0xe4, 0x4c, 0x61, 0xb0, 0x46, 0x45, 0x95, 0xe8, 0x5b, 0x61, 0x98, 0xa8, - 0xad, 0x40, 0xcd, 0x96, 0x25, 0x06, 0xc5, 0x02, 0x4b, 0xb7, 0x80, 0x6d, 0x12, 0x05, 0xc4, 0x37, - 0x2d, 0x99, 0x6a, 0x0b, 0xb8, 0xac, 0x23, 0xb1, 0x49, 0x4b, 0xb7, 0xb4, 0x30, 0x66, 0xd3, 0x4f, - 0xa8, 0xea, 0xa9, 0xaf, 0x5b, 0x93, 0x47, 0x29, 0x4a, 0x3c, 0x7a, 0x13, 0x1e, 0x50, 0x41, 0x85, - 0x98, 0x5b, 0x86, 0x65, 0x8d, 0x23, 0xc6, 0xc9, 0xfa, 0x81, 0xe5, 0x7c, 0x32, 0x5c, 0x54, 0x1e, - 0xbd, 0x0a, 0x53, 0x42, 0x05, 0x96, 0x1c, 0x47, 0x4d, 0x67, 0x85, 0xcb, 0x06, 0x16, 0x67, 0xa8, - 0x51, 0x1d, 0x66, 0x28, 0x84, 0x69, 0xa1, 0x92, 0x03, 0x0f, 0x8e, 0x54, 0x7b, 0xfd, 0xe5, 0x0c, - 0x1e, 0x77, 0x95, 0x40, 0x8b, 0x30, 0xcd, 0x75, 0x14, 0x7a, 0xa6, 0x64, 0xe3, 0x20, 0x3c, 0x6b, - 0xd5, 0x42, 0xb8, 0x6e, 0xa2, 0x71, 0x96, 0x1e, 0xbd, 0x04, 0x13, 0x4e, 0xd4, 0xda, 0xf2, 0x12, - 0xd2, 0x4a, 0x3a, 0x11, 0x4f, 0xc2, 0xa1, 0x79, 0x7b, 0x2c, 0x6a, 0x38, 0x6c, 0x50, 0xda, 0xef, - 0xc3, 0x89, 0x1c, 0xa7, 0x7c, 0x3a, 0x71, 0x9c, 0xb6, 0x27, 0xbf, 0x29, 0xe3, 0xb5, 0xb6, 0xd8, - 0x58, 0x93, 0x5f, 0xa3, 0x51, 0xd1, 0xd9, 0xc9, 0x4c, 0xe2, 0x5a, 0x42, 0x57, 0x35, 0x3b, 0x57, - 0x25, 0x02, 0xa7, 0x34, 0xf6, 0xb7, 0x00, 0x34, 0x83, 0xce, 0x00, 0x3e, 0x4b, 0x2f, 0xc1, 0x84, - 0xcc, 0x42, 0xac, 0x65, 0xbf, 0x54, 0x9f, 0x79, 0x51, 0xc3, 0x61, 0x83, 0x92, 0xb6, 0x2d, 0x50, - 0xb9, 0x3b, 0x33, 0x3e, 0x72, 0x69, 0xe6, 0xce, 0x94, 0x06, 0x3d, 0x0d, 0x63, 0x31, 0xf1, 0x37, - 0xae, 0x78, 0xc1, 0xb6, 0x98, 0xd8, 0x4a, 0x0a, 0x37, 0x05, 0x1c, 0x2b, 0x0a, 0xb4, 0x04, 0xe5, - 0x8e, 0xe7, 0x8a, 0xa9, 0x2c, 0x37, 0xfc, 0xf2, 0x8d, 0xb5, 0xfa, 0xe1, 0x7e, 0xed, 0x91, 0xa2, - 0xe4, 0xca, 0xf4, 0x68, 0x1f, 0xcf, 0xd3, 0xe5, 0x47, 0x0b, 0xe7, 0xdd, 0x0d, 0x8c, 0x1c, 0xf1, - 0x6e, 0xe0, 0x02, 0x80, 0xf8, 0x6a, 0x39, 0x97, 0xcb, 0xe9, 0xa8, 0x5d, 0x54, 0x18, 0xac, 0x51, - 0xa1, 0x18, 0x66, 0x5b, 0x11, 0x71, 0xe4, 0x19, 0x9a, 0xbb, 0x97, 0x8f, 0xdd, 0xbd, 0x81, 0x60, - 0x39, 0xcb, 0x0c, 0x77, 0xf3, 0x47, 0x21, 0xcc, 0xba, 0x22, 0x86, 0x35, 0xad, 0xb4, 0x72, 0x74, - 0x9f, 0x76, 0xe6, 0x90, 0x93, 0x65, 0x84, 0xbb, 0x79, 0xa3, 0x77, 0x60, 0x4e, 0x02, 0xbb, 0xc3, - 0x86, 0xd9, 0x72, 0x29, 0x2f, 0x9d, 0x3d, 0xd8, 0xaf, 0xcd, 0xd5, 0x0b, 0xa9, 0x70, 0x0f, 0x0e, - 0x08, 0xc3, 0x08, 0xbb, 0x4b, 0x8a, 0xab, 0xe3, 0x6c, 0x9f, 0x7b, 0xb2, 0xd8, 0x18, 0x40, 0xe7, - 0xfa, 0x3c, 0xbb, 0x87, 0x12, 0x6e, 0xbe, 0xe9, 0xb5, 0x1c, 0x03, 0x62, 0xc1, 0x09, 0x6d, 0xc0, - 0xb8, 0x13, 0x04, 0x61, 0xe2, 0x70, 0x15, 0x6a, 0xa2, 0x58, 0xf7, 0xd3, 0x18, 0x2f, 0xa6, 0x25, - 0x38, 0x77, 0xe5, 0x39, 0xa8, 0x61, 0xb0, 0xce, 0x18, 0xdd, 0x86, 0xe9, 0xf0, 0x36, 0x15, 0x8e, - 0xd2, 0x4a, 0x11, 0x57, 0x27, 0x59, 0x5d, 0xcf, 0x0f, 0x68, 0xa7, 0x35, 0x0a, 0x6b, 0x52, 0xcb, - 0x64, 0x8a, 0xb3, 0xb5, 0xa0, 0x79, 0xc3, 0x5a, 0x3d, 0x95, 0xfa, 0xb3, 0xa7, 0xd6, 0x6a, 0xdd, - 0x38, 0xcd, 0xc2, 0xd0, 0xb9, 0xdb, 0x2a, 0x5b, 0xfd, 0xd3, 0x99, 0x30, 0xf4, 0x14, 0x85, 0x75, - 0x3a, 0xb4, 0x05, 0x13, 0xe9, 0x95, 0x55, 0x14, 0xb3, 0x2c, 0x35, 0xe3, 0x17, 0x2e, 0x0c, 0xf6, - 0x71, 0x6b, 0x5a, 0x49, 0x7e, 0x72, 0xd0, 0x21, 0xd8, 0xe0, 0x3c, 0xf7, 0x23, 0x30, 0xae, 0x0d, - 0xec, 0x51, 0xbc, 0xb2, 0xe7, 0x5e, 0x85, 0x99, 0xec, 0xd0, 0x1d, 0xc9, 0xab, 0xfb, 0x7f, 0x96, - 0x60, 0x3a, 0xe7, 0xe6, 0x8a, 0x25, 0x68, 0xce, 0x08, 0xd4, 0x34, 0x1f, 0xb3, 0x29, 0x16, 0x4b, - 0x03, 0x88, 0x45, 0x29, 0xa3, 0xcb, 0x85, 0x32, 0x5a, 0x88, 0xc2, 0xa1, 0x0f, 0x22, 0x0a, 0xcd, - 0xdd, 0x67, 0x78, 0xa0, 0xdd, 0xe7, 0x1e, 0x88, 0x4f, 0x63, 0x03, 0x1b, 0x1d, 0x60, 0x03, 0xfb, - 0xf9, 0x12, 0xcc, 0x64, 0xb3, 0x00, 0x1f, 0xc3, 0x7d, 0xc7, 0x6b, 0xc6, 0x7d, 0x47, 0x7e, 0xba, - 0xf3, 0x6c, 0x6e, 0xe2, 0xa2, 0xbb, 0x0f, 0x9c, 0xb9, 0xfb, 0x78, 0x72, 0x20, 0x6e, 0xbd, 0xef, - 0x41, 0xfe, 0x7e, 0x09, 0x4e, 0x65, 0x8b, 0x2c, 0xfb, 0x8e, 0xb7, 0x73, 0x0c, 0x7d, 0x73, 0xdd, - 0xe8, 0x9b, 0x67, 0x06, 0xf9, 0x1a, 0xd6, 0xb4, 0xc2, 0x0e, 0x7a, 0x23, 0xd3, 0x41, 0x0b, 0x83, - 0xb3, 0xec, 0xdd, 0x4b, 0xdf, 0xb2, 0xe0, 0x4c, 0x6e, 0xb9, 0x63, 0xb0, 0xbe, 0x5e, 0x33, 0xad, - 0xaf, 0x4f, 0x0c, 0xfc, 0x4d, 0x05, 0xe6, 0xd8, 0xaf, 0x94, 0x0b, 0xbe, 0x85, 0xd9, 0xaf, 0xae, - 0xc3, 0xb8, 0xd3, 0x6a, 0x91, 0x38, 0xbe, 0x1a, 0xba, 0x2a, 0xad, 0xd5, 0x33, 0x6c, 0x4f, 0x4a, - 0xc1, 0x87, 0xfb, 0xb5, 0xb9, 0x2c, 0x8b, 0x14, 0x8d, 0x75, 0x0e, 0x66, 0xaa, 0xbc, 0xd2, 0x3d, - 0x4d, 0x95, 0x77, 0x01, 0x60, 0x57, 0x9d, 0x6a, 0xb3, 0xc6, 0x30, 0xed, 0xbc, 0xab, 0x51, 0xa1, - 0x9f, 0x60, 0xba, 0x22, 0x77, 0x19, 0xe1, 0x97, 0x1c, 0xcf, 0x0d, 0x38, 0x56, 0xba, 0xfb, 0x09, - 0x0f, 0x84, 0x55, 0x86, 0x43, 0xc5, 0x12, 0xfd, 0x18, 0xcc, 0xc4, 0x3c, 0xd7, 0xc2, 0xb2, 0xef, - 0xc4, 0x2c, 0xfc, 0x42, 0xc8, 0x44, 0x16, 0xdd, 0xda, 0xcc, 0xe0, 0x70, 0x17, 0xb5, 0xfd, 0x8f, - 0xcb, 0xf0, 0x60, 0x8f, 0x29, 0x8a, 0x16, 0xcd, 0x2b, 0xde, 0xa7, 0xb2, 0xd6, 0x9d, 0xb9, 0xdc, - 0xc2, 0x86, 0xb9, 0x27, 0x33, 0xc6, 0xa5, 0x0f, 0x3c, 0xc6, 0x5f, 0xb2, 0x34, 0xbb, 0x1b, 0x77, - 0x04, 0xfd, 0xcc, 0x11, 0x97, 0xde, 0x0f, 0xaa, 0xa1, 0xfe, 0xf3, 0x16, 0x3c, 0x92, 0xfb, 0x59, - 0x86, 0xab, 0xc8, 0x02, 0x54, 0x5a, 0x14, 0xa8, 0x85, 0x48, 0xa5, 0x81, 0x8a, 0x12, 0x81, 0x53, - 0x1a, 0xc3, 0x23, 0xa4, 0xd4, 0xd7, 0x23, 0xe4, 0x5f, 0x5a, 0x70, 0x32, 0xdb, 0x88, 0x63, 0x90, - 0x4c, 0x6b, 0xa6, 0x64, 0xfa, 0xf8, 0x20, 0x43, 0x5e, 0x20, 0x94, 0xfe, 0x6c, 0x0a, 0x4e, 0x17, - 0xe4, 0xe8, 0xdf, 0x85, 0xd9, 0xcd, 0x16, 0x31, 0x83, 0xcf, 0xc4, 0xc7, 0xe4, 0xc6, 0xe9, 0xf5, - 0x8c, 0x54, 0xe3, 0xc7, 0x90, 0x2e, 0x12, 0xdc, 0x5d, 0x05, 0xfa, 0xbc, 0x05, 0x27, 0x9d, 0xdb, - 0x71, 0xd7, 0x9b, 0x39, 0x62, 0xce, 0x3c, 0x9f, 0x6b, 0x1d, 0xeb, 0xf3, 0xc6, 0x0e, 0x0b, 0x10, - 0x39, 0x99, 0x47, 0x85, 0x73, 0xeb, 0x42, 0x58, 0x64, 0xf6, 0xa3, 0x5a, 0x4e, 0x8f, 0xf0, 0xc8, - 0xbc, 0xe0, 0x15, 0x2e, 0xa3, 0x24, 0x06, 0x2b, 0x3e, 0xe8, 0x26, 0x54, 0x36, 0x65, 0x44, 0x99, - 0x90, 0x81, 0xb9, 0x9b, 0x4a, 0x6e, 0xd8, 0x19, 0xf7, 0xd8, 0x57, 0x28, 0x9c, 0xb2, 0x42, 0xaf, - 0x42, 0x39, 0xd8, 0x88, 0x7b, 0x3d, 0x52, 0x90, 0xf1, 0xa0, 0xe2, 0x71, 0xae, 0xd7, 0x56, 0x9b, - 0x98, 0x16, 0xa4, 0xe5, 0xa3, 0x5b, 0xae, 0x30, 0xe8, 0xe6, 0x96, 0xc7, 0x4b, 0xf5, 0xee, 0xf2, - 0x78, 0xa9, 0x8e, 0x69, 0x41, 0xb4, 0x0a, 0xc3, 0x2c, 0x40, 0x45, 0x58, 0x6b, 0x73, 0xe3, 0xf4, - 0xbb, 0x82, 0x6f, 0x78, 0xe0, 0x2b, 0x03, 0x63, 0x5e, 0x1c, 0xbd, 0x06, 0x23, 0x2d, 0x96, 0xb3, - 0x5f, 0x1c, 0xad, 0xf3, 0x73, 0x4f, 0x74, 0x65, 0xf5, 0xe7, 0x77, 0x54, 0x1c, 0x8e, 0x05, 0x07, - 0xb4, 0x0e, 0x23, 0x2d, 0xd2, 0xde, 0xda, 0x88, 0xc5, 0x89, 0xf9, 0x93, 0xb9, 0xbc, 0x7a, 0x3c, - 0x51, 0x21, 0xb8, 0x32, 0x0a, 0x2c, 0x78, 0xa1, 0x4f, 0x43, 0x69, 0xa3, 0x25, 0x62, 0x55, 0x72, - 0xad, 0xb4, 0x66, 0x30, 0xf2, 0xd2, 0xc8, 0xc1, 0x7e, 0xad, 0xb4, 0xba, 0x8c, 0x4b, 0x1b, 0x2d, - 0x74, 0x0d, 0x46, 0x37, 0x78, 0x44, 0xa9, 0xc8, 0xd4, 0xfa, 0x78, 0x7e, 0xb0, 0x6b, 0x57, 0xd0, - 0x29, 0x8f, 0xb1, 0x10, 0x08, 0x2c, 0x99, 0xa0, 0x75, 0x80, 0x0d, 0x15, 0x19, 0x2b, 0x52, 0xb5, - 0x7e, 0x7c, 0x90, 0xf8, 0x59, 0x71, 0x7c, 0x54, 0x50, 0xac, 0xf1, 0x41, 0x9f, 0x83, 0x8a, 0x23, - 0x5f, 0x61, 0x61, 0x69, 0x5a, 0xcd, 0x7d, 0x3a, 0x5d, 0x70, 0xbd, 0x1f, 0xa8, 0xe1, 0xb3, 0x55, - 0x11, 0xe1, 0x94, 0x29, 0xda, 0x86, 0xc9, 0xdd, 0xb8, 0xbd, 0x45, 0xe4, 0x02, 0x65, 0xb9, 0x5b, - 0xcd, 0xa3, 0x66, 0x9a, 0x68, 0x57, 0x10, 0x7a, 0x51, 0xd2, 0x71, 0xfc, 0x2e, 0x99, 0xc2, 0x02, - 0x72, 0x6e, 0xea, 0xcc, 0xb0, 0xc9, 0x9b, 0x76, 0xfa, 0x7b, 0x9d, 0xf0, 0xd6, 0x5e, 0x42, 0x44, - 0x46, 0xd7, 0xdc, 0x4e, 0x7f, 0x9d, 0x93, 0x74, 0x77, 0xba, 0x40, 0x60, 0xc9, 0x84, 0x2e, 0x61, - 0x47, 0xbe, 0x70, 0x24, 0xce, 0xc8, 0x4f, 0x14, 0x76, 0x4f, 0x57, 0x7b, 0xd3, 0x4e, 0x61, 0xb2, - 0x2f, 0x65, 0xc5, 0x64, 0x5e, 0x7b, 0x2b, 0x4c, 0xc2, 0x20, 0x23, 0x6f, 0x67, 0x8b, 0x65, 0x5e, - 0x23, 0x87, 0xbe, 0x5b, 0xe6, 0xe5, 0x51, 0xe1, 0xdc, 0xba, 0x90, 0x0b, 0x53, 0xed, 0x30, 0x4a, - 0x6e, 0x87, 0x91, 0x9c, 0x55, 0xa8, 0xc7, 0xe1, 0xc9, 0xa0, 0x14, 0x35, 0x32, 0xff, 0x5a, 0x13, - 0x83, 0x33, 0x3c, 0xe9, 0x90, 0xc4, 0x2d, 0xc7, 0x27, 0x6b, 0xd7, 0xab, 0x27, 0x8a, 0x87, 0xa4, - 0xc9, 0x49, 0xba, 0x87, 0x44, 0x20, 0xb0, 0x64, 0x42, 0xa5, 0x0f, 0x4b, 0x0e, 0xce, 0x52, 0xd0, - 0x16, 0x48, 0x9f, 0x2e, 0xcf, 0x53, 0x2e, 0x7d, 0x18, 0x18, 0xf3, 0xe2, 0x74, 0xe6, 0x0b, 0x9d, - 0x30, 0x8c, 0xab, 0xa7, 0x8a, 0x67, 0xbe, 0x50, 0x25, 0xaf, 0x37, 0x7b, 0xcd, 0x7c, 0x45, 0x84, - 0x53, 0xa6, 0xf6, 0x17, 0x46, 0xba, 0xb5, 0x05, 0xa6, 0xfb, 0x7f, 0xc1, 0xea, 0xba, 0x3e, 0xfd, - 0xd4, 0xa0, 0x07, 0xd6, 0x7b, 0x78, 0x91, 0xfa, 0x79, 0x0b, 0x4e, 0xb7, 0x73, 0x3f, 0x4a, 0x6c, - 0xbd, 0x83, 0x9d, 0x7b, 0x79, 0x37, 0xa8, 0xe4, 0xce, 0xf9, 0x78, 0x5c, 0x50, 0x53, 0x56, 0x47, - 0x2e, 0x7f, 0x60, 0x1d, 0xf9, 0x2a, 0x8c, 0x31, 0xf5, 0x2e, 0x4d, 0x24, 0x33, 0x90, 0x13, 0x12, - 0xdb, 0xc4, 0x97, 0x45, 0x41, 0xac, 0x58, 0xa0, 0x9f, 0xb5, 0xe0, 0xe1, 0x6c, 0xd3, 0x31, 0x61, - 0x68, 0x91, 0x98, 0x90, 0x1f, 0x3b, 0x56, 0xc5, 0xf7, 0x3f, 0xdc, 0xe8, 0x45, 0x7c, 0xd8, 0x8f, - 0x00, 0xf7, 0xae, 0x0c, 0xd5, 0x73, 0xce, 0x3d, 0x23, 0xe6, 0xed, 0x4a, 0xff, 0xb3, 0xcf, 0xf1, - 0x6a, 0xee, 0x5f, 0xb5, 0x72, 0x54, 0x4e, 0x7e, 0xc6, 0x7a, 0xc5, 0x3c, 0x63, 0x3d, 0x96, 0x3d, - 0x63, 0x75, 0x59, 0x4c, 0x8c, 0xe3, 0xd5, 0xe0, 0xa9, 0x53, 0x07, 0xcd, 0x99, 0x63, 0xfb, 0x70, - 0xae, 0x9f, 0x98, 0x65, 0x2e, 0x55, 0xae, 0xba, 0x6b, 0x4c, 0x5d, 0xaa, 0xdc, 0xb5, 0x3a, 0x66, - 0x98, 0x41, 0xb3, 0x2f, 0xd8, 0xff, 0xd5, 0x82, 0x72, 0x23, 0x74, 0x8f, 0xc1, 0x02, 0xf4, 0x19, - 0xc3, 0x02, 0xf4, 0x60, 0xc1, 0xcb, 0x87, 0x85, 0xf6, 0x9e, 0x95, 0x8c, 0xbd, 0xe7, 0xe1, 0x22, - 0x06, 0xbd, 0xad, 0x3b, 0xff, 0xa0, 0x0c, 0xfa, 0x3b, 0x8d, 0xe8, 0x5f, 0xdf, 0x8d, 0x6f, 0x6e, - 0xb9, 0xd7, 0xd3, 0x8d, 0x82, 0x33, 0xf3, 0xc4, 0x92, 0x61, 0x7f, 0x3f, 0x60, 0x2e, 0xba, 0x6f, - 0x10, 0x6f, 0x73, 0x2b, 0x21, 0x6e, 0xf6, 0x73, 0x8e, 0xcf, 0x45, 0xf7, 0x3f, 0x5b, 0x30, 0x9d, - 0xa9, 0x1d, 0xf9, 0x79, 0x31, 0x44, 0x77, 0x69, 0xd3, 0x99, 0xed, 0x1b, 0x74, 0x34, 0x0f, 0xa0, - 0xcc, 0xeb, 0xd2, 0x6e, 0xc2, 0xb4, 0x58, 0x65, 0x7f, 0x8f, 0xb1, 0x46, 0x81, 0x5e, 0x80, 0xf1, - 0x24, 0x6c, 0x87, 0x7e, 0xb8, 0xb9, 0x77, 0x99, 0xc8, 0x7c, 0x1f, 0xea, 0x12, 0x64, 0x3d, 0x45, - 0x61, 0x9d, 0xce, 0xfe, 0x95, 0x32, 0x64, 0xdf, 0xf6, 0xfc, 0x7f, 0x73, 0xf2, 0xa3, 0x39, 0x27, - 0xbf, 0x6d, 0xc1, 0x0c, 0xad, 0x9d, 0x79, 0xb9, 0x48, 0xe7, 0x56, 0xf5, 0xc6, 0x82, 0xd5, 0xe3, - 0x8d, 0x85, 0xc7, 0xa8, 0xec, 0x72, 0xc3, 0x4e, 0x22, 0xec, 0x3b, 0x9a, 0x70, 0xa2, 0x50, 0x2c, - 0xb0, 0x82, 0x8e, 0x44, 0x91, 0x88, 0x0c, 0xd2, 0xe9, 0x48, 0x14, 0x61, 0x81, 0x95, 0x4f, 0x30, - 0x0c, 0x15, 0x3c, 0xc1, 0xc0, 0x52, 0x65, 0x09, 0xcf, 0x0a, 0xa1, 0x1a, 0x68, 0xa9, 0xb2, 0xa4, - 0xcb, 0x45, 0x4a, 0x63, 0x7f, 0xad, 0x0c, 0x13, 0x8d, 0xd0, 0x4d, 0xfd, 0xe1, 0x9f, 0x37, 0xfc, - 0xe1, 0xcf, 0x65, 0xfc, 0xe1, 0x67, 0x74, 0xda, 0x7b, 0xe3, 0x0e, 0x2f, 0x12, 0xa9, 0xb1, 0x07, - 0x41, 0xee, 0xd2, 0x15, 0xde, 0x48, 0xa4, 0xa6, 0x18, 0x61, 0x93, 0xef, 0x0f, 0x93, 0x0b, 0xfc, - 0x5f, 0x5a, 0x30, 0xd5, 0x08, 0x5d, 0x3a, 0x41, 0x7f, 0x98, 0x66, 0xa3, 0x9e, 0x88, 0x6d, 0xa4, - 0x47, 0x22, 0xb6, 0x7f, 0x68, 0xc1, 0x68, 0x23, 0x74, 0x8f, 0xc1, 0xf6, 0xf9, 0x8a, 0x69, 0xfb, - 0x7c, 0xa0, 0x40, 0xca, 0x16, 0x98, 0x3b, 0x7f, 0xb3, 0x0c, 0x93, 0xb4, 0x9d, 0xe1, 0xa6, 0x1c, - 0x25, 0xa3, 0x47, 0xac, 0x01, 0x7a, 0x84, 0x2a, 0x73, 0xa1, 0xef, 0x87, 0xb7, 0xb3, 0x23, 0xb6, - 0xca, 0xa0, 0x58, 0x60, 0xd1, 0xd3, 0x30, 0xd6, 0x8e, 0xc8, 0xae, 0x17, 0x76, 0xe2, 0x6c, 0x6c, - 0x61, 0x43, 0xc0, 0xb1, 0xa2, 0x40, 0xcf, 0xc3, 0x44, 0xec, 0x05, 0x2d, 0x22, 0xbd, 0x2d, 0x86, - 0x98, 0xb7, 0x05, 0xcf, 0x65, 0xa9, 0xc1, 0xb1, 0x41, 0x85, 0xde, 0x80, 0x0a, 0xfb, 0xcf, 0xd6, - 0xcd, 0xd1, 0x5f, 0x58, 0xe0, 0x47, 0x55, 0xc9, 0x00, 0xa7, 0xbc, 0xd0, 0x05, 0x80, 0x44, 0xfa, - 0x85, 0xc4, 0x22, 0xf4, 0x55, 0x69, 0x94, 0xca, 0x63, 0x24, 0xc6, 0x1a, 0x15, 0x7a, 0x0a, 0x2a, - 0x89, 0xe3, 0xf9, 0x57, 0xbc, 0x80, 0xc4, 0xc2, 0xaf, 0x46, 0xe4, 0x87, 0x16, 0x40, 0x9c, 0xe2, - 0xe9, 0x8e, 0xce, 0x02, 0xab, 0xf9, 0xfb, 0x2c, 0x63, 0x8c, 0x9a, 0xed, 0xe8, 0x57, 0x14, 0x14, - 0x6b, 0x14, 0xf6, 0x4b, 0x70, 0xaa, 0x11, 0xba, 0x8d, 0x30, 0x4a, 0x56, 0xc3, 0xe8, 0xb6, 0x13, - 0xb9, 0x72, 0xfc, 0x6a, 0x32, 0x55, 0x31, 0xdd, 0x75, 0x87, 0xf9, 0xb9, 0xde, 0x48, 0x42, 0xfc, - 0x1c, 0xdb, 0xd3, 0x8f, 0x18, 0x04, 0xf1, 0xef, 0x4a, 0x80, 0x1a, 0xcc, 0x73, 0xc5, 0x78, 0xc4, - 0xe7, 0x1d, 0x98, 0x8a, 0xc9, 0x15, 0x2f, 0xe8, 0xdc, 0x11, 0xac, 0x7a, 0x45, 0x98, 0x34, 0x57, - 0x74, 0x4a, 0x6e, 0x1b, 0x31, 0x61, 0x38, 0xc3, 0x8d, 0x76, 0x61, 0xd4, 0x09, 0x16, 0xe3, 0x1b, - 0x31, 0x89, 0xc4, 0xa3, 0x35, 0xac, 0x0b, 0xb1, 0x04, 0xe2, 0x14, 0x4f, 0xa7, 0x0c, 0xfb, 0x73, - 0x2d, 0x0c, 0x70, 0x18, 0x26, 0x72, 0x92, 0xb1, 0x67, 0x0f, 0x34, 0x38, 0x36, 0xa8, 0xd0, 0x2a, - 0xa0, 0xb8, 0xd3, 0x6e, 0xfb, 0xec, 0xa2, 0xcf, 0xf1, 0x2f, 0x46, 0x61, 0xa7, 0xcd, 0x5d, 0x8f, - 0xc5, 0x8b, 0x01, 0xcd, 0x2e, 0x2c, 0xce, 0x29, 0x41, 0x05, 0xc3, 0x46, 0xcc, 0x7e, 0x8b, 0xd8, - 0x6a, 0x6e, 0xa5, 0x6c, 0x32, 0x10, 0x96, 0x38, 0xfb, 0xa7, 0xd9, 0x66, 0xc6, 0xde, 0x1a, 0x49, - 0x3a, 0x11, 0x41, 0x3b, 0x30, 0xd9, 0x66, 0x1b, 0x56, 0x12, 0x85, 0xbe, 0x4f, 0xa4, 0xde, 0x78, - 0x77, 0x5e, 0x34, 0xfc, 0xed, 0x01, 0x9d, 0x1d, 0x36, 0xb9, 0xdb, 0x5f, 0x98, 0x66, 0x72, 0xa9, - 0xc9, 0x0f, 0x2d, 0xa3, 0xc2, 0x37, 0x56, 0x68, 0x68, 0x73, 0xc5, 0x6f, 0x7b, 0xa5, 0x92, 0x5e, - 0xf8, 0xd7, 0x62, 0x59, 0x16, 0xbd, 0xce, 0x7c, 0xb6, 0xb9, 0x30, 0xe8, 0xf7, 0xaa, 0x20, 0xa7, - 0x32, 0xfc, 0xb5, 0x45, 0x41, 0xac, 0x31, 0x41, 0x57, 0x60, 0x52, 0x3c, 0x4d, 0x21, 0x4c, 0x08, - 0x65, 0xe3, 0xf8, 0x3b, 0x89, 0x75, 0xe4, 0x61, 0x16, 0x80, 0xcd, 0xc2, 0x68, 0x13, 0x1e, 0xd6, - 0x1e, 0x52, 0xca, 0xf1, 0xe4, 0xe2, 0xb2, 0xe5, 0x91, 0x83, 0xfd, 0xda, 0xc3, 0xeb, 0xbd, 0x08, - 0x71, 0x6f, 0x3e, 0xe8, 0x3a, 0x9c, 0x72, 0x5a, 0x89, 0xb7, 0x4b, 0xea, 0xc4, 0x71, 0x7d, 0x2f, - 0x20, 0x66, 0xb0, 0xfd, 0x99, 0x83, 0xfd, 0xda, 0xa9, 0xc5, 0x3c, 0x02, 0x9c, 0x5f, 0x0e, 0xbd, - 0x02, 0x15, 0x37, 0x88, 0x45, 0x1f, 0x8c, 0x18, 0x6f, 0x84, 0x55, 0xea, 0xd7, 0x9a, 0xea, 0xfb, - 0xd3, 0x3f, 0x38, 0x2d, 0x80, 0x36, 0x61, 0x42, 0x0f, 0xa8, 0x11, 0xef, 0xcb, 0x3d, 0xd3, 0xe3, - 0x6c, 0x6b, 0x44, 0xa1, 0x70, 0xfb, 0x99, 0xf2, 0x93, 0x34, 0x02, 0x54, 0x0c, 0xc6, 0xe8, 0x35, - 0x40, 0x31, 0x89, 0x76, 0xbd, 0x16, 0x59, 0x6c, 0xb1, 0x64, 0xaf, 0xcc, 0xea, 0x32, 0x66, 0x38, - 0xfd, 0xa3, 0x66, 0x17, 0x05, 0xce, 0x29, 0x85, 0x2e, 0x51, 0x89, 0xa2, 0x43, 0x85, 0x5b, 0xab, - 0x54, 0xf3, 0xaa, 0x75, 0xd2, 0x8e, 0x48, 0xcb, 0x49, 0x88, 0x6b, 0x72, 0xc4, 0x99, 0x72, 0x74, - 0xbf, 0x51, 0x39, 0xf4, 0xc1, 0x74, 0xc6, 0xec, 0xce, 0xa3, 0x4f, 0x4f, 0x48, 0x5b, 0x61, 0x9c, - 0x5c, 0x23, 0xc9, 0xed, 0x30, 0xda, 0x16, 0x19, 0xb2, 0xd2, 0x04, 0x7a, 0x29, 0x0a, 0xeb, 0x74, - 0x54, 0x23, 0x62, 0xd7, 0x59, 0x6b, 0x75, 0x76, 0xe3, 0x30, 0x96, 0xae, 0x93, 0x4b, 0x1c, 0x8c, - 0x25, 0x5e, 0x92, 0xae, 0x35, 0x96, 0xd9, 0x3d, 0x42, 0x86, 0x74, 0xad, 0xb1, 0x8c, 0x25, 0x1e, - 0x91, 0xee, 0xf7, 0xd7, 0xa6, 0x8a, 0x6f, 0x80, 0xba, 0xe5, 0xf2, 0x80, 0x4f, 0xb0, 0x05, 0x30, - 0xa3, 0x5e, 0x7e, 0xe3, 0xa9, 0xc3, 0xe2, 0xea, 0x34, 0x9b, 0x24, 0x83, 0xe7, 0x1d, 0x53, 0x56, - 0xb5, 0xb5, 0x0c, 0x27, 0xdc, 0xc5, 0xdb, 0x48, 0xe2, 0x30, 0xd3, 0xf7, 0x0d, 0x84, 0x05, 0xa8, - 0xc4, 0x9d, 0x5b, 0x6e, 0xb8, 0xe3, 0x78, 0x01, 0x33, 0xfb, 0xeb, 0x4f, 0xd6, 0x4b, 0x04, 0x4e, - 0x69, 0xd0, 0x2a, 0x8c, 0x39, 0xe2, 0xf0, 0x25, 0x0c, 0xf5, 0xb9, 0x51, 0xdd, 0xf2, 0x80, 0xc6, - 0x2d, 0x9a, 0xf2, 0x1f, 0x56, 0x65, 0xd1, 0xcb, 0x30, 0x29, 0x02, 0x8f, 0x84, 0xcf, 0xe0, 0x09, - 0xd3, 0x47, 0xbd, 0xa9, 0x23, 0xb1, 0x49, 0x8b, 0x7e, 0x02, 0xa6, 0x28, 0x97, 0x54, 0xb0, 0x55, - 0x4f, 0x0e, 0x22, 0x11, 0xb5, 0xdc, 0xd6, 0x7a, 0x61, 0x9c, 0x61, 0x86, 0x5c, 0x78, 0xc8, 0xe9, - 0x24, 0xe1, 0x0e, 0x9d, 0xe1, 0xe6, 0xfc, 0x5f, 0x0f, 0xb7, 0x49, 0xc0, 0xec, 0xf4, 0x63, 0x4b, - 0xe7, 0x0e, 0xf6, 0x6b, 0x0f, 0x2d, 0xf6, 0xa0, 0xc3, 0x3d, 0xb9, 0xa0, 0x1b, 0x30, 0x9e, 0x84, - 0xbe, 0x70, 0xf6, 0x8d, 0xab, 0xa7, 0x8b, 0x93, 0xd0, 0xac, 0x2b, 0x32, 0xdd, 0x9c, 0xa0, 0x8a, - 0x62, 0x9d, 0x0f, 0x5a, 0xe7, 0x6b, 0x8c, 0xa5, 0x4c, 0x24, 0x71, 0xf5, 0x81, 0xe2, 0x8e, 0x51, - 0x99, 0x15, 0xcd, 0x25, 0x28, 0x4a, 0x62, 0x9d, 0x0d, 0xba, 0x08, 0xb3, 0xed, 0xc8, 0x0b, 0xd9, - 0xc4, 0x56, 0x26, 0xdf, 0xaa, 0x91, 0x9e, 0x6c, 0xb6, 0x91, 0x25, 0xc0, 0xdd, 0x65, 0xd0, 0x79, - 0xaa, 0xa0, 0x72, 0x60, 0xf5, 0x0c, 0x7f, 0x1b, 0x83, 0x2b, 0xa7, 0x1c, 0x86, 0x15, 0x76, 0xee, - 0x47, 0x61, 0xb6, 0x4b, 0x52, 0x1e, 0xc9, 0xf1, 0xf2, 0xd7, 0x86, 0xa1, 0xa2, 0xcc, 0x81, 0x68, - 0xc1, 0xb4, 0xf2, 0x9e, 0xc9, 0x5a, 0x79, 0xc7, 0xa8, 0xbe, 0xa6, 0x1b, 0x76, 0xd7, 0x73, 0x9e, - 0xf7, 0x3e, 0x57, 0x20, 0x1a, 0x06, 0x8f, 0x92, 0x3a, 0xc2, 0xd3, 0xe7, 0xe9, 0x81, 0x71, 0xa8, - 0xe7, 0x81, 0x71, 0xc0, 0xa7, 0xf6, 0xe8, 0xd1, 0xb0, 0x1d, 0xba, 0x6b, 0x8d, 0xec, 0xdb, 0x53, - 0x0d, 0x0a, 0xc4, 0x1c, 0xc7, 0x94, 0x7b, 0xba, 0xad, 0x33, 0xe5, 0x7e, 0xf4, 0x2e, 0x95, 0x7b, - 0xc9, 0x00, 0xa7, 0xbc, 0x90, 0x0f, 0xb3, 0x2d, 0xf3, 0xd9, 0x30, 0x15, 0x19, 0xf5, 0x68, 0xdf, - 0x07, 0xbc, 0x3a, 0xda, 0x5b, 0x22, 0xcb, 0x59, 0x2e, 0xb8, 0x9b, 0x31, 0x7a, 0x19, 0xc6, 0xde, - 0x0b, 0x63, 0x36, 0xed, 0xc4, 0xde, 0x26, 0x63, 0x51, 0xc6, 0x5e, 0xbf, 0xde, 0x64, 0xf0, 0xc3, - 0xfd, 0xda, 0x78, 0x23, 0x74, 0xe5, 0x5f, 0xac, 0x0a, 0xa0, 0x3b, 0x70, 0xca, 0x90, 0x08, 0xaa, - 0xb9, 0x30, 0x78, 0x73, 0x1f, 0x16, 0xd5, 0x9d, 0x5a, 0xcb, 0xe3, 0x84, 0xf3, 0x2b, 0xb0, 0xbf, - 0xce, 0x8d, 0x9e, 0xc2, 0x34, 0x42, 0xe2, 0x8e, 0x7f, 0x1c, 0x0f, 0x06, 0xac, 0x18, 0x56, 0x9b, - 0xbb, 0x36, 0xac, 0xff, 0xbe, 0xc5, 0x0c, 0xeb, 0xeb, 0x64, 0xa7, 0xed, 0x3b, 0xc9, 0x71, 0xb8, - 0xdb, 0xbe, 0x0e, 0x63, 0x89, 0xa8, 0xad, 0xd7, 0x1b, 0x07, 0x5a, 0xa3, 0xd8, 0xe5, 0x82, 0xda, - 0x10, 0x25, 0x14, 0x2b, 0x36, 0xf6, 0x3f, 0xe7, 0x23, 0x20, 0x31, 0xc7, 0x60, 0x5b, 0xa8, 0x9b, - 0xb6, 0x85, 0x5a, 0x9f, 0x2f, 0x28, 0xb0, 0x31, 0xfc, 0x33, 0xb3, 0xdd, 0xec, 0xec, 0xf1, 0x51, - 0xbf, 0xd1, 0xb1, 0x7f, 0xd1, 0x82, 0x93, 0x79, 0x57, 0xfa, 0x54, 0x89, 0xe1, 0x27, 0x1f, 0x75, - 0xc3, 0xa5, 0x7a, 0xf0, 0xa6, 0x80, 0x63, 0x45, 0x31, 0x70, 0x9e, 0xf1, 0xa3, 0x25, 0x5e, 0xba, - 0x0e, 0xe6, 0x0b, 0x73, 0xe8, 0x55, 0xee, 0x3f, 0x6f, 0xa9, 0x27, 0xe0, 0x8e, 0xe6, 0x3b, 0x6f, - 0xff, 0x6a, 0x09, 0x4e, 0x72, 0x13, 0xf5, 0xe2, 0x6e, 0xe8, 0xb9, 0x8d, 0xd0, 0x15, 0xd1, 0x04, - 0x6f, 0xc1, 0x44, 0x5b, 0x3b, 0xae, 0xf6, 0x4a, 0xfd, 0xa2, 0x1f, 0x6b, 0xd3, 0x63, 0x83, 0x0e, - 0xc5, 0x06, 0x2f, 0xe4, 0xc2, 0x04, 0xd9, 0xf5, 0x5a, 0xca, 0xce, 0x59, 0x3a, 0xb2, 0x48, 0x57, - 0xb5, 0xac, 0x68, 0x7c, 0xb0, 0xc1, 0xf5, 0x3e, 0xbc, 0x06, 0x62, 0x7f, 0xd9, 0x82, 0x07, 0x0a, - 0x12, 0xc5, 0xd0, 0xea, 0x6e, 0xb3, 0xcb, 0x00, 0xf1, 0x5c, 0xa1, 0xaa, 0x8e, 0x5f, 0x11, 0x60, - 0x81, 0x45, 0x3f, 0x0e, 0xc0, 0x4d, 0xfc, 0xec, 0x71, 0xf8, 0x52, 0xef, 0x48, 0x74, 0x23, 0x81, - 0x82, 0x16, 0x65, 0xaf, 0x9e, 0x83, 0xd7, 0x78, 0xd9, 0xbf, 0x5c, 0x86, 0x61, 0xfe, 0x76, 0xf5, - 0x2a, 0x8c, 0x6e, 0xf1, 0xb4, 0xb4, 0x83, 0x64, 0xc0, 0x4d, 0x8f, 0x23, 0x1c, 0x80, 0x65, 0x61, - 0x74, 0x15, 0x4e, 0x88, 0x88, 0x95, 0x3a, 0xf1, 0x9d, 0x3d, 0x79, 0xaa, 0xe5, 0x4f, 0x44, 0xc8, - 0xf4, 0xe5, 0x27, 0xd6, 0xba, 0x49, 0x70, 0x5e, 0x39, 0xf4, 0x6a, 0x57, 0x32, 0x3a, 0x9e, 0xd0, - 0x57, 0xe9, 0xc0, 0x7d, 0x12, 0xd2, 0xbd, 0x0c, 0x93, 0xed, 0xae, 0xf3, 0xbb, 0xf6, 0x6c, 0xb0, - 0x79, 0x66, 0x37, 0x69, 0x99, 0x7f, 0x40, 0x87, 0x79, 0x43, 0xac, 0x6f, 0x45, 0x24, 0xde, 0x0a, - 0x7d, 0x57, 0xbc, 0x91, 0x99, 0xfa, 0x07, 0x64, 0xf0, 0xb8, 0xab, 0x04, 0xe5, 0xb2, 0xe1, 0x78, - 0x7e, 0x27, 0x22, 0x29, 0x97, 0x11, 0x93, 0xcb, 0x6a, 0x06, 0x8f, 0xbb, 0x4a, 0xd0, 0x79, 0x74, - 0x4a, 0x3c, 0xb0, 0x28, 0xe3, 0x98, 0x95, 0xd3, 0xc7, 0xa8, 0xf4, 0x54, 0xef, 0x91, 0x5b, 0x43, - 0x5c, 0xf9, 0xab, 0x27, 0x1a, 0xb5, 0xa7, 0xbb, 0x84, 0x8f, 0xba, 0xe4, 0x72, 0x37, 0xcf, 0xfc, - 0xfd, 0xa9, 0x05, 0x27, 0x72, 0x1c, 0xc1, 0xb8, 0xa8, 0xda, 0xf4, 0xe2, 0x44, 0xbd, 0x4c, 0xa0, - 0x89, 0x2a, 0x0e, 0xc7, 0x8a, 0x82, 0xae, 0x07, 0x2e, 0x0c, 0xb3, 0x02, 0x50, 0x38, 0x6f, 0x08, - 0xec, 0xd1, 0x04, 0x20, 0x3a, 0x07, 0x43, 0x9d, 0x98, 0x44, 0xf2, 0x6d, 0x3c, 0x29, 0xbf, 0x99, - 0x45, 0x90, 0x61, 0xa8, 0x46, 0xb9, 0xa9, 0x8c, 0x71, 0x9a, 0x46, 0xc9, 0xcd, 0x71, 0x1c, 0x67, - 0x7f, 0xa9, 0x0c, 0xd3, 0x19, 0x57, 0x4e, 0xda, 0x90, 0x9d, 0x30, 0xf0, 0x92, 0x50, 0xe5, 0x42, - 0xe3, 0xa9, 0x1f, 0x48, 0x7b, 0xeb, 0xaa, 0x80, 0x63, 0x45, 0x81, 0x1e, 0x93, 0x8f, 0xa6, 0x66, - 0x5f, 0x5c, 0x58, 0xaa, 0x1b, 0xef, 0xa6, 0x0e, 0xfa, 0x74, 0xca, 0xa3, 0x30, 0xd4, 0x0e, 0xd5, - 0x8b, 0xd6, 0x6a, 0x3c, 0xf1, 0x52, 0xbd, 0x11, 0x86, 0x3e, 0x66, 0x48, 0xf4, 0x09, 0xf1, 0xf5, - 0x99, 0xfb, 0x0a, 0xec, 0xb8, 0x61, 0xac, 0x75, 0xc1, 0x13, 0x30, 0xba, 0x4d, 0xf6, 0x22, 0x2f, - 0xd8, 0xcc, 0xde, 0xd6, 0x5c, 0xe6, 0x60, 0x2c, 0xf1, 0x66, 0xea, 0xf1, 0xd1, 0xfb, 0xf2, 0xfa, - 0xc9, 0x58, 0xdf, 0x5d, 0xed, 0x37, 0x2d, 0x98, 0x66, 0x79, 0x47, 0x45, 0xc4, 0xbc, 0x17, 0x06, - 0xc7, 0xa0, 0x27, 0x3c, 0x0a, 0xc3, 0x11, 0xad, 0x34, 0xfb, 0xa4, 0x01, 0x6b, 0x09, 0xe6, 0x38, - 0xf4, 0x10, 0x0c, 0xb1, 0x26, 0xd0, 0xc1, 0x9b, 0xe0, 0x99, 0xc7, 0xeb, 0x4e, 0xe2, 0x60, 0x06, - 0x65, 0xa1, 0x4b, 0x98, 0xb4, 0x7d, 0x8f, 0x37, 0x3a, 0x35, 0xb7, 0x7e, 0x34, 0x42, 0x97, 0x72, - 0x9b, 0xf6, 0xc1, 0x42, 0x97, 0xf2, 0x59, 0xf6, 0xd6, 0xc1, 0xff, 0x5b, 0x09, 0xce, 0xe6, 0x96, - 0x4b, 0x6f, 0x76, 0x57, 0x8d, 0x9b, 0xdd, 0x0b, 0x99, 0x9b, 0x5d, 0xbb, 0x77, 0xe9, 0x7b, 0x73, - 0xd7, 0x9b, 0x7f, 0x05, 0x5b, 0x3e, 0xc6, 0x2b, 0xd8, 0xa1, 0x41, 0xd5, 0x94, 0xe1, 0x3e, 0x6a, - 0xca, 0xb7, 0x2c, 0x38, 0x93, 0xdb, 0x65, 0x1f, 0x91, 0x58, 0xb1, 0xdc, 0xb6, 0x15, 0x9c, 0x21, - 0xbe, 0x5f, 0x2a, 0xf8, 0x16, 0x76, 0x9a, 0x38, 0x4f, 0xe5, 0x0c, 0x43, 0xc6, 0x42, 0xed, 0x9a, - 0xe0, 0x32, 0x86, 0xc3, 0xb0, 0xc2, 0x22, 0x4f, 0x8b, 0xba, 0xe2, 0x4d, 0x7b, 0xf9, 0x48, 0x4b, - 0x66, 0xde, 0xb4, 0x8e, 0xeb, 0xe1, 0xfd, 0xd9, 0x08, 0xac, 0xab, 0xda, 0x09, 0xb0, 0x3c, 0xf8, - 0x09, 0x70, 0x22, 0xff, 0xf4, 0x87, 0x16, 0x61, 0x7a, 0xc7, 0x0b, 0xd8, 0xbb, 0xa4, 0xa6, 0xde, - 0xa3, 0x42, 0x55, 0xaf, 0x9a, 0x68, 0x9c, 0xa5, 0x9f, 0x7b, 0x19, 0x26, 0xef, 0xde, 0x64, 0xf5, - 0xed, 0x32, 0x3c, 0xd8, 0x63, 0xd9, 0x73, 0x59, 0x6f, 0x8c, 0x81, 0x26, 0xeb, 0xbb, 0xc6, 0xa1, - 0x01, 0x27, 0x37, 0x3a, 0xbe, 0xbf, 0xc7, 0xbc, 0x9c, 0x88, 0x2b, 0x29, 0x84, 0x62, 0xa2, 0x92, - 0x0a, 0xaf, 0xe6, 0xd0, 0xe0, 0xdc, 0x92, 0xe8, 0x35, 0x40, 0xe1, 0x2d, 0x96, 0xe8, 0xd6, 0x4d, - 0x93, 0x16, 0xb0, 0x8e, 0x2f, 0xa7, 0x8b, 0xf1, 0x7a, 0x17, 0x05, 0xce, 0x29, 0x45, 0x35, 0x4c, - 0xf6, 0x9a, 0xba, 0x6a, 0x56, 0x46, 0xc3, 0xc4, 0x3a, 0x12, 0x9b, 0xb4, 0xe8, 0x22, 0xcc, 0x3a, - 0xbb, 0x8e, 0xc7, 0x93, 0x58, 0x49, 0x06, 0x5c, 0xc5, 0x54, 0x86, 0xa2, 0xc5, 0x2c, 0x01, 0xee, - 0x2e, 0x83, 0x36, 0x0c, 0x2b, 0x1f, 0xcf, 0xa1, 0x7f, 0x61, 0xe0, 0xd9, 0x3a, 0xb0, 0xdd, 0xcf, - 0xfe, 0x8f, 0x16, 0xdd, 0xbe, 0x72, 0x1e, 0xc2, 0xa4, 0xfd, 0xa0, 0xec, 0x57, 0x5a, 0xc4, 0x98, - 0xea, 0x87, 0x65, 0x1d, 0x89, 0x4d, 0x5a, 0x3e, 0x21, 0xe2, 0xd4, 0x5d, 0xda, 0xd0, 0x13, 0x45, - 0x88, 0xa5, 0xa2, 0x40, 0x6f, 0xc2, 0xa8, 0xeb, 0xed, 0x7a, 0x71, 0x18, 0x89, 0xc5, 0x72, 0xd4, - 0x07, 0xa0, 0x95, 0x1c, 0xac, 0x73, 0x36, 0x58, 0xf2, 0xb3, 0xbf, 0x54, 0x82, 0x49, 0x59, 0xe3, - 0xeb, 0x9d, 0x30, 0x71, 0x8e, 0x61, 0x5b, 0xbe, 0x68, 0x6c, 0xcb, 0x9f, 0xe8, 0x15, 0x67, 0xca, - 0x9a, 0x54, 0xb8, 0x1d, 0x5f, 0xcf, 0x6c, 0xc7, 0x8f, 0xf7, 0x67, 0xd5, 0x7b, 0x1b, 0xfe, 0x1d, - 0x0b, 0x66, 0x0d, 0xfa, 0x63, 0xd8, 0x0d, 0x56, 0xcd, 0xdd, 0xe0, 0x91, 0xbe, 0xdf, 0x50, 0xb0, - 0x0b, 0x7c, 0xb5, 0x94, 0x69, 0x3b, 0x93, 0xfe, 0xef, 0xc1, 0xd0, 0x96, 0x13, 0xb9, 0xbd, 0x52, - 0x31, 0x76, 0x15, 0x9a, 0xbf, 0xe4, 0x44, 0x2e, 0x97, 0xe1, 0x4f, 0xab, 0x37, 0xba, 0x9c, 0xc8, - 0xed, 0x1b, 0x1d, 0xc0, 0xaa, 0x42, 0x2f, 0xc1, 0x48, 0xdc, 0x0a, 0xdb, 0xca, 0xf7, 0xf2, 0x1c, - 0x7f, 0xbf, 0x8b, 0x42, 0x0e, 0xf7, 0x6b, 0xc8, 0xac, 0x8e, 0x82, 0xb1, 0xa0, 0x9f, 0xdb, 0x84, - 0x8a, 0xaa, 0xfa, 0xbe, 0x7a, 0x95, 0xff, 0x51, 0x19, 0x4e, 0xe4, 0xcc, 0x0b, 0x14, 0x1b, 0xbd, - 0xf5, 0xec, 0x80, 0xd3, 0xe9, 0x03, 0xf6, 0x57, 0xcc, 0x4e, 0x2c, 0xae, 0x18, 0xff, 0x81, 0x2b, - 0xbd, 0x11, 0x93, 0x6c, 0xa5, 0x14, 0xd4, 0xbf, 0x52, 0x5a, 0xd9, 0xb1, 0x75, 0x35, 0xad, 0x48, - 0xb5, 0xf4, 0xbe, 0x8e, 0xe9, 0x9f, 0x97, 0xe1, 0x64, 0x5e, 0x78, 0x3a, 0xfa, 0xa9, 0xcc, 0xc3, - 0x0e, 0xcf, 0x0f, 0x1a, 0xd8, 0xce, 0x5f, 0x7b, 0x10, 0x59, 0x5f, 0xe6, 0xcd, 0xa7, 0x1e, 0xfa, - 0x76, 0xb3, 0xa8, 0x93, 0x85, 0xeb, 0x44, 0xfc, 0x41, 0x0e, 0xb9, 0xc4, 0x3f, 0x35, 0x70, 0x03, - 0xc4, 0x4b, 0x1e, 0x71, 0x26, 0x5c, 0x47, 0x82, 0xfb, 0x87, 0xeb, 0xc8, 0x9a, 0xe7, 0x3c, 0x18, - 0xd7, 0xbe, 0xe6, 0xbe, 0x8e, 0xf8, 0x36, 0xdd, 0x51, 0xb4, 0x76, 0xdf, 0xd7, 0x51, 0xff, 0xb2, - 0x05, 0x19, 0x3f, 0x29, 0x65, 0xff, 0xb0, 0x0a, 0xed, 0x1f, 0xe7, 0x60, 0x28, 0x0a, 0x7d, 0x92, - 0xcd, 0xf5, 0x8f, 0x43, 0x9f, 0x60, 0x86, 0x51, 0x0f, 0xf2, 0x96, 0x8b, 0x1e, 0xe4, 0xa5, 0x47, - 0x63, 0x9f, 0xec, 0x12, 0x69, 0x8d, 0x50, 0x32, 0xf9, 0x0a, 0x05, 0x62, 0x8e, 0xb3, 0x7f, 0x7d, - 0x08, 0x4e, 0xe4, 0x04, 0xa7, 0xd1, 0x83, 0xca, 0xa6, 0x93, 0x90, 0xdb, 0xce, 0x5e, 0x36, 0xff, - 0xe8, 0x45, 0x0e, 0xc6, 0x12, 0xcf, 0x7c, 0x39, 0x79, 0x0a, 0xb3, 0x8c, 0x8d, 0x48, 0x64, 0x2e, - 0x13, 0xd8, 0xfb, 0xf5, 0x46, 0xeb, 0x05, 0x80, 0x38, 0xf6, 0x57, 0x02, 0xaa, 0x7c, 0xb9, 0xc2, - 0x53, 0x34, 0xcd, 0x77, 0xd7, 0xbc, 0x22, 0x30, 0x58, 0xa3, 0x42, 0x75, 0x98, 0x69, 0x47, 0x61, - 0xc2, 0xed, 0x6e, 0x75, 0xee, 0xa3, 0x30, 0x6c, 0x86, 0x19, 0x35, 0x32, 0x78, 0xdc, 0x55, 0x02, - 0xbd, 0x00, 0xe3, 0x22, 0xf4, 0xa8, 0x11, 0x86, 0xbe, 0xb0, 0xd2, 0xa8, 0x1b, 0xef, 0x66, 0x8a, - 0xc2, 0x3a, 0x9d, 0x56, 0x8c, 0x19, 0xf3, 0x46, 0x73, 0x8b, 0x71, 0x83, 0x9e, 0x46, 0x97, 0xc9, - 0x52, 0x31, 0x36, 0x50, 0x96, 0x8a, 0xd4, 0x6e, 0x55, 0x19, 0xf8, 0xfe, 0x02, 0xfa, 0x5a, 0x7a, - 0xbe, 0x5e, 0x86, 0x11, 0x3e, 0x14, 0xc7, 0xa0, 0x8a, 0xad, 0x0a, 0xdb, 0x4d, 0x8f, 0xdc, 0x00, - 0xbc, 0x2d, 0xf3, 0x75, 0x27, 0x71, 0xb8, 0x18, 0x52, 0xab, 0x21, 0xb5, 0xf2, 0xa0, 0x79, 0x63, - 0xbd, 0xcc, 0x65, 0x8c, 0x13, 0xc0, 0x79, 0x68, 0xab, 0xe7, 0x1d, 0x80, 0x98, 0xbd, 0x13, 0x4a, - 0x79, 0x88, 0x5c, 0xa6, 0x4f, 0xf6, 0xa8, 0xbd, 0xa9, 0x88, 0x79, 0x1b, 0xd2, 0x29, 0xa8, 0x10, - 0x58, 0xe3, 0x38, 0xf7, 0x22, 0x54, 0x14, 0x71, 0xbf, 0x93, 0xdc, 0x84, 0x2e, 0xbc, 0x3e, 0x03, - 0xd3, 0x99, 0xba, 0x8e, 0x74, 0x10, 0xfc, 0x2d, 0x0b, 0xa6, 0x79, 0x93, 0x57, 0x82, 0x5d, 0xb1, - 0xd8, 0xdf, 0x87, 0x93, 0x7e, 0xce, 0xa2, 0x13, 0x23, 0x3a, 0xf8, 0x22, 0x55, 0x07, 0xbf, 0x3c, - 0x2c, 0xce, 0xad, 0x83, 0x1e, 0xfe, 0xf9, 0x0b, 0xc7, 0x8e, 0x2f, 0x3c, 0x90, 0x27, 0x78, 0x8e, - 0x67, 0x0e, 0xc3, 0x0a, 0x6b, 0x7f, 0xc7, 0x82, 0xd9, 0xae, 0xf7, 0xf1, 0x3f, 0xd4, 0xb6, 0x8b, - 0x14, 0xd6, 0xa5, 0x82, 0x14, 0xd6, 0xfa, 0xa7, 0x95, 0x7b, 0x7e, 0xda, 0xaf, 0x5a, 0x20, 0x66, - 0xe0, 0x31, 0xa8, 0xf3, 0x3f, 0x6a, 0xaa, 0xf3, 0x73, 0xc5, 0x93, 0xba, 0x40, 0x8f, 0xff, 0x4b, - 0x0b, 0x66, 0x38, 0x41, 0x7a, 0x79, 0xf1, 0xa1, 0x8e, 0xc3, 0x20, 0xef, 0xaa, 0xa8, 0x87, 0x2c, - 0xf3, 0x3f, 0xca, 0x18, 0xac, 0xa1, 0x9e, 0x83, 0xe5, 0xca, 0x05, 0x74, 0x84, 0xf7, 0x82, 0x8e, - 0x9c, 0x75, 0xcd, 0xfe, 0x33, 0x0b, 0x10, 0xaf, 0x26, 0xfb, 0xb4, 0x34, 0xdf, 0xfa, 0xb4, 0x03, - 0x7d, 0x2a, 0x6a, 0x14, 0x06, 0x6b, 0x54, 0xf7, 0xa4, 0x7b, 0x32, 0x37, 0x50, 0xe5, 0xfe, 0x37, - 0x50, 0x47, 0xe8, 0xd1, 0xbf, 0x31, 0x04, 0x59, 0x77, 0x47, 0x74, 0x13, 0x26, 0x5a, 0x4e, 0xdb, - 0xb9, 0xe5, 0xf9, 0x5e, 0xe2, 0x91, 0xb8, 0xd7, 0xd5, 0xf5, 0xb2, 0x46, 0x27, 0xae, 0x7b, 0x34, - 0x08, 0x36, 0xf8, 0xa0, 0x79, 0x80, 0x76, 0xe4, 0xed, 0x7a, 0x3e, 0xd9, 0x64, 0x27, 0x1a, 0x16, - 0xf3, 0xc0, 0xef, 0x63, 0x25, 0x14, 0x6b, 0x14, 0x39, 0x3e, 0xf2, 0xe5, 0xfb, 0xe7, 0x23, 0x3f, - 0x74, 0x44, 0x1f, 0xf9, 0xe1, 0x81, 0x7c, 0xe4, 0x31, 0x9c, 0x96, 0x7b, 0x37, 0xfd, 0xbf, 0xea, - 0xf9, 0x44, 0x28, 0x6c, 0x3c, 0x12, 0x62, 0xee, 0x60, 0xbf, 0x76, 0x1a, 0xe7, 0x52, 0xe0, 0x82, - 0x92, 0xe8, 0xc7, 0xa1, 0xea, 0xf8, 0x7e, 0x78, 0x5b, 0xf5, 0xda, 0x4a, 0xdc, 0x72, 0xfc, 0x34, - 0x09, 0xe9, 0xd8, 0xd2, 0x43, 0x07, 0xfb, 0xb5, 0xea, 0x62, 0x01, 0x0d, 0x2e, 0x2c, 0x6d, 0x6f, - 0xc3, 0x89, 0x26, 0x89, 0xe4, 0x13, 0x64, 0x6a, 0x89, 0xad, 0x43, 0x25, 0xca, 0x08, 0x95, 0x81, - 0x02, 0xdf, 0xb5, 0xd4, 0x5f, 0x52, 0x88, 0xa4, 0x8c, 0xec, 0xbf, 0xb0, 0x60, 0x54, 0xb8, 0x50, - 0x1e, 0x83, 0x2e, 0xb3, 0x68, 0x98, 0x95, 0x6a, 0xf9, 0x82, 0x97, 0x35, 0xa6, 0xd0, 0xa0, 0xb4, - 0x96, 0x31, 0x28, 0x3d, 0xd2, 0x8b, 0x49, 0x6f, 0x53, 0xd2, 0x2f, 0x94, 0x61, 0xca, 0x74, 0x1f, - 0x3d, 0x86, 0x2e, 0xb8, 0x06, 0xa3, 0xb1, 0xf0, 0x55, 0x2e, 0x15, 0xfb, 0xbc, 0x65, 0x07, 0x31, - 0xbd, 0x19, 0x17, 0xde, 0xc9, 0x92, 0x49, 0xae, 0x13, 0x74, 0xf9, 0x3e, 0x3a, 0x41, 0xf7, 0xf3, - 0xe0, 0x1d, 0xba, 0x17, 0x1e, 0xbc, 0xf6, 0x37, 0x98, 0xf0, 0xd7, 0xe1, 0xc7, 0xa0, 0x17, 0x5c, - 0x34, 0xb7, 0x09, 0xbb, 0xc7, 0xcc, 0x12, 0x8d, 0x2a, 0xd0, 0x0f, 0xfe, 0x89, 0x05, 0xe3, 0x82, - 0xf0, 0x18, 0x9a, 0xfd, 0x63, 0x66, 0xb3, 0x1f, 0xec, 0xd1, 0xec, 0x82, 0xf6, 0xfe, 0xdd, 0x92, - 0x6a, 0x6f, 0x23, 0x8c, 0x92, 0x81, 0x92, 0x52, 0x8f, 0xd1, 0xd3, 0x60, 0xd8, 0x0a, 0x7d, 0xb1, - 0x99, 0x3f, 0x94, 0x06, 0xc3, 0x71, 0xf8, 0xa1, 0xf6, 0x1b, 0x2b, 0x6a, 0x16, 0xab, 0x15, 0x46, - 0x89, 0xd8, 0x40, 0xd3, 0x58, 0xad, 0x30, 0x4a, 0x30, 0xc3, 0x20, 0x17, 0x20, 0x7d, 0x9b, 0x5d, - 0x44, 0x8f, 0x16, 0xaf, 0xc2, 0x4e, 0xe2, 0xf9, 0xf3, 0x5e, 0x90, 0xc4, 0x49, 0x34, 0xbf, 0x16, - 0x24, 0xd7, 0x23, 0x7e, 0x36, 0xd0, 0xa2, 0xdb, 0x14, 0x2f, 0xac, 0xf1, 0x95, 0xe1, 0x15, 0xac, - 0x8e, 0x61, 0xf3, 0xbe, 0xe7, 0x9a, 0x80, 0x63, 0x45, 0x61, 0xbf, 0xc8, 0x64, 0x32, 0xeb, 0xa0, - 0xa3, 0x05, 0x9e, 0xfd, 0xf1, 0xa8, 0xea, 0x5a, 0x66, 0xec, 0xad, 0xeb, 0xe1, 0x6d, 0xbd, 0x45, - 0x20, 0xad, 0x58, 0x77, 0x25, 0x4e, 0x63, 0xe0, 0xd0, 0x67, 0xbb, 0xae, 0x01, 0x9f, 0xe9, 0x23, - 0x4b, 0x8f, 0x70, 0xf1, 0xc7, 0x72, 0xec, 0xb1, 0x5c, 0x64, 0x6b, 0x8d, 0x6c, 0xda, 0xf0, 0x65, - 0x89, 0xc0, 0x29, 0x0d, 0x5a, 0x10, 0x27, 0x4b, 0x6e, 0x66, 0x79, 0x30, 0x73, 0xb2, 0x94, 0x9f, - 0xaf, 0x1d, 0x2d, 0x9f, 0x85, 0x71, 0xf5, 0x14, 0x4b, 0x83, 0xbf, 0x68, 0x51, 0xe1, 0xba, 0xd4, - 0x4a, 0x0a, 0xc6, 0x3a, 0x0d, 0x5a, 0x87, 0xe9, 0x98, 0xbf, 0x13, 0x23, 0x23, 0x1e, 0x84, 0xdd, - 0xe0, 0xc9, 0xcc, 0x2b, 0xf0, 0x12, 0x7d, 0xc8, 0x40, 0x7c, 0xb1, 0xca, 0x18, 0x89, 0x2c, 0x0b, - 0xf4, 0x2a, 0x4c, 0xf9, 0xfa, 0x7b, 0x99, 0x0d, 0x61, 0x56, 0x50, 0xae, 0x5c, 0xc6, 0x6b, 0x9a, - 0x0d, 0x9c, 0xa1, 0xa6, 0x4a, 0x80, 0x0e, 0x11, 0xa9, 0x70, 0x9c, 0x60, 0x93, 0xc4, 0xe2, 0x21, - 0x09, 0xa6, 0x04, 0x5c, 0x29, 0xa0, 0xc1, 0x85, 0xa5, 0xd1, 0x4b, 0x30, 0x21, 0x3f, 0x5f, 0x8b, - 0x00, 0x4a, 0x1d, 0x06, 0x35, 0x1c, 0x36, 0x28, 0xd1, 0x6d, 0x38, 0x25, 0xff, 0xaf, 0x47, 0xce, - 0xc6, 0x86, 0xd7, 0x12, 0x01, 0x58, 0xe3, 0x8c, 0xc5, 0xa2, 0xf4, 0x9e, 0x5e, 0xc9, 0x23, 0x3a, - 0xdc, 0xaf, 0x9d, 0x13, 0xbd, 0x96, 0x8b, 0x67, 0x83, 0x98, 0xcf, 0x1f, 0x5d, 0x85, 0x13, 0x5b, - 0xc4, 0xf1, 0x93, 0xad, 0xe5, 0x2d, 0xd2, 0xda, 0x96, 0x8b, 0x88, 0xc5, 0x15, 0x69, 0x6e, 0x76, - 0x97, 0xba, 0x49, 0x70, 0x5e, 0x39, 0xf4, 0x36, 0x54, 0xdb, 0x9d, 0x5b, 0xbe, 0x17, 0x6f, 0x5d, - 0x0b, 0x13, 0x76, 0x63, 0xa9, 0x5e, 0x32, 0x11, 0x01, 0x48, 0x2a, 0xa6, 0xaa, 0x51, 0x40, 0x87, - 0x0b, 0x39, 0x7c, 0xb0, 0xbb, 0xe4, 0xf7, 0x68, 0x61, 0x4d, 0xc3, 0x40, 0x9f, 0x83, 0x09, 0x7d, - 0x24, 0x85, 0x90, 0x7f, 0xac, 0xdf, 0xfb, 0xac, 0x42, 0x3f, 0x51, 0xa3, 0xaa, 0xe3, 0xb0, 0xc1, - 0xd1, 0xfe, 0xbd, 0x12, 0xd4, 0xfa, 0x64, 0xaa, 0xca, 0x18, 0xc8, 0xac, 0x81, 0x0c, 0x64, 0x8b, - 0xf2, 0xd1, 0x92, 0x6b, 0x99, 0xc3, 0x59, 0xe6, 0x41, 0x92, 0xf4, 0x88, 0x96, 0xa5, 0x1f, 0xd8, - 0x37, 0x4c, 0xb7, 0xb1, 0x0d, 0xf5, 0x75, 0x91, 0x6b, 0xe8, 0xc6, 0xd2, 0xe1, 0xc1, 0xd5, 0xdd, - 0x42, 0x3b, 0xa9, 0xfd, 0x8d, 0x12, 0x9c, 0x52, 0x5d, 0xf8, 0xc3, 0xdb, 0x71, 0x37, 0xba, 0x3b, - 0xee, 0x1e, 0x58, 0x99, 0xed, 0xeb, 0x30, 0xd2, 0xdc, 0x8b, 0x5b, 0x89, 0x3f, 0x80, 0x76, 0xf0, - 0xa8, 0xb1, 0x72, 0xd2, 0x3d, 0x8c, 0xbd, 0x3b, 0x26, 0x16, 0x92, 0xfd, 0x57, 0x2d, 0x98, 0x5e, - 0x5f, 0x6e, 0x34, 0xc3, 0xd6, 0x36, 0x49, 0x16, 0xb9, 0x0d, 0x05, 0x0b, 0xe5, 0xc0, 0xba, 0xcb, - 0x4d, 0x3f, 0x4f, 0x9d, 0x38, 0x07, 0x43, 0x5b, 0x61, 0x9c, 0x64, 0x6f, 0x12, 0x2e, 0x85, 0x71, - 0x82, 0x19, 0xc6, 0xfe, 0x13, 0x0b, 0x86, 0xd9, 0x53, 0x5b, 0xfd, 0x9e, 0x64, 0x1b, 0xe4, 0xbb, - 0xd0, 0x0b, 0x30, 0x42, 0x36, 0x36, 0x48, 0x2b, 0x11, 0xa3, 0x2a, 0xc3, 0x55, 0x46, 0x56, 0x18, - 0x94, 0xee, 0x88, 0xac, 0x32, 0xfe, 0x17, 0x0b, 0x62, 0xf4, 0x59, 0xa8, 0x24, 0xde, 0x0e, 0x59, - 0x74, 0x5d, 0x61, 0xc4, 0x3f, 0x9a, 0xbf, 0x96, 0xda, 0xa1, 0xd7, 0x25, 0x13, 0x9c, 0xf2, 0xb3, - 0x7f, 0xae, 0x04, 0x90, 0x86, 0xb5, 0xf5, 0xfb, 0xcc, 0xa5, 0xae, 0x97, 0xe7, 0x1e, 0xcb, 0x79, - 0x79, 0x0e, 0xa5, 0x0c, 0x73, 0xde, 0x9d, 0x53, 0x5d, 0x55, 0x1e, 0xa8, 0xab, 0x86, 0x8e, 0xd2, - 0x55, 0xcb, 0x30, 0x9b, 0x86, 0xe5, 0x99, 0x31, 0xca, 0x2c, 0x2b, 0xed, 0x7a, 0x16, 0x89, 0xbb, - 0xe9, 0xed, 0x2f, 0x5a, 0x20, 0x7c, 0x78, 0x07, 0x98, 0xd0, 0x6f, 0xc9, 0x47, 0xa2, 0x8c, 0xf4, - 0x79, 0xe7, 0x8a, 0x9d, 0x9a, 0x45, 0xd2, 0x3c, 0x25, 0xd9, 0x8d, 0x54, 0x79, 0x06, 0x2f, 0xfb, - 0x77, 0x2c, 0x18, 0xe7, 0xe8, 0xab, 0xec, 0x08, 0xda, 0xbf, 0x35, 0x47, 0xca, 0x69, 0xcc, 0xde, - 0x4f, 0xa2, 0x8c, 0x55, 0xea, 0x5b, 0xfd, 0xfd, 0x24, 0x89, 0xc0, 0x29, 0x0d, 0x7a, 0x02, 0x46, - 0xe3, 0xce, 0x2d, 0x46, 0x9e, 0x71, 0xe3, 0x6d, 0x72, 0x30, 0x96, 0x78, 0x3a, 0xaf, 0x66, 0xb2, - 0x5e, 0xdc, 0xe8, 0x12, 0x8c, 0x70, 0xb1, 0x21, 0x96, 0x71, 0x8f, 0x2b, 0x0b, 0xcd, 0xf7, 0x1b, - 0xf8, 0x83, 0xdf, 0x4c, 0xdc, 0x88, 0xf2, 0xe8, 0x6d, 0x18, 0x77, 0xc3, 0xdb, 0xc1, 0x6d, 0x27, - 0x72, 0x17, 0x1b, 0x6b, 0xa2, 0xd7, 0x73, 0x7d, 0xf1, 0xea, 0x29, 0x99, 0xee, 0x4f, 0xce, 0xcc, - 0x73, 0x29, 0x0a, 0xeb, 0xec, 0xd0, 0x3a, 0xcb, 0x14, 0xc2, 0x9f, 0x21, 0xed, 0xe5, 0x9d, 0xa2, - 0x5e, 0x2e, 0xd5, 0x38, 0x4f, 0x8a, 0x74, 0x22, 0xe2, 0x11, 0xd3, 0x94, 0x91, 0xfd, 0xf9, 0x13, - 0x60, 0x8c, 0xb6, 0x91, 0x79, 0xd8, 0xba, 0x47, 0x99, 0x87, 0x31, 0x8c, 0x91, 0x9d, 0x76, 0xb2, - 0x57, 0xf7, 0xa2, 0x5e, 0xa9, 0xe0, 0x57, 0x04, 0x4d, 0x37, 0x4f, 0x89, 0xc1, 0x8a, 0x4f, 0x7e, - 0x7a, 0xe8, 0xf2, 0x87, 0x98, 0x1e, 0x7a, 0xe8, 0x18, 0xd3, 0x43, 0x5f, 0x83, 0xd1, 0x4d, 0x2f, - 0xc1, 0xa4, 0x1d, 0x8a, 0x2d, 0x33, 0x77, 0x26, 0x5c, 0xe4, 0x24, 0xdd, 0x49, 0x4c, 0x05, 0x02, - 0x4b, 0x26, 0xe8, 0x35, 0xb5, 0x06, 0x46, 0x8a, 0x55, 0xc1, 0x6e, 0xeb, 0x76, 0xee, 0x2a, 0x10, - 0xe9, 0xa0, 0x47, 0xef, 0x36, 0x1d, 0xb4, 0x4a, 0xe7, 0x3c, 0xf6, 0xc1, 0xd2, 0x39, 0x1b, 0xe9, - 0xae, 0x2b, 0xf7, 0x2e, 0xdd, 0xf5, 0x17, 0x2d, 0x38, 0xd5, 0xce, 0xcb, 0xfc, 0x2e, 0x12, 0x33, - 0xbf, 0x30, 0x70, 0x06, 0x7c, 0xa3, 0x42, 0x96, 0xae, 0x22, 0x97, 0x0c, 0xe7, 0x57, 0x27, 0xf3, - 0x66, 0x8f, 0xdf, 0x6d, 0xde, 0xec, 0xfb, 0x93, 0xc1, 0x39, 0xcd, 0xa2, 0x3d, 0xf9, 0x81, 0xb3, - 0x68, 0xbf, 0xa6, 0xb2, 0x68, 0xf7, 0xc8, 0xc7, 0xc0, 0x73, 0x64, 0xf7, 0xcd, 0x9d, 0xad, 0xe5, - 0xbf, 0x9e, 0xbe, 0x17, 0xf9, 0xaf, 0xdf, 0x31, 0x85, 0x3d, 0x4f, 0xc6, 0xfc, 0x54, 0x1f, 0x61, - 0x6f, 0xf0, 0xed, 0x2d, 0xee, 0x79, 0xae, 0xef, 0xd9, 0xbb, 0xca, 0xf5, 0x7d, 0x53, 0xcf, 0xa2, - 0x8d, 0xfa, 0xa4, 0x89, 0xa6, 0x44, 0x03, 0xe6, 0xce, 0xbe, 0xa9, 0x6f, 0x41, 0x27, 0x8a, 0xf9, - 0xaa, 0x9d, 0xa6, 0x9b, 0x6f, 0xde, 0x26, 0xd4, 0x9d, 0x93, 0xfb, 0xe4, 0xf1, 0xe4, 0xe4, 0x3e, - 0x75, 0xcf, 0x73, 0x72, 0x9f, 0x3e, 0x86, 0x9c, 0xdc, 0x0f, 0x7c, 0xa8, 0x39, 0xb9, 0xab, 0xf7, - 0x37, 0x27, 0xf7, 0x99, 0x7b, 0x91, 0x93, 0xfb, 0x26, 0x54, 0xda, 0x32, 0xd0, 0xaf, 0x3a, 0x57, - 0x3c, 0x24, 0xb9, 0xd1, 0x80, 0x7c, 0x48, 0x14, 0x0a, 0xa7, 0xac, 0x28, 0xdf, 0x34, 0x47, 0xf7, - 0x83, 0xc5, 0x7c, 0x73, 0x8f, 0xed, 0x3d, 0x32, 0x73, 0xff, 0xb5, 0x12, 0x9c, 0xed, 0x3d, 0xaf, - 0xd3, 0x33, 0x7f, 0x23, 0x35, 0xe0, 0x66, 0xce, 0xfc, 0x4c, 0xe9, 0xd2, 0xa8, 0x06, 0x8e, 0x86, - 0xbe, 0x08, 0xb3, 0xca, 0xdf, 0xc9, 0xf7, 0x5a, 0x7b, 0xda, 0xb3, 0x3a, 0xca, 0x85, 0xbe, 0x99, - 0x25, 0xc0, 0xdd, 0x65, 0xd0, 0x22, 0x4c, 0x1b, 0xc0, 0xb5, 0xba, 0x50, 0xc9, 0x95, 0x91, 0xa1, - 0x69, 0xa2, 0x71, 0x96, 0xde, 0xfe, 0xaa, 0x05, 0x0f, 0x14, 0xa4, 0xf7, 0x1c, 0x38, 0xd8, 0x77, - 0x03, 0xa6, 0xdb, 0x66, 0xd1, 0x3e, 0x39, 0x01, 0x8c, 0x24, 0xa2, 0xaa, 0xad, 0x19, 0x04, 0xce, - 0x32, 0x5d, 0x3a, 0xff, 0xcd, 0xef, 0x9e, 0xfd, 0xd8, 0x1f, 0x7e, 0xf7, 0xec, 0xc7, 0xbe, 0xf3, - 0xdd, 0xb3, 0x1f, 0xfb, 0xff, 0x0e, 0xce, 0x5a, 0xdf, 0x3c, 0x38, 0x6b, 0xfd, 0xe1, 0xc1, 0x59, - 0xeb, 0x3b, 0x07, 0x67, 0xad, 0x3f, 0x3d, 0x38, 0x6b, 0xfd, 0xdc, 0xf7, 0xce, 0x7e, 0xec, 0xad, - 0xd2, 0xee, 0xb3, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0x42, 0x9f, 0x1b, 0x58, 0x12, 0xcd, 0x00, - 0x00, + // 11721 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x90, 0x24, 0xc7, + 0x71, 0x18, 0x7b, 0x66, 0x5f, 0x93, 0xfb, 0xae, 0xbb, 0x03, 0xe6, 0x16, 0xc0, 0xed, 0xa1, 0x41, + 0x02, 0x87, 0xd7, 0x2e, 0x71, 0x00, 0x08, 0x88, 0x00, 0x41, 0xee, 0xee, 0xec, 0xde, 0x0d, 0xee, + 0x35, 0xa8, 0xd9, 0x3b, 0x08, 0x20, 0x04, 0xb1, 0x6f, 0xba, 0x76, 0xb7, 0xb1, 0xbd, 0xdd, 0x83, + 0xee, 0x9e, 0xbd, 0x5b, 0x84, 0x18, 0x61, 0xd3, 0x14, 0xfd, 0xa0, 0x3e, 0x14, 0x0e, 0x85, 0x2d, + 0x8b, 0x0c, 0x39, 0xc2, 0x8f, 0x90, 0x68, 0xd9, 0x0e, 0xc9, 0x94, 0xf5, 0x20, 0xe5, 0xb0, 0x2c, + 0x3f, 0x82, 0xfc, 0xa1, 0x25, 0xff, 0x90, 0x11, 0x0e, 0xaf, 0xc4, 0xa5, 0xc3, 0x0e, 0x7d, 0xd8, + 0x61, 0x5b, 0x5f, 0x5a, 0xcb, 0xa6, 0xa3, 0x9e, 0x5d, 0xd5, 0xd3, 0x3d, 0x33, 0x7b, 0xb8, 0x5b, + 0x80, 0x0c, 0xff, 0xcd, 0x64, 0x66, 0x65, 0x55, 0xd7, 0x23, 0x2b, 0x2b, 0x2b, 0x33, 0x0b, 0x5e, + 0xda, 0x7e, 0x31, 0x5e, 0xf0, 0xc2, 0xc5, 0xed, 0xce, 0x4d, 0x12, 0x05, 0x24, 0x21, 0xf1, 0xe2, + 0x2e, 0x09, 0xdc, 0x30, 0x5a, 0x14, 0x08, 0xa7, 0xed, 0x2d, 0xb6, 0xc2, 0x88, 0x2c, 0xee, 0x3e, + 0xb3, 0xb8, 0x49, 0x02, 0x12, 0x39, 0x09, 0x71, 0x17, 0xda, 0x51, 0x98, 0x84, 0x08, 0x71, 0x9a, + 0x05, 0xa7, 0xed, 0x2d, 0x50, 0x9a, 0x85, 0xdd, 0x67, 0xe6, 0x9e, 0xde, 0xf4, 0x92, 0xad, 0xce, + 0xcd, 0x85, 0x56, 0xb8, 0xb3, 0xb8, 0x19, 0x6e, 0x86, 0x8b, 0x8c, 0xf4, 0x66, 0x67, 0x83, 0xfd, + 0x63, 0x7f, 0xd8, 0x2f, 0xce, 0x62, 0xee, 0xb9, 0xb4, 0x9a, 0x1d, 0xa7, 0xb5, 0xe5, 0x05, 0x24, + 0xda, 0x5b, 0x6c, 0x6f, 0x6f, 0xb2, 0x7a, 0x23, 0x12, 0x87, 0x9d, 0xa8, 0x45, 0xb2, 0x15, 0xf7, + 0x2c, 0x15, 0x2f, 0xee, 0x90, 0xc4, 0xc9, 0x69, 0xee, 0xdc, 0x62, 0x51, 0xa9, 0xa8, 0x13, 0x24, + 0xde, 0x4e, 0x77, 0x35, 0x9f, 0xe8, 0x57, 0x20, 0x6e, 0x6d, 0x91, 0x1d, 0xa7, 0xab, 0xdc, 0xb3, + 0x45, 0xe5, 0x3a, 0x89, 0xe7, 0x2f, 0x7a, 0x41, 0x12, 0x27, 0x51, 0xb6, 0x90, 0xfd, 0x5d, 0x0b, + 0xce, 0x2e, 0xbd, 0xde, 0x5c, 0xf5, 0x9d, 0x38, 0xf1, 0x5a, 0xcb, 0x7e, 0xd8, 0xda, 0x6e, 0x26, + 0x61, 0x44, 0x6e, 0x84, 0x7e, 0x67, 0x87, 0x34, 0x59, 0x47, 0xa0, 0xa7, 0x60, 0x6c, 0x97, 0xfd, + 0xaf, 0xd7, 0xaa, 0xd6, 0x59, 0xeb, 0x5c, 0x65, 0x79, 0xe6, 0x5b, 0xfb, 0xf3, 0x1f, 0x39, 0xd8, + 0x9f, 0x1f, 0xbb, 0x21, 0xe0, 0x58, 0x51, 0xa0, 0x47, 0x61, 0x64, 0x23, 0x5e, 0xdf, 0x6b, 0x93, + 0x6a, 0x89, 0xd1, 0x4e, 0x09, 0xda, 0x91, 0xb5, 0x26, 0x85, 0x62, 0x81, 0x45, 0x8b, 0x50, 0x69, + 0x3b, 0x51, 0xe2, 0x25, 0x5e, 0x18, 0x54, 0xcb, 0x67, 0xad, 0x73, 0xc3, 0xcb, 0xb3, 0x82, 0xb4, + 0xd2, 0x90, 0x08, 0x9c, 0xd2, 0xd0, 0x66, 0x44, 0xc4, 0x71, 0xaf, 0x05, 0xfe, 0x5e, 0x75, 0xe8, + 0xac, 0x75, 0x6e, 0x2c, 0x6d, 0x06, 0x16, 0x70, 0xac, 0x28, 0xec, 0x5f, 0x2a, 0xc1, 0xd8, 0xd2, + 0xc6, 0x86, 0x17, 0x78, 0xc9, 0x1e, 0xba, 0x01, 0x13, 0x41, 0xe8, 0x12, 0xf9, 0x9f, 0x7d, 0xc5, + 0xf8, 0xf9, 0xb3, 0x0b, 0xdd, 0x53, 0x69, 0xe1, 0xaa, 0x46, 0xb7, 0x3c, 0x73, 0xb0, 0x3f, 0x3f, + 0xa1, 0x43, 0xb0, 0xc1, 0x07, 0x61, 0x18, 0x6f, 0x87, 0xae, 0x62, 0x5b, 0x62, 0x6c, 0xe7, 0xf3, + 0xd8, 0x36, 0x52, 0xb2, 0xe5, 0xe9, 0x83, 0xfd, 0xf9, 0x71, 0x0d, 0x80, 0x75, 0x26, 0xe8, 0x26, + 0x4c, 0xd3, 0xbf, 0x41, 0xe2, 0x29, 0xbe, 0x65, 0xc6, 0xf7, 0x91, 0x22, 0xbe, 0x1a, 0xe9, 0xf2, + 0x89, 0x83, 0xfd, 0xf9, 0xe9, 0x0c, 0x10, 0x67, 0x19, 0xda, 0xef, 0xc1, 0xd4, 0x52, 0x92, 0x38, + 0xad, 0x2d, 0xe2, 0xf2, 0x11, 0x44, 0xcf, 0xc1, 0x50, 0xe0, 0xec, 0x10, 0x31, 0xbe, 0x67, 0x45, + 0xc7, 0x0e, 0x5d, 0x75, 0x76, 0xc8, 0xe1, 0xfe, 0xfc, 0xcc, 0xf5, 0xc0, 0x7b, 0xb7, 0x23, 0x66, + 0x05, 0x85, 0x61, 0x46, 0x8d, 0xce, 0x03, 0xb8, 0x64, 0xd7, 0x6b, 0x91, 0x86, 0x93, 0x6c, 0x89, + 0xf1, 0x46, 0xa2, 0x2c, 0xd4, 0x14, 0x06, 0x6b, 0x54, 0xf6, 0x6d, 0xa8, 0x2c, 0xed, 0x86, 0x9e, + 0xdb, 0x08, 0xdd, 0x18, 0x6d, 0xc3, 0x74, 0x3b, 0x22, 0x1b, 0x24, 0x52, 0xa0, 0xaa, 0x75, 0xb6, + 0x7c, 0x6e, 0xfc, 0xfc, 0xb9, 0xdc, 0x8f, 0x35, 0x49, 0x57, 0x83, 0x24, 0xda, 0x5b, 0xbe, 0x5f, + 0xd4, 0x37, 0x9d, 0xc1, 0xe2, 0x2c, 0x67, 0xfb, 0xdf, 0x94, 0xe0, 0xd4, 0xd2, 0x7b, 0x9d, 0x88, + 0xd4, 0xbc, 0x78, 0x3b, 0x3b, 0xc3, 0x5d, 0x2f, 0xde, 0xbe, 0x9a, 0xf6, 0x80, 0x9a, 0x5a, 0x35, + 0x01, 0xc7, 0x8a, 0x02, 0x3d, 0x0d, 0xa3, 0xf4, 0xf7, 0x75, 0x5c, 0x17, 0x9f, 0x7c, 0x42, 0x10, + 0x8f, 0xd7, 0x9c, 0xc4, 0xa9, 0x71, 0x14, 0x96, 0x34, 0xe8, 0x0a, 0x8c, 0xb7, 0xd8, 0x82, 0xdc, + 0xbc, 0x12, 0xba, 0x84, 0x0d, 0x66, 0x65, 0xf9, 0x49, 0x4a, 0xbe, 0x92, 0x82, 0x0f, 0xf7, 0xe7, + 0xab, 0xbc, 0x6d, 0x82, 0x85, 0x86, 0xc3, 0x7a, 0x79, 0x64, 0xab, 0xf5, 0x35, 0xc4, 0x38, 0x41, + 0xce, 0xda, 0x3a, 0xa7, 0x2d, 0x95, 0x61, 0xb6, 0x54, 0x26, 0xf2, 0x97, 0x09, 0x7a, 0x06, 0x86, + 0xb6, 0xbd, 0xc0, 0xad, 0x8e, 0x30, 0x5e, 0x0f, 0xd1, 0x31, 0xbf, 0xe4, 0x05, 0xee, 0xe1, 0xfe, + 0xfc, 0xac, 0xd1, 0x1c, 0x0a, 0xc4, 0x8c, 0xd4, 0xfe, 0x33, 0x0b, 0xe6, 0x19, 0x6e, 0xcd, 0xf3, + 0x49, 0x83, 0x44, 0xb1, 0x17, 0x27, 0x24, 0x48, 0x8c, 0x0e, 0x3d, 0x0f, 0x10, 0x93, 0x56, 0x44, + 0x12, 0xad, 0x4b, 0xd5, 0xc4, 0x68, 0x2a, 0x0c, 0xd6, 0xa8, 0xa8, 0x40, 0x88, 0xb7, 0x9c, 0x88, + 0xcd, 0x2f, 0xd1, 0xb1, 0x4a, 0x20, 0x34, 0x25, 0x02, 0xa7, 0x34, 0x86, 0x40, 0x28, 0xf7, 0x13, + 0x08, 0xe8, 0x53, 0x30, 0x9d, 0x56, 0x16, 0xb7, 0x9d, 0x96, 0xec, 0x40, 0xb6, 0x64, 0x9a, 0x26, + 0x0a, 0x67, 0x69, 0xed, 0x7f, 0x64, 0x89, 0xc9, 0x43, 0xbf, 0xfa, 0x43, 0xfe, 0xad, 0xf6, 0xef, + 0x58, 0x30, 0xba, 0xec, 0x05, 0xae, 0x17, 0x6c, 0xa2, 0xcf, 0xc1, 0x18, 0xdd, 0x9b, 0x5c, 0x27, + 0x71, 0x84, 0xdc, 0xfb, 0xb8, 0xb6, 0xb6, 0xd4, 0x56, 0xb1, 0xd0, 0xde, 0xde, 0xa4, 0x80, 0x78, + 0x81, 0x52, 0xd3, 0xd5, 0x76, 0xed, 0xe6, 0x3b, 0xa4, 0x95, 0x5c, 0x21, 0x89, 0x93, 0x7e, 0x4e, + 0x0a, 0xc3, 0x8a, 0x2b, 0xba, 0x04, 0x23, 0x89, 0x13, 0x6d, 0x92, 0x44, 0x08, 0xc0, 0x5c, 0x41, + 0xc5, 0x4b, 0x62, 0xba, 0x22, 0x49, 0xd0, 0x22, 0xe9, 0xb6, 0xb0, 0xce, 0x8a, 0x62, 0xc1, 0xc2, + 0x6e, 0xc1, 0xc4, 0x8a, 0xd3, 0x76, 0x6e, 0x7a, 0xbe, 0x97, 0x78, 0x24, 0x46, 0x8f, 0x41, 0xd9, + 0x71, 0x5d, 0x26, 0x15, 0x2a, 0xcb, 0xa7, 0x0e, 0xf6, 0xe7, 0xcb, 0x4b, 0x2e, 0x9d, 0x9e, 0xa0, + 0xa8, 0xf6, 0x30, 0xa5, 0x40, 0x4f, 0xc0, 0x90, 0x1b, 0x85, 0xed, 0x6a, 0x89, 0x51, 0xde, 0x47, + 0x67, 0x72, 0x2d, 0x0a, 0xdb, 0x19, 0x52, 0x46, 0x63, 0xff, 0x7e, 0x09, 0x1e, 0x5c, 0x21, 0xed, + 0xad, 0xb5, 0x66, 0xc1, 0xfc, 0x3d, 0x07, 0x63, 0x3b, 0x61, 0xe0, 0x25, 0x61, 0x14, 0x8b, 0xaa, + 0xd9, 0x02, 0xba, 0x22, 0x60, 0x58, 0x61, 0xd1, 0x59, 0x18, 0x6a, 0xa7, 0xc2, 0x6f, 0x42, 0x0a, + 0x4e, 0x26, 0xf6, 0x18, 0x86, 0x52, 0x74, 0x62, 0x12, 0x89, 0x85, 0xaf, 0x28, 0xae, 0xc7, 0x24, + 0xc2, 0x0c, 0x93, 0xce, 0x20, 0x3a, 0xb7, 0xc4, 0xac, 0xcc, 0xcc, 0x20, 0x8a, 0xc1, 0x1a, 0x15, + 0x6a, 0x40, 0x85, 0xff, 0xc3, 0x64, 0x83, 0xad, 0xf1, 0x82, 0x7e, 0x6f, 0x4a, 0x22, 0xd1, 0xef, + 0x93, 0x6c, 0x8a, 0x49, 0x20, 0x4e, 0x99, 0x18, 0x53, 0x6c, 0xa4, 0xef, 0x14, 0xfb, 0x66, 0x09, + 0x10, 0xef, 0xc2, 0x1f, 0xb1, 0x8e, 0xbb, 0xde, 0xdd, 0x71, 0xb9, 0x9b, 0xcd, 0xe5, 0xb0, 0xe5, + 0xf8, 0xd9, 0x59, 0x7b, 0xb7, 0x7a, 0xef, 0x17, 0x2d, 0x40, 0x2b, 0x5e, 0xe0, 0x92, 0xe8, 0x18, + 0x34, 0xad, 0xa3, 0xc9, 0x8e, 0xcb, 0x30, 0xb5, 0xe2, 0x7b, 0x24, 0x48, 0xea, 0x8d, 0x95, 0x30, + 0xd8, 0xf0, 0x36, 0xd1, 0x27, 0x61, 0x8a, 0x2a, 0x9e, 0x61, 0x27, 0x69, 0x92, 0x56, 0x18, 0xb0, + 0x3d, 0x9a, 0xaa, 0x6b, 0xe8, 0x60, 0x7f, 0x7e, 0x6a, 0xdd, 0xc0, 0xe0, 0x0c, 0xa5, 0xfd, 0x1f, + 0xe9, 0x87, 0x86, 0x3b, 0xed, 0x30, 0x20, 0x41, 0xb2, 0x12, 0x06, 0x2e, 0xd7, 0xe5, 0x3e, 0x09, + 0x43, 0x09, 0x6d, 0x38, 0xff, 0xc8, 0x47, 0xe5, 0xd0, 0xd2, 0xe6, 0x1e, 0xee, 0xcf, 0xdf, 0xd7, + 0x5d, 0x82, 0x7d, 0x10, 0x2b, 0x83, 0x7e, 0x02, 0x46, 0xe2, 0xc4, 0x49, 0x3a, 0xb1, 0xf8, 0xec, + 0x87, 0xe5, 0x67, 0x37, 0x19, 0xf4, 0x70, 0x7f, 0x7e, 0x5a, 0x15, 0xe3, 0x20, 0x2c, 0x0a, 0xa0, + 0xc7, 0x61, 0x74, 0x87, 0xc4, 0xb1, 0xb3, 0x29, 0xb7, 0xe1, 0x69, 0x51, 0x76, 0xf4, 0x0a, 0x07, + 0x63, 0x89, 0x47, 0x8f, 0xc0, 0x30, 0x89, 0xa2, 0x30, 0x12, 0xb3, 0x6a, 0x52, 0x10, 0x0e, 0xaf, + 0x52, 0x20, 0xe6, 0x38, 0xfb, 0xdf, 0x5b, 0x30, 0xad, 0xda, 0xca, 0xeb, 0x3a, 0x06, 0x79, 0xfb, + 0x26, 0x40, 0x4b, 0x7e, 0x60, 0xcc, 0xe4, 0xdd, 0xf8, 0xf9, 0x47, 0xf3, 0xa6, 0x70, 0x77, 0x37, + 0xa6, 0x9c, 0x15, 0x28, 0xc6, 0x1a, 0x37, 0xfb, 0x5f, 0x58, 0x70, 0x22, 0xf3, 0x45, 0x97, 0xbd, + 0x38, 0x41, 0x6f, 0x75, 0x7d, 0xd5, 0xc2, 0x60, 0x5f, 0x45, 0x4b, 0xb3, 0x6f, 0x52, 0x73, 0x4e, + 0x42, 0xb4, 0x2f, 0xba, 0x08, 0xc3, 0x5e, 0x42, 0x76, 0xe4, 0xc7, 0x3c, 0xd2, 0xf3, 0x63, 0x78, + 0xab, 0xd2, 0x11, 0xa9, 0xd3, 0x92, 0x98, 0x33, 0xb0, 0xff, 0xa7, 0x05, 0x15, 0x3e, 0x6d, 0xaf, + 0x38, 0xed, 0x63, 0x18, 0x8b, 0x3a, 0x0c, 0x31, 0xee, 0xbc, 0xe1, 0x8f, 0xe5, 0x37, 0x5c, 0x34, + 0x67, 0x81, 0x2a, 0x53, 0x5c, 0x69, 0x55, 0xc2, 0x8c, 0x82, 0x30, 0x63, 0x31, 0xf7, 0x02, 0x54, + 0x14, 0x01, 0x9a, 0x81, 0xf2, 0x36, 0xe1, 0x07, 0x95, 0x0a, 0xa6, 0x3f, 0xd1, 0x49, 0x18, 0xde, + 0x75, 0xfc, 0x8e, 0x58, 0xec, 0x98, 0xff, 0xf9, 0x64, 0xe9, 0x45, 0xcb, 0xfe, 0x06, 0x5b, 0x63, + 0xa2, 0x92, 0xd5, 0x60, 0x57, 0x08, 0x93, 0xf7, 0xe0, 0xa4, 0x9f, 0x23, 0xc3, 0x44, 0x47, 0x0c, + 0x2e, 0xf3, 0x1e, 0x14, 0x6d, 0x3d, 0x99, 0x87, 0xc5, 0xb9, 0x75, 0xd0, 0x6d, 0x20, 0x6c, 0xd3, + 0x19, 0xe5, 0xf8, 0xac, 0xbd, 0x42, 0x01, 0xbd, 0x26, 0x60, 0x58, 0x61, 0xa9, 0x80, 0x38, 0xa9, + 0x1a, 0x7f, 0x89, 0xec, 0x35, 0x89, 0x4f, 0x5a, 0x49, 0x18, 0x7d, 0xa0, 0xcd, 0x7f, 0x88, 0xf7, + 0x3e, 0x97, 0x2f, 0xe3, 0x82, 0x41, 0xf9, 0x12, 0xd9, 0xe3, 0x43, 0xa1, 0x7f, 0x5d, 0xb9, 0xe7, + 0xd7, 0xfd, 0x86, 0x05, 0x93, 0xea, 0xeb, 0x8e, 0x61, 0x21, 0x2d, 0x9b, 0x0b, 0xe9, 0xa1, 0x9e, + 0xf3, 0xb1, 0x60, 0x09, 0xfd, 0x90, 0x89, 0x00, 0x41, 0xd3, 0x88, 0x42, 0xda, 0x35, 0x54, 0x66, + 0x7f, 0x90, 0x03, 0x32, 0xc8, 0x77, 0x5d, 0x22, 0x7b, 0xeb, 0x21, 0x55, 0x1f, 0xf2, 0xbf, 0xcb, + 0x18, 0xb5, 0xa1, 0x9e, 0xa3, 0xf6, 0x9b, 0x25, 0x38, 0xa5, 0x7a, 0xc0, 0xd8, 0xa0, 0x7f, 0xd4, + 0xfb, 0xe0, 0x19, 0x18, 0x77, 0xc9, 0x86, 0xd3, 0xf1, 0x13, 0x75, 0x16, 0x1d, 0xe6, 0xf6, 0x88, + 0x5a, 0x0a, 0xc6, 0x3a, 0xcd, 0x11, 0xba, 0xed, 0xdf, 0x02, 0x93, 0xbd, 0x89, 0x43, 0x67, 0x30, + 0xd5, 0xde, 0x34, 0x8b, 0xc2, 0x84, 0x6e, 0x51, 0x10, 0xd6, 0x83, 0x47, 0x60, 0xd8, 0xdb, 0xa1, + 0x7b, 0x71, 0xc9, 0xdc, 0x62, 0xeb, 0x14, 0x88, 0x39, 0x0e, 0x7d, 0x0c, 0x46, 0x5b, 0xe1, 0xce, + 0x8e, 0x13, 0xb8, 0xd5, 0x32, 0xd3, 0x27, 0xc7, 0xe9, 0x76, 0xbd, 0xc2, 0x41, 0x58, 0xe2, 0xd0, + 0x83, 0x30, 0xe4, 0x44, 0x9b, 0x71, 0x75, 0x88, 0xd1, 0x8c, 0xd1, 0x9a, 0x96, 0xa2, 0xcd, 0x18, + 0x33, 0x28, 0xd5, 0x13, 0x6f, 0x85, 0xd1, 0xb6, 0x17, 0x6c, 0xd6, 0xbc, 0x88, 0x29, 0x7d, 0x9a, + 0x9e, 0xf8, 0xba, 0xc2, 0x60, 0x8d, 0x0a, 0xad, 0xc1, 0x70, 0x3b, 0x8c, 0x92, 0xb8, 0x3a, 0xc2, + 0xba, 0xfb, 0xe1, 0x82, 0xa5, 0xc4, 0xbf, 0xb6, 0x11, 0x46, 0x49, 0xfa, 0x01, 0xf4, 0x5f, 0x8c, + 0x79, 0x71, 0xf4, 0x13, 0x50, 0x26, 0xc1, 0x6e, 0x75, 0x94, 0x71, 0x99, 0xcb, 0xe3, 0xb2, 0x1a, + 0xec, 0xde, 0x70, 0xa2, 0x54, 0xce, 0xac, 0x06, 0xbb, 0x98, 0x96, 0x41, 0x6f, 0x40, 0x45, 0x5a, + 0x23, 0xe3, 0xea, 0x58, 0xf1, 0x14, 0xc3, 0x82, 0x08, 0x93, 0x77, 0x3b, 0x5e, 0x44, 0x76, 0x48, + 0x90, 0xc4, 0xe9, 0x79, 0x52, 0x62, 0x63, 0x9c, 0x72, 0x43, 0x6f, 0xc0, 0x04, 0xd7, 0x23, 0xaf, + 0x84, 0x9d, 0x20, 0x89, 0xab, 0x15, 0xd6, 0xbc, 0x5c, 0xd3, 0xd5, 0x8d, 0x94, 0x6e, 0xf9, 0xa4, + 0x60, 0x3a, 0xa1, 0x01, 0x63, 0x6c, 0xb0, 0x42, 0x18, 0x26, 0x7d, 0x6f, 0x97, 0x04, 0x24, 0x8e, + 0x1b, 0x51, 0x78, 0x93, 0x54, 0x81, 0xb5, 0xfc, 0x74, 0xbe, 0x45, 0x27, 0xbc, 0x49, 0x96, 0x67, + 0x0f, 0xf6, 0xe7, 0x27, 0x2f, 0xeb, 0x65, 0xb0, 0xc9, 0x02, 0x5d, 0x87, 0x29, 0xaa, 0xa0, 0x7a, + 0x29, 0xd3, 0xf1, 0x7e, 0x4c, 0x99, 0x76, 0x8a, 0x8d, 0x42, 0x38, 0xc3, 0x04, 0xbd, 0x0a, 0x15, + 0xdf, 0xdb, 0x20, 0xad, 0xbd, 0x96, 0x4f, 0xaa, 0x13, 0x8c, 0x63, 0xee, 0xb2, 0xba, 0x2c, 0x89, + 0xf8, 0x01, 0x40, 0xfd, 0xc5, 0x69, 0x71, 0x74, 0x03, 0xee, 0x4b, 0x48, 0xb4, 0xe3, 0x05, 0x0e, + 0x5d, 0x0e, 0x42, 0x9f, 0x64, 0x76, 0xb1, 0x49, 0x36, 0xdf, 0xce, 0x88, 0xae, 0xbb, 0x6f, 0x3d, + 0x97, 0x0a, 0x17, 0x94, 0x46, 0xd7, 0x60, 0x9a, 0xad, 0x84, 0x46, 0xc7, 0xf7, 0x1b, 0xa1, 0xef, + 0xb5, 0xf6, 0xaa, 0x53, 0x8c, 0xe1, 0xc7, 0xa4, 0xe1, 0xab, 0x6e, 0xa2, 0xe9, 0x89, 0x37, 0xfd, + 0x87, 0xb3, 0xa5, 0xd1, 0x4d, 0x66, 0x08, 0xe9, 0x44, 0x5e, 0xb2, 0x47, 0xe7, 0x2f, 0xb9, 0x9d, + 0x54, 0xa7, 0x7b, 0x9e, 0x1f, 0x75, 0x52, 0x65, 0x2d, 0xd1, 0x81, 0x38, 0xcb, 0x90, 0x2e, 0xed, + 0x38, 0x71, 0xbd, 0xa0, 0x3a, 0xc3, 0x24, 0x86, 0x5a, 0x19, 0x4d, 0x0a, 0xc4, 0x1c, 0xc7, 0x8c, + 0x20, 0xf4, 0xc7, 0x35, 0x2a, 0x41, 0x67, 0x19, 0x61, 0x6a, 0x04, 0x91, 0x08, 0x9c, 0xd2, 0xd0, + 0x6d, 0x39, 0x49, 0xf6, 0xaa, 0x88, 0x91, 0xaa, 0xe5, 0xb2, 0xbe, 0xfe, 0x06, 0xa6, 0x70, 0x74, + 0x19, 0x46, 0x49, 0xb0, 0xbb, 0x16, 0x85, 0x3b, 0xd5, 0x13, 0xc5, 0x6b, 0x76, 0x95, 0x93, 0x70, + 0x81, 0x9e, 0x1e, 0x00, 0x04, 0x18, 0x4b, 0x16, 0xe8, 0x36, 0x54, 0x73, 0x46, 0x84, 0x0f, 0xc0, + 0x49, 0x36, 0x00, 0x2f, 0x8b, 0xb2, 0xd5, 0xf5, 0x02, 0xba, 0xc3, 0x1e, 0x38, 0x5c, 0xc8, 0xdd, + 0xbe, 0x09, 0x53, 0x4a, 0xb0, 0xb0, 0xb1, 0x45, 0xf3, 0x30, 0x4c, 0x25, 0xa6, 0x3c, 0x52, 0x57, + 0x68, 0x57, 0x32, 0xd3, 0x14, 0xe6, 0x70, 0xd6, 0x95, 0xde, 0x7b, 0x64, 0x79, 0x2f, 0x21, 0xfc, + 0x58, 0x54, 0xd6, 0xba, 0x52, 0x22, 0x70, 0x4a, 0x63, 0xff, 0x5f, 0xae, 0x98, 0xa4, 0xd2, 0x6b, + 0x00, 0x79, 0xfd, 0x14, 0x8c, 0x6d, 0x85, 0x71, 0x42, 0xa9, 0x59, 0x1d, 0xc3, 0xa9, 0x2a, 0x72, + 0x51, 0xc0, 0xb1, 0xa2, 0x40, 0x2f, 0xc1, 0x64, 0x4b, 0xaf, 0x40, 0x6c, 0x36, 0xa7, 0x44, 0x11, + 0xb3, 0x76, 0x6c, 0xd2, 0xa2, 0x17, 0x61, 0x8c, 0x5d, 0x50, 0xb4, 0x42, 0x5f, 0x1c, 0xc0, 0xe4, + 0x8e, 0x39, 0xd6, 0x10, 0xf0, 0x43, 0xed, 0x37, 0x56, 0xd4, 0xf4, 0x50, 0x4c, 0x9b, 0x50, 0x6f, + 0x08, 0x31, 0xaf, 0x0e, 0xc5, 0x17, 0x19, 0x14, 0x0b, 0xac, 0xfd, 0x37, 0x4b, 0x5a, 0x2f, 0xd3, + 0x23, 0x05, 0x41, 0x0d, 0x18, 0xbd, 0xe5, 0x78, 0x89, 0x17, 0x6c, 0x8a, 0xfd, 0xfc, 0xf1, 0x9e, + 0x32, 0x9f, 0x15, 0x7a, 0x9d, 0x17, 0xe0, 0xbb, 0x92, 0xf8, 0x83, 0x25, 0x1b, 0xca, 0x31, 0xea, + 0x04, 0x01, 0xe5, 0x58, 0x1a, 0x94, 0x23, 0xe6, 0x05, 0x38, 0x47, 0xf1, 0x07, 0x4b, 0x36, 0xe8, + 0x2d, 0x00, 0x39, 0x6f, 0x88, 0x2b, 0x2e, 0x06, 0x9e, 0xea, 0xcf, 0x74, 0x5d, 0x95, 0x59, 0x9e, + 0xa2, 0x7b, 0x5e, 0xfa, 0x1f, 0x6b, 0xfc, 0xec, 0x84, 0xe9, 0x3d, 0xdd, 0x8d, 0x41, 0x9f, 0xa5, + 0x4b, 0xd5, 0x89, 0x12, 0xe2, 0x2e, 0x25, 0xa2, 0x73, 0x9e, 0x18, 0x4c, 0x6d, 0x5d, 0xf7, 0x76, + 0x88, 0xbe, 0xac, 0x05, 0x13, 0x9c, 0xf2, 0xb3, 0x7f, 0xbb, 0x0c, 0xd5, 0xa2, 0xe6, 0xd2, 0x49, + 0x47, 0x6e, 0x7b, 0xc9, 0x0a, 0x55, 0x57, 0x2c, 0x73, 0xd2, 0xad, 0x0a, 0x38, 0x56, 0x14, 0x74, + 0xf4, 0x63, 0x6f, 0x53, 0x9e, 0x3a, 0x86, 0xd3, 0xd1, 0x6f, 0x32, 0x28, 0x16, 0x58, 0x4a, 0x17, + 0x11, 0x27, 0x16, 0x37, 0x4f, 0xda, 0x2c, 0xc1, 0x0c, 0x8a, 0x05, 0x56, 0x37, 0x18, 0x0c, 0xf5, + 0x31, 0x18, 0x18, 0x5d, 0x34, 0x7c, 0x77, 0xbb, 0x08, 0xbd, 0x0d, 0xb0, 0xe1, 0x05, 0x5e, 0xbc, + 0xc5, 0xb8, 0x8f, 0x1c, 0x99, 0xbb, 0x52, 0x76, 0xd6, 0x14, 0x17, 0xac, 0x71, 0x44, 0xcf, 0xc3, + 0xb8, 0x5a, 0x80, 0xf5, 0x5a, 0x75, 0xd4, 0xbc, 0xd6, 0x48, 0xa5, 0x51, 0x0d, 0xeb, 0x74, 0xf6, + 0x3b, 0xd9, 0xf9, 0x22, 0x56, 0x80, 0xd6, 0xbf, 0xd6, 0xa0, 0xfd, 0x5b, 0xea, 0xdd, 0xbf, 0xf6, + 0x1f, 0x94, 0x61, 0xda, 0xa8, 0xac, 0x13, 0x0f, 0x20, 0xb3, 0x2e, 0xd0, 0x8d, 0xc8, 0x49, 0x88, + 0x58, 0x7f, 0x76, 0xff, 0xa5, 0xa2, 0x6f, 0x56, 0x74, 0x05, 0xf0, 0xf2, 0xe8, 0x6d, 0xa8, 0xf8, + 0x4e, 0xcc, 0x8c, 0x0f, 0x44, 0xac, 0xbb, 0x41, 0x98, 0xa5, 0x8a, 0xbe, 0x13, 0x27, 0xda, 0x5e, + 0xc0, 0x79, 0xa7, 0x2c, 0xe9, 0x8e, 0x49, 0x95, 0x13, 0x79, 0xb5, 0xa9, 0x1a, 0x41, 0x35, 0x98, + 0x3d, 0xcc, 0x71, 0xe8, 0x45, 0x98, 0x88, 0x08, 0x9b, 0x15, 0x2b, 0x54, 0xd7, 0x62, 0xd3, 0x6c, + 0x38, 0x55, 0xca, 0xb0, 0x86, 0xc3, 0x06, 0x65, 0xaa, 0x6b, 0x8f, 0xf4, 0xd0, 0xb5, 0x1f, 0x87, + 0x51, 0xf6, 0x43, 0xcd, 0x00, 0x35, 0x1a, 0x75, 0x0e, 0xc6, 0x12, 0x9f, 0x9d, 0x30, 0x63, 0x03, + 0x4e, 0x98, 0x27, 0x60, 0xaa, 0xe6, 0x90, 0x9d, 0x30, 0x58, 0x0d, 0xdc, 0x76, 0xe8, 0x05, 0x09, + 0xaa, 0xc2, 0x10, 0xdb, 0x1d, 0xf8, 0xda, 0x1e, 0xa2, 0x1c, 0xf0, 0x10, 0xd5, 0x9c, 0xed, 0x3f, + 0x2a, 0xc1, 0x64, 0x8d, 0xf8, 0x24, 0x21, 0xfc, 0xac, 0x11, 0xa3, 0x35, 0x40, 0x9b, 0x91, 0xd3, + 0x22, 0x0d, 0x12, 0x79, 0xa1, 0xab, 0x1b, 0x23, 0xcb, 0xcc, 0xe0, 0x8f, 0x2e, 0x74, 0x61, 0x71, + 0x4e, 0x09, 0xf4, 0x26, 0x4c, 0xb6, 0x23, 0x62, 0xd8, 0xd0, 0xac, 0x22, 0x75, 0xa1, 0xa1, 0x13, + 0x72, 0x4d, 0xd5, 0x00, 0x61, 0x93, 0x15, 0xfa, 0x0c, 0xcc, 0x84, 0x51, 0x7b, 0xcb, 0x09, 0x6a, + 0xa4, 0x4d, 0x02, 0x97, 0xaa, 0xe2, 0xc2, 0x46, 0x70, 0xf2, 0x60, 0x7f, 0x7e, 0xe6, 0x5a, 0x06, + 0x87, 0xbb, 0xa8, 0xd1, 0x9b, 0x30, 0xdb, 0x8e, 0xc2, 0xb6, 0xb3, 0xc9, 0x26, 0x8a, 0xd0, 0x38, + 0xb8, 0xf4, 0x79, 0xea, 0x60, 0x7f, 0x7e, 0xb6, 0x91, 0x45, 0x1e, 0xee, 0xcf, 0x9f, 0x60, 0x1d, + 0x45, 0x21, 0x29, 0x12, 0x77, 0xb3, 0xb1, 0x37, 0xe1, 0x54, 0x2d, 0xbc, 0x15, 0xdc, 0x72, 0x22, + 0x77, 0xa9, 0x51, 0xd7, 0x0e, 0xf7, 0x57, 0xe5, 0xe1, 0x92, 0x5f, 0xbf, 0xe6, 0xee, 0x53, 0x5a, + 0x49, 0xae, 0xfe, 0xaf, 0x79, 0x3e, 0x29, 0x30, 0x22, 0xfc, 0xed, 0x92, 0x51, 0x53, 0x4a, 0xaf, + 0xec, 0xfe, 0x56, 0xa1, 0xdd, 0xff, 0x35, 0x18, 0xdb, 0xf0, 0x88, 0xef, 0x62, 0xb2, 0x21, 0x46, + 0xe6, 0xb1, 0xe2, 0x1b, 0xa5, 0x35, 0x4a, 0x29, 0x8d, 0x46, 0xfc, 0x68, 0xba, 0x26, 0x0a, 0x63, + 0xc5, 0x06, 0x6d, 0xc3, 0x8c, 0x3c, 0xfb, 0x48, 0xac, 0x58, 0xc4, 0x8f, 0xf7, 0x3a, 0x50, 0x99, + 0xcc, 0xd9, 0x00, 0xe2, 0x0c, 0x1b, 0xdc, 0xc5, 0x98, 0x9e, 0x45, 0x77, 0xe8, 0x76, 0x35, 0xc4, + 0xa6, 0x34, 0x3b, 0x8b, 0xb2, 0x63, 0x35, 0x83, 0xda, 0x5f, 0xb5, 0xe0, 0xfe, 0xae, 0x9e, 0x11, + 0xe6, 0x85, 0xbb, 0x3c, 0x0a, 0xd9, 0xe3, 0x7e, 0xa9, 0xff, 0x71, 0xdf, 0xfe, 0x75, 0x0b, 0x4e, + 0xae, 0xee, 0xb4, 0x93, 0xbd, 0x9a, 0x67, 0xde, 0x4d, 0xbc, 0x00, 0x23, 0x3b, 0xc4, 0xf5, 0x3a, + 0x3b, 0x62, 0xe4, 0xe6, 0xa5, 0x48, 0xbf, 0xc2, 0xa0, 0x87, 0xfb, 0xf3, 0x93, 0xcd, 0x24, 0x8c, + 0x9c, 0x4d, 0xc2, 0x01, 0x58, 0x90, 0xa3, 0x9f, 0xe6, 0xba, 0xe9, 0x65, 0x6f, 0xc7, 0x93, 0x37, + 0x84, 0x3d, 0x4d, 0x5e, 0x0b, 0xb2, 0x43, 0x17, 0x5e, 0xeb, 0x38, 0x41, 0xe2, 0x25, 0x7b, 0xa6, + 0x2e, 0xcb, 0x18, 0xe1, 0x94, 0xa7, 0xfd, 0x5d, 0x0b, 0xa6, 0xa5, 0x3c, 0x59, 0x72, 0xdd, 0x88, + 0xc4, 0x31, 0x9a, 0x83, 0x92, 0xd7, 0x16, 0x2d, 0x05, 0x51, 0xba, 0x54, 0x6f, 0xe0, 0x92, 0xd7, + 0x46, 0x0d, 0xa8, 0xf0, 0xcb, 0xc6, 0x74, 0x82, 0x0d, 0x74, 0x65, 0xc9, 0xce, 0x7e, 0xeb, 0xb2, + 0x24, 0x4e, 0x99, 0x48, 0xcd, 0x98, 0xed, 0x45, 0x65, 0xf3, 0xde, 0xe6, 0xa2, 0x80, 0x63, 0x45, + 0x81, 0xce, 0xc1, 0x58, 0x10, 0xba, 0xfc, 0xee, 0x97, 0xaf, 0x6b, 0x36, 0x6d, 0xaf, 0x0a, 0x18, + 0x56, 0x58, 0xfb, 0xe7, 0x2c, 0x98, 0x90, 0x5f, 0x36, 0xa0, 0x92, 0x4e, 0x97, 0x57, 0xaa, 0xa0, + 0xa7, 0xcb, 0x8b, 0x2a, 0xd9, 0x0c, 0x63, 0xe8, 0xd6, 0xe5, 0xa3, 0xe8, 0xd6, 0xf6, 0x57, 0x4a, + 0x30, 0x25, 0x9b, 0xd3, 0xec, 0xdc, 0x8c, 0x49, 0x82, 0xd6, 0xa1, 0xe2, 0xf0, 0x2e, 0x27, 0x72, + 0xd6, 0x3e, 0x92, 0x7f, 0xea, 0x32, 0xc6, 0x27, 0x1d, 0xd1, 0x25, 0x59, 0x1a, 0xa7, 0x8c, 0x90, + 0x0f, 0xb3, 0x41, 0x98, 0xb0, 0xad, 0x4f, 0xe1, 0x7b, 0xdd, 0x0d, 0x64, 0xb9, 0x9f, 0x16, 0xdc, + 0x67, 0xaf, 0x66, 0xb9, 0xe0, 0x6e, 0xc6, 0x68, 0x55, 0x5a, 0x7a, 0xca, 0xac, 0x86, 0xb3, 0xbd, + 0x6a, 0x28, 0x36, 0xf4, 0xd8, 0xbf, 0x67, 0x41, 0x45, 0x92, 0x1d, 0xc7, 0x35, 0xd0, 0x15, 0x18, + 0x8d, 0xd9, 0x20, 0xc8, 0xae, 0xb1, 0x7b, 0x35, 0x9c, 0x8f, 0x57, 0xba, 0xa3, 0xf3, 0xff, 0x31, + 0x96, 0x3c, 0x98, 0xa9, 0x5a, 0x35, 0xff, 0x43, 0x62, 0xaa, 0x56, 0xed, 0x29, 0xd8, 0x65, 0xfe, + 0x2b, 0x6b, 0xb3, 0x76, 0x9e, 0xa7, 0x8a, 0x67, 0x3b, 0x22, 0x1b, 0xde, 0xed, 0xac, 0xe2, 0xd9, + 0x60, 0x50, 0x2c, 0xb0, 0xe8, 0x2d, 0x98, 0x68, 0x49, 0x0b, 0x6f, 0x2a, 0x06, 0x1e, 0xed, 0x69, + 0x2f, 0x57, 0x57, 0x2b, 0xdc, 0x2f, 0x6c, 0x45, 0x2b, 0x8f, 0x0d, 0x6e, 0xe6, 0xe5, 0x7c, 0xb9, + 0xdf, 0xe5, 0x7c, 0xca, 0xb7, 0xf0, 0x7a, 0xd9, 0xfe, 0x65, 0x0b, 0x46, 0xb8, 0x9d, 0x70, 0x30, + 0xc3, 0xaa, 0x76, 0x55, 0x94, 0xf6, 0xdd, 0x0d, 0x0a, 0x14, 0x37, 0x47, 0xe8, 0x0a, 0x54, 0xd8, + 0x0f, 0x66, 0x2f, 0x29, 0x17, 0x3b, 0xc4, 0xf1, 0x5a, 0xf5, 0x06, 0xde, 0x90, 0xc5, 0x70, 0xca, + 0xc1, 0xfe, 0x85, 0x32, 0x15, 0x55, 0x29, 0xa9, 0xb1, 0x8b, 0x5b, 0xf7, 0x6e, 0x17, 0x2f, 0xdd, + 0xab, 0x5d, 0x7c, 0x13, 0xa6, 0x5b, 0xda, 0xbd, 0x54, 0x3a, 0x92, 0xe7, 0x7a, 0x4e, 0x12, 0xed, + 0x0a, 0x8b, 0xdb, 0xca, 0x56, 0x4c, 0x26, 0x38, 0xcb, 0x15, 0x7d, 0x16, 0x26, 0xf8, 0x38, 0x8b, + 0x5a, 0x86, 0x58, 0x2d, 0x1f, 0x2b, 0x9e, 0x2f, 0x7a, 0x15, 0x6c, 0x26, 0x36, 0xb5, 0xe2, 0xd8, + 0x60, 0x66, 0x7f, 0x69, 0x18, 0x86, 0x57, 0x77, 0x49, 0x90, 0x1c, 0x83, 0x40, 0x6a, 0xc1, 0x94, + 0x17, 0xec, 0x86, 0xfe, 0x2e, 0x71, 0x39, 0xfe, 0x28, 0x9b, 0xeb, 0x7d, 0x82, 0xf5, 0x54, 0xdd, + 0x60, 0x81, 0x33, 0x2c, 0xef, 0xc5, 0xc9, 0xfd, 0x02, 0x8c, 0xf0, 0xb1, 0x17, 0xc7, 0xf6, 0x5c, + 0x2b, 0x38, 0xeb, 0x44, 0xb1, 0x0a, 0x52, 0xab, 0x02, 0x37, 0xbb, 0x8b, 0xe2, 0xe8, 0x1d, 0x98, + 0xda, 0xf0, 0xa2, 0x38, 0xa1, 0x47, 0xee, 0x38, 0x71, 0x76, 0xda, 0x77, 0x70, 0x52, 0x57, 0xfd, + 0xb0, 0x66, 0x70, 0xc2, 0x19, 0xce, 0x68, 0x13, 0x26, 0xe9, 0xe1, 0x31, 0xad, 0x6a, 0xf4, 0xc8, + 0x55, 0x29, 0x53, 0xdc, 0x65, 0x9d, 0x11, 0x36, 0xf9, 0x52, 0x61, 0xd2, 0x62, 0x87, 0xcd, 0x31, + 0xa6, 0x51, 0x28, 0x61, 0xc2, 0x4f, 0x99, 0x1c, 0x47, 0x65, 0x12, 0xf3, 0xe7, 0xa8, 0x98, 0x32, + 0x29, 0xf5, 0xda, 0xb0, 0xbf, 0x46, 0x77, 0x47, 0xda, 0x87, 0xc7, 0xb0, 0xb5, 0xbc, 0x62, 0x6e, + 0x2d, 0xa7, 0x0b, 0xc7, 0xb3, 0x60, 0x5b, 0xf9, 0x1c, 0x8c, 0x6b, 0xc3, 0x8d, 0x16, 0xa1, 0xd2, + 0x92, 0xce, 0x07, 0x42, 0xea, 0x2a, 0xf5, 0x45, 0x79, 0x25, 0xe0, 0x94, 0x86, 0xf6, 0x06, 0x55, + 0xf6, 0xb2, 0xae, 0x4d, 0x54, 0x15, 0xc4, 0x0c, 0x63, 0x3f, 0x0b, 0xb0, 0x7a, 0x9b, 0xb4, 0x96, + 0xf8, 0xe1, 0x4b, 0xbb, 0xe3, 0xb2, 0x8a, 0xef, 0xb8, 0xec, 0xff, 0x60, 0xc1, 0xd4, 0xda, 0x8a, + 0xa1, 0x94, 0x2f, 0x00, 0x70, 0x2d, 0xf4, 0xf5, 0xd7, 0xaf, 0x4a, 0xeb, 0x30, 0x37, 0xf0, 0x29, + 0x28, 0xd6, 0x28, 0xd0, 0x69, 0x28, 0xfb, 0x9d, 0x40, 0x28, 0x87, 0xa3, 0x07, 0xfb, 0xf3, 0xe5, + 0xcb, 0x9d, 0x00, 0x53, 0x98, 0xe6, 0x4d, 0x54, 0x1e, 0xd8, 0x9b, 0xa8, 0xaf, 0x1b, 0x36, 0x9a, + 0x87, 0xe1, 0x5b, 0xb7, 0x3c, 0x37, 0xae, 0x0e, 0xa7, 0x96, 0xeb, 0xd7, 0x5f, 0xaf, 0xd7, 0x62, + 0xcc, 0xe1, 0xf6, 0x5f, 0x2e, 0xc3, 0xcc, 0x9a, 0x4f, 0x6e, 0x1b, 0x9f, 0xf5, 0x28, 0x8c, 0xb8, + 0x91, 0xb7, 0x4b, 0xa2, 0xec, 0x2e, 0x5e, 0x63, 0x50, 0x2c, 0xb0, 0x03, 0x7b, 0x40, 0x5d, 0xef, + 0xde, 0x8f, 0xef, 0xb6, 0xcf, 0x57, 0xff, 0xae, 0x78, 0x0b, 0x46, 0xf9, 0x55, 0x29, 0xef, 0x8c, + 0xf1, 0xf3, 0xcf, 0xe4, 0x35, 0x21, 0xdb, 0x17, 0x0b, 0xc2, 0xf8, 0xc1, 0xfd, 0x46, 0x94, 0x10, + 0x13, 0x50, 0x2c, 0x59, 0xce, 0x7d, 0x12, 0x26, 0x74, 0xca, 0x23, 0x39, 0x90, 0xfc, 0x15, 0x0b, + 0x4e, 0xac, 0xf9, 0x61, 0x6b, 0x3b, 0xe3, 0x8e, 0xf6, 0x3c, 0x8c, 0xd3, 0xf5, 0x14, 0x1b, 0xae, + 0xad, 0x86, 0xb3, 0xb3, 0x40, 0x61, 0x9d, 0x4e, 0x2b, 0x76, 0xfd, 0x7a, 0xbd, 0x96, 0xe7, 0x23, + 0x2d, 0x50, 0x58, 0xa7, 0xb3, 0xbf, 0x63, 0xc1, 0x43, 0x17, 0x56, 0x56, 0x53, 0x8f, 0xcc, 0x2e, + 0x37, 0x6d, 0xaa, 0xdc, 0xb9, 0x5a, 0x53, 0x52, 0xe5, 0xae, 0xc6, 0x5a, 0x21, 0xb0, 0x1f, 0x96, + 0x10, 0x84, 0x5f, 0xb5, 0xe0, 0xc4, 0x05, 0x2f, 0xc1, 0xa4, 0x1d, 0x66, 0x1d, 0x86, 0x23, 0xd2, + 0x0e, 0x63, 0x2f, 0x09, 0xa3, 0xbd, 0xac, 0xc3, 0x30, 0x56, 0x18, 0xac, 0x51, 0xf1, 0x9a, 0x77, + 0xbd, 0x98, 0xb6, 0xb4, 0x64, 0x9e, 0x30, 0xb1, 0x80, 0x63, 0x45, 0x41, 0x3f, 0xcc, 0xf5, 0x22, + 0xa6, 0x21, 0xec, 0x89, 0xe5, 0xac, 0x3e, 0xac, 0x26, 0x11, 0x38, 0xa5, 0xb1, 0xbf, 0x6a, 0xc1, + 0xa9, 0x0b, 0x7e, 0x27, 0x4e, 0x48, 0xb4, 0x11, 0x1b, 0x8d, 0x7d, 0x16, 0x2a, 0x44, 0x6a, 0xe1, + 0xa2, 0xad, 0x6a, 0xdf, 0x50, 0xea, 0x39, 0xf7, 0x56, 0x56, 0x74, 0x03, 0xf8, 0x76, 0x1e, 0xcd, + 0x27, 0xf1, 0xeb, 0x25, 0x98, 0xbc, 0xb8, 0xbe, 0xde, 0xb8, 0x40, 0x12, 0x21, 0x32, 0xfb, 0x5b, + 0x91, 0xb0, 0x76, 0x10, 0xee, 0xa5, 0xeb, 0x74, 0x12, 0xcf, 0x5f, 0xe0, 0xe1, 0x31, 0x0b, 0xf5, + 0x20, 0xb9, 0x16, 0x35, 0x93, 0xc8, 0x0b, 0x36, 0x73, 0x8f, 0xce, 0x52, 0xb0, 0x97, 0x8b, 0x04, + 0x3b, 0x7a, 0x16, 0x46, 0x58, 0x7c, 0x8e, 0xd4, 0x3a, 0x1e, 0x50, 0xaa, 0x02, 0x83, 0x1e, 0xee, + 0xcf, 0x57, 0xae, 0xe3, 0x3a, 0xff, 0x83, 0x05, 0x29, 0xba, 0x0e, 0xe3, 0x5b, 0x49, 0xd2, 0xbe, + 0x48, 0x1c, 0x97, 0x44, 0x52, 0x3a, 0x9c, 0xc9, 0x93, 0x0e, 0xb4, 0x13, 0x38, 0x59, 0xba, 0xa0, + 0x52, 0x58, 0x8c, 0x75, 0x3e, 0x76, 0x13, 0x20, 0xc5, 0xdd, 0xa5, 0x63, 0x83, 0xfd, 0x03, 0x0b, + 0x46, 0x2f, 0x3a, 0x81, 0xeb, 0x93, 0x08, 0xbd, 0x0c, 0x43, 0xe4, 0x36, 0x69, 0x89, 0x1d, 0x3c, + 0xb7, 0xc1, 0xe9, 0x2e, 0xc7, 0x0d, 0x61, 0xf4, 0x3f, 0x66, 0xa5, 0xd0, 0x45, 0x18, 0xa5, 0xad, + 0xbd, 0xa0, 0xfc, 0xc6, 0x1f, 0x2e, 0xfa, 0x62, 0x35, 0xec, 0x7c, 0x63, 0x14, 0x20, 0x2c, 0x8b, + 0x33, 0x83, 0x4e, 0xab, 0xdd, 0xa4, 0x02, 0x2c, 0xe9, 0x75, 0xdc, 0x5a, 0x5f, 0x69, 0x70, 0x22, + 0xc1, 0x8d, 0x1b, 0x74, 0x24, 0x10, 0xa7, 0x4c, 0xec, 0x75, 0xa8, 0xd0, 0x41, 0x5d, 0xf2, 0x3d, + 0xa7, 0xb7, 0x2d, 0xe9, 0x49, 0xa8, 0x48, 0xbb, 0x4e, 0x2c, 0x5c, 0xcf, 0x19, 0x57, 0x69, 0xf6, + 0x89, 0x71, 0x8a, 0xb7, 0x37, 0xe0, 0x24, 0xbb, 0x28, 0x75, 0x92, 0x2d, 0x63, 0x8d, 0xf5, 0x9f, + 0xcc, 0x4f, 0x09, 0xfd, 0x8a, 0x8f, 0x4c, 0x55, 0xf3, 0x95, 0x9d, 0x90, 0x1c, 0x35, 0x5d, 0xeb, + 0x3f, 0x0f, 0xc1, 0x6c, 0xbd, 0xb9, 0xd2, 0x34, 0x8d, 0x8b, 0x2f, 0xc2, 0x04, 0xd7, 0x04, 0xe8, + 0x84, 0x76, 0x7c, 0x51, 0x9b, 0xba, 0x3c, 0x58, 0xd7, 0x70, 0xd8, 0xa0, 0x44, 0x0f, 0x41, 0xd9, + 0x7b, 0x37, 0xc8, 0xba, 0xc3, 0xd5, 0x5f, 0xbb, 0x8a, 0x29, 0x9c, 0xa2, 0xa9, 0x52, 0xc1, 0x05, + 0xa8, 0x42, 0x2b, 0xc5, 0xe2, 0x15, 0x98, 0xf2, 0xe2, 0x56, 0xec, 0xd5, 0x03, 0x2a, 0x5d, 0xd2, + 0xb8, 0x8b, 0x54, 0xe3, 0xa7, 0x4d, 0x55, 0x58, 0x9c, 0xa1, 0xd6, 0xa4, 0xf9, 0xf0, 0xc0, 0x8a, + 0x49, 0x5f, 0x0f, 0x6c, 0xaa, 0x73, 0xb5, 0xd9, 0xd7, 0xc5, 0xcc, 0x35, 0x47, 0xe8, 0x5c, 0xfc, + 0x83, 0x63, 0x2c, 0x71, 0xe8, 0x02, 0xcc, 0xb6, 0xb6, 0x9c, 0xf6, 0x52, 0x27, 0xd9, 0xaa, 0x79, + 0x71, 0x2b, 0xdc, 0x25, 0xd1, 0x1e, 0xd3, 0x84, 0xc7, 0x52, 0x23, 0x93, 0x42, 0xac, 0x5c, 0x5c, + 0x6a, 0x50, 0x4a, 0xdc, 0x5d, 0xc6, 0x54, 0x41, 0xe0, 0xae, 0xa9, 0x20, 0x4b, 0x30, 0x2d, 0xeb, + 0x6a, 0x92, 0x98, 0x6d, 0x0f, 0xe3, 0xac, 0x75, 0x2a, 0x2c, 0x4a, 0x80, 0x55, 0xdb, 0xb2, 0xf4, + 0xe8, 0x05, 0x98, 0xf4, 0x02, 0x2f, 0xf1, 0x9c, 0x24, 0x8c, 0xd8, 0xe6, 0x3a, 0xc1, 0x37, 0x0c, + 0x2a, 0xe1, 0xeb, 0x3a, 0x02, 0x9b, 0x74, 0xf6, 0x3b, 0x50, 0x51, 0xfe, 0x66, 0xd2, 0x65, 0xd2, + 0x2a, 0x70, 0x99, 0xec, 0xbf, 0x23, 0x48, 0xab, 0x79, 0x39, 0xd7, 0x6a, 0xfe, 0x77, 0x2c, 0x48, + 0xdd, 0x6e, 0xd0, 0x45, 0xa8, 0xb4, 0x43, 0x76, 0x73, 0x16, 0xc9, 0xeb, 0xe8, 0x07, 0x72, 0x85, + 0x07, 0x17, 0x54, 0xbc, 0xff, 0x1a, 0xb2, 0x04, 0x4e, 0x0b, 0xa3, 0x65, 0x18, 0x6d, 0x47, 0xa4, + 0x99, 0xb0, 0xc0, 0x91, 0xbe, 0x7c, 0xf8, 0x1c, 0xe1, 0xf4, 0x58, 0x16, 0xb4, 0x7f, 0xd3, 0x02, + 0xe0, 0x46, 0x69, 0x27, 0xd8, 0x24, 0xc7, 0x70, 0xd0, 0xae, 0xc1, 0x50, 0xdc, 0x26, 0xad, 0x5e, + 0x77, 0x9a, 0x69, 0x7b, 0x9a, 0x6d, 0xd2, 0x4a, 0x3b, 0x9c, 0xfe, 0xc3, 0xac, 0xb4, 0xfd, 0xb3, + 0x00, 0x53, 0x29, 0x19, 0x3d, 0x00, 0xa1, 0xa7, 0x0d, 0xb7, 0xfc, 0xd3, 0x19, 0xb7, 0xfc, 0x0a, + 0xa3, 0xd6, 0x3c, 0xf1, 0xdf, 0x81, 0xf2, 0x8e, 0x73, 0x5b, 0x9c, 0xb2, 0x9e, 0xec, 0xdd, 0x0c, + 0xca, 0x7f, 0xe1, 0x8a, 0x73, 0x9b, 0xeb, 0xb1, 0x4f, 0xca, 0x09, 0x72, 0xc5, 0xb9, 0x7d, 0xc8, + 0x6f, 0x2e, 0x99, 0x90, 0xa2, 0x87, 0xb9, 0x2f, 0xfc, 0x71, 0xfa, 0x9f, 0x4d, 0x3b, 0x5a, 0x09, + 0xab, 0xcb, 0x0b, 0x84, 0x89, 0x76, 0xa0, 0xba, 0xbc, 0x20, 0x5b, 0x97, 0x17, 0x0c, 0x50, 0x97, + 0x17, 0xa0, 0xf7, 0x60, 0x54, 0x5c, 0x89, 0x30, 0x7f, 0xc2, 0xf1, 0xf3, 0x8b, 0x03, 0xd4, 0x27, + 0x6e, 0x54, 0x78, 0x9d, 0x8b, 0x52, 0x4f, 0x17, 0xd0, 0xbe, 0xf5, 0xca, 0x0a, 0xd1, 0xdf, 0xb2, + 0x60, 0x4a, 0xfc, 0xc6, 0xe4, 0xdd, 0x0e, 0x89, 0x13, 0xa1, 0x0f, 0x7c, 0x62, 0xf0, 0x36, 0x88, + 0x82, 0xbc, 0x29, 0x9f, 0x90, 0x62, 0xd6, 0x44, 0xf6, 0x6d, 0x51, 0xa6, 0x15, 0xe8, 0x9f, 0x5a, + 0x70, 0x72, 0xc7, 0xb9, 0xcd, 0x6b, 0xe4, 0x30, 0xec, 0x24, 0x5e, 0x28, 0xfc, 0x23, 0x5f, 0x1e, + 0x6c, 0xf8, 0xbb, 0x8a, 0xf3, 0x46, 0x4a, 0x57, 0xaa, 0x93, 0x79, 0x24, 0x7d, 0x9b, 0x9a, 0xdb, + 0xae, 0xb9, 0x0d, 0x18, 0x93, 0xf3, 0x2d, 0xe7, 0x34, 0x54, 0xd3, 0x95, 0x9d, 0x23, 0xdf, 0x48, + 0x69, 0xa7, 0x27, 0x56, 0x8f, 0x98, 0x6b, 0xf7, 0xb4, 0x9e, 0x77, 0x60, 0x42, 0x9f, 0x63, 0xf7, + 0xb4, 0xae, 0x77, 0xe1, 0x44, 0xce, 0x5c, 0xba, 0xa7, 0x55, 0xde, 0x82, 0xd3, 0x85, 0xf3, 0xe3, + 0x5e, 0x56, 0x6c, 0x7f, 0xdd, 0xd2, 0xe5, 0xe0, 0x31, 0x98, 0xa7, 0x56, 0x4c, 0xf3, 0xd4, 0x99, + 0xde, 0x2b, 0xa7, 0xc0, 0x46, 0xf5, 0x96, 0xde, 0x68, 0x2a, 0xd5, 0xd1, 0xab, 0x30, 0xe2, 0x53, + 0x88, 0xbc, 0x87, 0xb3, 0xfb, 0xaf, 0xc8, 0x54, 0x97, 0x62, 0xf0, 0x18, 0x0b, 0x0e, 0xf6, 0xef, + 0x58, 0x30, 0x74, 0x0c, 0x3d, 0x81, 0xcd, 0x9e, 0x78, 0xba, 0x90, 0xb5, 0xc8, 0x7d, 0xb0, 0x80, + 0x9d, 0x5b, 0xab, 0xb7, 0x13, 0x12, 0xc4, 0x4c, 0x7d, 0xcf, 0xed, 0x98, 0xff, 0x53, 0x82, 0x71, + 0x5a, 0x95, 0x74, 0x1a, 0x79, 0x09, 0x26, 0x7d, 0xe7, 0x26, 0xf1, 0xa5, 0xc9, 0x3c, 0x7b, 0x88, + 0xbd, 0xac, 0x23, 0xb1, 0x49, 0x4b, 0x0b, 0x6f, 0xe8, 0xb7, 0x07, 0x42, 0x7f, 0x51, 0x85, 0x8d, + 0xab, 0x05, 0x6c, 0xd2, 0xd2, 0xf3, 0xd4, 0x2d, 0x27, 0x69, 0x6d, 0x89, 0x03, 0xae, 0x6a, 0xee, + 0xeb, 0x14, 0x88, 0x39, 0x8e, 0x2a, 0x70, 0x72, 0x76, 0xde, 0x20, 0x11, 0x53, 0xe0, 0xb8, 0x7a, + 0xac, 0x14, 0x38, 0x6c, 0xa2, 0x71, 0x96, 0x3e, 0x27, 0x3e, 0x6f, 0x98, 0xb9, 0xc4, 0x0c, 0x10, + 0x9f, 0x87, 0x1a, 0x70, 0xd2, 0x0b, 0x5a, 0x7e, 0xc7, 0x25, 0xd7, 0x03, 0xae, 0xdd, 0xf9, 0xde, + 0x7b, 0xc4, 0x15, 0x0a, 0xb4, 0xf2, 0x5e, 0xaa, 0xe7, 0xd0, 0xe0, 0xdc, 0x92, 0xf6, 0x4f, 0xc3, + 0x89, 0xcb, 0xa1, 0xe3, 0x2e, 0x3b, 0xbe, 0x13, 0xb4, 0x48, 0x54, 0x0f, 0x36, 0xfb, 0x5e, 0xc8, + 0xeb, 0xd7, 0xe7, 0xa5, 0x7e, 0xd7, 0xe7, 0xf6, 0x16, 0x20, 0xbd, 0x02, 0xe1, 0x0a, 0x86, 0x61, + 0xd4, 0xe3, 0x55, 0x89, 0xe9, 0xff, 0x58, 0xbe, 0x76, 0xdd, 0xd5, 0x32, 0xcd, 0xc9, 0x89, 0x03, + 0xb0, 0x64, 0x64, 0xbf, 0x08, 0xb9, 0xf1, 0x19, 0xfd, 0x8f, 0xd2, 0xf6, 0xf3, 0x30, 0xcb, 0x4a, + 0x1e, 0xed, 0x98, 0x67, 0xff, 0x75, 0x0b, 0xa6, 0xaf, 0x66, 0x22, 0x6a, 0x1f, 0x85, 0x91, 0x98, + 0x44, 0x39, 0xb6, 0xd0, 0x26, 0x83, 0x62, 0x81, 0xbd, 0xeb, 0x36, 0x97, 0x1f, 0x5a, 0x50, 0x51, + 0xe1, 0xef, 0xc7, 0xa0, 0xd4, 0xae, 0x18, 0x4a, 0x6d, 0xae, 0x2d, 0x40, 0x35, 0xa7, 0x48, 0xa7, + 0x45, 0x97, 0x54, 0x6c, 0x68, 0x0f, 0x33, 0x40, 0xca, 0x86, 0x47, 0x12, 0x4e, 0x99, 0x01, 0xa4, + 0x32, 0x5a, 0x94, 0xdd, 0x88, 0x2b, 0xda, 0x0f, 0xc9, 0x8d, 0xb8, 0x6a, 0x4f, 0x81, 0xf4, 0x6b, + 0x68, 0x4d, 0x66, 0xbb, 0xc2, 0xa7, 0x99, 0xe7, 0x28, 0x5b, 0x9b, 0x2a, 0x24, 0x7b, 0x5e, 0x78, + 0x82, 0x0a, 0xe8, 0x21, 0x13, 0x64, 0xe2, 0x1f, 0x4f, 0x55, 0x90, 0x16, 0xb1, 0x2f, 0xc2, 0x74, + 0xa6, 0xc3, 0xd0, 0xf3, 0x30, 0xdc, 0xde, 0x72, 0x62, 0x92, 0xf1, 0x04, 0x1a, 0x6e, 0x50, 0xe0, + 0xe1, 0xfe, 0xfc, 0x94, 0x2a, 0xc0, 0x20, 0x98, 0x53, 0xdb, 0xff, 0xc3, 0x82, 0xa1, 0xab, 0xa1, + 0x7b, 0x1c, 0x93, 0xe9, 0x15, 0x63, 0x32, 0x3d, 0x58, 0x94, 0xe8, 0xa5, 0x70, 0x1e, 0xad, 0x65, + 0xe6, 0xd1, 0x99, 0x42, 0x0e, 0xbd, 0xa7, 0xd0, 0x0e, 0x8c, 0xb3, 0xf4, 0x31, 0xc2, 0x2b, 0xe9, + 0x59, 0xe3, 0x7c, 0x35, 0x9f, 0x39, 0x5f, 0x4d, 0x6b, 0xa4, 0xda, 0x29, 0xeb, 0x71, 0x18, 0x15, + 0x9e, 0x31, 0x59, 0x1f, 0x59, 0x41, 0x8b, 0x25, 0xde, 0xfe, 0xe5, 0x32, 0x18, 0xe9, 0x6a, 0xd0, + 0xef, 0x59, 0xb0, 0x10, 0xf1, 0xa8, 0x20, 0xb7, 0xd6, 0x89, 0xbc, 0x60, 0xb3, 0xd9, 0xda, 0x22, + 0x6e, 0xc7, 0xf7, 0x82, 0xcd, 0xfa, 0x66, 0x10, 0x2a, 0xf0, 0xea, 0x6d, 0xd2, 0xea, 0x30, 0x3b, + 0x78, 0x9f, 0xdc, 0x38, 0xea, 0xe6, 0xf9, 0xfc, 0xc1, 0xfe, 0xfc, 0x02, 0x3e, 0x12, 0x6f, 0x7c, + 0xc4, 0xb6, 0xa0, 0xef, 0x58, 0xb0, 0xc8, 0xb3, 0xb8, 0x0c, 0xde, 0xfe, 0x1e, 0xa7, 0xd1, 0x86, + 0x64, 0x95, 0x32, 0x59, 0x27, 0xd1, 0xce, 0xf2, 0x0b, 0xa2, 0x43, 0x17, 0x1b, 0x47, 0xab, 0x0b, + 0x1f, 0xb5, 0x71, 0xf6, 0xbf, 0x2a, 0xc3, 0x24, 0xed, 0xc5, 0x34, 0x12, 0xfe, 0x79, 0x63, 0x4a, + 0x3c, 0x9c, 0x99, 0x12, 0xb3, 0x06, 0xf1, 0xdd, 0x09, 0x82, 0x8f, 0x61, 0xd6, 0x77, 0xe2, 0xe4, + 0x22, 0x71, 0xa2, 0xe4, 0x26, 0x71, 0xd8, 0x55, 0xaf, 0x98, 0xe6, 0x47, 0xb9, 0x3d, 0x56, 0xe6, + 0xaf, 0xcb, 0x59, 0x66, 0xb8, 0x9b, 0x3f, 0xda, 0x05, 0xc4, 0xae, 0x95, 0x23, 0x27, 0x88, 0xf9, + 0xb7, 0x78, 0xc2, 0x46, 0x7e, 0xb4, 0x5a, 0xe7, 0x44, 0xad, 0xe8, 0x72, 0x17, 0x37, 0x9c, 0x53, + 0x83, 0xe6, 0x2e, 0x30, 0x3c, 0xa8, 0xbb, 0xc0, 0x48, 0x1f, 0x47, 0xf4, 0x1d, 0x98, 0x11, 0xa3, + 0xb2, 0xe1, 0x6d, 0x8a, 0x4d, 0xfa, 0x8d, 0x8c, 0x3b, 0x91, 0x35, 0xb8, 0xe3, 0x43, 0x1f, 0x5f, + 0x22, 0xfb, 0x67, 0xe0, 0x04, 0xad, 0xce, 0x74, 0x9b, 0x8e, 0x11, 0x81, 0xe9, 0xed, 0xce, 0x4d, + 0xe2, 0x93, 0x44, 0xc2, 0x44, 0xa5, 0xb9, 0x6a, 0xbf, 0x59, 0x3a, 0xd5, 0x2d, 0x2f, 0x99, 0x2c, + 0x70, 0x96, 0xa7, 0xfd, 0x2b, 0x16, 0x30, 0xc7, 0xc4, 0x63, 0xd8, 0xfe, 0x3e, 0x65, 0x6e, 0x7f, + 0xd5, 0x22, 0x09, 0x54, 0xb0, 0xf3, 0x3d, 0xc7, 0x87, 0xa5, 0x11, 0x85, 0xb7, 0xf7, 0xa4, 0xee, + 0xdf, 0x5f, 0xe3, 0xfa, 0xdf, 0x16, 0x5f, 0x90, 0x2a, 0x48, 0x12, 0x7d, 0x1e, 0xc6, 0x5a, 0x4e, + 0xdb, 0x69, 0xf1, 0x3c, 0x61, 0x85, 0xd6, 0x1f, 0xa3, 0xd0, 0xc2, 0x8a, 0x28, 0xc1, 0xad, 0x19, + 0x1f, 0x97, 0x5f, 0x29, 0xc1, 0x7d, 0x2d, 0x18, 0xaa, 0xca, 0xb9, 0x6d, 0x98, 0x34, 0x98, 0xdd, + 0xd3, 0xa3, 0xef, 0xe7, 0xf9, 0x76, 0xa1, 0x4e, 0x2c, 0x3b, 0x30, 0x1b, 0x68, 0xff, 0xa9, 0x70, + 0x94, 0xea, 0xf4, 0x47, 0xfb, 0x6d, 0x08, 0x4c, 0x92, 0x6a, 0x8e, 0x97, 0x19, 0x36, 0xb8, 0x9b, + 0xb3, 0xfd, 0xf7, 0x2c, 0xb8, 0x5f, 0x27, 0xd4, 0xe2, 0x57, 0xfb, 0xd9, 0x93, 0x6b, 0x30, 0x16, + 0xb6, 0x49, 0xe4, 0xa4, 0x67, 0xb2, 0x73, 0xb2, 0xd3, 0xaf, 0x09, 0xf8, 0xe1, 0xfe, 0xfc, 0x49, + 0x9d, 0xbb, 0x84, 0x63, 0x55, 0x12, 0xd9, 0x30, 0xc2, 0x3a, 0x23, 0x16, 0xb1, 0xc5, 0x2c, 0x97, + 0x16, 0xbb, 0xee, 0x8a, 0xb1, 0xc0, 0xd8, 0x3f, 0x6b, 0xf1, 0x89, 0xa5, 0x37, 0x1d, 0xbd, 0x0b, + 0x33, 0x3b, 0xf4, 0xf8, 0xb6, 0x7a, 0xbb, 0x1d, 0x71, 0x33, 0xba, 0xec, 0xa7, 0x27, 0xfb, 0xf5, + 0x93, 0xf6, 0x91, 0xcb, 0x55, 0xd1, 0xe6, 0x99, 0x2b, 0x19, 0x66, 0xb8, 0x8b, 0xbd, 0xfd, 0xe7, + 0x25, 0xbe, 0x12, 0x99, 0x56, 0xf7, 0x38, 0x8c, 0xb6, 0x43, 0x77, 0xa5, 0x5e, 0xc3, 0xa2, 0x87, + 0x94, 0xb8, 0x6a, 0x70, 0x30, 0x96, 0x78, 0x74, 0x1e, 0x80, 0xdc, 0x4e, 0x48, 0x14, 0x38, 0xbe, + 0xba, 0x8c, 0x57, 0xca, 0xd3, 0xaa, 0xc2, 0x60, 0x8d, 0x8a, 0x96, 0x69, 0x47, 0xe1, 0xae, 0xe7, + 0xb2, 0xe0, 0x8e, 0xb2, 0x59, 0xa6, 0xa1, 0x30, 0x58, 0xa3, 0xa2, 0x47, 0xe5, 0x4e, 0x10, 0xf3, + 0x0d, 0xd0, 0xb9, 0x29, 0xd2, 0xf1, 0x8c, 0xa5, 0x47, 0xe5, 0xeb, 0x3a, 0x12, 0x9b, 0xb4, 0x68, + 0x09, 0x46, 0x12, 0x87, 0x5d, 0x31, 0x0f, 0x17, 0xbb, 0xec, 0xac, 0x53, 0x0a, 0x3d, 0x71, 0x14, + 0x2d, 0x80, 0x45, 0x41, 0xf4, 0xa6, 0x14, 0xc1, 0x5c, 0x24, 0x0b, 0xd7, 0xab, 0xc2, 0x69, 0xab, + 0x8b, 0x6f, 0x5d, 0x06, 0x0b, 0x97, 0x2e, 0x83, 0x97, 0xfd, 0xc5, 0x0a, 0x40, 0xaa, 0xed, 0xa1, + 0xf7, 0xba, 0x44, 0xc4, 0x53, 0xbd, 0xf5, 0xc3, 0xbb, 0x27, 0x1f, 0xd0, 0x97, 0x2c, 0x18, 0x77, + 0x7c, 0x3f, 0x6c, 0x39, 0x09, 0xeb, 0xe5, 0x52, 0x6f, 0x11, 0x25, 0xea, 0x5f, 0x4a, 0x4b, 0xf0, + 0x26, 0x3c, 0x2b, 0x6f, 0x8f, 0x35, 0x4c, 0xdf, 0x56, 0xe8, 0x15, 0xa3, 0x8f, 0xcb, 0x43, 0x00, + 0x9f, 0x1e, 0x73, 0xd9, 0x43, 0x40, 0x85, 0x49, 0x63, 0x4d, 0xff, 0x47, 0xd7, 0x8d, 0xbc, 0x35, + 0x43, 0xc5, 0x21, 0xba, 0x86, 0xd2, 0xd3, 0x2f, 0x65, 0x0d, 0x6a, 0xe8, 0x2e, 0xe8, 0xc3, 0xc5, + 0x71, 0xec, 0x9a, 0x76, 0xdd, 0xc7, 0xfd, 0xfc, 0x1d, 0x98, 0x76, 0xcd, 0xed, 0x56, 0xcc, 0xa6, + 0xc7, 0x8a, 0xf8, 0x66, 0x76, 0xe7, 0x74, 0x83, 0xcd, 0x20, 0x70, 0x96, 0x31, 0x6a, 0xf0, 0x60, + 0x80, 0x7a, 0xb0, 0x11, 0x0a, 0x17, 0x3e, 0xbb, 0x70, 0x2c, 0xf7, 0xe2, 0x84, 0xec, 0x50, 0xca, + 0x74, 0x1f, 0xbd, 0x2a, 0xca, 0x62, 0xc5, 0x05, 0xbd, 0x0a, 0x23, 0x2c, 0x4a, 0x2b, 0xae, 0x8e, + 0x15, 0xdb, 0x01, 0xcd, 0x00, 0xe3, 0x74, 0x51, 0xb1, 0xbf, 0x31, 0x16, 0x1c, 0xd0, 0x45, 0x99, + 0x26, 0x20, 0xae, 0x07, 0xd7, 0x63, 0xc2, 0xd2, 0x04, 0x54, 0x96, 0x3f, 0x9a, 0x66, 0x00, 0xe0, + 0xf0, 0xdc, 0x14, 0x91, 0x46, 0x49, 0xaa, 0xaf, 0x88, 0xff, 0x32, 0xf3, 0x64, 0x15, 0x8a, 0x9b, + 0x67, 0x66, 0xa7, 0x4c, 0xbb, 0xf3, 0x86, 0xc9, 0x02, 0x67, 0x79, 0x1e, 0xeb, 0xf6, 0x39, 0x17, + 0xc0, 0x4c, 0x76, 0x61, 0xdd, 0xd3, 0xed, 0xfa, 0x07, 0x43, 0x30, 0x65, 0x4e, 0x04, 0xb4, 0x08, + 0x15, 0xc1, 0x44, 0xa5, 0x0c, 0x53, 0x73, 0xfb, 0x8a, 0x44, 0xe0, 0x94, 0x86, 0xa5, 0x4c, 0x63, + 0xc5, 0x35, 0xdf, 0xac, 0x34, 0x65, 0x9a, 0xc2, 0x60, 0x8d, 0x8a, 0x2a, 0xd1, 0x37, 0xc3, 0x30, + 0x51, 0x5b, 0x81, 0x9a, 0x2d, 0xcb, 0x0c, 0x8a, 0x05, 0x96, 0x6e, 0x01, 0xdb, 0x24, 0x0a, 0x88, + 0x6f, 0x5a, 0x32, 0xd5, 0x16, 0x70, 0x49, 0x47, 0x62, 0x93, 0x96, 0x6e, 0x69, 0x61, 0xcc, 0xa6, + 0x9f, 0x50, 0xd5, 0x53, 0x5f, 0xb7, 0x26, 0x8f, 0x52, 0x94, 0x78, 0xf4, 0x06, 0xdc, 0xaf, 0x82, + 0x0a, 0x31, 0xb7, 0x0c, 0xcb, 0x1a, 0x47, 0x8c, 0x93, 0xf5, 0xfd, 0x2b, 0xf9, 0x64, 0xb8, 0xa8, + 0x3c, 0x7a, 0x05, 0xa6, 0x84, 0x0a, 0x2c, 0x39, 0x8e, 0x9a, 0xce, 0x0a, 0x97, 0x0c, 0x2c, 0xce, + 0x50, 0xa3, 0x1a, 0xcc, 0x50, 0x08, 0xd3, 0x42, 0x25, 0x07, 0x1e, 0x1c, 0xa9, 0xf6, 0xfa, 0x4b, + 0x19, 0x3c, 0xee, 0x2a, 0x81, 0x96, 0x60, 0x9a, 0xeb, 0x28, 0xf4, 0x4c, 0xc9, 0xc6, 0x41, 0x78, + 0xd6, 0xaa, 0x85, 0x70, 0xcd, 0x44, 0xe3, 0x2c, 0x3d, 0x7a, 0x11, 0x26, 0x9c, 0xa8, 0xb5, 0xe5, + 0x25, 0xa4, 0x95, 0x74, 0x22, 0x9e, 0x84, 0x43, 0xf3, 0xf6, 0x58, 0xd2, 0x70, 0xd8, 0xa0, 0xb4, + 0xdf, 0x83, 0x13, 0x39, 0x4e, 0xf9, 0x74, 0xe2, 0x38, 0x6d, 0x4f, 0x7e, 0x53, 0xc6, 0x6b, 0x6d, + 0xa9, 0x51, 0x97, 0x5f, 0xa3, 0x51, 0xd1, 0xd9, 0xc9, 0x4c, 0xe2, 0x5a, 0x7a, 0x58, 0x35, 0x3b, + 0xd7, 0x24, 0x02, 0xa7, 0x34, 0xf6, 0xb7, 0x01, 0x34, 0x83, 0xce, 0x00, 0x3e, 0x4b, 0x2f, 0xc2, + 0x84, 0xcc, 0x69, 0xac, 0xe5, 0xd2, 0x54, 0x9f, 0x79, 0x41, 0xc3, 0x61, 0x83, 0x92, 0xb6, 0x2d, + 0x50, 0x99, 0x40, 0x33, 0x3e, 0x72, 0x69, 0x1e, 0xd0, 0x94, 0x06, 0x3d, 0x05, 0x63, 0x31, 0xf1, + 0x37, 0x2e, 0x7b, 0xc1, 0xb6, 0x98, 0xd8, 0x4a, 0x0a, 0x37, 0x05, 0x1c, 0x2b, 0x0a, 0xb4, 0x0c, + 0xe5, 0x8e, 0xe7, 0x8a, 0xa9, 0x2c, 0x37, 0xfc, 0xf2, 0xf5, 0x7a, 0xed, 0x70, 0x7f, 0xfe, 0xe1, + 0xa2, 0x54, 0xcd, 0xf4, 0x68, 0x1f, 0x2f, 0xd0, 0xe5, 0x47, 0x0b, 0xe7, 0xdd, 0x0d, 0x8c, 0x1c, + 0xf1, 0x6e, 0xe0, 0x3c, 0x80, 0xf8, 0x6a, 0x39, 0x97, 0xcb, 0xe9, 0xa8, 0x5d, 0x50, 0x18, 0xac, + 0x51, 0xa1, 0x18, 0x66, 0x5b, 0x11, 0x71, 0xe4, 0x19, 0x9a, 0xbb, 0x97, 0x8f, 0xdd, 0xb9, 0x81, + 0x60, 0x25, 0xcb, 0x0c, 0x77, 0xf3, 0x47, 0x21, 0xcc, 0xba, 0x22, 0x86, 0x35, 0xad, 0xb4, 0x72, + 0x74, 0x9f, 0x76, 0xe6, 0x90, 0x93, 0x65, 0x84, 0xbb, 0x79, 0xa3, 0xb7, 0x61, 0x4e, 0x02, 0xbb, + 0xc3, 0x86, 0xd9, 0x72, 0x29, 0x2f, 0x9f, 0x39, 0xd8, 0x9f, 0x9f, 0xab, 0x15, 0x52, 0xe1, 0x1e, + 0x1c, 0x10, 0x86, 0x11, 0x76, 0x97, 0x14, 0x57, 0xc7, 0xd9, 0x3e, 0xf7, 0x44, 0xb1, 0x31, 0x80, + 0xce, 0xf5, 0x05, 0x76, 0x0f, 0x25, 0xdc, 0x7c, 0xd3, 0x6b, 0x39, 0x06, 0xc4, 0x82, 0x13, 0xda, + 0x80, 0x71, 0x27, 0x08, 0xc2, 0xc4, 0xe1, 0x2a, 0xd4, 0x44, 0xb1, 0xee, 0xa7, 0x31, 0x5e, 0x4a, + 0x4b, 0x70, 0xee, 0xca, 0x73, 0x50, 0xc3, 0x60, 0x9d, 0x31, 0xba, 0x05, 0xd3, 0xe1, 0x2d, 0x2a, + 0x1c, 0xa5, 0x95, 0x22, 0xae, 0x4e, 0xb2, 0xba, 0x9e, 0x1b, 0xd0, 0x4e, 0x6b, 0x14, 0xd6, 0xa4, + 0x96, 0xc9, 0x14, 0x67, 0x6b, 0x41, 0x0b, 0x86, 0xb5, 0x7a, 0x2a, 0xf5, 0x67, 0x4f, 0xad, 0xd5, + 0xba, 0x71, 0x9a, 0x85, 0xa1, 0x73, 0xb7, 0x55, 0xb6, 0xfa, 0xa7, 0x33, 0x61, 0xe8, 0x29, 0x0a, + 0xeb, 0x74, 0x68, 0x0b, 0x26, 0xd2, 0x2b, 0xab, 0x28, 0x66, 0x59, 0x6a, 0xc6, 0xcf, 0x9f, 0x1f, + 0xec, 0xe3, 0xea, 0x5a, 0x49, 0x7e, 0x72, 0xd0, 0x21, 0xd8, 0xe0, 0x3c, 0xf7, 0x13, 0x30, 0xae, + 0x0d, 0xec, 0x51, 0xbc, 0xb2, 0xe7, 0x5e, 0x81, 0x99, 0xec, 0xd0, 0x1d, 0xc9, 0xab, 0xfb, 0x7f, + 0x95, 0x60, 0x3a, 0xe7, 0xe6, 0x8a, 0xa5, 0x7b, 0xce, 0x08, 0xd4, 0x34, 0xbb, 0xb3, 0x29, 0x16, + 0x4b, 0x03, 0x88, 0x45, 0x29, 0xa3, 0xcb, 0x85, 0x32, 0x5a, 0x88, 0xc2, 0xa1, 0xf7, 0x23, 0x0a, + 0xcd, 0xdd, 0x67, 0x78, 0xa0, 0xdd, 0xe7, 0x2e, 0x88, 0x4f, 0x63, 0x03, 0x1b, 0x1d, 0x60, 0x03, + 0xfb, 0x85, 0x12, 0xcc, 0x64, 0x73, 0x0a, 0x1f, 0xc3, 0x7d, 0xc7, 0xab, 0xc6, 0x7d, 0x47, 0x7e, + 0xf2, 0xf4, 0x6c, 0xa6, 0xe3, 0xa2, 0xbb, 0x0f, 0x9c, 0xb9, 0xfb, 0x78, 0x62, 0x20, 0x6e, 0xbd, + 0xef, 0x41, 0xfe, 0x7e, 0x09, 0x4e, 0x65, 0x8b, 0xac, 0xf8, 0x8e, 0xb7, 0x73, 0x0c, 0x7d, 0x73, + 0xcd, 0xe8, 0x9b, 0xa7, 0x07, 0xf9, 0x1a, 0xd6, 0xb4, 0xc2, 0x0e, 0x7a, 0x3d, 0xd3, 0x41, 0x8b, + 0x83, 0xb3, 0xec, 0xdd, 0x4b, 0xdf, 0xb6, 0xe0, 0x74, 0x6e, 0xb9, 0x63, 0xb0, 0xbe, 0x5e, 0x35, + 0xad, 0xaf, 0x8f, 0x0f, 0xfc, 0x4d, 0x05, 0xe6, 0xd8, 0xaf, 0x96, 0x0b, 0xbe, 0x85, 0xd9, 0xaf, + 0xae, 0xc1, 0xb8, 0xd3, 0x6a, 0x91, 0x38, 0xbe, 0x12, 0xba, 0x2a, 0xad, 0xd5, 0xd3, 0x6c, 0x4f, + 0x4a, 0xc1, 0x87, 0xfb, 0xf3, 0x73, 0x59, 0x16, 0x29, 0x1a, 0xeb, 0x1c, 0xcc, 0x54, 0x79, 0xa5, + 0xbb, 0x9a, 0x2a, 0xef, 0x3c, 0xc0, 0xae, 0x3a, 0xd5, 0x66, 0x8d, 0x61, 0xda, 0x79, 0x57, 0xa3, + 0x42, 0x3f, 0xc5, 0x74, 0x45, 0xee, 0x32, 0xc2, 0x2f, 0x39, 0x9e, 0x1d, 0x70, 0xac, 0x74, 0xf7, + 0x13, 0x1e, 0x08, 0xab, 0x0c, 0x87, 0x8a, 0x25, 0xfa, 0x0c, 0xcc, 0xc4, 0x3c, 0xd7, 0xc2, 0x8a, + 0xef, 0xc4, 0x2c, 0xfc, 0x42, 0xc8, 0x44, 0x16, 0xdd, 0xda, 0xcc, 0xe0, 0x70, 0x17, 0xb5, 0xfd, + 0x8f, 0xcb, 0xf0, 0x40, 0x8f, 0x29, 0x8a, 0x96, 0xcc, 0x2b, 0xde, 0x27, 0xb3, 0xd6, 0x9d, 0xb9, + 0xdc, 0xc2, 0x86, 0xb9, 0x27, 0x33, 0xc6, 0xa5, 0xf7, 0x3d, 0xc6, 0x5f, 0xb6, 0x34, 0xbb, 0x1b, + 0x77, 0x04, 0xfd, 0xd4, 0x11, 0x97, 0xde, 0x8f, 0xaa, 0xa1, 0xfe, 0x0b, 0x16, 0x3c, 0x9c, 0xfb, + 0x59, 0x86, 0xab, 0xc8, 0x22, 0x54, 0x5a, 0x14, 0xa8, 0x85, 0x48, 0xa5, 0x81, 0x8a, 0x12, 0x81, + 0x53, 0x1a, 0xc3, 0x23, 0xa4, 0xd4, 0xd7, 0x23, 0xe4, 0x5f, 0x5a, 0x70, 0x32, 0xdb, 0x88, 0x63, + 0x90, 0x4c, 0x75, 0x53, 0x32, 0x7d, 0x74, 0x90, 0x21, 0x2f, 0x10, 0x4a, 0x7f, 0x3a, 0x05, 0xf7, + 0x15, 0x64, 0xfc, 0xdf, 0x85, 0xd9, 0xcd, 0x16, 0x31, 0x83, 0xcf, 0xc4, 0xc7, 0xe4, 0xc6, 0xe9, + 0xf5, 0x8c, 0x54, 0xe3, 0xc7, 0x90, 0x2e, 0x12, 0xdc, 0x5d, 0x05, 0xfa, 0x82, 0x05, 0x27, 0x9d, + 0x5b, 0x71, 0xd7, 0x0b, 0x3c, 0x62, 0xce, 0x3c, 0x97, 0x6b, 0x1d, 0xeb, 0xf3, 0x62, 0x0f, 0x0b, + 0x10, 0x39, 0x99, 0x47, 0x85, 0x73, 0xeb, 0x42, 0x58, 0x64, 0xf6, 0xa3, 0x5a, 0x4e, 0x8f, 0xf0, + 0xc8, 0xbc, 0xe0, 0x15, 0x2e, 0xa3, 0x24, 0x06, 0x2b, 0x3e, 0xe8, 0x06, 0x54, 0x36, 0x65, 0x44, + 0x99, 0x90, 0x81, 0xb9, 0x9b, 0x4a, 0x6e, 0xd8, 0x19, 0xf7, 0xd8, 0x57, 0x28, 0x9c, 0xb2, 0x42, + 0xaf, 0x40, 0x39, 0xd8, 0x88, 0x7b, 0x3d, 0x79, 0x90, 0xf1, 0xa0, 0xe2, 0x71, 0xae, 0x57, 0xd7, + 0x9a, 0x98, 0x16, 0xa4, 0xe5, 0xa3, 0x9b, 0xae, 0x30, 0xe8, 0xe6, 0x96, 0xc7, 0xcb, 0xb5, 0xee, + 0xf2, 0x78, 0xb9, 0x86, 0x69, 0x41, 0xb4, 0x06, 0xc3, 0x2c, 0x40, 0x45, 0x58, 0x6b, 0x73, 0xe3, + 0xf4, 0xbb, 0x82, 0x6f, 0x78, 0xe0, 0x2b, 0x03, 0x63, 0x5e, 0x1c, 0xbd, 0x0a, 0x23, 0x2d, 0xf6, + 0x02, 0x80, 0x38, 0x5a, 0xe7, 0xe7, 0x9e, 0xe8, 0x7a, 0x23, 0x80, 0xdf, 0x51, 0x71, 0x38, 0x16, + 0x1c, 0xd0, 0x3a, 0x8c, 0xb4, 0x48, 0x7b, 0x6b, 0x23, 0x16, 0x27, 0xe6, 0x8f, 0xe7, 0xf2, 0xea, + 0xf1, 0xe0, 0x85, 0xe0, 0xca, 0x28, 0xb0, 0xe0, 0x85, 0x3e, 0x09, 0xa5, 0x8d, 0x96, 0x88, 0x55, + 0xc9, 0xb5, 0xd2, 0x9a, 0xc1, 0xc8, 0xcb, 0x23, 0x07, 0xfb, 0xf3, 0xa5, 0xb5, 0x15, 0x5c, 0xda, + 0x68, 0xa1, 0xab, 0x30, 0xba, 0xc1, 0x23, 0x4a, 0x45, 0xa6, 0xd6, 0xc7, 0xf2, 0x83, 0x5d, 0xbb, + 0x82, 0x4e, 0x79, 0x8c, 0x85, 0x40, 0x60, 0xc9, 0x04, 0xad, 0x03, 0x6c, 0xa8, 0xc8, 0x58, 0x91, + 0xaa, 0xf5, 0xa3, 0x83, 0xc4, 0xcf, 0x8a, 0xe3, 0xa3, 0x82, 0x62, 0x8d, 0x0f, 0xfa, 0x1c, 0x54, + 0x1c, 0xf9, 0xa6, 0x0b, 0x4b, 0xd3, 0x6a, 0xee, 0xd3, 0xe9, 0x82, 0xeb, 0xfd, 0xdc, 0x0d, 0x9f, + 0xad, 0x8a, 0x08, 0xa7, 0x4c, 0xd1, 0x36, 0x4c, 0xee, 0xc6, 0xed, 0x2d, 0x22, 0x17, 0x28, 0xcb, + 0xdd, 0x6a, 0x1e, 0x35, 0xd3, 0x44, 0xbb, 0x82, 0xd0, 0x8b, 0x92, 0x8e, 0xe3, 0x77, 0xc9, 0x14, + 0x16, 0x90, 0x73, 0x43, 0x67, 0x86, 0x4d, 0xde, 0xb4, 0xd3, 0xdf, 0xed, 0x84, 0x37, 0xf7, 0x12, + 0x22, 0x32, 0xba, 0xe6, 0x76, 0xfa, 0x6b, 0x9c, 0xa4, 0xbb, 0xd3, 0x05, 0x02, 0x4b, 0x26, 0x74, + 0x09, 0x3b, 0xf2, 0xbd, 0x24, 0x71, 0x46, 0x7e, 0xbc, 0xb0, 0x7b, 0xba, 0xda, 0x9b, 0x76, 0x0a, + 0x93, 0x7d, 0x29, 0x2b, 0x26, 0xf3, 0xda, 0x5b, 0x61, 0x12, 0x06, 0x19, 0x79, 0x3b, 0x5b, 0x2c, + 0xf3, 0x1a, 0x39, 0xf4, 0xdd, 0x32, 0x2f, 0x8f, 0x0a, 0xe7, 0xd6, 0x85, 0x5c, 0x98, 0x6a, 0x87, + 0x51, 0x72, 0x2b, 0x8c, 0xe4, 0xac, 0x42, 0x3d, 0x0e, 0x4f, 0x06, 0xa5, 0xa8, 0x91, 0xf9, 0xd7, + 0x9a, 0x18, 0x9c, 0xe1, 0x49, 0x87, 0x24, 0x6e, 0x39, 0x3e, 0xa9, 0x5f, 0xab, 0x9e, 0x28, 0x1e, + 0x92, 0x26, 0x27, 0xe9, 0x1e, 0x12, 0x81, 0xc0, 0x92, 0x09, 0x95, 0x3e, 0x2c, 0x39, 0x38, 0x4b, + 0x41, 0x5b, 0x20, 0x7d, 0xba, 0x3c, 0x4f, 0xb9, 0xf4, 0x61, 0x60, 0xcc, 0x8b, 0xd3, 0x99, 0x2f, + 0x74, 0xc2, 0x30, 0xae, 0x9e, 0x2a, 0x9e, 0xf9, 0x42, 0x95, 0xbc, 0xd6, 0xec, 0x35, 0xf3, 0x15, + 0x11, 0x4e, 0x99, 0xda, 0x5f, 0x1c, 0xe9, 0xd6, 0x16, 0x98, 0xee, 0xff, 0x45, 0xab, 0xeb, 0xfa, + 0xf4, 0x13, 0x83, 0x1e, 0x58, 0xef, 0xe2, 0x45, 0xea, 0x17, 0x2c, 0xb8, 0xaf, 0x9d, 0xfb, 0x51, + 0x62, 0xeb, 0x1d, 0xec, 0xdc, 0xcb, 0xbb, 0x41, 0x25, 0x77, 0xce, 0xc7, 0xe3, 0x82, 0x9a, 0xb2, + 0x3a, 0x72, 0xf9, 0x7d, 0xeb, 0xc8, 0x57, 0x60, 0x8c, 0xa9, 0x77, 0x69, 0x22, 0x99, 0x81, 0x9c, + 0x90, 0xd8, 0x26, 0xbe, 0x22, 0x0a, 0x62, 0xc5, 0x02, 0xfd, 0x9c, 0x05, 0x0f, 0x65, 0x9b, 0x8e, + 0x09, 0x43, 0x8b, 0xc4, 0x84, 0xfc, 0xd8, 0xb1, 0x26, 0xbe, 0xff, 0xa1, 0x46, 0x2f, 0xe2, 0xc3, + 0x7e, 0x04, 0xb8, 0x77, 0x65, 0xa8, 0x96, 0x73, 0xee, 0x19, 0x31, 0x6f, 0x57, 0xfa, 0x9f, 0x7d, + 0x8e, 0x57, 0x73, 0xff, 0x9a, 0x95, 0xa3, 0x72, 0xf2, 0x33, 0xd6, 0xcb, 0xe6, 0x19, 0xeb, 0xd1, + 0xec, 0x19, 0xab, 0xcb, 0x62, 0x62, 0x1c, 0xaf, 0x06, 0x4f, 0x9d, 0x3a, 0x68, 0xce, 0x1c, 0xdb, + 0x87, 0xb3, 0xfd, 0xc4, 0x2c, 0x73, 0xa9, 0x72, 0xd5, 0x5d, 0x63, 0xea, 0x52, 0xe5, 0xd6, 0x6b, + 0x98, 0x61, 0x06, 0xcd, 0xbe, 0x60, 0xff, 0x37, 0x0b, 0xca, 0x8d, 0xd0, 0x3d, 0x06, 0x0b, 0xd0, + 0xa7, 0x0c, 0x0b, 0xd0, 0x03, 0x05, 0xef, 0x28, 0x16, 0xda, 0x7b, 0x56, 0x33, 0xf6, 0x9e, 0x87, + 0x8a, 0x18, 0xf4, 0xb6, 0xee, 0xfc, 0x83, 0x32, 0xe8, 0xaf, 0x3e, 0xa2, 0x7f, 0x7d, 0x27, 0xbe, + 0xb9, 0xe5, 0x5e, 0x0f, 0x41, 0x0a, 0xce, 0xcc, 0x13, 0x4b, 0x86, 0xfd, 0xfd, 0x88, 0xb9, 0xe8, + 0xbe, 0x4e, 0xbc, 0xcd, 0xad, 0x84, 0xb8, 0xd9, 0xcf, 0x39, 0x3e, 0x17, 0xdd, 0xff, 0x62, 0xc1, + 0x74, 0xa6, 0x76, 0xe4, 0xe7, 0xc5, 0x10, 0xdd, 0xa1, 0x4d, 0x67, 0xb6, 0x6f, 0xd0, 0xd1, 0x02, + 0x80, 0x32, 0xaf, 0x4b, 0xbb, 0x09, 0xd3, 0x62, 0x95, 0xfd, 0x3d, 0xc6, 0x1a, 0x05, 0x7a, 0x1e, + 0xc6, 0x93, 0xb0, 0x1d, 0xfa, 0xe1, 0xe6, 0xde, 0x25, 0x22, 0xf3, 0x7d, 0xa8, 0x4b, 0x90, 0xf5, + 0x14, 0x85, 0x75, 0x3a, 0xfb, 0x57, 0xcb, 0x90, 0x7d, 0x29, 0xf4, 0xff, 0xcf, 0xc9, 0x0f, 0xe7, + 0x9c, 0xfc, 0xae, 0x05, 0x33, 0xb4, 0x76, 0xe6, 0xe5, 0x22, 0x9d, 0x5b, 0xd5, 0x1b, 0x0b, 0x56, + 0x8f, 0x37, 0x16, 0x1e, 0xa5, 0xb2, 0xcb, 0x0d, 0x3b, 0x89, 0xb0, 0xef, 0x68, 0xc2, 0x89, 0x42, + 0xb1, 0xc0, 0x0a, 0x3a, 0x12, 0x45, 0x22, 0x32, 0x48, 0xa7, 0x23, 0x51, 0x84, 0x05, 0x56, 0x3e, + 0xc1, 0x30, 0x54, 0xf0, 0x04, 0x03, 0x4b, 0x95, 0x25, 0x3c, 0x2b, 0x84, 0x6a, 0xa0, 0xa5, 0xca, + 0x92, 0x2e, 0x17, 0x29, 0x8d, 0xfd, 0xf5, 0x32, 0x4c, 0x34, 0x42, 0x37, 0xf5, 0x87, 0x7f, 0xce, + 0xf0, 0x87, 0x3f, 0x9b, 0xf1, 0x87, 0x9f, 0xd1, 0x69, 0xef, 0x8e, 0x3b, 0xbc, 0x48, 0xa4, 0xc6, + 0x1e, 0x04, 0xb9, 0x43, 0x57, 0x78, 0x23, 0x91, 0x9a, 0x62, 0x84, 0x4d, 0xbe, 0x3f, 0x4e, 0x2e, + 0xf0, 0x7f, 0x61, 0xc1, 0x54, 0x23, 0x74, 0xe9, 0x04, 0xfd, 0x71, 0x9a, 0x8d, 0x7a, 0x22, 0xb6, + 0x91, 0x1e, 0x89, 0xd8, 0xfe, 0xa1, 0x05, 0xa3, 0x8d, 0xd0, 0x3d, 0x06, 0xdb, 0xe7, 0xcb, 0xa6, + 0xed, 0xf3, 0xfe, 0x02, 0x29, 0x5b, 0x60, 0xee, 0xfc, 0xad, 0x32, 0x4c, 0xd2, 0x76, 0x86, 0x9b, + 0x72, 0x94, 0x8c, 0x1e, 0xb1, 0x06, 0xe8, 0x11, 0xaa, 0xcc, 0x85, 0xbe, 0x1f, 0xde, 0xca, 0x8e, + 0xd8, 0x1a, 0x83, 0x62, 0x81, 0x45, 0x4f, 0xc1, 0x58, 0x3b, 0x22, 0xbb, 0x5e, 0xd8, 0x89, 0xb3, + 0xb1, 0x85, 0x0d, 0x01, 0xc7, 0x8a, 0x02, 0x3d, 0x07, 0x13, 0xb1, 0x17, 0xb4, 0x88, 0xf4, 0xb6, + 0x18, 0x62, 0xde, 0x16, 0x3c, 0x97, 0xa5, 0x06, 0xc7, 0x06, 0x15, 0x7a, 0x1d, 0x2a, 0xec, 0x3f, + 0x5b, 0x37, 0x47, 0x7f, 0x61, 0x81, 0x1f, 0x55, 0x25, 0x03, 0x9c, 0xf2, 0x42, 0xe7, 0x01, 0x12, + 0xe9, 0x17, 0x12, 0x8b, 0xd0, 0x57, 0xa5, 0x51, 0x2a, 0x8f, 0x91, 0x18, 0x6b, 0x54, 0xe8, 0x49, + 0xa8, 0x24, 0x8e, 0xe7, 0x5f, 0xf6, 0x02, 0x12, 0x0b, 0xbf, 0x1a, 0x91, 0x1f, 0x5a, 0x00, 0x71, + 0x8a, 0xa7, 0x3b, 0x3a, 0x0b, 0xac, 0xe6, 0xef, 0xb3, 0x8c, 0x31, 0x6a, 0xb6, 0xa3, 0x5f, 0x56, + 0x50, 0xac, 0x51, 0xd8, 0x2f, 0xc2, 0xa9, 0x46, 0xe8, 0x36, 0xc2, 0x28, 0x59, 0x0b, 0xa3, 0x5b, + 0x4e, 0xe4, 0xca, 0xf1, 0x9b, 0x97, 0xa9, 0x8a, 0xe9, 0xae, 0x3b, 0xcc, 0xcf, 0xf5, 0x46, 0x12, + 0xe2, 0x67, 0xd9, 0x9e, 0x7e, 0xc4, 0x20, 0x88, 0x7f, 0x57, 0x02, 0xd4, 0x60, 0x9e, 0x2b, 0xc6, + 0x23, 0x3e, 0x6f, 0xc3, 0x54, 0x4c, 0x2e, 0x7b, 0x41, 0xe7, 0xb6, 0x60, 0xd5, 0x2b, 0xc2, 0xa4, + 0xb9, 0xaa, 0x53, 0x72, 0xdb, 0x88, 0x09, 0xc3, 0x19, 0x6e, 0xb4, 0x0b, 0xa3, 0x4e, 0xb0, 0x14, + 0x5f, 0x8f, 0x49, 0x24, 0x1e, 0xad, 0x61, 0x5d, 0x88, 0x25, 0x10, 0xa7, 0x78, 0x3a, 0x65, 0xd8, + 0x9f, 0xab, 0x61, 0x80, 0xc3, 0x30, 0x91, 0x93, 0x8c, 0x3d, 0x7b, 0xa0, 0xc1, 0xb1, 0x41, 0x85, + 0xd6, 0x00, 0xc5, 0x9d, 0x76, 0xdb, 0x67, 0x17, 0x7d, 0x8e, 0x7f, 0x21, 0x0a, 0x3b, 0x6d, 0xee, + 0x7a, 0x2c, 0x5e, 0x0c, 0x68, 0x76, 0x61, 0x71, 0x4e, 0x09, 0x2a, 0x18, 0x36, 0x62, 0xf6, 0x5b, + 0xc4, 0x56, 0x73, 0x2b, 0x65, 0x93, 0x81, 0xb0, 0xc4, 0xd9, 0x9f, 0x67, 0x9b, 0x19, 0x7b, 0x6b, + 0x24, 0xe9, 0x44, 0x04, 0xed, 0xc0, 0x64, 0x9b, 0x6d, 0x58, 0x49, 0x14, 0xfa, 0x3e, 0x91, 0x7a, + 0xe3, 0x9d, 0x79, 0xd1, 0xf0, 0xb7, 0x07, 0x74, 0x76, 0xd8, 0xe4, 0x6e, 0x7f, 0x71, 0x9a, 0xc9, + 0xa5, 0x26, 0x3f, 0xb4, 0x8c, 0x0a, 0xdf, 0x58, 0xa1, 0xa1, 0xcd, 0x15, 0xbf, 0xed, 0x95, 0x4a, + 0x7a, 0xe1, 0x5f, 0x8b, 0x65, 0x59, 0xf4, 0x1a, 0xf3, 0xd9, 0xe6, 0xc2, 0xa0, 0xdf, 0xab, 0x82, + 0x9c, 0xca, 0xf0, 0xd7, 0x16, 0x05, 0xb1, 0xc6, 0x04, 0x5d, 0x86, 0x49, 0xf1, 0x34, 0x85, 0x30, + 0x21, 0x94, 0x8d, 0xe3, 0xef, 0x24, 0xd6, 0x91, 0x87, 0x59, 0x00, 0x36, 0x0b, 0xa3, 0x4d, 0x78, + 0x48, 0x7b, 0x48, 0x29, 0xc7, 0x93, 0x8b, 0xcb, 0x96, 0x87, 0x0f, 0xf6, 0xe7, 0x1f, 0x5a, 0xef, + 0x45, 0x88, 0x7b, 0xf3, 0x41, 0xd7, 0xe0, 0x94, 0xd3, 0x4a, 0xbc, 0x5d, 0x52, 0x23, 0x8e, 0xeb, + 0x7b, 0x01, 0x31, 0x83, 0xed, 0x4f, 0x1f, 0xec, 0xcf, 0x9f, 0x5a, 0xca, 0x23, 0xc0, 0xf9, 0xe5, + 0xd0, 0xcb, 0x50, 0x71, 0x83, 0x58, 0xf4, 0xc1, 0x88, 0xf1, 0x46, 0x58, 0xa5, 0x76, 0xb5, 0xa9, + 0xbe, 0x3f, 0xfd, 0x83, 0xd3, 0x02, 0x68, 0x13, 0x26, 0xf4, 0x80, 0x1a, 0xf1, 0xbe, 0xdc, 0xd3, + 0x3d, 0xce, 0xb6, 0x46, 0x14, 0x0a, 0xb7, 0x9f, 0x29, 0x3f, 0x49, 0x23, 0x40, 0xc5, 0x60, 0x8c, + 0x5e, 0x05, 0x14, 0x93, 0x68, 0xd7, 0x6b, 0x91, 0xa5, 0x16, 0x4b, 0xf6, 0xca, 0xac, 0x2e, 0x63, + 0x86, 0xd3, 0x3f, 0x6a, 0x76, 0x51, 0xe0, 0x9c, 0x52, 0xe8, 0x22, 0x95, 0x28, 0x3a, 0x54, 0xb8, + 0xb5, 0x4a, 0x35, 0xaf, 0x5a, 0x23, 0xed, 0x88, 0xb4, 0x9c, 0x84, 0xb8, 0x26, 0x47, 0x9c, 0x29, + 0x47, 0xf7, 0x1b, 0x95, 0x43, 0x1f, 0x4c, 0x67, 0xcc, 0xee, 0x3c, 0xfa, 0xf4, 0x84, 0xb4, 0x15, + 0xc6, 0xc9, 0x55, 0x92, 0xdc, 0x0a, 0xa3, 0x6d, 0x91, 0x21, 0x2b, 0x4d, 0xa0, 0x97, 0xa2, 0xb0, + 0x4e, 0x47, 0x35, 0x22, 0x76, 0x9d, 0x55, 0xaf, 0xb1, 0x1b, 0x87, 0xb1, 0x74, 0x9d, 0x5c, 0xe4, + 0x60, 0x2c, 0xf1, 0x92, 0xb4, 0xde, 0x58, 0x61, 0xf7, 0x08, 0x19, 0xd2, 0x7a, 0x63, 0x05, 0x4b, + 0x3c, 0x22, 0xdd, 0xef, 0xaf, 0x4d, 0x15, 0xdf, 0x00, 0x75, 0xcb, 0xe5, 0x01, 0x9f, 0x60, 0x0b, + 0x60, 0x46, 0xbd, 0xfc, 0xc6, 0x53, 0x87, 0xc5, 0xd5, 0x69, 0x36, 0x49, 0x06, 0xcf, 0x3b, 0xa6, + 0xac, 0x6a, 0xf5, 0x0c, 0x27, 0xdc, 0xc5, 0xdb, 0x48, 0xe2, 0x30, 0xd3, 0xf7, 0x0d, 0x84, 0x45, + 0xa8, 0xc4, 0x9d, 0x9b, 0x6e, 0xb8, 0xe3, 0x78, 0x01, 0x33, 0xfb, 0xeb, 0x0f, 0xe0, 0x4b, 0x04, + 0x4e, 0x69, 0xd0, 0x1a, 0x8c, 0x39, 0xe2, 0xf0, 0x25, 0x0c, 0xf5, 0xb9, 0x51, 0xdd, 0xf2, 0x80, + 0xc6, 0x2d, 0x9a, 0xf2, 0x1f, 0x56, 0x65, 0xd1, 0x4b, 0x30, 0x29, 0x02, 0x8f, 0x84, 0xcf, 0xe0, + 0x09, 0xd3, 0x47, 0xbd, 0xa9, 0x23, 0xb1, 0x49, 0x8b, 0x7e, 0x0a, 0xa6, 0x28, 0x97, 0x54, 0xb0, + 0x55, 0x4f, 0x0e, 0x22, 0x11, 0xb5, 0xdc, 0xd6, 0x7a, 0x61, 0x9c, 0x61, 0x86, 0x5c, 0x78, 0xd0, + 0xe9, 0x24, 0xe1, 0x0e, 0x9d, 0xe1, 0xe6, 0xfc, 0x5f, 0x0f, 0xb7, 0x49, 0xc0, 0xec, 0xf4, 0x63, + 0xcb, 0x67, 0x0f, 0xf6, 0xe7, 0x1f, 0x5c, 0xea, 0x41, 0x87, 0x7b, 0x72, 0x41, 0xd7, 0x61, 0x3c, + 0x09, 0x7d, 0xe1, 0xec, 0x1b, 0x57, 0xef, 0x2b, 0x4e, 0x42, 0xb3, 0xae, 0xc8, 0x74, 0x73, 0x82, + 0x2a, 0x8a, 0x75, 0x3e, 0x68, 0x9d, 0xaf, 0x31, 0x96, 0x32, 0x91, 0xc4, 0xd5, 0xfb, 0x8b, 0x3b, + 0x46, 0x65, 0x56, 0x34, 0x97, 0xa0, 0x28, 0x89, 0x75, 0x36, 0xe8, 0x02, 0xcc, 0xb6, 0x23, 0x2f, + 0x64, 0x13, 0x5b, 0x99, 0x7c, 0xab, 0x46, 0x7a, 0xb2, 0xd9, 0x46, 0x96, 0x00, 0x77, 0x97, 0x41, + 0xe7, 0xa8, 0x82, 0xca, 0x81, 0xd5, 0xd3, 0xfc, 0x6d, 0x0c, 0xae, 0x9c, 0x72, 0x18, 0x56, 0xd8, + 0xb9, 0x4f, 0xc3, 0x6c, 0x97, 0xa4, 0x3c, 0x92, 0xe3, 0xe5, 0xaf, 0x0f, 0x43, 0x45, 0x99, 0x03, + 0xd1, 0xa2, 0x69, 0xe5, 0x3d, 0x9d, 0xb5, 0xf2, 0x8e, 0x51, 0x7d, 0x4d, 0x37, 0xec, 0xae, 0xe7, + 0x3c, 0xef, 0x7d, 0xb6, 0x40, 0x34, 0x0c, 0x1e, 0x25, 0x75, 0x84, 0xa7, 0xcf, 0xd3, 0x03, 0xe3, + 0x50, 0xcf, 0x03, 0xe3, 0x80, 0x4f, 0xed, 0xd1, 0xa3, 0x61, 0x3b, 0x74, 0xeb, 0x8d, 0xec, 0xdb, + 0x53, 0x0d, 0x0a, 0xc4, 0x1c, 0xc7, 0x94, 0x7b, 0xba, 0xad, 0x33, 0xe5, 0x7e, 0xf4, 0x0e, 0x95, + 0x7b, 0xc9, 0x00, 0xa7, 0xbc, 0x90, 0x0f, 0xb3, 0x2d, 0xf3, 0xd9, 0x30, 0x15, 0x19, 0xf5, 0x48, + 0xdf, 0x07, 0xbc, 0x3a, 0xda, 0x5b, 0x22, 0x2b, 0x59, 0x2e, 0xb8, 0x9b, 0x31, 0x7a, 0x09, 0xc6, + 0xde, 0x0d, 0x63, 0x36, 0xed, 0xc4, 0xde, 0x26, 0x63, 0x51, 0xc6, 0x5e, 0xbb, 0xd6, 0x64, 0xf0, + 0xc3, 0xfd, 0xf9, 0xf1, 0x46, 0xe8, 0xca, 0xbf, 0x58, 0x15, 0x40, 0xb7, 0xe1, 0x94, 0x21, 0x11, + 0x54, 0x73, 0x61, 0xf0, 0xe6, 0x3e, 0x24, 0xaa, 0x3b, 0x55, 0xcf, 0xe3, 0x84, 0xf3, 0x2b, 0xb0, + 0xbf, 0xc1, 0x8d, 0x9e, 0xc2, 0x34, 0x42, 0xe2, 0x8e, 0x7f, 0x1c, 0x0f, 0x06, 0xac, 0x1a, 0x56, + 0x9b, 0x3b, 0x36, 0xac, 0xff, 0x81, 0xc5, 0x0c, 0xeb, 0xeb, 0x64, 0xa7, 0xed, 0x3b, 0xc9, 0x71, + 0xb8, 0xdb, 0xbe, 0x06, 0x63, 0x89, 0xa8, 0xad, 0xd7, 0x1b, 0x07, 0x5a, 0xa3, 0xd8, 0xe5, 0x82, + 0xda, 0x10, 0x25, 0x14, 0x2b, 0x36, 0xf6, 0x3f, 0xe7, 0x23, 0x20, 0x31, 0xc7, 0x60, 0x5b, 0xa8, + 0x99, 0xb6, 0x85, 0xf9, 0x3e, 0x5f, 0x50, 0x60, 0x63, 0xf8, 0x67, 0x66, 0xbb, 0xd9, 0xd9, 0xe3, + 0xc3, 0x7e, 0xa3, 0x63, 0xff, 0x92, 0x05, 0x27, 0xf3, 0xae, 0xf4, 0xa9, 0x12, 0xc3, 0x4f, 0x3e, + 0xea, 0x86, 0x4b, 0xf5, 0xe0, 0x0d, 0x01, 0xc7, 0x8a, 0x62, 0xe0, 0x3c, 0xe3, 0x47, 0x4b, 0xbc, + 0x74, 0x0d, 0xcc, 0x17, 0xe6, 0xd0, 0x2b, 0xdc, 0x7f, 0xde, 0x52, 0x4f, 0xc0, 0x1d, 0xcd, 0x77, + 0xde, 0xfe, 0xb5, 0x12, 0x9c, 0xe4, 0x26, 0xea, 0xa5, 0xdd, 0xd0, 0x73, 0x1b, 0xa1, 0x2b, 0xa2, + 0x09, 0xde, 0x84, 0x89, 0xb6, 0x76, 0x5c, 0xed, 0x95, 0xfa, 0x45, 0x3f, 0xd6, 0xa6, 0xc7, 0x06, + 0x1d, 0x8a, 0x0d, 0x5e, 0xc8, 0x85, 0x09, 0xb2, 0xeb, 0xb5, 0x94, 0x9d, 0xb3, 0x74, 0x64, 0x91, + 0xae, 0x6a, 0x59, 0xd5, 0xf8, 0x60, 0x83, 0xeb, 0x3d, 0x78, 0x0d, 0xc4, 0xfe, 0x8a, 0x05, 0xf7, + 0x17, 0x24, 0x8a, 0xa1, 0xd5, 0xdd, 0x62, 0x97, 0x01, 0xe2, 0xb9, 0x42, 0x55, 0x1d, 0xbf, 0x22, + 0xc0, 0x02, 0x8b, 0x7e, 0x12, 0x80, 0x9b, 0xf8, 0xd9, 0xe3, 0xf0, 0xa5, 0xde, 0x91, 0xe8, 0x46, + 0x02, 0x05, 0x2d, 0xca, 0x5e, 0x3d, 0x07, 0xaf, 0xf1, 0xb2, 0x7f, 0xa5, 0x0c, 0xc3, 0xfc, 0xed, + 0xea, 0x35, 0x18, 0xdd, 0xe2, 0x69, 0x69, 0x07, 0xc9, 0x80, 0x9b, 0x1e, 0x47, 0x38, 0x00, 0xcb, + 0xc2, 0xe8, 0x0a, 0x9c, 0x10, 0x11, 0x2b, 0x35, 0xe2, 0x3b, 0x7b, 0xf2, 0x54, 0xcb, 0x9f, 0x88, + 0x90, 0xe9, 0xcb, 0x4f, 0xd4, 0xbb, 0x49, 0x70, 0x5e, 0x39, 0xf4, 0x4a, 0x57, 0x32, 0x3a, 0x9e, + 0xd0, 0x57, 0xe9, 0xc0, 0x7d, 0x12, 0xd2, 0xbd, 0x04, 0x93, 0xed, 0xae, 0xf3, 0xbb, 0xf6, 0x6c, + 0xb0, 0x79, 0x66, 0x37, 0x69, 0x99, 0x7f, 0x40, 0x87, 0x79, 0x43, 0xac, 0x6f, 0x45, 0x24, 0xde, + 0x0a, 0x7d, 0x57, 0xbc, 0x91, 0x99, 0xfa, 0x07, 0x64, 0xf0, 0xb8, 0xab, 0x04, 0xe5, 0xb2, 0xe1, + 0x78, 0x7e, 0x27, 0x22, 0x29, 0x97, 0x11, 0x93, 0xcb, 0x5a, 0x06, 0x8f, 0xbb, 0x4a, 0xd0, 0x79, + 0x74, 0x4a, 0x3c, 0xb0, 0x28, 0xe3, 0x98, 0x95, 0xd3, 0xc7, 0xa8, 0xf4, 0x54, 0xef, 0x91, 0x5b, + 0x43, 0x5c, 0xf9, 0xab, 0x27, 0x1a, 0xb5, 0xa7, 0xbb, 0x84, 0x8f, 0xba, 0xe4, 0x72, 0x27, 0xcf, + 0xfc, 0xfd, 0x89, 0x05, 0x27, 0x72, 0x1c, 0xc1, 0xb8, 0xa8, 0xda, 0xf4, 0xe2, 0x44, 0xbd, 0x4c, + 0xa0, 0x89, 0x2a, 0x0e, 0xc7, 0x8a, 0x82, 0xae, 0x07, 0x2e, 0x0c, 0xb3, 0x02, 0x50, 0x38, 0x6f, + 0x08, 0xec, 0xd1, 0x04, 0x20, 0x3a, 0x0b, 0x43, 0x9d, 0x98, 0x44, 0xf2, 0x6d, 0x3c, 0x29, 0xbf, + 0x99, 0x45, 0x90, 0x61, 0xa8, 0x46, 0xb9, 0xa9, 0x8c, 0x71, 0x9a, 0x46, 0xc9, 0xcd, 0x71, 0x1c, + 0x67, 0x7f, 0xb9, 0x0c, 0xd3, 0x19, 0x57, 0x4e, 0xda, 0x90, 0x9d, 0x30, 0xf0, 0x92, 0x50, 0xe5, + 0x42, 0xe3, 0xa9, 0x1f, 0x48, 0x7b, 0xeb, 0x8a, 0x80, 0x63, 0x45, 0x81, 0x1e, 0x95, 0x8f, 0xa6, + 0x66, 0x5f, 0x5c, 0x58, 0xae, 0x19, 0xef, 0xa6, 0x0e, 0xfa, 0x74, 0xca, 0x23, 0x30, 0xd4, 0x0e, + 0xd5, 0x8b, 0xd6, 0x6a, 0x3c, 0xf1, 0x72, 0xad, 0x11, 0x86, 0x3e, 0x66, 0x48, 0xf4, 0x31, 0xf1, + 0xf5, 0x99, 0xfb, 0x0a, 0xec, 0xb8, 0x61, 0xac, 0x75, 0xc1, 0xe3, 0x30, 0xba, 0x4d, 0xf6, 0x22, + 0x2f, 0xd8, 0xcc, 0xde, 0xd6, 0x5c, 0xe2, 0x60, 0x2c, 0xf1, 0x66, 0xea, 0xf1, 0xd1, 0x7b, 0xf2, + 0xfa, 0xc9, 0x58, 0xdf, 0x5d, 0xed, 0xb7, 0x2c, 0x98, 0x66, 0x79, 0x47, 0x45, 0xc4, 0xbc, 0x17, + 0x06, 0xc7, 0xa0, 0x27, 0x3c, 0x02, 0xc3, 0x11, 0xad, 0x34, 0xfb, 0xa4, 0x01, 0x6b, 0x09, 0xe6, + 0x38, 0xf4, 0x20, 0x0c, 0xb1, 0x26, 0xd0, 0xc1, 0x9b, 0xe0, 0x99, 0xc7, 0x6b, 0x4e, 0xe2, 0x60, + 0x06, 0x65, 0xa1, 0x4b, 0x98, 0xb4, 0x7d, 0x8f, 0x37, 0x3a, 0x35, 0xb7, 0x7e, 0x38, 0x42, 0x97, + 0x72, 0x9b, 0xf6, 0xfe, 0x42, 0x97, 0xf2, 0x59, 0xf6, 0xd6, 0xc1, 0xff, 0x7b, 0x09, 0xce, 0xe4, + 0x96, 0x4b, 0x6f, 0x76, 0xd7, 0x8c, 0x9b, 0xdd, 0xf3, 0x99, 0x9b, 0x5d, 0xbb, 0x77, 0xe9, 0xbb, + 0x73, 0xd7, 0x9b, 0x7f, 0x05, 0x5b, 0x3e, 0xc6, 0x2b, 0xd8, 0xa1, 0x41, 0xd5, 0x94, 0xe1, 0x3e, + 0x6a, 0xca, 0xb7, 0x2d, 0x38, 0x9d, 0xdb, 0x65, 0x1f, 0x92, 0x58, 0xb1, 0xdc, 0xb6, 0x15, 0x9c, + 0x21, 0x7e, 0x58, 0x2a, 0xf8, 0x16, 0x76, 0x9a, 0x38, 0x47, 0xe5, 0x0c, 0x43, 0xc6, 0x42, 0xed, + 0x9a, 0xe0, 0x32, 0x86, 0xc3, 0xb0, 0xc2, 0x22, 0x4f, 0x8b, 0xba, 0xe2, 0x4d, 0x7b, 0xe9, 0x48, + 0x4b, 0x66, 0xc1, 0xb4, 0x8e, 0xeb, 0xe1, 0xfd, 0xd9, 0x08, 0xac, 0x2b, 0xda, 0x09, 0xb0, 0x3c, + 0xf8, 0x09, 0x70, 0x22, 0xff, 0xf4, 0x87, 0x96, 0x60, 0x7a, 0xc7, 0x0b, 0xd8, 0xbb, 0xa4, 0xa6, + 0xde, 0xa3, 0x42, 0x55, 0xaf, 0x98, 0x68, 0x9c, 0xa5, 0x9f, 0x7b, 0x09, 0x26, 0xef, 0xdc, 0x64, + 0xf5, 0xdd, 0x32, 0x3c, 0xd0, 0x63, 0xd9, 0x73, 0x59, 0x6f, 0x8c, 0x81, 0x26, 0xeb, 0xbb, 0xc6, + 0xa1, 0x01, 0x27, 0x37, 0x3a, 0xbe, 0xbf, 0xc7, 0xbc, 0x9c, 0x88, 0x2b, 0x29, 0x84, 0x62, 0xa2, + 0x92, 0x0a, 0xaf, 0xe5, 0xd0, 0xe0, 0xdc, 0x92, 0xe8, 0x55, 0x40, 0xe1, 0x4d, 0x96, 0xe8, 0xd6, + 0x4d, 0x93, 0x16, 0xb0, 0x8e, 0x2f, 0xa7, 0x8b, 0xf1, 0x5a, 0x17, 0x05, 0xce, 0x29, 0x45, 0x35, + 0x4c, 0xf6, 0x9a, 0xba, 0x6a, 0x56, 0x46, 0xc3, 0xc4, 0x3a, 0x12, 0x9b, 0xb4, 0xe8, 0x02, 0xcc, + 0x3a, 0xbb, 0x8e, 0xc7, 0x93, 0x58, 0x49, 0x06, 0x5c, 0xc5, 0x54, 0x86, 0xa2, 0xa5, 0x2c, 0x01, + 0xee, 0x2e, 0x83, 0x36, 0x0c, 0x2b, 0x1f, 0xcf, 0xa1, 0x7f, 0x7e, 0xe0, 0xd9, 0x3a, 0xb0, 0xdd, + 0xcf, 0xfe, 0x4f, 0x16, 0xdd, 0xbe, 0x72, 0x1e, 0xc2, 0xa4, 0xfd, 0xa0, 0xec, 0x57, 0x5a, 0xc4, + 0x98, 0xea, 0x87, 0x15, 0x1d, 0x89, 0x4d, 0x5a, 0x3e, 0x21, 0xe2, 0xd4, 0x5d, 0xda, 0xd0, 0x13, + 0x45, 0x88, 0xa5, 0xa2, 0x40, 0x6f, 0xc0, 0xa8, 0xeb, 0xed, 0x7a, 0x71, 0x18, 0x89, 0xc5, 0x72, + 0xd4, 0x07, 0xa0, 0x95, 0x1c, 0xac, 0x71, 0x36, 0x58, 0xf2, 0xb3, 0xbf, 0x5c, 0x82, 0x49, 0x59, + 0xe3, 0x6b, 0x9d, 0x30, 0x71, 0x8e, 0x61, 0x5b, 0xbe, 0x60, 0x6c, 0xcb, 0x1f, 0xeb, 0x15, 0x67, + 0xca, 0x9a, 0x54, 0xb8, 0x1d, 0x5f, 0xcb, 0x6c, 0xc7, 0x8f, 0xf5, 0x67, 0xd5, 0x7b, 0x1b, 0xfe, + 0x5d, 0x0b, 0x66, 0x0d, 0xfa, 0x63, 0xd8, 0x0d, 0xd6, 0xcc, 0xdd, 0xe0, 0xe1, 0xbe, 0xdf, 0x50, + 0xb0, 0x0b, 0x7c, 0xad, 0x94, 0x69, 0x3b, 0x93, 0xfe, 0xef, 0xc2, 0xd0, 0x96, 0x13, 0xb9, 0xbd, + 0x52, 0x31, 0x76, 0x15, 0x5a, 0xb8, 0xe8, 0x44, 0x2e, 0x97, 0xe1, 0x4f, 0xa9, 0x37, 0xba, 0x9c, + 0xc8, 0xed, 0x1b, 0x1d, 0xc0, 0xaa, 0x42, 0x2f, 0xc2, 0x48, 0xdc, 0x0a, 0xdb, 0xca, 0xf7, 0xf2, + 0x2c, 0x7f, 0xbf, 0x8b, 0x42, 0x0e, 0xf7, 0xe7, 0x91, 0x59, 0x1d, 0x05, 0x63, 0x41, 0x3f, 0xb7, + 0x09, 0x15, 0x55, 0xf5, 0x3d, 0xf5, 0x2a, 0xff, 0xa3, 0x32, 0x9c, 0xc8, 0x99, 0x17, 0x28, 0x36, + 0x7a, 0xeb, 0x99, 0x01, 0xa7, 0xd3, 0xfb, 0xec, 0xaf, 0x98, 0x9d, 0x58, 0x5c, 0x31, 0xfe, 0x03, + 0x57, 0x7a, 0x3d, 0x26, 0xd9, 0x4a, 0x29, 0xa8, 0x7f, 0xa5, 0xb4, 0xb2, 0x63, 0xeb, 0x6a, 0x5a, + 0x91, 0x6a, 0xe9, 0x3d, 0x1d, 0xd3, 0x3f, 0x2b, 0xc3, 0xc9, 0xbc, 0xf0, 0x74, 0xf4, 0x33, 0x99, + 0x87, 0x1d, 0x9e, 0x1b, 0x34, 0xb0, 0x9d, 0xbf, 0xf6, 0x20, 0xb2, 0xbe, 0x2c, 0x98, 0x4f, 0x3d, + 0xf4, 0xed, 0x66, 0x51, 0x27, 0x0b, 0xd7, 0x89, 0xf8, 0x83, 0x1c, 0x72, 0x89, 0x7f, 0x62, 0xe0, + 0x06, 0x88, 0x97, 0x3c, 0xe2, 0x4c, 0xb8, 0x8e, 0x04, 0xf7, 0x0f, 0xd7, 0x91, 0x35, 0xcf, 0x79, + 0x30, 0xae, 0x7d, 0xcd, 0x3d, 0x1d, 0xf1, 0x6d, 0xba, 0xa3, 0x68, 0xed, 0xbe, 0xa7, 0xa3, 0xfe, + 0x15, 0x0b, 0x32, 0x7e, 0x52, 0xca, 0xfe, 0x61, 0x15, 0xda, 0x3f, 0xce, 0xc2, 0x50, 0x14, 0xfa, + 0x24, 0x9b, 0xeb, 0x1f, 0x87, 0x3e, 0xc1, 0x0c, 0xa3, 0x1e, 0xe4, 0x2d, 0x17, 0x3d, 0xc8, 0x4b, + 0x8f, 0xc6, 0x3e, 0xd9, 0x25, 0xd2, 0x1a, 0xa1, 0x64, 0xf2, 0x65, 0x0a, 0xc4, 0x1c, 0x67, 0xff, + 0xc6, 0x10, 0x9c, 0xc8, 0x09, 0x4e, 0xa3, 0x07, 0x95, 0x4d, 0x27, 0x21, 0xb7, 0x9c, 0xbd, 0x6c, + 0xfe, 0xd1, 0x0b, 0x1c, 0x8c, 0x25, 0x9e, 0xf9, 0x72, 0xf2, 0x14, 0x66, 0x19, 0x1b, 0x91, 0xc8, + 0x5c, 0x26, 0xb0, 0xf7, 0xea, 0x8d, 0xd6, 0xf3, 0x00, 0x71, 0xec, 0xaf, 0x06, 0x54, 0xf9, 0x72, + 0x85, 0xa7, 0x68, 0x9a, 0xef, 0xae, 0x79, 0x59, 0x60, 0xb0, 0x46, 0x85, 0x6a, 0x30, 0xd3, 0x8e, + 0xc2, 0x84, 0xdb, 0xdd, 0x6a, 0xdc, 0x47, 0x61, 0xd8, 0x0c, 0x33, 0x6a, 0x64, 0xf0, 0xb8, 0xab, + 0x04, 0x7a, 0x1e, 0xc6, 0x45, 0xe8, 0x51, 0x23, 0x0c, 0x7d, 0x61, 0xa5, 0x51, 0x37, 0xde, 0xcd, + 0x14, 0x85, 0x75, 0x3a, 0xad, 0x18, 0x33, 0xe6, 0x8d, 0xe6, 0x16, 0xe3, 0x06, 0x3d, 0x8d, 0x2e, + 0x93, 0xa5, 0x62, 0x6c, 0xa0, 0x2c, 0x15, 0xa9, 0xdd, 0xaa, 0x32, 0xf0, 0xfd, 0x05, 0xf4, 0xb5, + 0xf4, 0x7c, 0xa3, 0x0c, 0x23, 0x7c, 0x28, 0x8e, 0x41, 0x15, 0x5b, 0x13, 0xb6, 0x9b, 0x1e, 0xb9, + 0x01, 0x78, 0x5b, 0x16, 0x6a, 0x4e, 0xe2, 0x70, 0x31, 0xa4, 0x56, 0x43, 0x6a, 0xe5, 0x41, 0x0b, + 0xc6, 0x7a, 0x99, 0xcb, 0x18, 0x27, 0x80, 0xf3, 0xd0, 0x56, 0xcf, 0xdb, 0x00, 0x31, 0x7b, 0x27, + 0x94, 0xf2, 0x10, 0xb9, 0x4c, 0x9f, 0xe8, 0x51, 0x7b, 0x53, 0x11, 0xf3, 0x36, 0xa4, 0x53, 0x50, + 0x21, 0xb0, 0xc6, 0x71, 0xee, 0x05, 0xa8, 0x28, 0xe2, 0x7e, 0x27, 0xb9, 0x09, 0x5d, 0x78, 0x7d, + 0x0a, 0xa6, 0x33, 0x75, 0x1d, 0xe9, 0x20, 0xf8, 0xdb, 0x16, 0x4c, 0xf3, 0x26, 0xaf, 0x06, 0xbb, + 0x62, 0xb1, 0xbf, 0x07, 0x27, 0xfd, 0x9c, 0x45, 0x27, 0x46, 0x74, 0xf0, 0x45, 0xaa, 0x0e, 0x7e, + 0x79, 0x58, 0x9c, 0x5b, 0x07, 0x3d, 0xfc, 0xf3, 0x17, 0x8e, 0x1d, 0x5f, 0x78, 0x20, 0x4f, 0xf0, + 0x1c, 0xcf, 0x1c, 0x86, 0x15, 0xd6, 0xfe, 0x9e, 0x05, 0xb3, 0x5d, 0xef, 0xe3, 0x7f, 0xa0, 0x6d, + 0x17, 0x29, 0xac, 0x4b, 0x05, 0x29, 0xac, 0xf5, 0x4f, 0x2b, 0xf7, 0xfc, 0xb4, 0x5f, 0xb3, 0x40, + 0xcc, 0xc0, 0x63, 0x50, 0xe7, 0x3f, 0x6d, 0xaa, 0xf3, 0x73, 0xc5, 0x93, 0xba, 0x40, 0x8f, 0xff, + 0x0b, 0x0b, 0x66, 0x38, 0x41, 0x7a, 0x79, 0xf1, 0x81, 0x8e, 0xc3, 0x20, 0xef, 0xaa, 0xa8, 0x87, + 0x2c, 0xf3, 0x3f, 0xca, 0x18, 0xac, 0xa1, 0x9e, 0x83, 0xe5, 0xca, 0x05, 0x74, 0x84, 0xf7, 0x82, + 0x8e, 0x9c, 0x75, 0xcd, 0xfe, 0x53, 0x0b, 0x10, 0xaf, 0x26, 0xfb, 0xb4, 0x34, 0xdf, 0xfa, 0xb4, + 0x03, 0x7d, 0x2a, 0x6a, 0x14, 0x06, 0x6b, 0x54, 0x77, 0xa5, 0x7b, 0x32, 0x37, 0x50, 0xe5, 0xfe, + 0x37, 0x50, 0x47, 0xe8, 0xd1, 0xbf, 0x31, 0x04, 0x59, 0x77, 0x47, 0x74, 0x03, 0x26, 0x5a, 0x4e, + 0xdb, 0xb9, 0xe9, 0xf9, 0x5e, 0xe2, 0x91, 0xb8, 0xd7, 0xd5, 0xf5, 0x8a, 0x46, 0x27, 0xae, 0x7b, + 0x34, 0x08, 0x36, 0xf8, 0xa0, 0x05, 0x80, 0x76, 0xe4, 0xed, 0x7a, 0x3e, 0xd9, 0x64, 0x27, 0x1a, + 0x16, 0xf3, 0xc0, 0xef, 0x63, 0x25, 0x14, 0x6b, 0x14, 0x39, 0x3e, 0xf2, 0xe5, 0x7b, 0xe7, 0x23, + 0x3f, 0x74, 0x44, 0x1f, 0xf9, 0xe1, 0x81, 0x7c, 0xe4, 0x31, 0xdc, 0x27, 0xf7, 0x6e, 0xfa, 0x7f, + 0xcd, 0xf3, 0x89, 0x50, 0xd8, 0x78, 0x24, 0xc4, 0xdc, 0xc1, 0xfe, 0xfc, 0x7d, 0x38, 0x97, 0x02, + 0x17, 0x94, 0x44, 0x3f, 0x09, 0x55, 0xc7, 0xf7, 0xc3, 0x5b, 0xaa, 0xd7, 0x56, 0xe3, 0x96, 0xe3, + 0xa7, 0x49, 0x48, 0xc7, 0x96, 0x1f, 0x3c, 0xd8, 0x9f, 0xaf, 0x2e, 0x15, 0xd0, 0xe0, 0xc2, 0xd2, + 0xf6, 0x36, 0x9c, 0x68, 0x92, 0x48, 0x3e, 0x41, 0xa6, 0x96, 0xd8, 0x3a, 0x54, 0xa2, 0x8c, 0x50, + 0x19, 0x28, 0xf0, 0x5d, 0x4b, 0xfd, 0x25, 0x85, 0x48, 0xca, 0xc8, 0xfe, 0x73, 0x0b, 0x46, 0x85, + 0x0b, 0xe5, 0x31, 0xe8, 0x32, 0x4b, 0x86, 0x59, 0x69, 0x3e, 0x5f, 0xf0, 0xb2, 0xc6, 0x14, 0x1a, + 0x94, 0xea, 0x19, 0x83, 0xd2, 0xc3, 0xbd, 0x98, 0xf4, 0x36, 0x25, 0xfd, 0x62, 0x19, 0xa6, 0x4c, + 0xf7, 0xd1, 0x63, 0xe8, 0x82, 0xab, 0x30, 0x1a, 0x0b, 0x5f, 0xe5, 0x52, 0xb1, 0xcf, 0x5b, 0x76, + 0x10, 0xd3, 0x9b, 0x71, 0xe1, 0x9d, 0x2c, 0x99, 0xe4, 0x3a, 0x41, 0x97, 0xef, 0xa1, 0x13, 0x74, + 0x3f, 0x0f, 0xde, 0xa1, 0xbb, 0xe1, 0xc1, 0x6b, 0x7f, 0x93, 0x09, 0x7f, 0x1d, 0x7e, 0x0c, 0x7a, + 0xc1, 0x05, 0x73, 0x9b, 0xb0, 0x7b, 0xcc, 0x2c, 0xd1, 0xa8, 0x02, 0xfd, 0xe0, 0x9f, 0x58, 0x30, + 0x2e, 0x08, 0x8f, 0xa1, 0xd9, 0x9f, 0x31, 0x9b, 0xfd, 0x40, 0x8f, 0x66, 0x17, 0xb4, 0xf7, 0xef, + 0x96, 0x54, 0x7b, 0x1b, 0x61, 0x94, 0x0c, 0x94, 0x94, 0x7a, 0x8c, 0x9e, 0x06, 0xc3, 0x56, 0xe8, + 0x8b, 0xcd, 0xfc, 0xc1, 0x34, 0x18, 0x8e, 0xc3, 0x0f, 0xb5, 0xdf, 0x58, 0x51, 0xb3, 0x58, 0xad, + 0x30, 0x4a, 0xc4, 0x06, 0x9a, 0xc6, 0x6a, 0x85, 0x51, 0x82, 0x19, 0x06, 0xb9, 0x00, 0xe9, 0xdb, + 0xec, 0x22, 0x7a, 0xb4, 0x78, 0x15, 0x76, 0x12, 0xcf, 0x5f, 0xf0, 0x82, 0x24, 0x4e, 0xa2, 0x85, + 0x7a, 0x90, 0x5c, 0x8b, 0xf8, 0xd9, 0x40, 0x8b, 0x6e, 0x53, 0xbc, 0xb0, 0xc6, 0x57, 0x86, 0x57, + 0xb0, 0x3a, 0x86, 0xcd, 0xfb, 0x9e, 0xab, 0x02, 0x8e, 0x15, 0x85, 0xfd, 0x02, 0x93, 0xc9, 0xac, + 0x83, 0x8e, 0x16, 0x78, 0xf6, 0x9d, 0x31, 0xd5, 0xb5, 0xcc, 0xd8, 0x5b, 0xd3, 0xc3, 0xdb, 0x7a, + 0x8b, 0x40, 0x5a, 0xb1, 0xee, 0x4a, 0x9c, 0xc6, 0xc0, 0xa1, 0xcf, 0x76, 0x5d, 0x03, 0x3e, 0xdd, + 0x47, 0x96, 0x1e, 0xe1, 0xe2, 0x8f, 0xe5, 0xd8, 0x63, 0xb9, 0xc8, 0xea, 0x8d, 0x6c, 0xda, 0xf0, + 0x15, 0x89, 0xc0, 0x29, 0x0d, 0x5a, 0x14, 0x27, 0x4b, 0x6e, 0x66, 0x79, 0x20, 0x73, 0xb2, 0x94, + 0x9f, 0xaf, 0x1d, 0x2d, 0x9f, 0x81, 0x71, 0xf5, 0x14, 0x4b, 0x83, 0xbf, 0x68, 0x51, 0xe1, 0xba, + 0xd4, 0x6a, 0x0a, 0xc6, 0x3a, 0x0d, 0x5a, 0x87, 0xe9, 0x98, 0xbf, 0x13, 0x23, 0x23, 0x1e, 0x84, + 0xdd, 0xe0, 0x89, 0xcc, 0x2b, 0xf0, 0x12, 0x7d, 0xc8, 0x40, 0x7c, 0xb1, 0xca, 0x18, 0x89, 0x2c, + 0x0b, 0xf4, 0x0a, 0x4c, 0xf9, 0xfa, 0x7b, 0x99, 0x0d, 0x61, 0x56, 0x50, 0xae, 0x5c, 0xc6, 0x6b, + 0x9a, 0x0d, 0x9c, 0xa1, 0xa6, 0x4a, 0x80, 0x0e, 0x11, 0xa9, 0x70, 0x9c, 0x60, 0x93, 0xc4, 0xe2, + 0x21, 0x09, 0xa6, 0x04, 0x5c, 0x2e, 0xa0, 0xc1, 0x85, 0xa5, 0xd1, 0x8b, 0x30, 0x21, 0x3f, 0x5f, + 0x8b, 0x00, 0x4a, 0x1d, 0x06, 0x35, 0x1c, 0x36, 0x28, 0xd1, 0x2d, 0x38, 0x25, 0xff, 0xaf, 0x47, + 0xce, 0xc6, 0x86, 0xd7, 0x12, 0x01, 0x58, 0xe3, 0x8c, 0xc5, 0x92, 0xf4, 0x9e, 0x5e, 0xcd, 0x23, + 0x3a, 0xdc, 0x9f, 0x3f, 0x2b, 0x7a, 0x2d, 0x17, 0xcf, 0x06, 0x31, 0x9f, 0x3f, 0xba, 0x02, 0x27, + 0xb6, 0x88, 0xe3, 0x27, 0x5b, 0x2b, 0x5b, 0xa4, 0xb5, 0x2d, 0x17, 0x11, 0x8b, 0x2b, 0xd2, 0xdc, + 0xec, 0x2e, 0x76, 0x93, 0xe0, 0xbc, 0x72, 0xe8, 0x2d, 0xa8, 0xb6, 0x3b, 0x37, 0x7d, 0x2f, 0xde, + 0xba, 0x1a, 0x26, 0xec, 0xc6, 0x52, 0xbd, 0x64, 0x22, 0x02, 0x90, 0x54, 0x4c, 0x55, 0xa3, 0x80, + 0x0e, 0x17, 0x72, 0x40, 0xef, 0xc1, 0xa9, 0xcc, 0x64, 0xe0, 0x8f, 0xe3, 0x88, 0x40, 0xa5, 0xc7, + 0xf3, 0x97, 0x53, 0x4e, 0x01, 0x1e, 0x16, 0x97, 0x8b, 0xc2, 0xf9, 0x55, 0xbc, 0xbf, 0x7b, 0xec, + 0x77, 0x69, 0x61, 0x4d, 0xbb, 0x41, 0x9f, 0x83, 0x09, 0x7d, 0x16, 0x89, 0x0d, 0xe6, 0xd1, 0x7e, + 0x6f, 0xc3, 0x0a, 0xdd, 0x48, 0xcd, 0x28, 0x1d, 0x87, 0x0d, 0x8e, 0x36, 0x81, 0xfc, 0xef, 0x43, + 0x97, 0x61, 0xac, 0xe5, 0x7b, 0x24, 0x48, 0xea, 0x8d, 0x5e, 0x81, 0xb3, 0x2b, 0x82, 0x46, 0x74, + 0x98, 0xc8, 0xc4, 0xc4, 0x61, 0x58, 0x71, 0xb0, 0x7f, 0xbf, 0x04, 0xf3, 0x7d, 0x92, 0x71, 0x65, + 0x6c, 0x80, 0xd6, 0x40, 0x36, 0xc0, 0x25, 0xf9, 0x2e, 0xcb, 0xd5, 0xcc, 0xf9, 0x33, 0xf3, 0xe6, + 0x4a, 0x7a, 0x0a, 0xcd, 0xd2, 0x0f, 0xec, 0xfe, 0xa6, 0x9b, 0x11, 0x87, 0xfa, 0x7a, 0x01, 0x36, + 0x74, 0x7b, 0xf0, 0xf0, 0xe0, 0x1a, 0x7d, 0xa1, 0x29, 0xd8, 0xfe, 0x66, 0x09, 0x4e, 0xa9, 0x2e, + 0xfc, 0xf1, 0xed, 0xb8, 0xeb, 0xdd, 0x1d, 0x77, 0x17, 0x0c, 0xe9, 0xf6, 0x35, 0x18, 0x69, 0xee, + 0xc5, 0xad, 0xc4, 0x1f, 0x40, 0x01, 0x7a, 0xc4, 0x58, 0xa0, 0xe9, 0x36, 0xcd, 0x9e, 0x56, 0x13, + 0xeb, 0xd5, 0xfe, 0xab, 0x16, 0x4c, 0xaf, 0xaf, 0x34, 0x9a, 0x61, 0x6b, 0x9b, 0x24, 0x4b, 0xdc, + 0x4c, 0x84, 0x85, 0xfe, 0x63, 0xdd, 0xa1, 0x5e, 0x93, 0xa7, 0x31, 0x9d, 0x85, 0xa1, 0xad, 0x30, + 0x4e, 0xb2, 0x97, 0x25, 0x17, 0xc3, 0x38, 0xc1, 0x0c, 0x63, 0xff, 0xb1, 0x05, 0xc3, 0xec, 0x35, + 0xb1, 0x7e, 0xaf, 0xce, 0x0d, 0xf2, 0x5d, 0xe8, 0x79, 0x18, 0x21, 0x1b, 0x1b, 0xa4, 0x95, 0x88, + 0x51, 0x95, 0x11, 0x39, 0x23, 0xab, 0x0c, 0x4a, 0x37, 0x7d, 0x56, 0x19, 0xff, 0x8b, 0x05, 0x31, + 0xfa, 0x2c, 0x54, 0x12, 0x6f, 0x87, 0x2c, 0xb9, 0xae, 0xb8, 0xa7, 0x38, 0x9a, 0x4b, 0x9a, 0x52, + 0x42, 0xd6, 0x25, 0x13, 0x9c, 0xf2, 0xb3, 0x7f, 0xbe, 0x04, 0x90, 0x46, 0xee, 0xf5, 0xfb, 0xcc, + 0xe5, 0xae, 0xc7, 0xf5, 0x1e, 0xcd, 0x79, 0x5c, 0x0f, 0xa5, 0x0c, 0x73, 0x9e, 0xd6, 0x53, 0x5d, + 0x55, 0x1e, 0xa8, 0xab, 0x86, 0x8e, 0xd2, 0x55, 0x2b, 0x30, 0x9b, 0x46, 0x1e, 0x9a, 0x61, 0xd8, + 0x2c, 0xf1, 0xee, 0x7a, 0x16, 0x89, 0xbb, 0xe9, 0xed, 0x2f, 0x59, 0x20, 0xdc, 0x94, 0x07, 0x98, + 0xd0, 0x6f, 0xca, 0x77, 0xb0, 0x8c, 0x0c, 0x81, 0x67, 0x8b, 0xfd, 0xb6, 0x45, 0x5e, 0x40, 0xb5, + 0x81, 0x18, 0xd9, 0x00, 0x0d, 0x5e, 0xf6, 0xef, 0x5a, 0x30, 0xce, 0xd1, 0x57, 0xd8, 0x29, 0xbb, + 0x7f, 0x6b, 0x8e, 0x94, 0xb6, 0x99, 0x3d, 0x11, 0x45, 0x19, 0xab, 0xec, 0xbe, 0xfa, 0x13, 0x51, + 0x12, 0x81, 0x53, 0x1a, 0xf4, 0x38, 0x8c, 0xc6, 0x9d, 0x9b, 0x8c, 0x3c, 0xe3, 0xa9, 0xdc, 0xe4, + 0x60, 0x2c, 0xf1, 0x74, 0x5e, 0xcd, 0x64, 0x1d, 0xd5, 0xd1, 0x45, 0x18, 0xe1, 0x62, 0x43, 0x2c, + 0xe3, 0x1e, 0xb7, 0x32, 0x9a, 0x7b, 0x3b, 0xf0, 0x37, 0xcd, 0x99, 0xb8, 0x11, 0xe5, 0xd1, 0x5b, + 0x30, 0xee, 0x86, 0xb7, 0x82, 0x5b, 0x4e, 0xe4, 0x2e, 0x35, 0xea, 0xa2, 0xd7, 0x73, 0xb5, 0x8f, + 0x5a, 0x4a, 0xa6, 0xbb, 0xcc, 0x33, 0x0b, 0x64, 0x8a, 0xc2, 0x3a, 0x3b, 0xb4, 0xce, 0x92, 0xa1, + 0xf0, 0x97, 0x56, 0x7b, 0x39, 0xe0, 0xa8, 0xc7, 0x59, 0x35, 0xce, 0x93, 0x22, 0x63, 0x8a, 0x78, + 0xa7, 0x35, 0x65, 0x64, 0x7f, 0xe1, 0x04, 0x18, 0xa3, 0x6d, 0x24, 0x57, 0xb6, 0xee, 0x52, 0x72, + 0x65, 0x0c, 0x63, 0x64, 0xa7, 0x9d, 0xec, 0xd5, 0xbc, 0xa8, 0x57, 0xb6, 0xfb, 0x55, 0x41, 0xd3, + 0xcd, 0x53, 0x62, 0xb0, 0xe2, 0x93, 0x9f, 0x01, 0xbb, 0xfc, 0x01, 0x66, 0xc0, 0x1e, 0x3a, 0xc6, + 0x0c, 0xd8, 0x57, 0x61, 0x74, 0xd3, 0x4b, 0x30, 0x69, 0x87, 0x62, 0xcb, 0xcc, 0x9d, 0x09, 0x17, + 0x38, 0x49, 0x77, 0x9e, 0x56, 0x81, 0xc0, 0x92, 0x09, 0x7a, 0x55, 0xad, 0x81, 0x91, 0x62, 0x8d, + 0xb3, 0xdb, 0x80, 0x9f, 0xbb, 0x0a, 0x44, 0xc6, 0xeb, 0xd1, 0x3b, 0xcd, 0x78, 0xad, 0x32, 0x56, + 0x8f, 0xbd, 0xbf, 0x8c, 0xd5, 0x46, 0x46, 0xef, 0xca, 0xdd, 0xcb, 0xe8, 0xfd, 0x25, 0x0b, 0x4e, + 0xb5, 0xf3, 0x92, 0xdb, 0x8b, 0xdc, 0xd3, 0xcf, 0x0f, 0x9c, 0xe4, 0xdf, 0xa8, 0x90, 0x1d, 0x3d, + 0x72, 0xc9, 0x70, 0x7e, 0x75, 0x32, 0x35, 0xf8, 0xf8, 0x9d, 0xa6, 0x06, 0xbf, 0x37, 0x49, 0xaa, + 0xd3, 0x44, 0xe1, 0x93, 0xef, 0x3b, 0x51, 0xf8, 0xab, 0x2a, 0x51, 0x78, 0x8f, 0x94, 0x13, 0x3c, + 0x0d, 0x78, 0xdf, 0xf4, 0xe0, 0x5a, 0x8a, 0xef, 0xe9, 0xbb, 0x91, 0xe2, 0xfb, 0x6d, 0x53, 0xd8, + 0xf3, 0x7c, 0xd3, 0x4f, 0xf6, 0x11, 0xf6, 0x06, 0xdf, 0xde, 0xe2, 0x9e, 0xa7, 0x33, 0x9f, 0xbd, + 0xa3, 0x74, 0xe6, 0x37, 0xf4, 0x44, 0xe1, 0xa8, 0x4f, 0x26, 0x6c, 0x4a, 0x34, 0x60, 0x7a, 0xf0, + 0x1b, 0xfa, 0x16, 0x74, 0xa2, 0x98, 0xaf, 0xda, 0x69, 0xba, 0xf9, 0xe6, 0x6d, 0x42, 0xdd, 0x69, + 0xc7, 0x4f, 0x1e, 0x4f, 0xda, 0xf1, 0x53, 0x77, 0x3d, 0xed, 0xf8, 0x7d, 0xc7, 0x90, 0x76, 0xfc, + 0xfe, 0x0f, 0x34, 0xed, 0x78, 0xf5, 0xde, 0xa6, 0x1d, 0x3f, 0x7d, 0x37, 0xd2, 0x8e, 0xdf, 0x80, + 0x4a, 0x5b, 0xc6, 0x32, 0x56, 0xe7, 0x8a, 0x87, 0x24, 0x37, 0xe0, 0x91, 0x0f, 0x89, 0x42, 0xe1, + 0x94, 0x15, 0xe5, 0x9b, 0xa6, 0x21, 0x7f, 0xa0, 0x87, 0x71, 0x29, 0xef, 0xd8, 0xde, 0x23, 0xf9, + 0xf8, 0x5f, 0x2b, 0xc1, 0x99, 0xde, 0xf3, 0x3a, 0x3d, 0xf3, 0x37, 0x52, 0x1b, 0x75, 0xe6, 0xcc, + 0xcf, 0x94, 0x2e, 0x8d, 0x6a, 0xe0, 0x80, 0xef, 0x0b, 0x30, 0xab, 0x5c, 0xba, 0x7c, 0xaf, 0xb5, + 0xa7, 0xbd, 0x1c, 0xa4, 0xa2, 0x04, 0x9a, 0x59, 0x02, 0xdc, 0x5d, 0x06, 0x2d, 0xc1, 0xb4, 0x01, + 0xac, 0xd7, 0x84, 0x4a, 0xae, 0x8c, 0x0c, 0x4d, 0x13, 0x8d, 0xb3, 0xf4, 0xf6, 0xd7, 0x2c, 0xb8, + 0xbf, 0x20, 0x83, 0xe9, 0xc0, 0xf1, 0xcc, 0x1b, 0x30, 0xdd, 0x36, 0x8b, 0xf6, 0x49, 0x7b, 0x60, + 0xe4, 0x49, 0x55, 0x6d, 0xcd, 0x20, 0x70, 0x96, 0xe9, 0xf2, 0xb9, 0x6f, 0x7d, 0xff, 0xcc, 0x47, + 0xfe, 0xf0, 0xfb, 0x67, 0x3e, 0xf2, 0xbd, 0xef, 0x9f, 0xf9, 0xc8, 0x5f, 0x3a, 0x38, 0x63, 0x7d, + 0xeb, 0xe0, 0x8c, 0xf5, 0x87, 0x07, 0x67, 0xac, 0xef, 0x1d, 0x9c, 0xb1, 0xfe, 0xe4, 0xe0, 0x8c, + 0xf5, 0xf3, 0x3f, 0x38, 0xf3, 0x91, 0x37, 0x4b, 0xbb, 0xcf, 0xfc, 0xbf, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xa6, 0x63, 0x42, 0x83, 0x43, 0xce, 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 73268a344c..75d8416238 100644 --- a/staging/src/k8s.io/api/core/v1/generated.proto +++ b/staging/src/k8s.io/api/core/v1/generated.proto @@ -269,6 +269,15 @@ message CinderVolumeSource { optional bool readOnly = 3; } +// ClientIPConfig represents the configurations of Client IP based session affinity. +message ClientIPConfig { + // timeoutSeconds specifies the seconds of ClientIP type session sticky time. + // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". + // Default value is 10800(for 3 hours). + // +optional + optional int32 timeoutSeconds = 1; +} + // Information about the condition of a component. message ComponentCondition { // Type of condition for a component. @@ -3864,6 +3873,10 @@ message ServiceSpec { // field. // +optional optional bool publishNotReadyAddresses = 13; + + // sessionAffinityConfig contains the configurations of session affinity. + // +optional + optional SessionAffinityConfig sessionAffinityConfig = 14; } // ServiceStatus represents the current status of a service. @@ -3874,6 +3887,13 @@ message ServiceStatus { optional LoadBalancerStatus loadBalancer = 1; } +// SessionAffinityConfig represents the configurations of session affinity. +message SessionAffinityConfig { + // clientIP contains the configurations of Client IP based session affinity. + // +optional + optional ClientIPConfig clientIP = 1; +} + // Represents a StorageOS persistent volume resource. message StorageOSPersistentVolumeSource { // VolumeName is the human-readable name of the StorageOS volume. Volume diff --git a/staging/src/k8s.io/api/core/v1/types.generated.go b/staging/src/k8s.io/api/core/v1/types.generated.go index 8de7da85cc..90352dc65b 100644 --- a/staging/src/k8s.io/api/core/v1/types.generated.go +++ b/staging/src/k8s.io/api/core/v1/types.generated.go @@ -44373,6 +44373,382 @@ func (x *ServiceAffinity) CodecDecodeSelf(d *codec1978.Decoder) { } } +func (x *SessionAffinityConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ClientIP != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ClientIP == nil { + r.EncodeNil() + } else { + x.ClientIP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clientIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ClientIP == nil { + r.EncodeNil() + } else { + x.ClientIP.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SessionAffinityConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SessionAffinityConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "clientIP": + if r.TryDecodeAsNil() { + if x.ClientIP != nil { + x.ClientIP = nil + } + } else { + if x.ClientIP == nil { + x.ClientIP = new(ClientIPConfig) + } + x.ClientIP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SessionAffinityConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ClientIP != nil { + x.ClientIP = nil + } + } else { + if x.ClientIP == nil { + x.ClientIP = new(ClientIPConfig) + } + x.ClientIP.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClientIPConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.TimeoutSeconds != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy4 := *x.TimeoutSeconds + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy6 := *x.TimeoutSeconds + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClientIPConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClientIPConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "timeoutSeconds": + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.TimeoutSeconds)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClientIPConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int32) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(x.TimeoutSeconds)) = int32(r.DecodeInt(32)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + func (x ServiceType) CodecEncodeSelf(e *codec1978.Encoder) { var h codecSelfer1234 z, r := codec1978.GenHelperEncoder(e) @@ -45032,7 +45408,7 @@ func (x *ServiceSpec) CodecEncodeSelf(e *codec1978.Encoder) { } else { yysep2 := !z.EncBinary() yy2arr2 := z.EncBasicHandle().StructToArray - var yyq2 [12]bool + var yyq2 [13]bool _, _, _ = yysep2, yyq2, yy2arr2 const yyr2 bool = false yyq2[0] = len(x.Ports) != 0 @@ -45047,9 +45423,10 @@ func (x *ServiceSpec) CodecEncodeSelf(e *codec1978.Encoder) { yyq2[9] = x.ExternalTrafficPolicy != "" yyq2[10] = x.HealthCheckNodePort != 0 yyq2[11] = x.PublishNotReadyAddresses != false + yyq2[12] = x.SessionAffinityConfig != nil var yynn2 int if yyr2 || yy2arr2 { - r.EncodeArrayStart(12) + r.EncodeArrayStart(13) } else { yynn2 = 0 for _, b := range yyq2 { @@ -45362,6 +45739,29 @@ func (x *ServiceSpec) CodecEncodeSelf(e *codec1978.Encoder) { } } } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.SessionAffinityConfig == nil { + r.EncodeNil() + } else { + x.SessionAffinityConfig.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sessionAffinityConfig")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SessionAffinityConfig == nil { + r.EncodeNil() + } else { + x.SessionAffinityConfig.CodecEncodeSelf(e) + } + } + } if yyr2 || yy2arr2 { z.EncSendContainerState(codecSelfer_containerArrayEnd1234) } else { @@ -45552,6 +45952,17 @@ func (x *ServiceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { *((*bool)(yyv23)) = r.DecodeBool() } } + case "sessionAffinityConfig": + if r.TryDecodeAsNil() { + if x.SessionAffinityConfig != nil { + x.SessionAffinityConfig = nil + } + } else { + if x.SessionAffinityConfig == nil { + x.SessionAffinityConfig = new(SessionAffinityConfig) + } + x.SessionAffinityConfig.CodecDecodeSelf(d) + } default: z.DecStructFieldNotFound(-1, yys3) } // end switch yys3 @@ -45563,16 +45974,16 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { var h codecSelfer1234 z, r := codec1978.GenHelperDecoder(d) _, _, _ = h, z, r - var yyj25 int - var yyb25 bool - var yyhl25 bool = l >= 0 - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45580,21 +45991,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.Ports = nil } else { - yyv26 := &x.Ports - yym27 := z.DecBinary() - _ = yym27 + yyv27 := &x.Ports + yym28 := z.DecBinary() + _ = yym28 if false { } else { - h.decSliceServicePort((*[]ServicePort)(yyv26), d) + h.decSliceServicePort((*[]ServicePort)(yyv27), d) } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45602,21 +46013,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.Selector = nil } else { - yyv28 := &x.Selector - yym29 := z.DecBinary() - _ = yym29 + yyv29 := &x.Selector + yym30 := z.DecBinary() + _ = yym30 if false { } else { - z.F.DecMapStringStringX(yyv28, false, d) + z.F.DecMapStringStringX(yyv29, false, d) } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45624,21 +46035,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.ClusterIP = "" } else { - yyv30 := &x.ClusterIP - yym31 := z.DecBinary() - _ = yym31 + yyv31 := &x.ClusterIP + yym32 := z.DecBinary() + _ = yym32 if false { } else { - *((*string)(yyv30)) = r.DecodeString() + *((*string)(yyv31)) = r.DecodeString() } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45646,16 +46057,16 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.Type = "" } else { - yyv32 := &x.Type - yyv32.CodecDecodeSelf(d) + yyv33 := &x.Type + yyv33.CodecDecodeSelf(d) } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45663,21 +46074,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.ExternalIPs = nil } else { - yyv33 := &x.ExternalIPs - yym34 := z.DecBinary() - _ = yym34 + yyv34 := &x.ExternalIPs + yym35 := z.DecBinary() + _ = yym35 if false { } else { - z.F.DecSliceStringX(yyv33, false, d) + z.F.DecSliceStringX(yyv34, false, d) } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45685,16 +46096,16 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.SessionAffinity = "" } else { - yyv35 := &x.SessionAffinity - yyv35.CodecDecodeSelf(d) + yyv36 := &x.SessionAffinity + yyv36.CodecDecodeSelf(d) } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45702,21 +46113,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.LoadBalancerIP = "" } else { - yyv36 := &x.LoadBalancerIP - yym37 := z.DecBinary() - _ = yym37 + yyv37 := &x.LoadBalancerIP + yym38 := z.DecBinary() + _ = yym38 if false { } else { - *((*string)(yyv36)) = r.DecodeString() + *((*string)(yyv37)) = r.DecodeString() } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45724,21 +46135,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.LoadBalancerSourceRanges = nil } else { - yyv38 := &x.LoadBalancerSourceRanges - yym39 := z.DecBinary() - _ = yym39 + yyv39 := &x.LoadBalancerSourceRanges + yym40 := z.DecBinary() + _ = yym40 if false { } else { - z.F.DecSliceStringX(yyv38, false, d) + z.F.DecSliceStringX(yyv39, false, d) } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45746,21 +46157,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.ExternalName = "" } else { - yyv40 := &x.ExternalName - yym41 := z.DecBinary() - _ = yym41 + yyv41 := &x.ExternalName + yym42 := z.DecBinary() + _ = yym42 if false { } else { - *((*string)(yyv40)) = r.DecodeString() + *((*string)(yyv41)) = r.DecodeString() } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45768,16 +46179,16 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.ExternalTrafficPolicy = "" } else { - yyv42 := &x.ExternalTrafficPolicy - yyv42.CodecDecodeSelf(d) + yyv43 := &x.ExternalTrafficPolicy + yyv43.CodecDecodeSelf(d) } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45785,21 +46196,21 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.HealthCheckNodePort = 0 } else { - yyv43 := &x.HealthCheckNodePort - yym44 := z.DecBinary() - _ = yym44 + yyv44 := &x.HealthCheckNodePort + yym45 := z.DecBinary() + _ = yym45 if false { } else { - *((*int32)(yyv43)) = int32(r.DecodeInt(32)) + *((*int32)(yyv44)) = int32(r.DecodeInt(32)) } } - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l } else { - yyb25 = r.CheckBreak() + yyb26 = r.CheckBreak() } - if yyb25 { + if yyb26 { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) return } @@ -45807,26 +46218,47 @@ func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.PublishNotReadyAddresses = false } else { - yyv45 := &x.PublishNotReadyAddresses - yym46 := z.DecBinary() - _ = yym46 + yyv46 := &x.PublishNotReadyAddresses + yym47 := z.DecBinary() + _ = yym47 if false { } else { - *((*bool)(yyv45)) = r.DecodeBool() + *((*bool)(yyv46)) = r.DecodeBool() } } - for { - yyj25++ - if yyhl25 { - yyb25 = yyj25 > l - } else { - yyb25 = r.CheckBreak() + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SessionAffinityConfig != nil { + x.SessionAffinityConfig = nil } - if yyb25 { + } else { + if x.SessionAffinityConfig == nil { + x.SessionAffinityConfig = new(SessionAffinityConfig) + } + x.SessionAffinityConfig.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { break } z.DecSendContainerState(codecSelfer_containerArrayElem1234) - z.DecStructFieldNotFound(yyj25-1, "") + z.DecStructFieldNotFound(yyj26-1, "") } z.DecSendContainerState(codecSelfer_containerArrayEnd1234) } @@ -74751,7 +75183,7 @@ func (x codecSelfer1234) decSliceService(v *[]Service, d *codec1978.Decoder) { yyrg1 := len(yyv1) > 0 yyv21 := yyv1 - yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 472) + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 480) if yyrt1 { if yyrl1 <= cap(yyv1) { yyv1 = yyv1[:yyrl1] diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index c3de989d35..e5e58c0d84 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -2998,6 +2998,22 @@ const ( ServiceAffinityNone ServiceAffinity = "None" ) +// SessionAffinityConfig represents the configurations of session affinity. +type SessionAffinityConfig struct { + // clientIP contains the configurations of Client IP based session affinity. + // +optional + ClientIP *ClientIPConfig `json:"clientIP,omitempty" protobuf:"bytes,1,opt,name=clientIP"` +} + +// ClientIPConfig represents the configurations of Client IP based session affinity. +type ClientIPConfig struct { + // timeoutSeconds specifies the seconds of ClientIP type session sticky time. + // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". + // Default value is 10800(for 3 hours). + // +optional + TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,1,opt,name=timeoutSeconds"` +} + // Service Type string describes ingress methods for a service type ServiceType string @@ -3172,6 +3188,9 @@ type ServiceSpec struct { // field. // +optional PublishNotReadyAddresses bool `json:"publishNotReadyAddresses,omitempty" protobuf:"varint,13,opt,name=publishNotReadyAddresses"` + // sessionAffinityConfig contains the configurations of session affinity. + // +optional + SessionAffinityConfig *SessionAffinityConfig `json:"sessionAffinityConfig,omitempty" protobuf:"bytes,14,opt,name=sessionAffinityConfig"` } // ServicePort contains information on service's port. 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 30add02bcf..6f6a4a503b 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 @@ -165,6 +165,15 @@ func (CinderVolumeSource) SwaggerDoc() map[string]string { return map_CinderVolumeSource } +var map_ClientIPConfig = map[string]string{ + "": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "timeoutSeconds": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", +} + +func (ClientIPConfig) SwaggerDoc() map[string]string { + return map_ClientIPConfig +} + var map_ComponentCondition = map[string]string{ "": "Information about the condition of a component.", "type": "Type of condition for a component. Valid value: \"Healthy\"", @@ -1903,6 +1912,7 @@ var map_ServiceSpec = map[string]string{ "externalTrafficPolicy": "externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.", "healthCheckNodePort": "healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.", "publishNotReadyAddresses": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints when that annotation is deprecated and all clients have been converted to use this field.", + "sessionAffinityConfig": "sessionAffinityConfig contains the configurations of session affinity.", } func (ServiceSpec) SwaggerDoc() map[string]string { @@ -1918,6 +1928,15 @@ func (ServiceStatus) SwaggerDoc() map[string]string { return map_ServiceStatus } +var map_SessionAffinityConfig = map[string]string{ + "": "SessionAffinityConfig represents the configurations of session affinity.", + "clientIP": "clientIP contains the configurations of Client IP based session affinity.", +} + +func (SessionAffinityConfig) SwaggerDoc() map[string]string { + return map_SessionAffinityConfig +} + var map_StorageOSPersistentVolumeSource = map[string]string{ "": "Represents a StorageOS persistent volume resource.", "volumeName": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", 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 b204c2d696..f91dfb48c4 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 @@ -86,6 +86,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*CinderVolumeSource).DeepCopyInto(out.(*CinderVolumeSource)) return nil }, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClientIPConfig).DeepCopyInto(out.(*ClientIPConfig)) + return nil + }, InType: reflect.TypeOf(&ClientIPConfig{})}, conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { in.(*ComponentCondition).DeepCopyInto(out.(*ComponentCondition)) return nil @@ -690,6 +694,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*ServiceStatus).DeepCopyInto(out.(*ServiceStatus)) return nil }, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SessionAffinityConfig).DeepCopyInto(out.(*SessionAffinityConfig)) + return nil + }, InType: reflect.TypeOf(&SessionAffinityConfig{})}, conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { in.(*StorageOSPersistentVolumeSource).DeepCopyInto(out.(*StorageOSPersistentVolumeSource)) return nil @@ -1062,6 +1070,31 @@ func (in *CinderVolumeSource) DeepCopy() *CinderVolumeSource { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) { + *out = *in + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientIPConfig. +func (in *ClientIPConfig) DeepCopy() *ClientIPConfig { + if in == nil { + return nil + } + out := new(ClientIPConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ComponentCondition) DeepCopyInto(out *ComponentCondition) { *out = *in @@ -5677,6 +5710,15 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.SessionAffinityConfig != nil { + in, out := &in.SessionAffinityConfig, &out.SessionAffinityConfig + if *in == nil { + *out = nil + } else { + *out = new(SessionAffinityConfig) + (*in).DeepCopyInto(*out) + } + } return } @@ -5707,6 +5749,31 @@ func (in *ServiceStatus) DeepCopy() *ServiceStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { + *out = *in + if in.ClientIP != nil { + in, out := &in.ClientIP, &out.ClientIP + if *in == nil { + *out = nil + } else { + *out = new(ClientIPConfig) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SessionAffinityConfig. +func (in *SessionAffinityConfig) DeepCopy() *SessionAffinityConfig { + if in == nil { + return nil + } + out := new(SessionAffinityConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StorageOSPersistentVolumeSource) DeepCopyInto(out *StorageOSPersistentVolumeSource) { *out = *in