From f263358befa212f5c30c3fbc8e8e97479d2bf495 Mon Sep 17 00:00:00 2001 From: Ismail Alidzhikov Date: Mon, 16 Jan 2023 08:26:56 +0200 Subject: [PATCH] Support for Kubernetes v1.26 (#7275) * Allow instantiating v1.26 Kubernetes clients * Update `README.md` and `docs/usage/supported_k8s_versions.md` for the K8s 1.26 * Maintain Kubernetes feature gates $ ./hack/compare-k8s-feature-gates.sh 1.25 1.26 Feature gates added in 1.26 compared to 1.25: APISelfSubjectReview AggregatedDiscoveryEndpoint ConsistentHTTPGetHandlers CrossNamespaceVolumeDataSource DynamicResourceAllocation EventedPLEG LegacyServiceAccountTokenTracking MinimizeIPTablesRestore PDBUnhealthyPodEvictionPolicy PodSchedulingReadiness StatefulSetStartOrdinal TopologyManagerPolicyAlphaOptions TopologyManagerPolicyBetaOptions TopologyManagerPolicyOptions ValidatingAdmissionPolicy WindowsHostNetwork Feature gates removed in 1.26 compared to 1.25: CSIMigrationOpenStack CSRDuration DefaultPodTopologySpread DynamicKubeletConfig IndexedJob NonPreemptingPriority PodAffinityNamespaceSelector PodOverhead PreferNominatedNode ServiceLBNodePortControl ServiceLoadBalancerClass SuspendJob Feature gates locked to default in 1.26 compared to 1.25: CPUManager CSIMigrationvSphere DelegateFSGroupToCSIDriver DevicePlugins DryRun EndpointSliceTerminatingCondition JobTrackingWithFinalizers KubeletCredentialProviders MixedProtocolLBService ServerSideApply ServiceIPStaticSubrange ServiceInternalTrafficPolicy WindowsHostProcessContainers * Maintain `kube-apiserver` admission plugins $ ./hack/compare-k8s-admission-plugins.sh 1.25 1.26 Admission plugins added in 1.26 compared to 1.25: ValidatingAdmissionPolicy Admission plugins removed in 1.26 compared to 1.25: * Maintain `ServiceAccount` names for the controllers part of `kube-controller-manager` $ ./hack/compare-k8s-controllers.sh 1.25 1.26 kube-controller-manager controllers added in 1.26 compared to 1.25: resource-claim-controller kube-controller-manager controllers removed in 1.26 compared to 1.25: * Use 1.26 for local shoot and local e2e test * Deprecate the `podEvictionTimeout` field in favor of newly introduced kube-apiserver fields The kube-controller-manager flag `--pod-eviction-timeout` is deprecated in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. For more details, see https://github.com/kubernetes/kubernetes/issues/74651. This commit allows configuring the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. The `podEvictionTimeout` field is deprecated in favor of the newly introduced fields. gardener-apiserver no longer defaults the `podEvictionTimeout` field. gardener-apiserver also returns a warning when the `podEvictionTimeout` field is set. * Adapt to the renaming of `etcd_db_total_size_in_bytes` metric to `apiserver_storage_db_total_size_in_bytes` The metric `etcd_db_total_size_in_bytes` is renamed to `apiserver_storage_db_total_size_in_bytes`. Ref https://github.com/kubernetes/kubernetes/pull/113310. * Fix the Pod spec in `simple-load-deployment.yaml.tpl` Test runs of the integration test that uses this template prints the following warning about the issue in the template: ``` {"level":"info","ts":"2022-12-28T19:36:29.043+0200","logger":"KubeAPIWarningLogger","msg":"unknown field \"spec.template.spec.containers[0].nodeName\""} ``` * Update `docs/usage/shoot_credentials_rotation.md` After the removal of support for Kubernetes < 1.20 Shoot clusters (ref https://github.com/gardener/gardener/pull/6987), the kubeconfig Secret no longer has the `token` field. Basic auth cannot be enabled for K8s 1.19+ clusters, hence the kubeconfig Secret cannot contain the `username`/`password` fields anymore. * Default `enableStaticTokenKubeconfig` to false for Shoots with K8s version >= 1.26 This commit also adapts most of the testmachinery integration tests to use the `shoots/adminkubeconfig` subresource instead of the static kubeconfig. The Shoot creation intergration is still using the static kubeconfig and it is downloading it to `$TM_KUBECONFIG_PATH/shoot.config`. This commit sets `enableStaticTokenKubeconfig=true` until we figure out which tests/components are using this downloaded kubeconfig. * Add constraint for K8s version < 1.26 The constraint `ConstraintK8sLess126` is currently not used by gardener/gardener but it is introduced for usage from the extensions. * Address review comments * Update `new-kubernetes-version.md` guide with details about the `hyperkube` image * Update `supported_k8s_versions.md` for K8s 1.26 * Update kube-scheduler component's unit tests for K8s 1.26 * Revert the K8s versions used for e2e tests For the reasoning, see https://github.com/gardener/gardener/pull/7275#issuecomment-1381773647 --- README.md | 18 +- .../dashboards/owners/apiserver-overview.json | 2 +- docs/api-reference/core.md | 41 +- docs/development/new-kubernetes-version.md | 4 +- docs/usage/shoot_access.md | 8 +- docs/usage/shoot_credentials_rotation.md | 2 - docs/usage/supported_k8s_versions.md | 5 +- example/90-shoot.yaml | 4 +- .../garden/base/cloudprofile.yaml | 1 + example/provider-local/shoot.yaml | 1 + hack/local-development/start-apiserver | 2 +- pkg/api/core/shoot/warnings.go | 4 + pkg/api/core/shoot/warnings_test.go | 6 + pkg/apis/core/types_shoot.go | 19 +- pkg/apis/core/v1alpha1/defaults.go | 37 +- pkg/apis/core/v1alpha1/defaults_test.go | 97 +- pkg/apis/core/v1alpha1/generated.pb.go | 1486 +++++++++-------- pkg/apis/core/v1alpha1/generated.proto | 26 +- pkg/apis/core/v1alpha1/types_shoot.go | 24 +- .../core/v1alpha1/zz_generated.conversion.go | 4 + .../core/v1alpha1/zz_generated.deepcopy.go | 10 + pkg/apis/core/v1beta1/defaults.go | 39 +- pkg/apis/core/v1beta1/defaults_test.go | 96 +- pkg/apis/core/v1beta1/generated.pb.go | 1442 ++++++++-------- pkg/apis/core/v1beta1/generated.proto | 26 +- pkg/apis/core/v1beta1/types_shoot.go | 24 +- .../core/v1beta1/zz_generated.conversion.go | 4 + .../core/v1beta1/zz_generated.deepcopy.go | 10 + pkg/apis/core/validation/shoot.go | 7 + pkg/apis/core/validation/shoot_test.go | 46 +- pkg/apis/core/zz_generated.deepcopy.go | 10 + pkg/client/kubernetes/client.go | 1 + pkg/openapi/openapi_generated.go | 36 +- .../component/kubeapiserver/deployment.go | 7 + .../component/kubeapiserver/kube_apiserver.go | 6 + .../kubeapiserver/kube_apiserver_test.go | 11 + .../component/kubeapiserver/monitoring.go | 5 + .../kubeapiserver/monitoring_test.go | 2 +- .../kubescheduler/kube_scheduler_test.go | 2 + .../component/shootsystem/shootsystem.go | 5 + .../component/shootsystem/shootsystem_test.go | 13 + pkg/operation/botanist/kubeapiserver.go | 62 +- pkg/operation/botanist/kubeapiserver_test.go | 23 + .../admissionplugins/admissionplugins.go | 1 + pkg/utils/validation/features/featuregates.go | 66 +- pkg/utils/version/version.go | 4 + pkg/utils/version/version_test.go | 5 + test/e2e/gardener/common.go | 1 + .../gardener/shoot/create_update_delete.go | 4 +- test/framework/k8s_utils.go | 20 +- .../resources/templates/default-shoot.yaml | 7 +- .../templates/simple-load-deployment.yaml.tpl | 6 +- test/framework/shootframework.go | 13 +- .../shoots/applications/shoot_app.go | 29 +- .../shoots/operations/operations.go | 5 + .../shoots/vpntunnel/vpntunnel.go | 34 +- test/utils/shoots/access/adminkubeconfig.go | 19 +- 57 files changed, 2248 insertions(+), 1644 deletions(-) diff --git a/README.md b/README.md index 1cd329313fb..1c6cd9859fb 100644 --- a/README.md +++ b/README.md @@ -38,15 +38,15 @@ Gardener takes part in the [Certified Kubernetes Conformance Program](https://ww Continuous conformance test results of the latest stable Gardener release are uploaded regularly to the CNCF test grid: -| Provider/K8s | v1.25 | v1.24 | v1.23 | v1.22 | v1.21 | v1.20 | -| ------------ | ------------ | ------------ | ------------ | ------------ | ---------- | ----------- | -| **AWS** | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20AWS) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20AWS) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20AWS) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20AWS) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20AWS) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20AWS) | -| **Azure** | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20Azure) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20Azure) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20Azure) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20Azure) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20Azure) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20Azure) | -| **GCP** | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20GCE) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20GCE) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20GCE) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20GCE) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20GCE) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20GCE) | -| **OpenStack** | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20OpenStack) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20OpenStack) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20OpenStack) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20OpenStack) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20OpenStack) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20OpenStack) | -| **Alicloud** | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20Alibaba%20Cloud) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20Alibaba%20Cloud) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20Alibaba%20Cloud) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20Alibaba%20Cloud) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20Alibaba%20Cloud) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20Alibaba%20Cloud) | -| **Equinix Metal** | N/A | N/A | N/A | N/A | N/A | N/A | -| **vSphere** | N/A | N/A | N/A | N/A | N/A | N/A | +| Provider/K8s | v1.26 | v1.25 | v1.24 | v1.23 | v1.22 | v1.21 | v1.20 | +| ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | +| **AWS** | N/A | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20AWS) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20AWS) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20AWS) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20AWS) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20AWS) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20AWS/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20AWS) | +| **Azure** | N/A | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20Azure) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20Azure) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20Azure) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20Azure) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20Azure) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20Azure/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20Azure) | +| **GCP** | N/A | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20GCE) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20GCE) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20GCE) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20GCE) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20GCE) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20GCE/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20GCE) | +| **OpenStack** | N/A | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20OpenStack) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20OpenStack) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20OpenStack) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20OpenStack) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20OpenStack) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20OpenStack/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20OpenStack) | +| **Alicloud** | N/A | [![Gardener v1.25 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.25%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.25%20Alibaba%20Cloud) | [![Gardener v1.24 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.24%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.24%20Alibaba%20Cloud) | [![Gardener v1.23 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.23%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.23%20Alibaba%20Cloud) | [![Gardener v1.22 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.22%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.22%20Alibaba%20Cloud) | [![Gardener v1.21 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.21%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.21%20Alibaba%20Cloud) | [![Gardener v1.20 Conformance Tests](https://testgrid.k8s.io/q/summary/conformance-gardener/Gardener,%20v1.20%20Alibaba%20Cloud/tests_status?style=svg)](https://testgrid.k8s.io/conformance-gardener#Gardener,%20v1.20%20Alibaba%20Cloud) | +| **Equinix Metal** | N/A | N/A | N/A | N/A | N/A | N/A | N/A | +| **vSphere** | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Get an overview of the test results at [testgrid](https://testgrid.k8s.io/conformance-gardener). diff --git a/charts/seed-monitoring/charts/grafana/dashboards/owners/apiserver-overview.json b/charts/seed-monitoring/charts/grafana/dashboards/owners/apiserver-overview.json index a67b2766b94..918ca0eaf00 100644 --- a/charts/seed-monitoring/charts/grafana/dashboards/owners/apiserver-overview.json +++ b/charts/seed-monitoring/charts/grafana/dashboards/owners/apiserver-overview.json @@ -2226,7 +2226,7 @@ "steppedLine": false, "targets": [ { - "expr": "max(etcd_db_total_size_in_bytes{pod=~\"$apiserver\"}) by (endpoint)", + "expr": "max(etcd_db_total_size_in_bytes{pod=~\"$apiserver\"}) by (endpoint) or max(apiserver_storage_db_total_size_in_bytes{pod=~\"$apiserver\"}) by (endpoint)", "interval": "", "legendFormat": "{{endpoint}}", "refId": "A" diff --git a/docs/api-reference/core.md b/docs/api-reference/core.md index bee1c3874f9..5b56c36366c 100644 --- a/docs/api-reference/core.md +++ b/docs/api-reference/core.md @@ -4480,6 +4480,36 @@ KubeAPIServerLogging

Logging contains configuration for the log level and HTTP access logs.

+ + +defaultNotReadyTolerationSeconds
+ +int64 + + + +(Optional) +

DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute +that is added by default to every pod that does not already have such a toleration (flag --default-not-ready-toleration-seconds). +The field has effect only when the DefaultTolerationSeconds admission plugin is enabled. +Defaults to 300.

+ + + + +defaultUnreachableTolerationSeconds
+ +int64 + + + +(Optional) +

DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute +that is added by default to every pod that does not already have such a toleration (flag --default-unreachable-toleration-seconds). +The field has effect only when the DefaultTolerationSeconds admission plugin is enabled. +Defaults to 300.

+ +

KubeAPIServerLogging @@ -4641,6 +4671,12 @@ Kubernetes meta/v1.Duration (Optional)

PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m.

+

Deprecated: The corresponding kube-controller-manager flag --pod-eviction-timeout is deprecated +in favor of the kube-apiserver flags --default-not-ready-toleration-seconds and --default-unreachable-toleration-seconds. +The --pod-eviction-timeout flag does not have effect when the taint besed eviction is enabled. The taint +based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, +instead of setting this field, set the spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds and +spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds.

@@ -5651,8 +5687,9 @@ bool (Optional) -

EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster -(default: true).

+

EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. +Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. +Starting Kubernetes 1.27 the field will be locked to false.

diff --git a/docs/development/new-kubernetes-version.md b/docs/development/new-kubernetes-version.md index e1b6a579d11..bc6b1437e27 100644 --- a/docs/development/new-kubernetes-version.md +++ b/docs/development/new-kubernetes-version.md @@ -43,11 +43,11 @@ While reading the change log, add the tasks (along with the respective PR in `ku The following paragraphs describe recurring tasks that need to be performed for each new release. -### Releasing A New `hyperkube` Image +### Make Sure A New `hyperkube` Image Is Released The [`gardener/hyperkube`](https://github.com/gardener/hyperkube) repository is used to release container images consisting of the `kubectl` and `kubelet` binaries. -Run the [`.ci/check-and-release`](https://github.com/gardener/hyperkube/blob/master/.ci/check-and-release) script to automatically build the image (make sure Docker is running!), push the images to the GCR (make sure `gcloud` is configured properly!) and publish the release on GitHub (make sure `git` is configured properly!). +There is a CI/CD job that runs periodically and releases a new `hyperkube` image when there is a new Kubernetes release. Before proceeding with the next steps, make sure that a new `hyperkube` image is released for the corresponding new Kubernetes minor version. Make sure that container image is present in GCR. ### Adapting Gardener diff --git a/docs/usage/shoot_access.md b/docs/usage/shoot_access.md index 470339d629c..4b32494834e 100644 --- a/docs/usage/shoot_access.md +++ b/docs/usage/shoot_access.md @@ -21,6 +21,12 @@ It is **not** the recommended method to access the shoot cluster as the static t - The static token in the `kubeconfig` doesn't have any expiration date. Read [this document](shoot_credentials_rotation.md#kubeconfig) to learn how to rotate the static token. - The static token doesn't have any user identity associated with it. The user in that token will always be `system:cluster-admin` irrespective of the person accessing the cluster. Hence, it is impossible to audit the events in cluster. +When `enableStaticTokenKubeconfig` field is not explicitly set in the Shoot spec: +- for Shoot clusters using Kubernetes version < 1.26 the field is defaulted to `true`. +- for Shoot clusters using Kubernetes version >= 1.26 the field is defaulted to `false`. + +> Note: Starting with Kubernetes 1.27, the `enableStaticTokenKubeconfig` field will be locked to `false`. The [`shoots/adminkubeconfig` subresource](#shootsadminkubeconfig-subresource) should be used instead. + ## `shoots/adminkubeconfig` subresource The [`shoots/adminkubeconfig`](../proposals/16-adminkubeconfig-subresource.md) subresource allows users to dynamically generate temporary `kubeconfig`s that can be used to access shoot cluster with `cluster-admin` privileges. The credentials associated with this `kubeconfig` are client certificates which have a very short validity and must be renewed before they expire (by calling the subresource endpoint again). @@ -53,7 +59,7 @@ Here, the `kubeconfig-request.json` has the following content: ## OpenID Connect -The `kube-apiserver` of shoot clusters can be provided with [OpenID Connect configuration](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) via the `ShootSpec`: +The `kube-apiserver` of shoot clusters can be provided with [OpenID Connect configuration](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) via the Shoot spec: ```yaml apiVersion: core.gardener.cloud/v1beta1 diff --git a/docs/usage/shoot_credentials_rotation.md b/docs/usage/shoot_credentials_rotation.md index 1aeaea605e7..37d4ed5cc0f 100644 --- a/docs/usage/shoot_credentials_rotation.md +++ b/docs/usage/shoot_credentials_rotation.md @@ -63,8 +63,6 @@ If the `.spec.kubernetes.enableStaticTokenKubeconfig` field is set to `true` (de This `Secret` is stored with name `.kubeconfig` in the project namespace in the garden cluster and has multiple data keys: - `kubeconfig`: the completed kubeconfig -- `token`: token for `system:cluster-admin` user -- `username`/`password`: basic auth credentials (if enabled via `Shoot.spec.kubernetes.kubeAPIServer.enableBasicAuthentication`) - `ca.crt`: the CA bundle for establishing trust to the API server (same as in the [Cluster CA bundle secret](#cluster-certificate-authority-bundle)) > `Shoots` created with Gardener <= 0.28 used to have a `kubeconfig` based on a client certificate instead of a static token. With the first kubeconfig rotation, such clusters will get a static token as well. diff --git a/docs/usage/supported_k8s_versions.md b/docs/usage/supported_k8s_versions.md index 2ebf4aa618e..4667b3ce7d1 100644 --- a/docs/usage/supported_k8s_versions.md +++ b/docs/usage/supported_k8s_versions.md @@ -9,11 +9,11 @@ The minimum version of a garden cluster that can be used to run Gardener is **`1 ## Seed Clusters The minimum version of a seed cluster that can be connected to Gardener is **`1.20.x`**. -Please note that Gardener does not support **`1.25`** seeds yet. +Please note that Gardener does not support seeds with version **>= `1.25`** yet when the `HVPA` or `HVPAForShootedSeed` feature gate is enabled. For more details, see https://github.com/gardener/gardener/issues/6893. ## Shoot Clusters -Gardener itself is capable of spinning up clusters with Kubernetes versions **`1.20`** up to **`1.25`**. +Gardener itself is capable of spinning up clusters with Kubernetes versions **`1.20`** up to **`1.26`**. However, the concrete versions that can be used for shoot clusters depend on the installed provider extension. Consequently, please consult the documentation of your provider extension to see which Kubernetes versions are supported for shoot clusters. @@ -38,6 +38,7 @@ Beginning with 2023, a new policy has been introduced: | 1.23 | 2023-02-28 | v1.39.0 | 1.27 is supported (> 2023-04) | | 1.24 | 2023-07-28 | v1.48.0 | 1.28 is supported (> 2023-08) | | 1.25 | 2023-10-28 | v1.56.0 | 1.29 is supported (> 2023-12) | +| 1.26 | 2024-02-28 | v1.63.0 | 1.30 is supported (> 2024-04) | The three versions 1.20, 1.21, 1.22 (which all are officially out of maintenance already) are handled specially to allow users to adapt to this new policy. Beginning with 1.23, the support of the oldest version is dropped after the support of a new version was introduced. diff --git a/example/90-shoot.yaml b/example/90-shoot.yaml index 88a58cb213b..ff503f2a014 100644 --- a/example/90-shoot.yaml +++ b/example/90-shoot.yaml @@ -197,7 +197,9 @@ spec: # maxTokenExpiration: 45d # logging: # verbosity: 2 - # httpAccessLogs: 3 + # httpAccessLogs: 3 + # defaultNotReadyTolerationSeconds: 300 + # defaultUnreachableTolerationSeconds: 300 # kubeControllerManager: # nodeCIDRMaskSize: 24 # podEvictionTimeout: 2m0s diff --git a/example/provider-local/garden/base/cloudprofile.yaml b/example/provider-local/garden/base/cloudprofile.yaml index f101d76a9bf..5b98e3c5c6a 100644 --- a/example/provider-local/garden/base/cloudprofile.yaml +++ b/example/provider-local/garden/base/cloudprofile.yaml @@ -8,6 +8,7 @@ spec: - name: local kubernetes: versions: + - version: 1.26.0 - version: 1.25.4 - version: 1.24.8 - version: 1.23.6 diff --git a/example/provider-local/shoot.yaml b/example/provider-local/shoot.yaml index 9cb67e3fcdb..00f29e7a1b5 100644 --- a/example/provider-local/shoot.yaml +++ b/example/provider-local/shoot.yaml @@ -32,6 +32,7 @@ spec: maxSurge: 1 maxUnavailable: 0 kubernetes: + # TODO(ialidzhikov): Update to 1.26.0 after the merge of https://github.com/gardener/gardener/pull/7275. version: 1.25.4 kubelet: seccompDefault: true diff --git a/hack/local-development/start-apiserver b/hack/local-development/start-apiserver index c66b8c606b3..69723a6b2ad 100755 --- a/hack/local-development/start-apiserver +++ b/hack/local-development/start-apiserver @@ -59,7 +59,7 @@ apiserver_flags=" --tls-private-key-file $TLS_KEY_FILE \ --feature-gates HAControlPlanes=true \ --feature-gates SeedChange=true \ - --shoot-admin-kubeconfig-max-expiration=1h \ + --shoot-admin-kubeconfig-max-expiration=24h \ --enable-admission-plugins=ShootVPAEnabledByDefault \ --v 2" diff --git a/pkg/api/core/shoot/warnings.go b/pkg/api/core/shoot/warnings.go index 847e090739e..6e8f5bf4cff 100644 --- a/pkg/api/core/shoot/warnings.go +++ b/pkg/api/core/shoot/warnings.go @@ -52,6 +52,10 @@ func GetWarnings(_ context.Context, shoot, oldShoot *core.Shoot, credentialsRota } } + if kubeControllerManager := shoot.Spec.Kubernetes.KubeControllerManager; kubeControllerManager != nil && kubeControllerManager.PodEvictionTimeout != nil { + warnings = append(warnings, "you are setting the spec.kubernetes.kubeControllerManager.podEvictionTimeout field. The field does not have effect since Kubernetes 1.13. Instead, use the spec.kubernetes.kubeAPIServer.(defaultNotReadyTolerationSeconds/defaultUnreachableTolerationSeconds) fields.") + } + return warnings } diff --git a/pkg/api/core/shoot/warnings_test.go b/pkg/api/core/shoot/warnings_test.go index e8284087a02..d7fc044d44f 100644 --- a/pkg/api/core/shoot/warnings_test.go +++ b/pkg/api/core/shoot/warnings_test.go @@ -318,5 +318,11 @@ var _ = Describe("Warnings", func() { }) }) + It("should return a warning when podEvictionTimeout is set", func() { + shoot.Spec.Kubernetes.KubeControllerManager = &core.KubeControllerManagerConfig{ + PodEvictionTimeout: &metav1.Duration{Duration: 2 * time.Minute}, + } + Expect(GetWarnings(ctx, shoot, nil, credentialsRotationInterval)).To(ContainElement(Equal("you are setting the spec.kubernetes.kubeControllerManager.podEvictionTimeout field. The field does not have effect since Kubernetes 1.13. Instead, use the spec.kubernetes.kubeAPIServer.(defaultNotReadyTolerationSeconds/defaultUnreachableTolerationSeconds) fields."))) + }) }) }) diff --git a/pkg/apis/core/types_shoot.go b/pkg/apis/core/types_shoot.go index 0f5736e9ef4..9df52cf0244 100644 --- a/pkg/apis/core/types_shoot.go +++ b/pkg/apis/core/types_shoot.go @@ -438,7 +438,9 @@ type Kubernetes struct { Version string // VerticalPodAutoscaler contains the configuration flags for the Kubernetes vertical pod autoscaler. VerticalPodAutoscaler *VerticalPodAutoscaler - // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for shoot (default: true). + // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. + // Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. + // Starting Kubernetes 1.27 the field will be locked to false. EnableStaticTokenKubeconfig *bool } @@ -559,6 +561,14 @@ type KubeAPIServerConfig struct { EventTTL *metav1.Duration // Logging contains configuration settings for the log verbosity and access logging Logging *KubeAPIServerLogging + // DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + DefaultNotReadyTolerationSeconds *int64 + // DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + DefaultUnreachableTolerationSeconds *int64 } // KubeAPIServerLogging contains configuration for the logs level and http access logs @@ -691,6 +701,13 @@ type KubeControllerManagerConfig struct { // NodeCIDRMaskSize defines the mask size for node cidr in cluster (default is 24). This field is immutable. NodeCIDRMaskSize *int32 // PodEvictionTimeout defines the grace period for deleting pods on failed nodes. + // + // Deprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated + // in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. + // The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint + // based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, + // instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and + // `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`. PodEvictionTimeout *metav1.Duration // NodeMonitorGracePeriod defines the grace period before an unresponsive node is marked unhealthy. NodeMonitorGracePeriod *metav1.Duration diff --git a/pkg/apis/core/v1alpha1/defaults.go b/pkg/apis/core/v1alpha1/defaults.go index 32ed053e8f0..99e8ef310bc 100644 --- a/pkg/apis/core/v1alpha1/defaults.go +++ b/pkg/apis/core/v1alpha1/defaults.go @@ -171,9 +171,24 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight == nil { obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight = pointer.Int32(200) } + if obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication == nil { + obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication = pointer.Bool(false) + } if obj.Spec.Kubernetes.KubeAPIServer.EventTTL == nil { obj.Spec.Kubernetes.KubeAPIServer.EventTTL = &metav1.Duration{Duration: time.Hour} } + if obj.Spec.Kubernetes.KubeAPIServer.Logging == nil { + obj.Spec.Kubernetes.KubeAPIServer.Logging = &KubeAPIServerLogging{} + } + if obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity == nil { + obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity = pointer.Int32(2) + } + if obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds == nil { + obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(300) + } + if obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds == nil { + obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(300) + } if obj.Spec.Kubernetes.KubeControllerManager == nil { obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} @@ -181,9 +196,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(obj.Spec.Kubernetes.Kubelet, obj.Spec.Provider.Workers) } - if obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout == nil { - obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout = &metav1.Duration{Duration: 2 * time.Minute} - } if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} } @@ -208,7 +220,12 @@ func SetDefaults_Shoot(obj *Shoot) { } if obj.Spec.Kubernetes.EnableStaticTokenKubeconfig == nil { - obj.Spec.Kubernetes.EnableStaticTokenKubeconfig = pointer.Bool(true) + // Error is ignored here because we cannot do anything meaningful with it - variable will default to "false". + if k8sLessThan126, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.26"); k8sLessThan126 { + obj.Spec.Kubernetes.EnableStaticTokenKubeconfig = pointer.Bool(true) + } else { + obj.Spec.Kubernetes.EnableStaticTokenKubeconfig = pointer.Bool(false) + } } if obj.Spec.Addons == nil { @@ -280,18 +297,6 @@ func SetDefaults_Shoot(obj *Shoot) { obj.Spec.Maintenance = &Maintenance{} } - if obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication = pointer.Bool(false) - } - - if obj.Spec.Kubernetes.KubeAPIServer.Logging == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging = &KubeAPIServerLogging{} - } - - if obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity = pointer.Int32(2) - } - for i, worker := range obj.Spec.Provider.Workers { kubernetesVersion := obj.Spec.Kubernetes.Version if worker.Kubernetes != nil && worker.Kubernetes.Version != nil { diff --git a/pkg/apis/core/v1alpha1/defaults_test.go b/pkg/apis/core/v1alpha1/defaults_test.go index 94aaafe037f..4187020a673 100644 --- a/pkg/apis/core/v1alpha1/defaults_test.go +++ b/pkg/apis/core/v1alpha1/defaults_test.go @@ -482,23 +482,6 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.Kubelet.SerializeImagePulls).To(PointTo(BeFalse())) }) - It("should not default the kube-controller-manager's pod eviction timeout field", func() { - podEvictionTimeout := &metav1.Duration{Duration: time.Minute} - obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{PodEvictionTimeout: podEvictionTimeout} - - SetDefaults_Shoot(obj) - - Expect(obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout).To(Equal(podEvictionTimeout)) - }) - - It("should default the kube-controller-manager's pod eviction timeout field", func() { - obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} - - SetDefaults_Shoot(obj) - - Expect(obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout).To(Equal(&metav1.Duration{Duration: 2 * time.Minute})) - }) - It("should not default the kube-controller-manager's node monitor grace period", func() { nodeMonitorGracePeriod := &metav1.Duration{Duration: time.Minute} obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{NodeMonitorGracePeriod: nodeMonitorGracePeriod} @@ -608,6 +591,18 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight).To(Equal(&maxMutatingRequestsInflight)) }) + It("should disable anonymous authentication by default", func() { + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeFalse())) + }) + + It("should not default the anonymous authentication field if it is explicitly set", func() { + trueVar := true + obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{EnableAnonymousAuthentication: &trueVar} + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeTrue())) + }) + It("should default the event ttl field", func() { SetDefaults_Shoot(obj) Expect(obj.Spec.Kubernetes.KubeAPIServer.EventTTL).To(Equal(&metav1.Duration{Duration: time.Hour})) @@ -621,18 +616,6 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.KubeAPIServer.EventTTL).To(Equal(eventTTL)) }) - It("should disable anonymous authentication by default", func() { - SetDefaults_Shoot(obj) - Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeFalse())) - }) - - It("should not default the anonymous authentication field if it is explicitly set", func() { - trueVar := true - obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{EnableAnonymousAuthentication: &trueVar} - SetDefaults_Shoot(obj) - Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeTrue())) - }) - It("should default the log verbosity level", func() { SetDefaults_Shoot(obj) Expect(obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity).To(PointTo(Equal(int32(2)))) @@ -649,6 +632,32 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.KubeAPIServer.Logging.HTTPAccessVerbosity).To(BeNil()) }) + It("should default the defaultNotReadyTolerationSeconds field", func() { + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds).To(PointTo(Equal(int64(300)))) + }) + + It("should not overwrite the defaultNotReadyTolerationSeconds field if it is already set", func() { + var tolerationSeconds int64 = 120 + obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{DefaultNotReadyTolerationSeconds: pointer.Int64(tolerationSeconds)} + + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds).To(PointTo(Equal(tolerationSeconds))) + }) + + It("should default the defaultUnreachableTolerationSeconds field", func() { + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds).To(PointTo(Equal(int64(300)))) + }) + + It("should not overwrite the defaultUnreachableTolerationSeconds field if it is already set", func() { + var tolerationSeconds int64 = 120 + obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{DefaultUnreachableTolerationSeconds: pointer.Int64(tolerationSeconds)} + + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds).To(PointTo(Equal(tolerationSeconds))) + }) + It("should default architecture of worker's machine to amd64", func() { obj.Spec.Provider.Workers = []Worker{ {Name: "Default Worker"}, @@ -740,11 +749,35 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.SystemComponents).To(Equal(&SystemComponents{CoreDNS: &CoreDNS{Autoscaling: &CoreDNSAutoscaling{Mode: CoreDNSAutoscalingModeHorizontal}}})) }) - It("should default the enableStaticTokenKubeconfig field", func() { - SetDefaults_Shoot(obj) + Context("static token kubeconfig", func() { + It("should not default the enableStaticTokenKubeconfig field when it is set", func() { + obj.Spec.Kubernetes = Kubernetes{ + Version: "1.24.0", + EnableStaticTokenKubeconfig: pointer.Bool(false), + } + + SetDefaults_Shoot(obj) + + Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeFalse())) + }) + + It("should default the enableStaticTokenKubeconfig field to true for k8s version < 1.26", func() { + obj.Spec.Kubernetes = Kubernetes{Version: "1.25.0"} + + SetDefaults_Shoot(obj) + + Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeTrue())) + }) + + It("should default the enableStaticTokenKubeconfig field to false for k8s version >= 1.26", func() { + obj.Spec.Kubernetes = Kubernetes{Version: "1.26.0"} - Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeTrue())) + SetDefaults_Shoot(obj) + + Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeFalse())) + }) }) + Context("k8s version < 1.25", func() { BeforeEach(func() { obj.Spec.Kubernetes = Kubernetes{ diff --git a/pkg/apis/core/v1alpha1/generated.pb.go b/pkg/apis/core/v1alpha1/generated.pb.go index e5e2c58a14e..025fdb0794c 100644 --- a/pkg/apis/core/v1alpha1/generated.pb.go +++ b/pkg/apis/core/v1alpha1/generated.pb.go @@ -4773,718 +4773,722 @@ func init() { } var fileDescriptor_f1caaec5647a9dbf = []byte{ - // 11363 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x6c, 0x25, 0xc9, - 0x75, 0x18, 0xac, 0xbe, 0x7c, 0x1f, 0x3e, 0x66, 0xa6, 0xe6, 0xb1, 0xdc, 0x99, 0xd9, 0xb9, 0xab, - 0xd6, 0x4a, 0xdf, 0xee, 0x27, 0x99, 0xe3, 0xdd, 0x95, 0xec, 0xdd, 0xf5, 0xbe, 0x78, 0xef, 0xe5, - 0xcc, 0x5c, 0x0f, 0xc9, 0xe1, 0xd6, 0x9d, 0xd9, 0x95, 0x56, 0x86, 0xa5, 0x66, 0x77, 0xf1, 0xb2, - 0x97, 0x7d, 0xbb, 0xef, 0x76, 0xf7, 0xe5, 0x90, 0xb3, 0xb2, 0x64, 0x2b, 0xb2, 0x15, 0xad, 0x20, - 0x25, 0x81, 0x10, 0x48, 0x58, 0x09, 0xb2, 0x64, 0x38, 0x81, 0x02, 0xc4, 0x91, 0x21, 0xc0, 0x0a, - 0xf2, 0x40, 0x7e, 0x28, 0x3f, 0x2c, 0xc8, 0x81, 0xe2, 0x18, 0x4e, 0xa0, 0x18, 0x09, 0x15, 0x31, - 0x8e, 0xed, 0x04, 0x31, 0x92, 0x20, 0xc8, 0x8f, 0x0c, 0x9c, 0x20, 0xa8, 0x47, 0x57, 0x57, 0xbf, - 0x2e, 0xc9, 0xee, 0x19, 0x4a, 0x0b, 0xfb, 0x17, 0x79, 0xeb, 0x54, 0x9d, 0x53, 0x5d, 0x8f, 0x53, - 0xe7, 0x9c, 0x3a, 0x75, 0x0e, 0x34, 0xbb, 0x76, 0xb8, 0x39, 0x58, 0x5f, 0x30, 0xbd, 0xde, 0xe5, - 0xae, 0xe1, 0x5b, 0xc4, 0x25, 0x7e, 0xfc, 0x4f, 0x7f, 0xab, 0x7b, 0xd9, 0xe8, 0xdb, 0xc1, 0x65, - 0xd3, 0xf3, 0xc9, 0xe5, 0xed, 0xc7, 0x0d, 0xa7, 0xbf, 0x69, 0x3c, 0x7e, 0xb9, 0x4b, 0x81, 0x46, - 0x48, 0xac, 0x85, 0xbe, 0xef, 0x85, 0x1e, 0x7a, 0x32, 0x46, 0xb2, 0x10, 0xb5, 0x8d, 0xff, 0xe9, - 0x6f, 0x75, 0x17, 0x28, 0x92, 0x05, 0x8a, 0x64, 0x21, 0x42, 0x72, 0xbe, 0x71, 0x24, 0xca, 0xeb, - 0x24, 0xcc, 0x12, 0x3e, 0xff, 0x53, 0x2a, 0x0e, 0xaf, 0xeb, 0x5d, 0x66, 0xc5, 0xeb, 0x83, 0x0d, - 0xf6, 0x8b, 0xfd, 0x60, 0xff, 0x89, 0xea, 0x8f, 0x6d, 0x3d, 0x15, 0x2c, 0xd8, 0x1e, 0x45, 0x7c, - 0xd9, 0x18, 0x84, 0x5e, 0x60, 0x1a, 0x8e, 0xed, 0x76, 0x2f, 0x6f, 0x67, 0x31, 0xeb, 0x4a, 0x55, - 0xd1, 0x85, 0xa1, 0x75, 0xfc, 0x75, 0xc3, 0xcc, 0xab, 0xf3, 0xfe, 0xb8, 0x4e, 0xcf, 0x30, 0x37, - 0x6d, 0x97, 0xf8, 0xbb, 0xd1, 0xc7, 0x5d, 0xf6, 0x49, 0xe0, 0x0d, 0x7c, 0x93, 0x1c, 0xa9, 0x55, - 0x70, 0xb9, 0x47, 0x42, 0x23, 0x8f, 0xd6, 0xe5, 0xa2, 0x56, 0xfe, 0xc0, 0x0d, 0xed, 0x5e, 0x96, - 0xcc, 0xcf, 0x1c, 0xd4, 0x20, 0x30, 0x37, 0x49, 0xcf, 0xc8, 0xb4, 0x7b, 0xb2, 0xa8, 0xdd, 0x20, - 0xb4, 0x9d, 0xcb, 0xb6, 0x1b, 0x06, 0xa1, 0x9f, 0x6e, 0xa4, 0x3f, 0x01, 0x63, 0x8b, 0x96, 0xe5, - 0xb9, 0xe8, 0x31, 0x98, 0x20, 0xae, 0xb1, 0xee, 0x10, 0x6b, 0x5e, 0x7b, 0x58, 0x7b, 0x74, 0xb2, - 0x71, 0xe2, 0xbb, 0x7b, 0xf5, 0x77, 0xec, 0xef, 0xd5, 0x27, 0x96, 0x78, 0x31, 0x8e, 0xe0, 0xfa, - 0x17, 0x6b, 0x30, 0xce, 0x1a, 0x05, 0xe8, 0x0b, 0x1a, 0x9c, 0xde, 0x1a, 0xac, 0x13, 0xdf, 0x25, - 0x21, 0x09, 0x5a, 0x46, 0xb0, 0xb9, 0xee, 0x19, 0x3e, 0x47, 0x31, 0xfd, 0xc4, 0xb5, 0x85, 0x12, - 0x4b, 0x70, 0xe1, 0x7a, 0x16, 0x5f, 0xe3, 0x81, 0xfd, 0xbd, 0xfa, 0xe9, 0x1c, 0x00, 0xce, 0xa3, - 0x8e, 0x6e, 0xc3, 0x8c, 0xdb, 0xb5, 0xdd, 0x9d, 0xb6, 0xdb, 0xf5, 0x49, 0x10, 0xcc, 0xd7, 0x58, - 0x6f, 0x16, 0x4b, 0xf5, 0x66, 0x55, 0x41, 0xd4, 0x38, 0xb9, 0xbf, 0x57, 0x9f, 0x51, 0x4b, 0x70, - 0x82, 0x90, 0xfe, 0xdb, 0x1a, 0x9c, 0x58, 0xb4, 0x7a, 0x76, 0x10, 0xd8, 0x9e, 0xbb, 0xe6, 0x0c, - 0xba, 0xb6, 0x8b, 0x1e, 0x86, 0x51, 0xd7, 0xe8, 0x11, 0x36, 0x24, 0x53, 0x8d, 0x19, 0x31, 0xaa, - 0xa3, 0xab, 0x46, 0x8f, 0x60, 0x06, 0x41, 0x2f, 0xc1, 0xb8, 0xe9, 0xb9, 0x1b, 0x76, 0x57, 0x74, - 0xf4, 0xa7, 0x16, 0xf8, 0x4c, 0x2e, 0xa8, 0x33, 0xc9, 0xfa, 0x27, 0x56, 0xc0, 0x02, 0x36, 0x6e, - 0x2f, 0xed, 0x84, 0xc4, 0xa5, 0x64, 0x1a, 0xb0, 0xbf, 0x57, 0x1f, 0x6f, 0x32, 0x04, 0x58, 0x20, - 0x42, 0x8f, 0xc2, 0xa4, 0x65, 0x07, 0x7c, 0x3a, 0x47, 0xd8, 0x74, 0xce, 0xec, 0xef, 0xd5, 0x27, - 0x5b, 0xa2, 0x0c, 0x4b, 0xa8, 0x7e, 0x05, 0x26, 0x17, 0x1d, 0xe2, 0x87, 0xb6, 0xdb, 0x45, 0xcf, - 0xc0, 0x1c, 0xe9, 0x19, 0xb6, 0x83, 0x89, 0x49, 0xec, 0x6d, 0xe2, 0x07, 0xf3, 0xda, 0xc3, 0x23, - 0x8f, 0x4e, 0x35, 0xd0, 0xfe, 0x5e, 0x7d, 0x6e, 0x29, 0x01, 0xc1, 0xa9, 0x9a, 0xfa, 0x27, 0x35, - 0x98, 0x5e, 0x1c, 0x58, 0x76, 0xc8, 0x7b, 0x82, 0x02, 0x98, 0x36, 0xe8, 0xcf, 0x35, 0xcf, 0xb1, - 0xcd, 0x5d, 0xb1, 0x20, 0x5e, 0x2c, 0x35, 0x05, 0x8b, 0x31, 0x9e, 0xc6, 0x89, 0xfd, 0xbd, 0xfa, - 0xb4, 0x52, 0x80, 0x55, 0x2a, 0xfa, 0x26, 0xa8, 0x30, 0xf4, 0x21, 0x98, 0xe1, 0xe3, 0xb1, 0x62, - 0xf4, 0x31, 0xd9, 0x10, 0x9d, 0x78, 0x97, 0x32, 0xbc, 0x11, 0xa5, 0x85, 0x1b, 0xeb, 0xaf, 0x11, - 0x33, 0xc4, 0x64, 0x83, 0xf8, 0xc4, 0x35, 0x09, 0x9f, 0xe9, 0xa6, 0xd2, 0x18, 0x27, 0x50, 0xe9, - 0x3f, 0xd4, 0xe0, 0xe4, 0xe2, 0xb6, 0x61, 0x3b, 0xc6, 0xba, 0xed, 0xd8, 0xe1, 0xee, 0xab, 0x9e, - 0x4b, 0x0e, 0x31, 0xd5, 0xb7, 0xe0, 0x81, 0x81, 0x6b, 0xf0, 0x76, 0x0e, 0x59, 0xe1, 0x93, 0x7b, - 0x73, 0xb7, 0x4f, 0xe8, 0x22, 0xa5, 0x43, 0x7d, 0x61, 0x7f, 0xaf, 0xfe, 0xc0, 0xad, 0xfc, 0x2a, - 0xb8, 0xa8, 0x2d, 0xc2, 0x70, 0x4e, 0x01, 0xbd, 0xec, 0x39, 0x83, 0x9e, 0xc0, 0x3a, 0xc2, 0xb0, - 0x9e, 0xdf, 0xdf, 0xab, 0x9f, 0xbb, 0x95, 0x5b, 0x03, 0x17, 0xb4, 0xd4, 0xbf, 0x57, 0x83, 0x99, - 0x86, 0x61, 0x6e, 0x0d, 0xfa, 0x8d, 0x81, 0xb9, 0x45, 0x42, 0xf4, 0x51, 0x98, 0xa4, 0x3c, 0xce, - 0x32, 0x42, 0x43, 0x8c, 0xe4, 0x4f, 0x17, 0x2e, 0x54, 0x36, 0x8b, 0xb4, 0x76, 0x3c, 0xb6, 0x2b, - 0x24, 0x34, 0x1a, 0x48, 0x8c, 0x09, 0xc4, 0x65, 0x58, 0x62, 0x45, 0x5d, 0x18, 0x0d, 0xfa, 0xc4, - 0x14, 0xdb, 0x60, 0xa9, 0xd4, 0x62, 0x51, 0xbb, 0xdc, 0xe9, 0x13, 0x33, 0x9e, 0x06, 0xfa, 0x0b, - 0x33, 0x02, 0xc8, 0x83, 0xf1, 0x20, 0x34, 0xc2, 0x41, 0xc0, 0x36, 0xc7, 0xf4, 0x13, 0x57, 0xab, - 0x93, 0x62, 0xe8, 0x1a, 0x73, 0x82, 0xd8, 0x38, 0xff, 0x8d, 0x05, 0x19, 0xfd, 0x07, 0x1a, 0x9c, - 0x54, 0xab, 0x2f, 0xdb, 0x41, 0x88, 0x7e, 0x21, 0x33, 0xa0, 0x0b, 0x87, 0x1b, 0x50, 0xda, 0x9a, - 0x0d, 0xe7, 0x49, 0x41, 0x6e, 0x32, 0x2a, 0x51, 0x06, 0x73, 0x03, 0xc6, 0xec, 0x90, 0xf4, 0xf8, - 0xc2, 0x2a, 0xcb, 0xfd, 0xd4, 0x3e, 0x37, 0x66, 0x05, 0xb5, 0xb1, 0x36, 0xc5, 0x8b, 0x39, 0x7a, - 0xfd, 0xa3, 0x70, 0x46, 0xad, 0xb5, 0xe6, 0x7b, 0xdb, 0xb6, 0x45, 0x7c, 0xba, 0x19, 0xc2, 0xdd, - 0x7e, 0x66, 0x33, 0xd0, 0xc5, 0x85, 0x19, 0x04, 0xbd, 0x07, 0xc6, 0x7d, 0xd2, 0xb5, 0x3d, 0x97, - 0x4d, 0xf8, 0x54, 0x3c, 0x78, 0x98, 0x95, 0x62, 0x01, 0xd5, 0xff, 0x4b, 0x2d, 0x39, 0x78, 0x74, - 0x22, 0xd1, 0x6d, 0x98, 0xec, 0x0b, 0x52, 0x62, 0xf0, 0xda, 0x95, 0xbf, 0x30, 0xea, 0x7b, 0x3c, - 0xae, 0x51, 0x09, 0x96, 0xc4, 0x90, 0x0d, 0x73, 0xd1, 0xff, 0xcd, 0x0a, 0x5c, 0x9b, 0xf1, 0xd4, - 0xb5, 0x04, 0x22, 0x9c, 0x42, 0x8c, 0x6e, 0xc2, 0x54, 0x40, 0x4c, 0x9f, 0x50, 0xbe, 0x24, 0x56, - 0x6a, 0x2e, 0xf3, 0xea, 0x44, 0x95, 0x04, 0xf3, 0x3a, 0x25, 0xba, 0x3f, 0x25, 0x01, 0x38, 0x46, - 0x84, 0x2e, 0xc2, 0x68, 0x40, 0x88, 0x35, 0x3f, 0xca, 0x06, 0x7d, 0x92, 0x6d, 0x0d, 0x42, 0x2c, - 0xcc, 0x4a, 0xf5, 0xdf, 0x18, 0x05, 0x94, 0x5d, 0xd8, 0xea, 0x57, 0xf3, 0x12, 0x31, 0xe8, 0x55, - 0xbe, 0x5a, 0xec, 0x91, 0x14, 0x62, 0xf4, 0x06, 0xcc, 0x3a, 0x46, 0x10, 0xde, 0xe8, 0x53, 0x41, - 0x25, 0x5a, 0x1d, 0xd3, 0x4f, 0x34, 0x4a, 0x4d, 0xef, 0xb2, 0x8a, 0xa9, 0x71, 0x6a, 0x7f, 0xaf, - 0x3e, 0x9b, 0x28, 0xc2, 0x49, 0x5a, 0x68, 0x0b, 0xa6, 0x68, 0xc1, 0x92, 0xef, 0x7b, 0xbe, 0x18, - 0xf2, 0xe7, 0x4b, 0x13, 0x66, 0x58, 0x1a, 0xb3, 0x74, 0x26, 0xe4, 0x4f, 0x1c, 0xe3, 0x47, 0x3f, - 0x0f, 0xc8, 0x5b, 0x0f, 0x88, 0xbf, 0x4d, 0xac, 0xab, 0x5c, 0x2e, 0xa3, 0x9f, 0x4b, 0xe7, 0x65, - 0xa4, 0x71, 0x5e, 0xcc, 0x21, 0xba, 0x91, 0xa9, 0x81, 0x73, 0x5a, 0xa1, 0x2d, 0x40, 0x52, 0xb6, - 0x93, 0xd3, 0x3e, 0x3f, 0x76, 0xf8, 0x45, 0x73, 0x8e, 0x12, 0xbb, 0x9a, 0x41, 0x81, 0x73, 0xd0, - 0xea, 0xbf, 0x5b, 0x83, 0x69, 0xbe, 0x48, 0x96, 0xdc, 0xd0, 0xdf, 0x3d, 0x86, 0xa3, 0x61, 0x23, - 0x71, 0x34, 0xb4, 0x2a, 0x6c, 0x75, 0xd6, 0xe3, 0xc2, 0x93, 0xc1, 0x4d, 0x9d, 0x0c, 0x57, 0x2a, - 0x53, 0x1a, 0x7e, 0x30, 0xfc, 0x1b, 0x0d, 0x4e, 0x28, 0xb5, 0x8f, 0xe1, 0x5c, 0x20, 0xc9, 0x73, - 0xe1, 0xc5, 0xaa, 0x1f, 0x58, 0x70, 0x2c, 0x98, 0x89, 0xef, 0x62, 0x2c, 0xfb, 0x09, 0x80, 0x75, - 0xc6, 0x53, 0x56, 0x63, 0x21, 0x49, 0xce, 0x7a, 0x43, 0x42, 0xb0, 0x52, 0x4b, 0x32, 0xab, 0x5a, - 0x2e, 0xb3, 0xfa, 0xd3, 0x11, 0x38, 0x95, 0x19, 0xeb, 0x2c, 0x03, 0xd1, 0x7e, 0x5c, 0x0c, 0xa4, - 0xf6, 0x63, 0x61, 0x20, 0x23, 0xa5, 0x18, 0xc8, 0xa3, 0x30, 0x49, 0xc7, 0x94, 0xcd, 0x0d, 0x3f, - 0x1a, 0x98, 0xca, 0xd0, 0x11, 0x65, 0x58, 0x42, 0x91, 0x0f, 0xa8, 0x67, 0x77, 0x79, 0xb3, 0x4e, - 0x68, 0xf8, 0xe1, 0x4d, 0xbb, 0x47, 0x04, 0xab, 0xf9, 0xff, 0x0f, 0xb7, 0x52, 0x69, 0x0b, 0xce, - 0x71, 0x56, 0x32, 0x98, 0x70, 0x0e, 0x76, 0xfd, 0x0f, 0x46, 0x01, 0x9a, 0x8b, 0xd8, 0x0b, 0x79, - 0x67, 0x5f, 0x80, 0xb1, 0xfe, 0xa6, 0x11, 0x44, 0xab, 0xe8, 0xb1, 0x68, 0x09, 0xae, 0xd1, 0xc2, - 0xbb, 0x7b, 0xf5, 0xf9, 0xa6, 0x4f, 0x2c, 0xe2, 0x86, 0xb6, 0xe1, 0x04, 0x51, 0x23, 0x06, 0xc3, - 0xbc, 0x1d, 0xfd, 0x06, 0x3a, 0x8c, 0x4d, 0xaf, 0xd7, 0x77, 0x08, 0x85, 0xb2, 0x6f, 0xa8, 0x95, - 0xfb, 0x86, 0xe5, 0x0c, 0x26, 0x9c, 0x83, 0x3d, 0xa2, 0xd9, 0x76, 0xed, 0xd0, 0x36, 0x24, 0xcd, - 0x91, 0xf2, 0x34, 0x93, 0x98, 0x70, 0x0e, 0x76, 0xf4, 0xa6, 0x06, 0xe7, 0x93, 0xc5, 0x57, 0x6c, - 0xd7, 0x0e, 0x36, 0x89, 0xc5, 0x88, 0x8f, 0x1e, 0x99, 0xf8, 0xa5, 0xfd, 0xbd, 0xfa, 0xf9, 0xe5, - 0x42, 0x8c, 0x78, 0x08, 0x35, 0xf4, 0x39, 0x0d, 0x2e, 0xa4, 0xc6, 0xc5, 0xb7, 0xbb, 0x5d, 0xe2, - 0x8b, 0xde, 0x1c, 0x7d, 0x09, 0xd5, 0xf7, 0xf7, 0xea, 0x17, 0x96, 0x8b, 0x51, 0xe2, 0x61, 0xf4, - 0xf4, 0x7f, 0xae, 0xc1, 0x48, 0x13, 0xb7, 0xd1, 0x7b, 0x13, 0x7a, 0xdb, 0x03, 0xaa, 0xde, 0x76, - 0x77, 0xaf, 0x3e, 0xd1, 0xc4, 0x6d, 0x45, 0x85, 0xfb, 0xbc, 0x06, 0xa7, 0x4c, 0xcf, 0x0d, 0x0d, - 0xda, 0x2f, 0xcc, 0x85, 0x9c, 0x88, 0x99, 0x96, 0x53, 0x59, 0x9a, 0x29, 0x6c, 0x8d, 0x07, 0x45, - 0x0f, 0x4e, 0xa5, 0x21, 0x01, 0xce, 0x92, 0xd6, 0xff, 0xad, 0x06, 0x33, 0x4d, 0xc7, 0x1b, 0x58, - 0x6b, 0xbe, 0xb7, 0x61, 0x3b, 0xe4, 0x6d, 0xa2, 0xa8, 0xa9, 0x5d, 0x2e, 0x3a, 0x8e, 0x99, 0xde, - 0xa4, 0x56, 0x7c, 0xbb, 0xe8, 0x4d, 0x6a, 0x9f, 0x0b, 0x0e, 0xc8, 0x2f, 0x4f, 0x24, 0x3f, 0x8d, - 0x1d, 0x91, 0x8f, 0xc2, 0xa4, 0x69, 0x34, 0x06, 0xae, 0xe5, 0x48, 0xc5, 0x89, 0x76, 0xb3, 0xb9, - 0xc8, 0xcb, 0xb0, 0x84, 0xa2, 0x37, 0x00, 0x62, 0xd3, 0x97, 0x98, 0x88, 0xab, 0x15, 0xed, 0x6d, - 0x1d, 0x12, 0x86, 0xb6, 0xdb, 0x0d, 0xe2, 0xd9, 0x8f, 0x61, 0x58, 0x21, 0x87, 0x3e, 0x0e, 0xb3, - 0x62, 0x98, 0xdb, 0x3d, 0xa3, 0x2b, 0xcc, 0x0c, 0x65, 0xc7, 0x6a, 0x45, 0xc1, 0xd4, 0x38, 0x2b, - 0x28, 0xcf, 0xaa, 0xa5, 0x01, 0x4e, 0x92, 0x43, 0x77, 0x60, 0xa6, 0xa7, 0xda, 0x4e, 0x46, 0x2b, - 0x88, 0x32, 0x8a, 0x21, 0xa5, 0x71, 0x46, 0x50, 0x9f, 0x49, 0x98, 0x5d, 0x12, 0xb4, 0x72, 0xf4, - 0xbf, 0xb1, 0xfb, 0xa5, 0xff, 0x6d, 0xc0, 0x04, 0x57, 0x81, 0x83, 0xf9, 0x71, 0xf6, 0x85, 0x3f, - 0x57, 0xea, 0x0b, 0xb9, 0x3a, 0x1d, 0x1b, 0x74, 0xf9, 0xef, 0x00, 0x47, 0xc8, 0xd1, 0x6d, 0x98, - 0xa1, 0x87, 0x7b, 0x87, 0x38, 0xc4, 0x0c, 0x3d, 0x7f, 0x7e, 0xa2, 0x82, 0xbd, 0xb4, 0xa3, 0x20, - 0xe2, 0x56, 0x34, 0xb5, 0x04, 0x27, 0x08, 0x49, 0x1b, 0xc1, 0x64, 0xa1, 0x8d, 0x60, 0x1b, 0xa6, - 0xb7, 0x15, 0x73, 0xd6, 0x14, 0x1b, 0x86, 0x17, 0x4a, 0xf5, 0x2c, 0x36, 0x6e, 0x35, 0x4e, 0x0b, - 0x4a, 0xd3, 0xaa, 0x21, 0x4c, 0x25, 0xa4, 0xef, 0x4d, 0xc2, 0xa9, 0xa6, 0x33, 0x08, 0x42, 0xe2, - 0x2f, 0x8a, 0x3b, 0x09, 0xe2, 0xa3, 0x4f, 0x6a, 0x70, 0x8e, 0xfd, 0xdb, 0xf2, 0x6e, 0xbb, 0x2d, - 0xe2, 0x18, 0xbb, 0x8b, 0x1b, 0xb4, 0x86, 0x65, 0x1d, 0x8d, 0x11, 0xb5, 0x06, 0x42, 0x9e, 0x64, - 0x86, 0xb9, 0x4e, 0x2e, 0x46, 0x5c, 0x40, 0x09, 0x7d, 0x56, 0x83, 0x07, 0x73, 0x40, 0x2d, 0xe2, - 0x90, 0x30, 0x12, 0x61, 0x8e, 0xda, 0x8f, 0x87, 0xf6, 0xf7, 0xea, 0x0f, 0x76, 0x8a, 0x90, 0xe2, - 0x62, 0x7a, 0xf4, 0x38, 0x3c, 0x9f, 0x03, 0xbd, 0x62, 0xd8, 0xce, 0xc0, 0x8f, 0xa4, 0x9b, 0xa3, - 0x76, 0x87, 0x09, 0x19, 0x9d, 0x42, 0xac, 0x78, 0x08, 0x45, 0xf4, 0x09, 0x38, 0x2b, 0xa1, 0xb7, - 0x5c, 0x97, 0x10, 0x2b, 0x21, 0xeb, 0x1c, 0xb5, 0x2b, 0x0f, 0xee, 0xef, 0xd5, 0xcf, 0x76, 0xf2, - 0x10, 0xe2, 0x7c, 0x3a, 0xa8, 0x0b, 0x0f, 0xc5, 0x80, 0xd0, 0x76, 0xec, 0x3b, 0x5c, 0x1c, 0xdb, - 0xf4, 0x49, 0xb0, 0xe9, 0x39, 0x16, 0xe3, 0x17, 0x5a, 0xe3, 0x9d, 0xfb, 0x7b, 0xf5, 0x87, 0x3a, - 0xc3, 0x2a, 0xe2, 0xe1, 0x78, 0x90, 0x05, 0x33, 0x81, 0x69, 0xb8, 0x6d, 0x37, 0x24, 0xfe, 0xb6, - 0xe1, 0xcc, 0x8f, 0x97, 0xfa, 0x40, 0xbe, 0x47, 0x15, 0x3c, 0x38, 0x81, 0x15, 0x3d, 0x05, 0x93, - 0x64, 0xa7, 0x6f, 0xb8, 0x16, 0xe1, 0x8c, 0x61, 0xaa, 0x71, 0x91, 0x1e, 0x49, 0x4b, 0xa2, 0xec, - 0xee, 0x5e, 0x7d, 0x26, 0xfa, 0x7f, 0xc5, 0xb3, 0x08, 0x96, 0xb5, 0xd1, 0xc7, 0xe0, 0x4c, 0xcf, - 0xd8, 0x59, 0xf5, 0x2c, 0xc2, 0xf8, 0x5c, 0x10, 0x49, 0xbc, 0x93, 0xa5, 0xfa, 0x39, 0xbf, 0xbf, - 0x57, 0x3f, 0xb3, 0x92, 0x83, 0x0f, 0xe7, 0x52, 0xa1, 0xd3, 0xd0, 0x33, 0x76, 0xae, 0xfa, 0x86, - 0x49, 0x36, 0x06, 0xce, 0x4d, 0xe2, 0xf7, 0x6c, 0x97, 0x2b, 0x15, 0xc4, 0xf4, 0x5c, 0x8b, 0xf2, - 0x12, 0xed, 0xd1, 0x31, 0x3e, 0x0d, 0x2b, 0xc3, 0x2a, 0xe2, 0xe1, 0x78, 0xd0, 0xfb, 0x61, 0xc6, - 0xee, 0xba, 0x9e, 0x4f, 0x6e, 0x1a, 0xb6, 0x1b, 0x06, 0xf3, 0xc0, 0x4c, 0xee, 0x6c, 0x58, 0xdb, - 0x4a, 0x39, 0x4e, 0xd4, 0xd2, 0xf7, 0x46, 0x60, 0xaa, 0xe9, 0xb9, 0x96, 0xcd, 0xf4, 0x99, 0xc7, - 0x13, 0xc6, 0xd2, 0x87, 0x54, 0x46, 0x78, 0x77, 0xaf, 0x3e, 0x2b, 0x2b, 0x2a, 0x9c, 0xf1, 0x69, - 0x69, 0xa9, 0xe0, 0xba, 0xf1, 0x3b, 0x93, 0x16, 0x86, 0xbb, 0x7b, 0xf5, 0x13, 0xb2, 0x59, 0xd2, - 0xe8, 0x80, 0xb6, 0xb9, 0x22, 0x72, 0xd3, 0x37, 0xdc, 0xc0, 0xae, 0xa0, 0x88, 0x48, 0x15, 0x73, - 0x39, 0x83, 0x0d, 0xe7, 0x50, 0x40, 0xaf, 0xc1, 0x1c, 0x2d, 0xbd, 0xd5, 0xb7, 0x8c, 0x90, 0x94, - 0xd4, 0x3f, 0xce, 0x09, 0x9a, 0x73, 0xcb, 0x09, 0x4c, 0x38, 0x85, 0x99, 0x1b, 0x97, 0x8d, 0xc0, - 0x73, 0xd9, 0x76, 0x4b, 0x18, 0x97, 0x69, 0x29, 0x16, 0x50, 0xf4, 0x18, 0x4c, 0xf4, 0x48, 0x10, - 0x18, 0x5d, 0xc2, 0xf6, 0xcf, 0x54, 0x7c, 0x4c, 0xae, 0xf0, 0x62, 0x1c, 0xc1, 0xd1, 0xfb, 0x60, - 0xcc, 0xf4, 0x2c, 0x12, 0xcc, 0x4f, 0xb0, 0x19, 0xa6, 0x6a, 0xd8, 0x58, 0x93, 0x16, 0xdc, 0xdd, - 0xab, 0x4f, 0x31, 0x85, 0x9c, 0xfe, 0xc2, 0xbc, 0x92, 0xfe, 0xeb, 0x54, 0x74, 0x4d, 0x09, 0xeb, - 0x45, 0x37, 0x44, 0x7c, 0x5a, 0x99, 0x7a, 0x71, 0x7c, 0xe6, 0x65, 0xfd, 0x4b, 0x54, 0x71, 0xf0, - 0xdc, 0xd0, 0xf7, 0x9c, 0x35, 0xc7, 0x70, 0x09, 0xfa, 0xb4, 0x06, 0x27, 0x37, 0xed, 0xee, 0xa6, - 0x7a, 0xb1, 0x25, 0x0e, 0xb6, 0x72, 0x32, 0xfe, 0xb5, 0x14, 0xb2, 0xc6, 0x99, 0xfd, 0xbd, 0xfa, - 0xc9, 0x74, 0x29, 0xce, 0x10, 0xd5, 0x3f, 0x53, 0x83, 0x33, 0xa2, 0x6b, 0x0e, 0x3d, 0x6a, 0xfa, - 0x8e, 0xb7, 0xdb, 0x23, 0xee, 0x71, 0x5c, 0x42, 0x45, 0x32, 0x49, 0xad, 0x50, 0x26, 0xe9, 0x65, - 0xa6, 0x68, 0xa4, 0xcc, 0x14, 0xc9, 0x95, 0x7c, 0xc0, 0x34, 0xfd, 0x99, 0x06, 0xf3, 0x79, 0x63, - 0x71, 0x0c, 0xba, 0x90, 0x9b, 0xd4, 0x85, 0xda, 0xa5, 0xd5, 0xdb, 0x74, 0xdf, 0x0b, 0x74, 0xa2, - 0x3f, 0xab, 0xc1, 0xb9, 0xb8, 0x7a, 0xdb, 0x0d, 0x42, 0xc3, 0x71, 0xb8, 0xc5, 0xe7, 0xfe, 0x4f, - 0xfc, 0xeb, 0x09, 0xa5, 0xf6, 0x46, 0xc5, 0x6f, 0x55, 0x3b, 0x5f, 0x68, 0x6d, 0xde, 0x4d, 0x59, - 0x9b, 0x5f, 0xba, 0x97, 0x44, 0x87, 0x1b, 0x9e, 0xff, 0xab, 0x06, 0xe7, 0xf3, 0x1b, 0x1e, 0xc3, - 0xba, 0xea, 0x27, 0xd7, 0xd5, 0xf5, 0x7b, 0xf8, 0xd9, 0x05, 0x2b, 0xeb, 0x5b, 0xb5, 0xa2, 0xcf, - 0x65, 0x7a, 0xf7, 0x06, 0x9c, 0xa0, 0xca, 0x50, 0x10, 0x0a, 0x03, 0xe9, 0xd1, 0x9c, 0x05, 0x22, - 0x8b, 0xd1, 0x09, 0x9c, 0xc4, 0x81, 0xd3, 0x48, 0xd1, 0x2a, 0x4c, 0x50, 0x05, 0x88, 0xe2, 0xaf, - 0x1d, 0x1e, 0xbf, 0x3c, 0x92, 0x3a, 0xbc, 0x2d, 0x8e, 0x90, 0xa0, 0x5f, 0x80, 0x59, 0x4b, 0x6e, - 0xaa, 0x03, 0x6e, 0x09, 0xd3, 0x58, 0x99, 0x2d, 0xbb, 0xa5, 0xb6, 0xc6, 0x49, 0x64, 0xfa, 0xff, - 0xd1, 0xe0, 0xe2, 0xb0, 0xc5, 0x85, 0x7c, 0x00, 0x33, 0x92, 0x31, 0xb8, 0xb3, 0x48, 0x59, 0x6b, - 0xb7, 0x14, 0x55, 0xe2, 0x4d, 0x2a, 0x8b, 0x02, 0xac, 0x50, 0xc9, 0xb9, 0x89, 0xac, 0xdd, 0xa7, - 0x9b, 0x48, 0xfd, 0xcf, 0x35, 0x95, 0x1d, 0xa9, 0x93, 0xfb, 0xb6, 0x63, 0x47, 0x6a, 0xe7, 0x0b, - 0xad, 0x6d, 0x7f, 0x58, 0x83, 0x87, 0xf3, 0x9b, 0x28, 0x27, 0xf0, 0x8b, 0x30, 0xde, 0xe7, 0x3e, - 0x3d, 0x23, 0xec, 0x84, 0x7c, 0x94, 0x32, 0x17, 0xee, 0x70, 0x73, 0x77, 0xaf, 0x7e, 0x3e, 0x8f, - 0xdb, 0x0b, 0x57, 0x1d, 0xd1, 0x0e, 0xd9, 0x29, 0x73, 0x03, 0x17, 0x02, 0x9f, 0x3c, 0x24, 0x7f, - 0x31, 0xd6, 0x89, 0x73, 0x68, 0x03, 0xc3, 0x27, 0x35, 0x98, 0x4b, 0xac, 0xe9, 0x60, 0x7e, 0x8c, - 0xad, 0xd2, 0x72, 0x97, 0x41, 0x89, 0xdd, 0x12, 0x1f, 0xe0, 0x89, 0xe2, 0x00, 0xa7, 0x28, 0xa6, - 0x58, 0xad, 0x3a, 0xac, 0x6f, 0x3f, 0x56, 0xab, 0xf6, 0xbe, 0x80, 0xd5, 0x7e, 0xb5, 0x56, 0xf4, - 0xb9, 0x8c, 0xd5, 0xee, 0xc0, 0x54, 0xe4, 0x61, 0x19, 0xb1, 0x8c, 0xab, 0x95, 0x3b, 0xc5, 0xf1, - 0xc5, 0x8e, 0x0f, 0x51, 0x49, 0x80, 0x63, 0x62, 0xe8, 0x57, 0x35, 0x80, 0x78, 0x6a, 0xc4, 0xc6, - 0xba, 0x75, 0x0f, 0x07, 0x44, 0x91, 0x6f, 0xe6, 0xe8, 0xbe, 0x56, 0xd6, 0x85, 0x42, 0x58, 0xff, - 0xe6, 0x08, 0xa0, 0x6c, 0xe7, 0xa9, 0xe0, 0xb9, 0x65, 0xbb, 0x56, 0x5a, 0x37, 0xb8, 0x6e, 0xbb, - 0x16, 0x66, 0x90, 0x43, 0x88, 0xa6, 0xcf, 0xc1, 0x89, 0xae, 0xe3, 0xad, 0x1b, 0x8e, 0xb3, 0x2b, - 0xdc, 0x36, 0x85, 0xfb, 0xdf, 0x69, 0x7a, 0x3c, 0x5d, 0x4d, 0x82, 0x70, 0xba, 0x2e, 0xea, 0xc3, - 0x49, 0x9f, 0x6a, 0xb5, 0xa6, 0xed, 0x30, 0x2d, 0xca, 0x1b, 0x84, 0x25, 0xcd, 0x26, 0x4c, 0xd0, - 0xc7, 0x29, 0x5c, 0x38, 0x83, 0x1d, 0xbd, 0x1b, 0x26, 0xfa, 0xbe, 0xdd, 0x33, 0xfc, 0x5d, 0xa6, - 0xa7, 0x4d, 0x36, 0xa6, 0xe9, 0x39, 0xb7, 0xc6, 0x8b, 0x70, 0x04, 0x43, 0xbf, 0x04, 0x53, 0x8e, - 0xbd, 0x41, 0xcc, 0x5d, 0xd3, 0x21, 0xc2, 0xce, 0xb1, 0x76, 0x8f, 0x16, 0xcd, 0x72, 0x84, 0x57, - 0xdc, 0xb3, 0x46, 0x3f, 0x71, 0x4c, 0x51, 0x7f, 0xb3, 0x06, 0x17, 0x86, 0xb4, 0x44, 0x98, 0xae, - 0x69, 0xf1, 0x65, 0x62, 0xfe, 0xde, 0xcf, 0x97, 0xa1, 0x28, 0xbc, 0xbb, 0x57, 0x7f, 0xd7, 0x10, - 0x04, 0x1d, 0xba, 0x80, 0x48, 0x77, 0x17, 0xc7, 0x68, 0x50, 0x1b, 0xc6, 0xad, 0xd8, 0xa4, 0x37, - 0xd5, 0x78, 0x9c, 0xf2, 0x59, 0x6e, 0x74, 0x3b, 0x2c, 0x36, 0x81, 0x00, 0x2d, 0xc3, 0x04, 0xbf, - 0x52, 0x25, 0x82, 0x67, 0x3f, 0xc1, 0xf4, 0x5b, 0x5e, 0x74, 0x58, 0x64, 0x11, 0x0a, 0xfd, 0x7f, - 0x6b, 0x30, 0xd1, 0xf4, 0x7c, 0xd2, 0x5a, 0xed, 0xa0, 0x3b, 0x30, 0xad, 0xb8, 0x6c, 0x0b, 0xf6, - 0x55, 0x76, 0x3b, 0x33, 0x94, 0x8b, 0x31, 0xba, 0xc8, 0xd9, 0x53, 0x16, 0x60, 0x95, 0x18, 0xf2, - 0xe9, 0xa0, 0xdf, 0xf6, 0xed, 0x90, 0x52, 0xae, 0x74, 0x13, 0xc5, 0x29, 0xe3, 0x08, 0x19, 0x5f, - 0x08, 0xf2, 0x27, 0x8e, 0xc9, 0xe8, 0x6b, 0x74, 0xe7, 0xa6, 0xfb, 0x89, 0x9e, 0x81, 0xd1, 0x9e, - 0x67, 0x45, 0x33, 0xff, 0x9e, 0x68, 0x5f, 0xae, 0x78, 0x16, 0x1d, 0xdd, 0x73, 0xd9, 0x16, 0xcc, - 0x50, 0xc6, 0xda, 0xe8, 0xab, 0x70, 0x32, 0x4d, 0x1f, 0x3d, 0x03, 0x73, 0xa6, 0xd7, 0xeb, 0x79, - 0x6e, 0x67, 0xb0, 0xb1, 0x61, 0xef, 0x90, 0x84, 0x1f, 0x6e, 0x33, 0x01, 0xc1, 0xa9, 0x9a, 0xfa, - 0x57, 0x34, 0x18, 0xa1, 0x33, 0xa3, 0xc3, 0xb8, 0xe5, 0xf5, 0x0c, 0xdb, 0x15, 0xbd, 0x62, 0x5e, - 0xc2, 0x2d, 0x56, 0x82, 0x05, 0x04, 0xbd, 0x0e, 0x53, 0x91, 0xc4, 0x53, 0xcd, 0x1d, 0xa4, 0xb5, - 0xda, 0x91, 0xbe, 0x73, 0x92, 0x07, 0x47, 0x25, 0x01, 0x8e, 0xa9, 0xe8, 0x06, 0x9c, 0x6a, 0xad, - 0x76, 0xda, 0xae, 0xe9, 0x0c, 0x2c, 0xb2, 0xb4, 0xc3, 0xfe, 0x50, 0x26, 0x60, 0xf3, 0x12, 0xf1, - 0xa1, 0x8c, 0x09, 0x88, 0x4a, 0x38, 0x82, 0xd1, 0x6a, 0x84, 0xb7, 0x10, 0xce, 0xb2, 0xac, 0x9a, - 0x40, 0x82, 0x23, 0x98, 0xfe, 0x47, 0x35, 0x98, 0x56, 0x3a, 0x84, 0x7a, 0x30, 0xc1, 0xbf, 0x37, - 0xf2, 0x59, 0xbb, 0x52, 0xf6, 0x1b, 0x93, 0xdd, 0xe6, 0xe4, 0xf9, 0x90, 0x06, 0x38, 0xa2, 0xa1, - 0x72, 0xb4, 0xda, 0x10, 0x8e, 0xb6, 0x00, 0xc0, 0x5d, 0xf2, 0x98, 0xc3, 0x05, 0xdf, 0x96, 0xec, - 0xd0, 0xe8, 0xc8, 0x52, 0xac, 0xd4, 0x40, 0x17, 0x05, 0xef, 0x57, 0xbc, 0xf6, 0x14, 0xbe, 0xdf, - 0x85, 0xb1, 0x3b, 0x9e, 0x4b, 0x02, 0x71, 0x17, 0x75, 0xaf, 0xbe, 0x70, 0x8a, 0x1e, 0xee, 0xaf, - 0x52, 0xc4, 0x98, 0xe3, 0xd7, 0xbf, 0xae, 0x01, 0xb4, 0x8c, 0xd0, 0xe0, 0x17, 0x27, 0x87, 0xf0, - 0x78, 0xbe, 0x98, 0x38, 0xb3, 0x26, 0x33, 0x2e, 0xa0, 0xa3, 0x81, 0x7d, 0x27, 0xfa, 0x7e, 0x29, - 0x10, 0x73, 0xec, 0x1d, 0xfb, 0x0e, 0xc1, 0x0c, 0x8e, 0xde, 0x0b, 0x53, 0xc4, 0x35, 0xfd, 0xdd, - 0x7e, 0x28, 0x1c, 0x17, 0x27, 0xf9, 0x26, 0x5d, 0x8a, 0x0a, 0x71, 0x0c, 0xd7, 0x1f, 0x87, 0xa4, - 0x5a, 0x73, 0x70, 0x2f, 0xf5, 0xbb, 0x1a, 0x9c, 0x5c, 0xda, 0xe9, 0xdb, 0x3e, 0xf3, 0x82, 0x26, - 0x3e, 0x55, 0x11, 0xd0, 0x63, 0x30, 0xb1, 0xcd, 0xff, 0x15, 0x2d, 0xa5, 0x1e, 0x26, 0x6a, 0xe0, - 0x08, 0x8e, 0x36, 0x60, 0x8e, 0xb0, 0xe6, 0x4c, 0x0c, 0x30, 0xc2, 0x32, 0xae, 0x24, 0xdc, 0xcb, - 0x3e, 0x81, 0x05, 0xa7, 0xb0, 0xa2, 0x0e, 0xcc, 0x99, 0x8e, 0x11, 0x04, 0xf6, 0x86, 0x6d, 0xc6, - 0xce, 0x3e, 0x53, 0x8d, 0xf7, 0x32, 0xce, 0x90, 0x80, 0xdc, 0xdd, 0xab, 0x9f, 0x15, 0xfd, 0x4c, - 0x02, 0x70, 0x0a, 0x85, 0xfe, 0x56, 0x0d, 0x66, 0x97, 0x76, 0xfa, 0x5e, 0x30, 0xf0, 0x09, 0xab, - 0x7a, 0x0c, 0xda, 0xcd, 0x63, 0x30, 0xb1, 0x69, 0xb8, 0x96, 0x43, 0x7c, 0xb1, 0x32, 0xe4, 0xd8, - 0x5e, 0xe3, 0xc5, 0x38, 0x82, 0xa3, 0x8f, 0x01, 0x04, 0xe6, 0x26, 0xb1, 0x06, 0xec, 0x88, 0xe1, - 0x0a, 0xee, 0x72, 0xa9, 0x05, 0x9e, 0xf8, 0xc8, 0x8e, 0xc4, 0x29, 0xf6, 0x9d, 0xfc, 0x8d, 0x15, - 0x7a, 0xfa, 0x1f, 0x69, 0x70, 0x2a, 0xd1, 0xee, 0x18, 0x64, 0xf6, 0x6e, 0x52, 0x66, 0x6f, 0x54, - 0xff, 0xd8, 0x02, 0x51, 0xfd, 0xcd, 0x1a, 0x3c, 0x50, 0x30, 0x28, 0x99, 0x4b, 0x61, 0xed, 0xb8, - 0x2e, 0x85, 0xb7, 0x61, 0x3a, 0xf4, 0x1c, 0xe1, 0x96, 0x16, 0x8d, 0x41, 0xb9, 0x2b, 0xdf, 0x9b, - 0x12, 0x4f, 0x7c, 0xe5, 0x1b, 0x97, 0x05, 0x58, 0x25, 0xa4, 0x7f, 0x47, 0x83, 0x29, 0x69, 0x1f, - 0x38, 0x84, 0xfb, 0xfa, 0x31, 0x3a, 0x82, 0x1f, 0xfe, 0x39, 0xcf, 0xbf, 0xa8, 0xc1, 0x39, 0x89, - 0x3b, 0x12, 0xe6, 0x3a, 0x21, 0xe5, 0x1d, 0x07, 0xeb, 0x17, 0x17, 0x05, 0x9f, 0x54, 0x78, 0xb5, - 0xc2, 0xc9, 0xe9, 0xc1, 0x36, 0xf0, 0xfb, 0x5e, 0x10, 0xb1, 0x6b, 0x7e, 0xb0, 0xf1, 0x22, 0x1c, - 0xc1, 0xd0, 0x2a, 0x8c, 0x05, 0x94, 0x9e, 0x50, 0x1c, 0x8e, 0x38, 0x1a, 0xec, 0xc4, 0x61, 0xfd, - 0xc5, 0x1c, 0x0d, 0x7a, 0x43, 0xd5, 0x17, 0xb9, 0xf2, 0xfe, 0xf3, 0x47, 0x5b, 0x0c, 0xec, 0x95, - 0xe2, 0x02, 0xfd, 0x12, 0x2b, 0x1a, 0x91, 0x1c, 0x5f, 0xf9, 0x3c, 0x95, 0x51, 0x5f, 0x86, 0x93, - 0xe2, 0x5e, 0x99, 0x2f, 0x1b, 0xd7, 0x24, 0xe8, 0xa9, 0xc4, 0xca, 0x78, 0x24, 0x75, 0x57, 0x77, - 0x26, 0x5d, 0x3f, 0x5e, 0x31, 0x7a, 0x00, 0x93, 0x57, 0x45, 0x27, 0xd1, 0x79, 0xa8, 0xd9, 0xd1, - 0x5c, 0x80, 0xc0, 0x51, 0x6b, 0xb7, 0x70, 0xcd, 0xb6, 0xe4, 0x79, 0x55, 0x2b, 0x3c, 0x55, 0x95, - 0xa3, 0x69, 0x64, 0xf8, 0xd1, 0xa4, 0xff, 0xa7, 0x1a, 0x9c, 0x89, 0xa8, 0x46, 0xdf, 0xd8, 0x12, - 0x17, 0x1d, 0x07, 0x9c, 0xdd, 0x07, 0xeb, 0x9b, 0x37, 0x60, 0x94, 0xf1, 0xc0, 0x52, 0x17, 0x20, - 0x12, 0x21, 0xed, 0x0e, 0x66, 0x88, 0xd0, 0x2f, 0xc1, 0xb8, 0x63, 0xac, 0x13, 0x27, 0xf2, 0xe9, - 0x29, 0xa7, 0x9e, 0xe7, 0x7d, 0x2f, 0xb7, 0x1c, 0x05, 0xdc, 0x67, 0x59, 0x5a, 0xc5, 0x79, 0x21, - 0x16, 0x44, 0xcf, 0x3f, 0x0d, 0xd3, 0x4a, 0x35, 0x74, 0x12, 0x46, 0xb6, 0x08, 0xbf, 0x02, 0x9b, - 0xc2, 0xf4, 0x5f, 0x74, 0x06, 0xc6, 0xb6, 0x0d, 0x67, 0x20, 0xc6, 0x04, 0xf3, 0x1f, 0xcf, 0xd4, - 0x9e, 0xd2, 0xf4, 0x6f, 0x6a, 0x30, 0x7d, 0xcd, 0x5e, 0x27, 0x3e, 0xbf, 0x1d, 0x66, 0xd2, 0x6a, - 0xe2, 0x41, 0xe5, 0x74, 0xde, 0x63, 0x4a, 0xb4, 0x0b, 0x53, 0xe2, 0xb4, 0x91, 0x5e, 0x84, 0xd7, - 0x4a, 0xde, 0xb5, 0x49, 0xda, 0x82, 0x8b, 0xab, 0x0f, 0x41, 0x22, 0x12, 0x38, 0xa6, 0xa6, 0xbf, - 0x01, 0xa7, 0x73, 0x1a, 0xa1, 0x3a, 0xdb, 0xc0, 0x7e, 0x28, 0x16, 0x46, 0xb4, 0x23, 0xfd, 0x10, - 0xf3, 0x72, 0xf4, 0x20, 0x8c, 0x10, 0x37, 0x72, 0xc9, 0x9e, 0xd8, 0xdf, 0xab, 0x8f, 0x2c, 0xb9, - 0x16, 0xa6, 0x65, 0x94, 0x51, 0x39, 0x5e, 0x42, 0x32, 0x61, 0x8c, 0x6a, 0x59, 0x94, 0x61, 0x09, - 0xd5, 0xbf, 0xa6, 0x41, 0xe6, 0x22, 0x10, 0x7d, 0x56, 0x83, 0x93, 0x1b, 0xa9, 0xfd, 0x53, 0xe9, - 0x02, 0x32, 0xbd, 0x19, 0x1b, 0xf3, 0x62, 0x44, 0x32, 0xdb, 0x1a, 0x67, 0x08, 0xeb, 0xff, 0x78, - 0x14, 0x1e, 0xba, 0xe6, 0xf9, 0xf6, 0x1d, 0xcf, 0x0d, 0x0d, 0x67, 0xcd, 0xb3, 0x62, 0x4f, 0x20, - 0xc1, 0x97, 0x7f, 0x55, 0x83, 0x07, 0xcc, 0xfe, 0x80, 0xbb, 0xbb, 0x46, 0x0e, 0x1a, 0x6b, 0xc4, - 0xb7, 0xbd, 0xb2, 0x0e, 0x41, 0xec, 0xfd, 0x5f, 0x73, 0xed, 0x56, 0x1e, 0x4a, 0x5c, 0x44, 0x8b, - 0xf9, 0x25, 0x59, 0xde, 0x6d, 0x97, 0x75, 0xae, 0x13, 0xb2, 0xe1, 0xbc, 0x13, 0xcf, 0x42, 0x49, - 0xbf, 0xa4, 0x56, 0x2e, 0x46, 0x5c, 0x40, 0x09, 0x7d, 0x02, 0xce, 0xda, 0xbc, 0x73, 0x98, 0x18, - 0x96, 0xed, 0x92, 0x20, 0x60, 0xde, 0x39, 0x55, 0x1c, 0x6f, 0xda, 0x79, 0x08, 0x71, 0x3e, 0x1d, - 0xf4, 0x8b, 0x00, 0xc1, 0xae, 0x6b, 0x8a, 0xf1, 0x1f, 0x2b, 0x45, 0x95, 0x8b, 0x82, 0x12, 0x0b, - 0x56, 0x30, 0x52, 0x25, 0x24, 0x94, 0xab, 0x72, 0x9c, 0x39, 0xf1, 0x30, 0x25, 0x24, 0x5e, 0x43, - 0x31, 0x5c, 0xff, 0x2d, 0x0d, 0x26, 0xc4, 0xb3, 0x60, 0xf4, 0x9e, 0x94, 0x2e, 0x2e, 0xb9, 0x4f, - 0x4a, 0x1f, 0xbf, 0xc3, 0xae, 0x53, 0x84, 0x25, 0x46, 0x48, 0x13, 0xe5, 0x54, 0x39, 0x41, 0x39, - 0xb6, 0xeb, 0x24, 0xae, 0x55, 0x22, 0x5b, 0x8f, 0x42, 0x8d, 0xee, 0xc7, 0x53, 0x99, 0x56, 0x87, - 0x90, 0x19, 0x8e, 0xd1, 0x5f, 0xe1, 0x5f, 0xcd, 0x00, 0x7b, 0x03, 0xbe, 0xb8, 0xd6, 0xee, 0x10, - 0x7f, 0x5b, 0xee, 0x42, 0xca, 0x35, 0x62, 0xe7, 0x54, 0xd1, 0x8b, 0x2a, 0x5c, 0xe3, 0x7a, 0x0a, - 0x59, 0xcc, 0x35, 0xd2, 0x10, 0x9c, 0x21, 0x8c, 0xde, 0xd4, 0xe0, 0xa4, 0x91, 0x7c, 0x03, 0x1e, - 0x31, 0xf6, 0x72, 0xcf, 0x96, 0x52, 0x0f, 0xca, 0xe3, 0xce, 0xa4, 0x00, 0x01, 0xce, 0xd0, 0x45, - 0xef, 0x87, 0x19, 0xa3, 0x6f, 0x2f, 0x0e, 0x2c, 0x9b, 0x0a, 0x3b, 0xd1, 0x73, 0x60, 0x26, 0x81, - 0x2f, 0xae, 0xb5, 0x65, 0x39, 0x4e, 0xd4, 0x92, 0x6f, 0xb7, 0xc5, 0x50, 0x8e, 0x56, 0x7d, 0xbb, - 0x2d, 0x46, 0x31, 0x7e, 0xbb, 0x2d, 0x06, 0x4f, 0xa5, 0x82, 0x3e, 0x0c, 0x0f, 0xf2, 0x33, 0xb1, - 0x61, 0x04, 0xb6, 0xb9, 0x38, 0x08, 0x37, 0x89, 0x1b, 0x46, 0x5a, 0x2e, 0xb7, 0x0d, 0x33, 0x2f, - 0xc5, 0xa5, 0xa2, 0x4a, 0xb8, 0xb8, 0x3d, 0xf2, 0x00, 0x3c, 0xdb, 0x32, 0xc5, 0x07, 0x71, 0x03, - 0x72, 0x39, 0x95, 0xe2, 0x46, 0xbb, 0xd5, 0x14, 0xdf, 0xc3, 0x78, 0x45, 0xfc, 0x1b, 0x2b, 0x24, - 0xd0, 0x97, 0x34, 0x98, 0x15, 0x0b, 0x5d, 0x10, 0x9d, 0x60, 0x4b, 0xe0, 0xc3, 0xa5, 0x17, 0x64, - 0x6a, 0xd5, 0x2f, 0x60, 0x15, 0x3b, 0x97, 0x6a, 0xa4, 0xf3, 0x74, 0x02, 0x86, 0x93, 0x1d, 0x41, - 0x5f, 0xd4, 0xe0, 0x4c, 0x40, 0xfc, 0x6d, 0xdb, 0x24, 0x8b, 0xa6, 0xe9, 0x0d, 0xdc, 0x68, 0x9e, - 0x27, 0x2b, 0x3c, 0xa3, 0xed, 0xe4, 0x20, 0xe4, 0x2e, 0x7b, 0x79, 0x10, 0x9c, 0xdb, 0x01, 0xf4, - 0xd7, 0x34, 0x38, 0x71, 0xdb, 0x08, 0xcd, 0xcd, 0xa6, 0x61, 0x6e, 0x32, 0xf3, 0x0f, 0xf7, 0xd2, - 0x2b, 0xbb, 0x73, 0x5e, 0x49, 0xe2, 0xe2, 0x97, 0x20, 0xa9, 0x42, 0x9c, 0xa6, 0x88, 0x42, 0x98, - 0xf4, 0xc9, 0xeb, 0x03, 0x12, 0x30, 0x5f, 0x3e, 0xed, 0xe8, 0xfa, 0x46, 0xde, 0xa4, 0x61, 0x81, - 0x91, 0xcb, 0x43, 0xd1, 0x2f, 0x2c, 0x29, 0xa1, 0x2e, 0x3c, 0xc4, 0x97, 0xef, 0xa2, 0xeb, 0xb9, - 0xbb, 0x3d, 0x6f, 0x10, 0xa4, 0xb6, 0xc0, 0x34, 0xdb, 0x02, 0xcc, 0x5d, 0x71, 0x69, 0x58, 0x45, - 0x3c, 0x1c, 0x0f, 0xfa, 0x20, 0x4c, 0x92, 0x6d, 0xe2, 0x86, 0x37, 0x6f, 0x2e, 0xcf, 0xcf, 0x94, - 0x3a, 0x23, 0xd9, 0x27, 0x2c, 0x09, 0x1c, 0x58, 0x62, 0x43, 0x7d, 0x98, 0x70, 0xbc, 0x6e, 0xd7, - 0x76, 0xbb, 0xf3, 0xb3, 0x15, 0x96, 0x52, 0x62, 0xdc, 0x96, 0x39, 0x42, 0x2e, 0x3c, 0x8b, 0x1f, - 0x38, 0x22, 0x73, 0xfe, 0x45, 0x40, 0xd9, 0x6d, 0x70, 0x90, 0xd4, 0x3e, 0xa9, 0x4a, 0xed, 0x9f, - 0xd7, 0xe0, 0x4c, 0x1e, 0x41, 0x7a, 0xd8, 0x6f, 0x13, 0x7f, 0xdd, 0x0b, 0x22, 0x1f, 0xb8, 0x31, - 0x7e, 0xd8, 0xbf, 0x1c, 0x15, 0xe2, 0x18, 0x8e, 0xda, 0x70, 0x7a, 0x33, 0x0c, 0xfb, 0x8b, 0xa6, - 0x49, 0x82, 0x40, 0xd6, 0x60, 0xd4, 0xc6, 0x78, 0xec, 0x92, 0x6b, 0x37, 0x6f, 0xae, 0xa5, 0xc0, - 0x38, 0xaf, 0x8d, 0xfe, 0x6d, 0x0d, 0xce, 0xe6, 0xae, 0x1c, 0x84, 0xe1, 0x1c, 0x73, 0x74, 0x75, - 0x57, 0x06, 0xa1, 0x11, 0xda, 0x6e, 0xb7, 0xed, 0x6e, 0x38, 0x76, 0x77, 0x33, 0x14, 0xdd, 0x63, - 0x32, 0xdb, 0x4a, 0x6e, 0x0d, 0x5c, 0xd0, 0x92, 0x76, 0xbc, 0x67, 0xec, 0x64, 0x10, 0x2a, 0x1d, - 0x5f, 0xc9, 0x82, 0x71, 0x5e, 0x1b, 0xfd, 0x2b, 0x63, 0x70, 0x81, 0x76, 0x3c, 0x96, 0x1e, 0x56, - 0x0c, 0xd7, 0xe8, 0xfe, 0x84, 0x9e, 0xd2, 0xdf, 0xd4, 0xe0, 0x81, 0xcd, 0x7c, 0xd9, 0x5e, 0x08, - 0x30, 0xb8, 0x9c, 0x16, 0x36, 0x4c, 0x5f, 0xe0, 0xbb, 0x77, 0x68, 0x15, 0x5c, 0xd4, 0x2b, 0xf4, - 0x22, 0x9c, 0x74, 0x3d, 0x8b, 0x34, 0xdb, 0x2d, 0xbc, 0x62, 0x04, 0x5b, 0x9d, 0xc8, 0x6c, 0x3e, - 0xc6, 0xef, 0x5a, 0x57, 0x53, 0x30, 0x9c, 0xa9, 0x8d, 0xb6, 0x01, 0xf5, 0x3d, 0x6b, 0x69, 0xdb, - 0x36, 0x23, 0x8f, 0xdc, 0xf2, 0xf7, 0xbb, 0xec, 0x0d, 0xe2, 0x5a, 0x06, 0x1b, 0xce, 0xa1, 0xc0, - 0xb4, 0x13, 0xda, 0x99, 0x15, 0xcf, 0xb5, 0x43, 0xcf, 0x67, 0xae, 0xd4, 0x95, 0x84, 0x74, 0xb6, - 0xd2, 0x57, 0x73, 0x31, 0xe2, 0x02, 0x4a, 0xfa, 0xff, 0xd0, 0xe0, 0x04, 0x5d, 0x17, 0x6b, 0xbe, - 0xb7, 0xb3, 0xfb, 0x13, 0xb9, 0x24, 0x1f, 0x13, 0xb7, 0x88, 0x5c, 0xaf, 0x3e, 0xab, 0xdc, 0x20, - 0x4e, 0xb1, 0x4e, 0xc7, 0x97, 0x86, 0xaa, 0x6d, 0x61, 0xa4, 0xd8, 0xb6, 0xa0, 0x7f, 0xa9, 0xc6, - 0x05, 0xe6, 0x48, 0xb5, 0xff, 0xc9, 0xdc, 0x8a, 0x3f, 0x0b, 0xb3, 0xb4, 0x6c, 0xc5, 0xd8, 0x59, - 0x6b, 0xbd, 0xec, 0x39, 0x91, 0x3f, 0x3b, 0x73, 0x4f, 0xbb, 0xae, 0x02, 0x70, 0xb2, 0x1e, 0x7a, - 0x06, 0x26, 0xfa, 0xfc, 0xed, 0x9c, 0xb0, 0x35, 0x3c, 0xcc, 0x6f, 0xda, 0x58, 0xd1, 0xdd, 0xbd, - 0xfa, 0xa9, 0xd8, 0x9a, 0x2d, 0x0a, 0x71, 0xd4, 0x40, 0x7f, 0xeb, 0x0c, 0x30, 0xe4, 0x0e, 0x09, - 0x7f, 0x22, 0x07, 0xe5, 0x71, 0x98, 0x36, 0xfb, 0x83, 0xe6, 0x95, 0xce, 0x4b, 0x03, 0x2f, 0x34, - 0xc4, 0x4d, 0x22, 0x13, 0xa0, 0x9b, 0x6b, 0xb7, 0xa2, 0x62, 0xac, 0xd6, 0xa1, 0x0c, 0xc2, 0xec, - 0x0f, 0x04, 0xd3, 0x5d, 0x53, 0x5d, 0xb4, 0x18, 0x83, 0x68, 0xae, 0xdd, 0x4a, 0xc0, 0x70, 0xa6, - 0x36, 0xfa, 0x65, 0x0d, 0x66, 0x88, 0xd8, 0xbc, 0xd7, 0x0c, 0xdf, 0x12, 0xbc, 0xa1, 0xbc, 0xf8, - 0x23, 0x47, 0x37, 0x62, 0x09, 0x5c, 0xf5, 0x58, 0x52, 0x68, 0xe0, 0x04, 0x45, 0xa6, 0x05, 0x88, - 0xdf, 0x74, 0xa2, 0x3d, 0x2b, 0xcd, 0x2d, 0xc6, 0x84, 0x16, 0x50, 0x54, 0x09, 0x17, 0xb7, 0x47, - 0x7f, 0x5f, 0x83, 0x73, 0x12, 0x6a, 0xbb, 0x76, 0x6f, 0xd0, 0xc3, 0xc4, 0x74, 0x0c, 0xbb, 0x27, - 0x54, 0x82, 0x0f, 0xde, 0xbb, 0x2f, 0x4d, 0xe2, 0xe7, 0x2c, 0x2b, 0x1f, 0x86, 0x0b, 0xfa, 0x84, - 0xbe, 0xa6, 0xc1, 0xc3, 0x11, 0x68, 0x8d, 0x2a, 0xe6, 0x03, 0x9f, 0xc4, 0x2f, 0x2a, 0xc4, 0x98, - 0x4c, 0x94, 0xe2, 0xa0, 0x8f, 0xec, 0xef, 0xd5, 0x1f, 0x5e, 0x3a, 0x00, 0x37, 0x3e, 0x90, 0x7a, - 0x62, 0xc5, 0x74, 0xbc, 0x8d, 0x50, 0xe8, 0x10, 0xf7, 0x6d, 0xc5, 0x50, 0x1a, 0x38, 0x41, 0x11, - 0xfd, 0xb6, 0x06, 0x0f, 0xa8, 0x05, 0xea, 0x82, 0xe1, 0xca, 0xc3, 0x87, 0xee, 0x5d, 0x6f, 0x52, - 0x04, 0xb8, 0xb9, 0xae, 0x00, 0x88, 0x8b, 0xba, 0x45, 0xd9, 0x77, 0x8f, 0x2d, 0x4e, 0xae, 0x60, - 0x8c, 0x71, 0xf6, 0xcd, 0xd7, 0x6b, 0x80, 0x23, 0x18, 0x55, 0xde, 0xfb, 0x9e, 0xb5, 0x66, 0x5b, - 0xc1, 0xb2, 0xdd, 0xb3, 0x43, 0xa6, 0x01, 0x8c, 0xf0, 0xf1, 0x58, 0xf3, 0xac, 0xb5, 0x76, 0x8b, - 0x97, 0xe3, 0x44, 0x2d, 0xf6, 0x3c, 0xd0, 0xee, 0x19, 0x5d, 0xb2, 0x36, 0x70, 0x9c, 0x35, 0xdf, - 0x63, 0x26, 0x9d, 0x16, 0x31, 0x2c, 0xc7, 0x76, 0x49, 0x49, 0x89, 0x9f, 0x6d, 0xb9, 0x76, 0x11, - 0x52, 0x5c, 0x4c, 0x0f, 0x2d, 0x00, 0x6c, 0x18, 0xb6, 0xd3, 0xb9, 0x6d, 0xf4, 0x6f, 0xb8, 0x4c, - 0x2d, 0x98, 0xe4, 0x7a, 0xf3, 0x15, 0x59, 0x8a, 0x95, 0x1a, 0x6c, 0x41, 0x51, 0x66, 0x88, 0x09, - 0x0f, 0x50, 0x31, 0x3f, 0x77, 0xaf, 0x16, 0x54, 0x84, 0x91, 0x0f, 0xe0, 0x75, 0x85, 0x06, 0x4e, - 0x50, 0x44, 0xbf, 0xa6, 0xc1, 0x5c, 0xb0, 0x1b, 0x84, 0xa4, 0x27, 0x3b, 0x71, 0xe2, 0x9e, 0x77, - 0x82, 0xd9, 0xbb, 0x3a, 0x09, 0x2a, 0x38, 0x45, 0x15, 0x19, 0x70, 0x81, 0x0d, 0xec, 0xd5, 0xe6, - 0x35, 0xbb, 0xbb, 0x29, 0xdf, 0xfd, 0xad, 0x11, 0xdf, 0x24, 0x6e, 0x38, 0x7f, 0x92, 0x2d, 0x1d, - 0x16, 0x01, 0xa1, 0x5d, 0x5c, 0x0d, 0x0f, 0xc3, 0x81, 0x7e, 0x11, 0xce, 0x0b, 0xf0, 0xb2, 0x77, - 0x3b, 0x43, 0xe1, 0x14, 0xa3, 0xc0, 0x1e, 0x63, 0xb6, 0x0b, 0x6b, 0xe1, 0x21, 0x18, 0xa8, 0x7e, - 0x11, 0x10, 0x9f, 0xd9, 0xab, 0x89, 0x5c, 0x3f, 0xc1, 0x3c, 0x62, 0xeb, 0x80, 0xe9, 0x17, 0x9d, - 0x2c, 0x18, 0xe7, 0xb5, 0x41, 0xcf, 0x49, 0x17, 0xfd, 0x5d, 0x5a, 0xf0, 0xd2, 0x5a, 0x67, 0xfe, - 0x34, 0xeb, 0xdf, 0x69, 0xc5, 0xf3, 0x3e, 0x02, 0xe1, 0x74, 0x5d, 0x2a, 0x65, 0x44, 0x45, 0x8d, - 0x81, 0x1f, 0x84, 0xf3, 0x67, 0x58, 0x63, 0x26, 0x65, 0x60, 0x15, 0x80, 0x93, 0xf5, 0xd0, 0x33, - 0x30, 0x17, 0x10, 0xd3, 0xf4, 0x7a, 0xfd, 0x16, 0xd9, 0x30, 0x06, 0x4e, 0x38, 0x7f, 0x96, 0xf5, - 0x9e, 0xcf, 0x60, 0x02, 0x82, 0x53, 0x35, 0xd1, 0x2e, 0x9c, 0x96, 0xf1, 0x1a, 0x96, 0xbd, 0xee, - 0x8a, 0xb1, 0xc3, 0xc4, 0xf6, 0x73, 0x07, 0x6f, 0xc2, 0x85, 0xe8, 0x0e, 0x72, 0xe1, 0xa5, 0x81, - 0xe1, 0x86, 0x76, 0xb8, 0xcb, 0x87, 0xab, 0x99, 0x45, 0x87, 0xf3, 0x68, 0xa0, 0x65, 0x38, 0x93, - 0x2a, 0xbe, 0x62, 0x3b, 0x24, 0x98, 0x7f, 0x80, 0x7d, 0x36, 0xb3, 0xcc, 0x34, 0x73, 0xe0, 0x38, - 0xb7, 0x15, 0xba, 0x01, 0x67, 0xfb, 0xbe, 0x17, 0x12, 0x33, 0xbc, 0x4e, 0xe5, 0x14, 0x47, 0x7c, - 0x60, 0x30, 0x3f, 0xcf, 0xc6, 0x82, 0xd9, 0xea, 0xd7, 0xf2, 0x2a, 0xe0, 0xfc, 0x76, 0xe8, 0x2d, - 0x0d, 0x2e, 0x05, 0xa1, 0x4f, 0x8c, 0x9e, 0xed, 0x76, 0x9b, 0x9e, 0xeb, 0x12, 0xc6, 0x29, 0xdb, - 0x56, 0xec, 0x78, 0xfa, 0x60, 0x29, 0x56, 0xa5, 0xef, 0xef, 0xd5, 0x2f, 0x75, 0x86, 0x62, 0xc6, - 0x07, 0x50, 0xd6, 0xf7, 0x6a, 0x5c, 0x07, 0xcf, 0xb0, 0x7f, 0xba, 0x08, 0x7b, 0xa4, 0xe7, 0xf9, - 0xbb, 0x8b, 0x51, 0xc8, 0x44, 0x61, 0x1a, 0x67, 0x8b, 0x70, 0x25, 0x09, 0xc2, 0xe9, 0xba, 0x54, - 0x44, 0x63, 0x9b, 0xe5, 0x4a, 0x27, 0x6e, 0x5f, 0x8b, 0x45, 0xb4, 0x76, 0x0a, 0x86, 0x33, 0xb5, - 0x51, 0x13, 0x4e, 0x89, 0xb2, 0x36, 0x55, 0x74, 0x82, 0x2b, 0x3e, 0x89, 0xa4, 0x5f, 0xaa, 0x31, - 0x9c, 0x6a, 0xa7, 0x81, 0x38, 0x5b, 0x9f, 0x7e, 0x05, 0xfd, 0xa1, 0xf6, 0x62, 0x34, 0xfe, 0x8a, - 0xd5, 0x24, 0x08, 0xa7, 0xeb, 0x46, 0x9a, 0x68, 0xa2, 0x0b, 0x63, 0xf1, 0x57, 0xac, 0xa6, 0x60, - 0x38, 0x53, 0x5b, 0xff, 0x77, 0xa3, 0xf0, 0xae, 0x43, 0x48, 0x4d, 0xa8, 0x97, 0x3f, 0xdc, 0x47, - 0xdf, 0x3b, 0x87, 0x9b, 0x9e, 0x7e, 0xc1, 0xf4, 0x1c, 0x9d, 0xde, 0x61, 0xa7, 0x33, 0x28, 0x9a, - 0xce, 0xa3, 0x93, 0x3c, 0xfc, 0xf4, 0xf7, 0xf2, 0xa7, 0xbf, 0xe4, 0xa8, 0x1e, 0xb8, 0x5c, 0xfa, - 0x05, 0xcb, 0xa5, 0xe4, 0xa8, 0x1e, 0x62, 0x79, 0xfd, 0xfb, 0x51, 0x78, 0xe4, 0x30, 0xe2, 0x5b, - 0xc9, 0xf5, 0x95, 0xc3, 0x75, 0xee, 0xeb, 0xfa, 0x2a, 0x72, 0xaf, 0xbf, 0x8f, 0xeb, 0x2b, 0x87, - 0xe4, 0xfd, 0x5e, 0x5f, 0x45, 0xa3, 0x7a, 0xbf, 0xd6, 0x57, 0xd1, 0xa8, 0x1e, 0x62, 0x7d, 0xfd, - 0xcf, 0xf4, 0xf9, 0x20, 0x45, 0xb6, 0x36, 0x8c, 0x98, 0xfd, 0x41, 0x49, 0x26, 0xc5, 0x5c, 0x29, - 0x9a, 0x6b, 0xb7, 0x30, 0xc5, 0x81, 0x30, 0x8c, 0xf3, 0xf5, 0x53, 0x92, 0x05, 0x31, 0x87, 0x6f, - 0xbe, 0x24, 0xb1, 0xc0, 0x44, 0x87, 0x8a, 0xf4, 0x37, 0x49, 0x8f, 0xf8, 0x86, 0xd3, 0x09, 0x3d, - 0xdf, 0xe8, 0x96, 0xe5, 0x36, 0x6c, 0xa8, 0x96, 0x52, 0xb8, 0x70, 0x06, 0x3b, 0x1d, 0x90, 0xbe, - 0x6d, 0x95, 0xe4, 0x2f, 0x6c, 0x40, 0xd6, 0xda, 0x2d, 0x4c, 0x71, 0xe8, 0xbf, 0x35, 0x05, 0x4a, - 0x3c, 0x22, 0xf4, 0x61, 0x78, 0xd0, 0x70, 0x1c, 0xef, 0xf6, 0x9a, 0x6f, 0x6f, 0xdb, 0x0e, 0xe9, - 0x12, 0x4b, 0xca, 0x33, 0x81, 0xf0, 0xb8, 0x61, 0x6a, 0xcb, 0x62, 0x51, 0x25, 0x5c, 0xdc, 0x9e, - 0x2a, 0x51, 0xa7, 0xcc, 0x74, 0xf8, 0x97, 0x4a, 0x37, 0xf2, 0x99, 0x60, 0x32, 0x7c, 0x43, 0x65, - 0x8a, 0x71, 0x96, 0x2e, 0xfa, 0x15, 0x8d, 0x9b, 0xc8, 0xe4, 0x9d, 0x80, 0x98, 0xb4, 0x6b, 0xf7, - 0xea, 0x32, 0x31, 0x36, 0xb6, 0xc5, 0xd7, 0x0e, 0x49, 0x8a, 0xe8, 0xeb, 0x1a, 0x9c, 0xdd, 0xca, - 0x33, 0xef, 0x8b, 0xb9, 0x5d, 0x2b, 0xdd, 0x97, 0x82, 0x0b, 0x03, 0x2e, 0x54, 0xe6, 0x56, 0xc0, - 0xf9, 0x3d, 0x91, 0xe3, 0x24, 0xed, 0x9d, 0x82, 0x0f, 0x94, 0x1f, 0xa7, 0x94, 0xe5, 0x34, 0x1e, - 0x27, 0x09, 0xc0, 0x49, 0x8a, 0xe8, 0x75, 0x98, 0xda, 0x8a, 0xcc, 0xcc, 0xc2, 0xaa, 0xd4, 0x2a, - 0x4d, 0x5e, 0x31, 0x56, 0xf3, 0xdb, 0x27, 0x59, 0x88, 0x63, 0x2a, 0xc8, 0x86, 0x89, 0x2d, 0xce, - 0x8d, 0x84, 0x35, 0xa8, 0x51, 0x5d, 0x51, 0xe5, 0x26, 0x09, 0x51, 0x84, 0x23, 0xfc, 0xaa, 0xdf, - 0xe1, 0xe4, 0x01, 0x2e, 0xf1, 0x5f, 0xd6, 0xe0, 0xec, 0x36, 0xf1, 0x43, 0xdb, 0x4c, 0xdf, 0xaf, - 0x4c, 0x55, 0xd0, 0xa6, 0x5f, 0xce, 0xc3, 0xc8, 0x97, 0x4a, 0x2e, 0x08, 0xe7, 0xf7, 0x81, 0xea, - 0xd6, 0xdc, 0x4a, 0xde, 0x09, 0x8d, 0xd0, 0x36, 0x6f, 0x7a, 0x5b, 0xc4, 0xa5, 0x5f, 0x2b, 0x02, - 0xf1, 0x03, 0xe3, 0x1f, 0x4c, 0xb7, 0x5e, 0x2a, 0xae, 0x86, 0x87, 0xe1, 0xd0, 0xff, 0x54, 0x83, - 0x8c, 0xa5, 0x17, 0xfd, 0x2d, 0x0d, 0x66, 0x36, 0x88, 0x11, 0x0e, 0x7c, 0x72, 0xd5, 0x08, 0xe5, - 0x0b, 0xc8, 0x57, 0xee, 0x89, 0x85, 0x79, 0xe1, 0x8a, 0x82, 0x99, 0xbb, 0x04, 0xc8, 0x88, 0x66, - 0x2a, 0x08, 0x27, 0xba, 0x70, 0xfe, 0x05, 0x38, 0x95, 0x69, 0x78, 0xa4, 0x4b, 0xd4, 0x7f, 0xa6, - 0x41, 0x5e, 0x72, 0x06, 0xf4, 0x11, 0x18, 0x33, 0x2c, 0x4b, 0x46, 0x70, 0x7e, 0xa6, 0xa4, 0xfb, - 0x8b, 0xa5, 0x3e, 0x35, 0x65, 0x3f, 0x31, 0xc7, 0x8b, 0xae, 0x00, 0x32, 0x12, 0xb7, 0xdb, 0x2b, - 0xf1, 0x33, 0x2c, 0x76, 0x43, 0xb5, 0x98, 0x81, 0xe2, 0x9c, 0x16, 0xfa, 0x67, 0x34, 0x40, 0xd9, - 0x30, 0x78, 0x28, 0x80, 0x49, 0xb1, 0x9a, 0xa3, 0x79, 0x5a, 0x2a, 0xeb, 0x8a, 0x9f, 0x78, 0x59, - 0x12, 0x3b, 0xff, 0x8b, 0x82, 0x00, 0x4b, 0x42, 0xfa, 0x5f, 0x68, 0x10, 0x07, 0x7b, 0x45, 0x1f, - 0x80, 0x69, 0x8b, 0x04, 0xa6, 0x6f, 0xf7, 0xc3, 0xf8, 0x1d, 0x8a, 0xf4, 0x65, 0x6f, 0xc5, 0x20, - 0xac, 0xd6, 0x43, 0x3a, 0x8c, 0x87, 0x46, 0xb0, 0xd5, 0x6e, 0x09, 0xf5, 0x92, 0x09, 0x03, 0x37, - 0x59, 0x09, 0x16, 0x90, 0x38, 0x9c, 0xcd, 0xc8, 0x21, 0xc2, 0xd9, 0xa0, 0x8d, 0x7b, 0x10, 0xbb, - 0x07, 0x1d, 0x1c, 0xb7, 0x47, 0xff, 0x3b, 0x35, 0x38, 0x41, 0xab, 0xac, 0x18, 0xb6, 0x1b, 0x12, - 0x97, 0x79, 0x5c, 0x97, 0x1c, 0x84, 0x2e, 0xcc, 0x86, 0x89, 0xf8, 0xa2, 0x47, 0x7f, 0x93, 0x23, - 0x3d, 0x6a, 0x92, 0x51, 0x45, 0x93, 0x78, 0xd1, 0xd3, 0x91, 0xcb, 0x3b, 0x57, 0xc4, 0xdf, 0x15, - 0xad, 0x55, 0xe6, 0xc7, 0x7e, 0x57, 0xc4, 0x47, 0x92, 0x21, 0x82, 0x13, 0xde, 0xed, 0x3f, 0x0b, - 0xb3, 0xc2, 0xef, 0x94, 0xc7, 0x25, 0x12, 0x8a, 0x38, 0x3b, 0x67, 0xae, 0xa8, 0x00, 0x9c, 0xac, - 0xa7, 0xff, 0x41, 0x0d, 0x92, 0x81, 0x88, 0xcb, 0x8e, 0x52, 0x36, 0x28, 0x53, 0xed, 0xbe, 0x05, - 0x65, 0x7a, 0x1f, 0x0b, 0xda, 0xcf, 0x93, 0xb2, 0xf0, 0xbb, 0x6b, 0x35, 0xd2, 0x3e, 0xcf, 0xa8, - 0x22, 0x6b, 0xc4, 0xc3, 0x3a, 0x7a, 0xe4, 0x61, 0xfd, 0x80, 0xf0, 0x5c, 0x1f, 0x4b, 0x84, 0xc6, - 0x8a, 0x7c, 0xf4, 0x4f, 0x25, 0x1a, 0x2a, 0x0e, 0xfa, 0xdf, 0xd3, 0x60, 0x42, 0x84, 0x7e, 0x3c, - 0xc4, 0x03, 0x90, 0x2e, 0x8c, 0x31, 0xe5, 0xa7, 0x92, 0x5c, 0xd8, 0xd9, 0xf4, 0xbc, 0x30, 0x11, - 0x02, 0x93, 0x39, 0x5c, 0xb3, 0x7f, 0x31, 0xc7, 0xcf, 0xbc, 0xf8, 0x7c, 0x73, 0xd3, 0x0e, 0x89, - 0x19, 0x46, 0x41, 0xf5, 0x22, 0x2f, 0x3e, 0xa5, 0x1c, 0x27, 0x6a, 0xe9, 0x5f, 0x1e, 0x85, 0x87, - 0x05, 0xe2, 0x8c, 0xa8, 0x24, 0x59, 0xdc, 0x2e, 0x9c, 0x16, 0x93, 0xdb, 0xf2, 0x0d, 0x5b, 0x3a, - 0x05, 0x94, 0xd3, 0x82, 0x85, 0xc3, 0x48, 0x06, 0x1d, 0xce, 0xa3, 0xc1, 0xc3, 0xc3, 0xb1, 0xe2, - 0x6b, 0xc4, 0x70, 0xc2, 0xcd, 0x88, 0x76, 0xad, 0x4a, 0x78, 0xb8, 0x2c, 0x3e, 0x9c, 0x4b, 0x85, - 0x39, 0x25, 0x08, 0x40, 0xd3, 0x27, 0x86, 0xea, 0x11, 0x51, 0xc1, 0x65, 0x7a, 0x25, 0x17, 0x23, - 0x2e, 0xa0, 0xc4, 0xcc, 0x89, 0xc6, 0x0e, 0xb3, 0x4e, 0x60, 0x12, 0xfa, 0x36, 0x0b, 0x65, 0x2a, - 0x6d, 0xda, 0x2b, 0x49, 0x10, 0x4e, 0xd7, 0x45, 0xcf, 0xc0, 0x1c, 0x73, 0xf2, 0x88, 0x43, 0xb0, - 0x8c, 0xc5, 0xef, 0x84, 0x57, 0x13, 0x10, 0x9c, 0xaa, 0xa9, 0x7f, 0x43, 0x83, 0x19, 0x75, 0xd9, - 0x1d, 0xe2, 0x39, 0xc8, 0xb6, 0x72, 0x1c, 0x56, 0x79, 0xa9, 0xa0, 0x92, 0x3d, 0xcc, 0x89, 0xf8, - 0x37, 0x46, 0xe0, 0x74, 0x4e, 0x1b, 0x76, 0x63, 0x4f, 0x52, 0x47, 0x6b, 0xa5, 0x1b, 0xfb, 0xcc, - 0x39, 0x2d, 0x6f, 0xec, 0xd3, 0x10, 0x9c, 0x21, 0x8c, 0x5e, 0x81, 0x11, 0xd3, 0xb7, 0xc5, 0xc0, - 0x3c, 0x55, 0x4e, 0x47, 0xc4, 0xed, 0xc6, 0xb4, 0x20, 0x39, 0xd2, 0xc4, 0x6d, 0x4c, 0x31, 0xd2, - 0x23, 0x42, 0xdd, 0xd7, 0xd1, 0x79, 0xcd, 0x8e, 0x08, 0x75, 0xfb, 0x07, 0x38, 0x59, 0x0f, 0x7d, - 0x10, 0xe6, 0x85, 0xdc, 0x1e, 0xbd, 0x03, 0xf5, 0xdc, 0x20, 0xa4, 0x5b, 0x30, 0x14, 0x2c, 0xf5, - 0xe2, 0xfe, 0x5e, 0x7d, 0xfe, 0x7a, 0x41, 0x1d, 0x5c, 0xd8, 0x5a, 0xff, 0x6f, 0x23, 0x30, 0xad, - 0x84, 0xc8, 0x45, 0x2b, 0x55, 0xcc, 0x1e, 0xf1, 0x17, 0x47, 0xa6, 0x8f, 0x15, 0x18, 0xe9, 0xf6, - 0x07, 0x25, 0xed, 0x1e, 0x12, 0xdd, 0x55, 0x8a, 0xae, 0xdb, 0x1f, 0xa0, 0x97, 0xa5, 0x25, 0xa5, - 0x9c, 0xad, 0x43, 0xba, 0xeb, 0xa7, 0xac, 0x29, 0xd1, 0x8e, 0x19, 0x2d, 0xdc, 0x31, 0x2e, 0x4c, - 0x04, 0xc2, 0xcc, 0x32, 0x56, 0x21, 0x34, 0x82, 0x32, 0xd4, 0xc2, 0xae, 0xc2, 0xd5, 0xb3, 0xc8, - 0xec, 0x12, 0x11, 0xa1, 0x62, 0xdf, 0x80, 0x3d, 0x04, 0x64, 0x9a, 0xe7, 0x24, 0x17, 0xfb, 0x6e, - 0xb1, 0x12, 0x2c, 0x20, 0x99, 0xc3, 0x64, 0xe2, 0x50, 0x87, 0xc9, 0xa7, 0x6b, 0x80, 0xb2, 0xdd, - 0x40, 0xef, 0x82, 0x31, 0xf6, 0x98, 0x58, 0x70, 0x0d, 0x29, 0xa5, 0xb3, 0xc7, 0xa4, 0x98, 0xc3, - 0x50, 0x47, 0x3c, 0xf2, 0x2e, 0x37, 0x9f, 0xcc, 0xe9, 0x45, 0xd0, 0x53, 0x5e, 0x84, 0x47, 0xc7, - 0xf3, 0x48, 0xe1, 0xf1, 0x7c, 0x0b, 0x26, 0x7a, 0xb6, 0xcb, 0x2e, 0xdc, 0xca, 0x99, 0x9f, 0xf8, - 0xad, 0x3c, 0x47, 0x81, 0x23, 0x5c, 0xfa, 0x0f, 0x6b, 0x74, 0xed, 0xc7, 0xc2, 0xe9, 0x1d, 0x00, - 0x63, 0x10, 0x7a, 0x5c, 0xca, 0x11, 0x5b, 0xe0, 0xe7, 0x4b, 0x4e, 0xb3, 0xc4, 0xba, 0x28, 0x31, - 0xf2, 0xdb, 0xf2, 0xf8, 0x37, 0x56, 0xa8, 0x51, 0xda, 0xa1, 0xdd, 0x23, 0xaf, 0xd8, 0xae, 0xe5, - 0xdd, 0x16, 0xe3, 0x5b, 0x99, 0xf6, 0x4d, 0x89, 0x91, 0xd3, 0x8e, 0x7f, 0x63, 0x85, 0x1a, 0xe5, - 0x2e, 0x4c, 0xd1, 0x75, 0x59, 0xe4, 0x72, 0xd1, 0x39, 0xcf, 0x71, 0xa2, 0x13, 0x74, 0x92, 0x73, - 0x97, 0x66, 0x41, 0x1d, 0x5c, 0xd8, 0x5a, 0xff, 0xa6, 0x06, 0x67, 0x73, 0xc7, 0x02, 0x5d, 0x85, - 0x53, 0xb1, 0xa7, 0x94, 0xca, 0xf1, 0x27, 0xe3, 0x98, 0xf9, 0xd7, 0xd3, 0x15, 0x70, 0xb6, 0x0d, - 0x5a, 0x91, 0x62, 0x8f, 0x7a, 0xa2, 0x08, 0x37, 0xab, 0x0b, 0x02, 0x55, 0xde, 0xa1, 0x83, 0xf3, - 0xda, 0xe9, 0x1f, 0x4e, 0x74, 0x38, 0x1e, 0x30, 0xba, 0x3f, 0xd6, 0x49, 0x57, 0x3e, 0xfc, 0x91, - 0xfb, 0xa3, 0x41, 0x0b, 0x31, 0x87, 0xa1, 0x87, 0xd4, 0xf7, 0x74, 0x92, 0x7d, 0x45, 0x6f, 0xea, - 0xf4, 0x01, 0x80, 0xf0, 0x67, 0xb4, 0xdd, 0x2e, 0xea, 0xc2, 0xa4, 0x21, 0xf2, 0xf5, 0x89, 0xc5, - 0xf6, 0x5c, 0x39, 0xb5, 0x5a, 0x20, 0xe1, 0xde, 0xdc, 0xd1, 0x2f, 0x2c, 0x91, 0xeb, 0x7f, 0x4f, - 0x83, 0x73, 0xf9, 0x6f, 0x66, 0x0f, 0x21, 0x2a, 0xf4, 0x60, 0xda, 0x8f, 0x9b, 0x89, 0x95, 0xf9, - 0x33, 0x6a, 0x54, 0x3a, 0x25, 0x92, 0x0b, 0x15, 0xa3, 0x9a, 0xbe, 0x17, 0x44, 0xb3, 0x93, 0x0e, - 0x54, 0x27, 0x75, 0x18, 0xa5, 0x27, 0x58, 0xc5, 0xaf, 0x7f, 0xb2, 0x06, 0xb0, 0x4a, 0xc2, 0xdb, - 0x9e, 0xbf, 0x45, 0xc7, 0xe8, 0x27, 0xea, 0xed, 0xf6, 0x45, 0x18, 0xed, 0x7b, 0x56, 0x20, 0x18, - 0x15, 0x7b, 0x54, 0xcd, 0xdc, 0x7c, 0x58, 0x29, 0xaa, 0xc3, 0x18, 0xbb, 0x57, 0x10, 0x87, 0x08, - 0x93, 0xfd, 0xa9, 0xe4, 0x16, 0x60, 0x5e, 0xce, 0xd3, 0xb2, 0xb0, 0xb7, 0x12, 0x81, 0xd0, 0x66, - 0x44, 0x5a, 0x16, 0x5e, 0x86, 0x25, 0x54, 0xff, 0xd4, 0x28, 0x24, 0x72, 0x53, 0xc6, 0xe6, 0x97, - 0xd1, 0xfb, 0x64, 0x7e, 0xf9, 0x20, 0xcc, 0x3b, 0x9e, 0x61, 0x35, 0x0c, 0x87, 0x2e, 0x7b, 0xbf, - 0xc3, 0xe7, 0xc3, 0x70, 0xbb, 0x32, 0x62, 0x0d, 0x63, 0x01, 0xcb, 0x05, 0x75, 0x70, 0x61, 0x6b, - 0x34, 0x50, 0x52, 0x62, 0x52, 0x79, 0x6a, 0xa5, 0x72, 0xee, 0xce, 0x05, 0xf5, 0xa1, 0x8c, 0x3c, - 0xd1, 0x53, 0x69, 0x33, 0x7f, 0x4d, 0x83, 0xb3, 0x64, 0x27, 0x24, 0xbe, 0x6b, 0x38, 0x37, 0x7d, - 0x63, 0x63, 0xc3, 0x36, 0x13, 0x8e, 0x94, 0x6b, 0xfb, 0x7b, 0xf5, 0xb3, 0x4b, 0x79, 0x15, 0xee, - 0xee, 0xd5, 0x9f, 0xcc, 0x26, 0xa7, 0x8d, 0x9e, 0xc5, 0xe4, 0x36, 0x61, 0xcb, 0x31, 0x9f, 0xdc, - 0xf9, 0xa7, 0x61, 0xfa, 0x08, 0x2f, 0x1a, 0x12, 0xef, 0x90, 0xff, 0x49, 0x0d, 0x66, 0xe8, 0x0a, - 0x5a, 0xf6, 0x4c, 0xc3, 0x69, 0xad, 0x76, 0x8e, 0x90, 0xd9, 0x15, 0x2d, 0xc3, 0x99, 0x0d, 0xcf, - 0x37, 0xc9, 0xcd, 0xe6, 0xda, 0x4d, 0x4f, 0x5c, 0x4d, 0xb4, 0x56, 0x3b, 0x82, 0x2f, 0x32, 0x15, - 0xeb, 0x4a, 0x0e, 0x1c, 0xe7, 0xb6, 0x42, 0x37, 0xe0, 0x6c, 0x5c, 0x7e, 0xab, 0xcf, 0x9d, 0x2e, - 0x28, 0xba, 0x91, 0xd8, 0x69, 0xe4, 0x4a, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0x19, 0x70, 0x41, 0x04, - 0x3a, 0xb8, 0xe2, 0xf9, 0xb7, 0x0d, 0xdf, 0x4a, 0xa2, 0x1d, 0x8d, 0x8d, 0xb6, 0xad, 0xe2, 0x6a, - 0x78, 0x18, 0x0e, 0xfd, 0xab, 0xe3, 0xa0, 0x3c, 0xe9, 0x3a, 0x42, 0x3e, 0x8e, 0xdf, 0xd4, 0xe0, - 0x8c, 0xe9, 0xd8, 0xc4, 0x0d, 0x53, 0xef, 0x76, 0x38, 0x63, 0x79, 0xb9, 0xdc, 0x63, 0xb3, 0x3e, - 0x71, 0xdb, 0x2d, 0xe1, 0xa4, 0xd2, 0xcc, 0xc1, 0x2e, 0x1c, 0x79, 0x72, 0x20, 0x38, 0xb7, 0x37, - 0xec, 0x83, 0x58, 0x79, 0xbb, 0xa5, 0x3e, 0xd0, 0x6e, 0x8a, 0x32, 0x2c, 0xa1, 0xe8, 0x71, 0x98, - 0xee, 0xfa, 0xde, 0xa0, 0x1f, 0x34, 0x99, 0x83, 0x2c, 0xe7, 0x4f, 0x4c, 0x18, 0xbb, 0x1a, 0x17, - 0x63, 0xb5, 0x0e, 0x15, 0x2d, 0xf9, 0xcf, 0x35, 0x9f, 0x6c, 0xd8, 0x3b, 0x82, 0x5f, 0x31, 0xd1, - 0xf2, 0xaa, 0x52, 0x8e, 0x13, 0xb5, 0xd0, 0x7b, 0x61, 0xca, 0x0e, 0x82, 0x01, 0xf1, 0x6f, 0xe1, - 0x65, 0x11, 0x83, 0x9b, 0xdd, 0x75, 0xb4, 0xa3, 0x42, 0x1c, 0xc3, 0xd1, 0x17, 0x34, 0x98, 0xf3, - 0xc9, 0xeb, 0x03, 0xdb, 0x27, 0x16, 0x23, 0x1a, 0x88, 0x87, 0x75, 0x9d, 0x8a, 0xaf, 0xf9, 0x16, - 0x70, 0x02, 0x2b, 0xe7, 0x13, 0xd2, 0xae, 0x95, 0x04, 0xe2, 0x54, 0x17, 0xe8, 0x58, 0x05, 0x76, - 0xd7, 0xb5, 0xdd, 0xee, 0xa2, 0xd3, 0x0d, 0xe6, 0x27, 0x19, 0xef, 0xe3, 0x82, 0x6b, 0x5c, 0x8c, - 0xd5, 0x3a, 0x54, 0xab, 0x1b, 0x04, 0x74, 0xe7, 0xf7, 0x08, 0x1f, 0xe0, 0xa9, 0xd8, 0xf0, 0x77, - 0x4b, 0x05, 0xe0, 0x64, 0x3d, 0xaa, 0xf4, 0x47, 0x05, 0x62, 0x98, 0x81, 0x07, 0x4f, 0xa2, 0xfd, - 0xbc, 0x95, 0x80, 0xe0, 0x54, 0xcd, 0xf3, 0x8b, 0x70, 0x3a, 0xe7, 0x33, 0x8f, 0xc4, 0x5e, 0xbe, - 0x51, 0x83, 0x77, 0x1e, 0xb8, 0x2c, 0xd1, 0x57, 0x35, 0x98, 0x26, 0x3b, 0xa1, 0x6f, 0x48, 0x3f, - 0x7a, 0x3a, 0x47, 0xdd, 0xfb, 0xb3, 0x09, 0x16, 0x96, 0x62, 0x4a, 0x7c, 0xde, 0xa4, 0xc4, 0xa0, - 0x40, 0xb0, 0xda, 0x21, 0xaa, 0x29, 0xf1, 0xe0, 0x5a, 0xaa, 0x81, 0x5c, 0x24, 0x38, 0x14, 0x90, - 0xf3, 0xcf, 0xc3, 0xc9, 0x34, 0xe6, 0xa3, 0x72, 0xe2, 0x89, 0x35, 0xdf, 0xa3, 0xc2, 0xcc, 0x31, - 0x44, 0x54, 0x5a, 0x4f, 0xc4, 0x8b, 0x2d, 0xf7, 0x5a, 0x57, 0xf4, 0xb6, 0x30, 0x5e, 0xf5, 0x6b, - 0xa9, 0x78, 0xd5, 0x8d, 0x4a, 0x54, 0x86, 0x07, 0xa8, 0xfe, 0xbe, 0x06, 0xd3, 0xa2, 0xe6, 0x31, - 0x84, 0x5c, 0x32, 0x92, 0x21, 0x97, 0x9e, 0xad, 0xf2, 0x61, 0x05, 0xc1, 0x96, 0xde, 0xd2, 0x60, - 0x56, 0xd4, 0x58, 0x21, 0xbd, 0x75, 0xe2, 0xa3, 0x2b, 0x30, 0x11, 0x0c, 0xd8, 0x5c, 0x8a, 0x2f, - 0xba, 0xa0, 0x4a, 0xc8, 0xfe, 0xba, 0x61, 0xb2, 0x44, 0x9d, 0xbc, 0x8a, 0x12, 0x05, 0x9a, 0x17, - 0xe0, 0xa8, 0x31, 0x95, 0x77, 0x7d, 0xcf, 0xc9, 0xc4, 0x69, 0xc1, 0x9e, 0x43, 0x30, 0x83, 0x50, - 0x31, 0x93, 0xfe, 0x8d, 0x6c, 0x47, 0x4c, 0xcc, 0xa4, 0xe0, 0x00, 0xf3, 0x72, 0xfd, 0xd3, 0xa3, - 0x72, 0xb4, 0x59, 0x94, 0xd6, 0x6b, 0x30, 0x65, 0xfa, 0xc4, 0x08, 0x89, 0xd5, 0xd8, 0x3d, 0x4c, - 0xe7, 0x18, 0xc7, 0x6e, 0x46, 0x2d, 0x70, 0xdc, 0x98, 0xf2, 0x46, 0xf5, 0x5a, 0xa2, 0x16, 0x9f, - 0x23, 0x85, 0x57, 0x12, 0xcf, 0xc2, 0x98, 0x77, 0xdb, 0x95, 0x6e, 0x0e, 0x43, 0x09, 0xb3, 0x4f, - 0xb9, 0x41, 0x6b, 0x63, 0xde, 0x48, 0x8d, 0x53, 0x34, 0x3a, 0x24, 0x4e, 0x51, 0x0f, 0x26, 0x7a, - 0x6c, 0x1a, 0xaa, 0x85, 0x04, 0x4e, 0xcc, 0xa8, 0x9a, 0x3c, 0x82, 0xa1, 0xc6, 0x11, 0x0d, 0x7a, - 0xca, 0x51, 0x46, 0x1c, 0xf4, 0x0d, 0x93, 0xa8, 0xa7, 0xdc, 0x6a, 0x54, 0x88, 0x63, 0x38, 0xba, - 0x93, 0x0c, 0x81, 0x35, 0x51, 0xc1, 0x76, 0x24, 0xfa, 0xa7, 0x44, 0xbd, 0xe2, 0x83, 0x5f, 0x18, - 0x06, 0xeb, 0xb3, 0xa3, 0x72, 0x99, 0x8a, 0x28, 0xdf, 0xf9, 0x59, 0x26, 0xb5, 0x52, 0x59, 0x26, - 0x9f, 0x8c, 0x12, 0x37, 0xd6, 0x12, 0x99, 0x4e, 0x64, 0xe2, 0xc6, 0x19, 0x41, 0x3a, 0x91, 0xac, - 0x71, 0x00, 0xa7, 0x83, 0xd0, 0x70, 0x48, 0xc7, 0x16, 0xda, 0x75, 0x10, 0x1a, 0xbd, 0x7e, 0x89, - 0x84, 0x25, 0xdc, 0xe3, 0x3c, 0x8b, 0x0a, 0xe7, 0xe1, 0x47, 0x9f, 0xd2, 0x60, 0x9e, 0x95, 0x2f, - 0x0e, 0x42, 0x8f, 0x47, 0x5e, 0x8d, 0x89, 0x1f, 0xfd, 0xf6, 0x93, 0xe9, 0x42, 0x9d, 0x02, 0x7c, - 0xb8, 0x90, 0x12, 0x7a, 0x03, 0xce, 0x3a, 0x46, 0x10, 0x2e, 0x9a, 0xa1, 0xbd, 0x6d, 0x87, 0xbb, - 0x71, 0x17, 0x8e, 0x9e, 0x2e, 0x91, 0x89, 0xdc, 0xcb, 0x79, 0xc8, 0x70, 0x3e, 0x0d, 0xfd, 0x7f, - 0x69, 0x80, 0xb2, 0x4b, 0x08, 0xf5, 0x60, 0xd2, 0x8a, 0x5c, 0xc0, 0xb5, 0x7b, 0x13, 0xa0, 0x4d, - 0x72, 0x67, 0xe9, 0x3a, 0x2e, 0x49, 0xa0, 0x3e, 0x4c, 0xdd, 0xde, 0xb4, 0x43, 0xe2, 0xd8, 0x41, - 0x78, 0xaf, 0x02, 0xc2, 0xc9, 0xd8, 0x48, 0xaf, 0x44, 0x98, 0x71, 0x4c, 0x44, 0xff, 0xfc, 0x28, - 0x4c, 0x1e, 0x21, 0x95, 0xf9, 0x00, 0x90, 0xa9, 0x64, 0x52, 0xa9, 0x62, 0x53, 0x60, 0x7e, 0x0b, - 0xcd, 0x0c, 0x32, 0x9c, 0x43, 0x00, 0xbd, 0x01, 0x67, 0x6c, 0x77, 0xc3, 0x37, 0x82, 0xd0, 0x1f, - 0x30, 0x3b, 0x6d, 0x95, 0x7c, 0x24, 0x4c, 0x95, 0x68, 0xe7, 0xa0, 0xc3, 0xb9, 0x44, 0xd0, 0x06, - 0x4c, 0xdc, 0xf6, 0xfc, 0x2d, 0xca, 0x40, 0x47, 0x2b, 0x64, 0xa7, 0x7b, 0x85, 0xe1, 0x88, 0x39, - 0x27, 0xff, 0x1d, 0xe0, 0x08, 0x39, 0x8f, 0x0a, 0xc1, 0xff, 0x8f, 0xae, 0x2d, 0xc5, 0xd2, 0x6f, - 0x55, 0x20, 0x18, 0x27, 0x3b, 0xe4, 0x51, 0x21, 0x92, 0x85, 0x38, 0x4d, 0x51, 0xff, 0x3d, 0x0d, - 0xc6, 0xf8, 0x3b, 0xcb, 0xfb, 0x2f, 0xca, 0x7d, 0x34, 0x21, 0xca, 0x95, 0x4b, 0xa8, 0xc0, 0xfa, - 0x5a, 0x18, 0xe9, 0xff, 0x7b, 0x1a, 0x4c, 0xb1, 0x1a, 0xc7, 0x20, 0x5a, 0x7d, 0x24, 0x29, 0x5a, - 0x3d, 0x53, 0xfe, 0x73, 0x0a, 0x04, 0xab, 0xdf, 0x1b, 0x11, 0x1f, 0xc3, 0x24, 0x97, 0x36, 0x9c, - 0x16, 0x1e, 0x94, 0xcb, 0xf6, 0x06, 0xa1, 0xcb, 0xbc, 0x65, 0xec, 0x06, 0x22, 0x46, 0x02, 0x7f, - 0x43, 0x93, 0x05, 0xe3, 0xbc, 0x36, 0xe8, 0x9f, 0x6a, 0x54, 0x46, 0x08, 0x7d, 0xdb, 0xac, 0x16, - 0x3e, 0x5f, 0x76, 0x6e, 0x61, 0x85, 0x63, 0xe3, 0x5a, 0xca, 0xad, 0x58, 0x58, 0x60, 0xa5, 0x77, - 0xf7, 0xea, 0xf5, 0x1c, 0x1b, 0x52, 0x1c, 0x92, 0x3b, 0x08, 0x3f, 0xf9, 0xc3, 0xa1, 0x55, 0x98, - 0x05, 0x36, 0xea, 0x32, 0xba, 0x06, 0x63, 0x81, 0xe9, 0xf5, 0xc9, 0x51, 0x92, 0x82, 0xc8, 0x11, - 0xee, 0xd0, 0x96, 0x98, 0x23, 0x38, 0xff, 0x1a, 0xcc, 0xa8, 0x3d, 0xcf, 0xd1, 0x82, 0x5a, 0xaa, - 0x16, 0x74, 0xe4, 0xab, 0x16, 0x55, 0x6b, 0xfa, 0x4e, 0x0d, 0xc6, 0x79, 0x86, 0xca, 0x43, 0xd8, - 0x99, 0x5f, 0x8b, 0xe2, 0x1e, 0x57, 0xc9, 0xbf, 0xab, 0x86, 0xa0, 0x7b, 0xd5, 0x73, 0x95, 0x41, - 0x50, 0x43, 0x1f, 0x23, 0x4f, 0x86, 0x26, 0x1c, 0xa9, 0x90, 0xb5, 0x80, 0x7f, 0xda, 0xfd, 0x0e, - 0x46, 0xf8, 0x7d, 0x0d, 0x66, 0x12, 0xc1, 0x1e, 0x7b, 0x30, 0xe2, 0xcb, 0xa4, 0x36, 0x65, 0x0d, - 0xf1, 0x91, 0x07, 0xce, 0x85, 0x21, 0x95, 0x30, 0xa5, 0x23, 0xe3, 0x42, 0xd6, 0xee, 0x51, 0x5c, - 0x48, 0xfd, 0x8b, 0x1a, 0x9c, 0x8b, 0x3e, 0x28, 0x19, 0xc1, 0x07, 0x3d, 0x0a, 0x93, 0x46, 0xdf, - 0x66, 0x06, 0x26, 0xd5, 0x46, 0xb7, 0xb8, 0xd6, 0x66, 0x65, 0x58, 0x42, 0xd1, 0xfb, 0x60, 0x32, - 0x5a, 0x7a, 0x42, 0xfe, 0x94, 0x7c, 0x4b, 0x5e, 0x2d, 0xc8, 0x1a, 0xe8, 0xdd, 0x4a, 0x6c, 0xea, - 0xb1, 0x58, 0x5c, 0x90, 0x84, 0xf9, 0x45, 0xa4, 0xfe, 0x33, 0x30, 0xd5, 0xe9, 0x5c, 0xe3, 0x61, - 0x5c, 0x8e, 0x60, 0x6b, 0xd5, 0xdf, 0x1c, 0x81, 0x59, 0x6e, 0x70, 0x68, 0xd8, 0xae, 0x65, 0xbb, - 0xdd, 0x63, 0x38, 0x58, 0x6e, 0xc2, 0x14, 0xb7, 0x6d, 0x1c, 0x90, 0x80, 0xa8, 0x13, 0x55, 0x4a, - 0x07, 0x49, 0x95, 0x00, 0x1c, 0x23, 0x42, 0xd7, 0x61, 0xfc, 0x75, 0xca, 0xe1, 0xa2, 0x8d, 0x71, - 0x28, 0x46, 0x23, 0x17, 0x3d, 0x63, 0x8e, 0x01, 0x16, 0x28, 0x50, 0xc8, 0x5c, 0xc4, 0x98, 0xdc, - 0x55, 0x29, 0xfc, 0x40, 0x62, 0x68, 0x65, 0x70, 0xfa, 0x19, 0xe1, 0x6a, 0xc6, 0x7e, 0x61, 0x49, - 0x89, 0x45, 0x79, 0x4e, 0xb4, 0x78, 0xbb, 0x44, 0x79, 0x4e, 0x74, 0xba, 0xe0, 0x7c, 0x7c, 0x1a, - 0xce, 0xe6, 0x8e, 0xc6, 0xc1, 0x72, 0xad, 0xfe, 0xad, 0x1a, 0x8c, 0x76, 0x08, 0xb1, 0x8e, 0x61, - 0x6d, 0x7e, 0x24, 0x21, 0xf4, 0x3c, 0x57, 0x3e, 0xce, 0x74, 0x91, 0xf1, 0xaa, 0x9b, 0x32, 0x5e, - 0xbd, 0x50, 0x9e, 0xc4, 0x70, 0xcb, 0xd5, 0xaf, 0xd7, 0x00, 0x68, 0xb5, 0x86, 0x61, 0x6e, 0x71, - 0xae, 0x23, 0x57, 0xb4, 0x96, 0xe4, 0x3a, 0xd9, 0x95, 0x78, 0x9c, 0x37, 0x93, 0x3a, 0x8c, 0xf3, - 0x0c, 0xd0, 0xe2, 0x26, 0x00, 0x78, 0x7a, 0x4c, 0x5a, 0x82, 0x05, 0x24, 0xc9, 0x31, 0x46, 0xef, - 0x11, 0xc7, 0xd0, 0xbf, 0xa5, 0x01, 0xcb, 0x65, 0xd6, 0x5a, 0x65, 0x0f, 0xb3, 0x6d, 0x7e, 0x45, - 0xd7, 0x52, 0x63, 0x64, 0x32, 0x43, 0x78, 0x5b, 0x05, 0xe0, 0x64, 0x3d, 0xe4, 0x2a, 0xe3, 0x5a, - 0xab, 0xa0, 0x0f, 0x88, 0x8e, 0x1c, 0xc8, 0x23, 0x7e, 0x54, 0x83, 0x13, 0xa9, 0xba, 0x87, 0xd0, - 0x0c, 0xef, 0x0f, 0xcb, 0x55, 0x72, 0x5a, 0x8c, 0x1c, 0x43, 0x4e, 0x0b, 0x99, 0x5e, 0x62, 0xf4, - 0x3e, 0xa7, 0x97, 0xf8, 0xae, 0x06, 0x93, 0x74, 0x8c, 0x8f, 0x81, 0xfd, 0xfe, 0x62, 0x92, 0xfd, - 0x3e, 0x5d, 0x7a, 0xed, 0x14, 0x70, 0xdd, 0xbf, 0xd0, 0x80, 0x45, 0xb9, 0x17, 0x7e, 0x09, 0xca, - 0x55, 0xbf, 0x56, 0x70, 0xd5, 0xff, 0xb0, 0xf0, 0x14, 0x48, 0x99, 0x71, 0x15, 0x6f, 0x81, 0xf7, - 0x29, 0xce, 0x00, 0x23, 0x49, 0x56, 0x92, 0x75, 0x08, 0x40, 0x6f, 0xc0, 0x6c, 0xb0, 0xe9, 0x79, - 0xa1, 0x7c, 0xac, 0x3f, 0x5a, 0xc1, 0x68, 0xcf, 0xfc, 0x94, 0xa3, 0x6f, 0xe1, 0xbb, 0xb3, 0xa3, - 0x22, 0xc7, 0x49, 0x5a, 0xfa, 0x1f, 0x8b, 0xcf, 0x3f, 0xc2, 0x56, 0x39, 0x46, 0xd6, 0xf7, 0x9e, - 0x14, 0xeb, 0x53, 0xb2, 0x03, 0x27, 0xd8, 0x5f, 0x3d, 0x5e, 0xf8, 0xd2, 0x6e, 0x9e, 0x58, 0xb0, - 0xff, 0x48, 0x7c, 0xa6, 0xcc, 0x5e, 0xd0, 0x87, 0x59, 0x47, 0x4d, 0x51, 0x27, 0x56, 0x6e, 0xa9, - 0xec, 0x76, 0xf2, 0xf5, 0x41, 0xa2, 0x18, 0x27, 0x09, 0x50, 0x06, 0x1a, 0x7d, 0x1d, 0x4f, 0x92, - 0x5f, 0x8b, 0xfd, 0x43, 0xd7, 0x54, 0x00, 0x4e, 0xd6, 0xd3, 0xbf, 0x56, 0x83, 0x87, 0x78, 0xdf, - 0x99, 0x8d, 0xa3, 0x45, 0xfa, 0xc4, 0xb5, 0x88, 0x6b, 0xee, 0x32, 0x01, 0xdb, 0xf2, 0xba, 0xe8, - 0x53, 0x1a, 0x4c, 0x12, 0xd7, 0xea, 0x7b, 0xb6, 0x1b, 0x5d, 0x51, 0xbc, 0x5a, 0x21, 0x01, 0x44, - 0x01, 0x99, 0x25, 0x41, 0x41, 0x04, 0x96, 0x14, 0xbf, 0xb0, 0xa4, 0x8c, 0x76, 0x60, 0xac, 0xef, - 0x7b, 0xeb, 0x91, 0x72, 0xf9, 0xca, 0xbd, 0xef, 0xc2, 0x1a, 0x45, 0xcf, 0xa7, 0x97, 0xfd, 0x8b, - 0x39, 0x41, 0x1d, 0xc3, 0xbb, 0x0f, 0xd5, 0xf5, 0xa3, 0x08, 0xfe, 0x37, 0x40, 0x3f, 0xb8, 0x2f, - 0x47, 0x41, 0xf8, 0x12, 0x3c, 0xa2, 0x20, 0x5c, 0xda, 0xa1, 0x9a, 0x48, 0xd3, 0xe8, 0x1b, 0x26, - 0xd5, 0xac, 0xd9, 0xcb, 0x64, 0x6e, 0x7b, 0x3f, 0x02, 0xca, 0xcf, 0x8c, 0x42, 0x5d, 0xc1, 0x99, - 0xf0, 0xe0, 0x89, 0xd8, 0xcb, 0x57, 0x34, 0x98, 0x36, 0x5c, 0xd7, 0x0b, 0x0d, 0x35, 0xfd, 0x27, - 0xa9, 0x3a, 0x39, 0x79, 0xb4, 0x16, 0x16, 0x63, 0x3a, 0xa9, 0x1b, 0x5e, 0x05, 0x82, 0xd5, 0xee, - 0x0c, 0xf1, 0xe5, 0xa9, 0x1d, 0xab, 0x2f, 0x0f, 0xfa, 0x78, 0xc4, 0x43, 0xb8, 0x76, 0xf4, 0xa1, - 0xfb, 0x31, 0x40, 0x8c, 0x27, 0xe5, 0xdb, 0x2d, 0xce, 0x3f, 0x0f, 0x27, 0xd3, 0xc3, 0x77, 0x24, - 0x5b, 0xc2, 0xef, 0x8c, 0x24, 0xd6, 0x57, 0x21, 0xf9, 0x43, 0x98, 0x6b, 0xbe, 0x9e, 0x5a, 0x32, - 0xfc, 0xe8, 0x7d, 0xed, 0xbe, 0x8d, 0xc8, 0xbd, 0x5d, 0x37, 0xc7, 0xec, 0x03, 0x56, 0x75, 0xde, - 0x9a, 0x70, 0x4e, 0x19, 0x23, 0x76, 0x45, 0xda, 0xdc, 0x24, 0xe6, 0xd6, 0x91, 0xac, 0x14, 0x0d, - 0xaa, 0x3b, 0x4a, 0x24, 0x4a, 0x7a, 0xa0, 0xc7, 0x60, 0x62, 0xdb, 0x0e, 0xec, 0x28, 0x64, 0x86, - 0x82, 0xe3, 0x65, 0x5e, 0x8c, 0x23, 0xb8, 0xbe, 0x02, 0x0f, 0x2b, 0x38, 0x72, 0x9f, 0xe9, 0x1e, - 0xa5, 0x4b, 0xff, 0x60, 0x22, 0x3a, 0x72, 0xc5, 0x1b, 0xa6, 0x6f, 0x6b, 0xf0, 0x20, 0x29, 0xe2, - 0x7a, 0xe2, 0xd8, 0xaa, 0xbc, 0xeb, 0x0a, 0xd9, 0xaa, 0x88, 0x47, 0x58, 0x04, 0xc6, 0xc5, 0x5d, - 0x43, 0x77, 0x12, 0x99, 0xad, 0x6a, 0x95, 0xac, 0x1d, 0x39, 0x73, 0x34, 0x2c, 0xaf, 0x15, 0xfa, - 0x0d, 0x0d, 0xce, 0x38, 0x39, 0xfb, 0x46, 0x08, 0x89, 0x37, 0xef, 0xc7, 0x9e, 0xe4, 0x57, 0x4c, - 0x79, 0x10, 0x9c, 0xdb, 0x17, 0xf4, 0x77, 0x0b, 0xdf, 0x90, 0x8f, 0x55, 0x48, 0xde, 0x7a, 0xd0, - 0x62, 0x2c, 0xf1, 0x9c, 0xfc, 0xe3, 0x30, 0xed, 0xc5, 0x1b, 0x4c, 0xbc, 0xfb, 0xbf, 0x5e, 0xb5, - 0x77, 0xca, 0x9e, 0xe5, 0x97, 0xf6, 0x4a, 0x01, 0x56, 0x09, 0xa2, 0xb7, 0x34, 0x40, 0x56, 0x46, - 0x92, 0x10, 0x8e, 0x03, 0xf8, 0xde, 0xcb, 0x4b, 0xfc, 0x96, 0x32, 0x5b, 0x8e, 0x73, 0x7a, 0xa1, - 0xff, 0xcb, 0x09, 0xae, 0xd4, 0xb1, 0xeb, 0x19, 0x13, 0xc6, 0xd7, 0x99, 0x5d, 0x44, 0x6c, 0xcc, - 0xf2, 0x56, 0x18, 0x6e, 0x5e, 0xe1, 0x56, 0x0b, 0xfe, 0x3f, 0x16, 0xa8, 0xd1, 0x02, 0xc0, 0xba, - 0xe3, 0x99, 0x5b, 0xcd, 0x76, 0x0b, 0x47, 0xf2, 0x30, 0xdb, 0x0c, 0x0d, 0x59, 0x8a, 0x95, 0x1a, - 0xe8, 0xc3, 0x30, 0x62, 0x49, 0x55, 0xfa, 0xd9, 0x2a, 0x56, 0x84, 0xd8, 0x7f, 0xbf, 0xb5, 0xda, - 0xc1, 0x14, 0x2b, 0xf2, 0x60, 0xd2, 0x15, 0x7a, 0x93, 0xd8, 0x5c, 0xe5, 0x93, 0xa8, 0x49, 0x05, - 0x4c, 0xea, 0x7d, 0x51, 0x09, 0x96, 0x44, 0x28, 0x41, 0x69, 0x18, 0x19, 0xab, 0x48, 0x50, 0x5a, - 0x45, 0x86, 0xd9, 0xac, 0xd6, 0x54, 0x1b, 0xc7, 0xf8, 0xe1, 0x6d, 0x1c, 0xb3, 0x85, 0xf6, 0x8d, - 0x0d, 0x18, 0x0f, 0x0d, 0xdb, 0x0d, 0x23, 0xef, 0xce, 0xe7, 0x4b, 0x7f, 0xc0, 0x4d, 0x8a, 0x26, - 0xd6, 0xef, 0xd8, 0xcf, 0x00, 0x0b, 0xec, 0x74, 0x35, 0x6e, 0xb3, 0x5c, 0x93, 0x22, 0x70, 0x69, - 0xf9, 0xd5, 0xc8, 0x53, 0x56, 0xf2, 0xd5, 0xc8, 0xff, 0xc7, 0x02, 0x35, 0xda, 0xa2, 0x5a, 0xbb, - 0xb8, 0xb8, 0x9e, 0xaa, 0x9c, 0x45, 0x4f, 0xdc, 0x5a, 0x8b, 0x57, 0x00, 0xe2, 0xba, 0x5a, 0x12, - 0x40, 0x26, 0x4c, 0x08, 0x33, 0x99, 0x48, 0x5e, 0xf0, 0x6c, 0x95, 0x04, 0x32, 0x51, 0x26, 0x56, - 0xfe, 0x34, 0x3b, 0xc2, 0xac, 0xff, 0xf1, 0x28, 0xb7, 0x70, 0x0a, 0x07, 0x21, 0x1f, 0x94, 0x04, - 0xfd, 0x42, 0x0f, 0x78, 0xbe, 0x6c, 0x7a, 0x66, 0x8e, 0x26, 0x91, 0xaf, 0x26, 0x7a, 0xc3, 0xaa, - 0x50, 0x41, 0x5d, 0x98, 0x8c, 0x90, 0x55, 0x32, 0x19, 0x47, 0xa9, 0xc2, 0xf8, 0x80, 0xca, 0xc4, - 0x61, 0x12, 0x39, 0x6a, 0xe6, 0xbd, 0x39, 0x52, 0x22, 0xee, 0x1d, 0xea, 0xbd, 0x51, 0xbe, 0x0b, - 0xd5, 0x68, 0x29, 0x17, 0xaa, 0xe7, 0xe0, 0x84, 0xb8, 0xac, 0x6e, 0x5b, 0x84, 0x5d, 0x9f, 0x0a, - 0x47, 0x6b, 0xe6, 0xc8, 0xd0, 0x4c, 0x82, 0x70, 0xba, 0x2e, 0xfa, 0x86, 0x06, 0x8f, 0x70, 0x27, - 0xef, 0x26, 0x3d, 0xca, 0x58, 0x16, 0x50, 0x12, 0xa7, 0x1d, 0x8d, 0xdd, 0x8b, 0xc6, 0x8f, 0xec, - 0x5e, 0xf4, 0xe8, 0xfe, 0x5e, 0xfd, 0x91, 0xe6, 0x21, 0x70, 0xe3, 0x43, 0xf5, 0x40, 0xbf, 0x0e, - 0x53, 0x72, 0x0b, 0xa3, 0x87, 0x14, 0xd1, 0x37, 0xe6, 0xb2, 0xd7, 0xc9, 0x2e, 0x97, 0x83, 0xeb, - 0x09, 0x39, 0x98, 0xab, 0xf2, 0x2f, 0xd3, 0x02, 0x21, 0x12, 0xeb, 0xff, 0x59, 0xe3, 0x6b, 0x56, - 0x64, 0xae, 0x35, 0x60, 0xba, 0xc7, 0x83, 0x0d, 0xb2, 0x17, 0x82, 0x5a, 0xf9, 0xb7, 0x89, 0x2b, - 0x31, 0x1a, 0xac, 0xe2, 0x44, 0x3b, 0xd9, 0xf4, 0xca, 0x57, 0x2b, 0xf2, 0x97, 0x43, 0x67, 0x59, - 0x46, 0xd9, 0x36, 0x54, 0xc6, 0x8e, 0x1c, 0x23, 0x53, 0xf9, 0x6c, 0x33, 0xce, 0x91, 0x07, 0x66, - 0x20, 0xd4, 0xbf, 0x53, 0x83, 0xdc, 0xd4, 0x2e, 0x48, 0x87, 0x71, 0xee, 0xae, 0xaf, 0x26, 0x9e, - 0xe6, 0xbe, 0xfc, 0x58, 0x40, 0xd0, 0x0d, 0xae, 0x62, 0xb9, 0x16, 0x8b, 0x99, 0x13, 0x4f, 0xbd, - 0xfa, 0x32, 0x64, 0x29, 0xaf, 0x02, 0xce, 0x6f, 0x87, 0xb6, 0x01, 0xf5, 0x8c, 0x9d, 0x34, 0xb6, - 0x0a, 0xa9, 0x0d, 0x56, 0x32, 0xd8, 0x70, 0x0e, 0x05, 0xba, 0x17, 0x0d, 0xd3, 0x24, 0xfd, 0x90, - 0x58, 0xfc, 0x13, 0xa3, 0x27, 0xf8, 0x6c, 0x2f, 0x2e, 0x26, 0x41, 0x38, 0x5d, 0x57, 0xff, 0x9d, - 0x1a, 0x8c, 0x31, 0x2b, 0xea, 0xdb, 0xc4, 0xa9, 0x88, 0xf5, 0xb5, 0xf0, 0x82, 0x6d, 0x33, 0x75, - 0xc1, 0xf6, 0x62, 0x05, 0x1a, 0xc3, 0x6f, 0xd8, 0x3e, 0x04, 0xe7, 0x58, 0xb5, 0x45, 0x8b, 0x89, - 0xe3, 0x01, 0xb1, 0x16, 0x2d, 0x8b, 0xbd, 0x79, 0x3b, 0xd8, 0x06, 0xf1, 0x10, 0x8c, 0x0c, 0x7c, - 0x27, 0xfd, 0xda, 0xf2, 0x16, 0x5e, 0xc6, 0xb4, 0x5c, 0xff, 0xac, 0x06, 0x27, 0x19, 0xee, 0xa6, - 0x4f, 0x18, 0xcb, 0x34, 0x9c, 0x00, 0xdd, 0x86, 0x49, 0x5f, 0x28, 0xe2, 0x62, 0x76, 0x56, 0xca, - 0x7f, 0x9b, 0x82, 0x18, 0x0b, 0xa4, 0x22, 0x2b, 0x90, 0xf8, 0x85, 0x25, 0x31, 0xfd, 0xcf, 0xc7, - 0x61, 0xbe, 0xa8, 0x11, 0xfa, 0x82, 0x06, 0xe7, 0xcc, 0x98, 0x83, 0x2e, 0x0e, 0xc2, 0x4d, 0xcf, - 0xb7, 0x43, 0x9b, 0x04, 0x95, 0x64, 0xeb, 0xe6, 0xa2, 0xec, 0x16, 0x8b, 0x69, 0xd1, 0xcc, 0x25, - 0x81, 0x0b, 0x48, 0xa3, 0x8f, 0x01, 0x6c, 0xc5, 0x81, 0xb4, 0x6a, 0x15, 0xd2, 0x35, 0xb3, 0x0f, - 0x57, 0xa2, 0x6d, 0x45, 0xbd, 0x62, 0x92, 0xbc, 0x52, 0xae, 0xd0, 0x63, 0xc9, 0xa2, 0x83, 0xcd, - 0xeb, 0x64, 0xb7, 0x6f, 0xd8, 0x7e, 0xa5, 0x64, 0xd1, 0x7c, 0x1d, 0x76, 0xae, 0x09, 0x5c, 0x49, - 0xea, 0x4a, 0xb9, 0x42, 0x0f, 0xfd, 0x75, 0x0d, 0x66, 0xf9, 0x89, 0x2d, 0xdc, 0x89, 0x04, 0x0b, - 0xba, 0x51, 0xbe, 0x07, 0x37, 0x54, 0x74, 0xb2, 0x13, 0xcc, 0xb8, 0x9f, 0x04, 0x25, 0x09, 0xa3, - 0x2f, 0x69, 0x70, 0x2a, 0x99, 0x64, 0xeb, 0x3a, 0xd9, 0x15, 0xea, 0x40, 0xa7, 0xc2, 0x80, 0xa4, - 0x51, 0xca, 0x2e, 0x31, 0x61, 0x28, 0x0b, 0xce, 0x76, 0x82, 0x75, 0x8d, 0x84, 0xa6, 0x25, 0x92, - 0xb7, 0xdb, 0x9e, 0x4b, 0xbb, 0x36, 0x5e, 0xb5, 0x6b, 0x4b, 0x37, 0x9b, 0xad, 0x04, 0xca, 0x64, - 0xd7, 0xb2, 0xe0, 0x6c, 0x27, 0xf4, 0x3f, 0x19, 0x85, 0x4b, 0xc3, 0x91, 0xa1, 0x17, 0x22, 0x0f, - 0x76, 0xce, 0x62, 0x1e, 0x4b, 0x7b, 0xb0, 0xcf, 0xe7, 0x6c, 0xd5, 0x84, 0x37, 0xbb, 0x0f, 0xc8, - 0x31, 0x82, 0xb0, 0xe9, 0xf5, 0xfa, 0x0e, 0x89, 0x04, 0x9e, 0x32, 0x41, 0x97, 0xf6, 0x45, 0x08, - 0xa4, 0x24, 0x26, 0x9c, 0x83, 0x3d, 0xa2, 0xc9, 0xd3, 0x69, 0x4a, 0x9a, 0x23, 0xe5, 0x69, 0x26, - 0x31, 0xe1, 0x1c, 0xec, 0xe8, 0x4d, 0x0d, 0xce, 0x27, 0x8b, 0xaf, 0xd8, 0xae, 0x1d, 0x6c, 0x8a, - 0x60, 0x5c, 0x47, 0x77, 0xa0, 0x67, 0x81, 0xe8, 0x97, 0x0b, 0x31, 0xe2, 0x21, 0xd4, 0xd0, 0xe7, - 0x34, 0xb8, 0x90, 0x1a, 0x97, 0x44, 0x68, 0xb0, 0xa3, 0xfb, 0xd2, 0xb3, 0x77, 0xa6, 0xcb, 0xc5, - 0x28, 0xf1, 0x30, 0x7a, 0xfa, 0xaf, 0xd4, 0xe0, 0x81, 0x02, 0xfe, 0x56, 0x30, 0x59, 0xda, 0x7d, - 0x9d, 0xac, 0x1f, 0xc3, 0xa2, 0x64, 0x4e, 0xc8, 0x6c, 0x0c, 0xde, 0x2e, 0x4e, 0xc8, 0xac, 0xb3, - 0x05, 0xd7, 0xfd, 0xbf, 0xab, 0xc1, 0xa9, 0x4c, 0x2c, 0xaf, 0x43, 0x88, 0x23, 0xc7, 0x78, 0xe9, - 0xfd, 0xee, 0x74, 0xd2, 0xf0, 0xe9, 0xdc, 0x84, 0xe1, 0xaf, 0xc0, 0x6c, 0xe2, 0xb2, 0x5f, 0x46, - 0x30, 0xd0, 0x72, 0x23, 0x18, 0xa8, 0x01, 0x0a, 0x6a, 0xc3, 0x03, 0x14, 0xd4, 0xe0, 0x7c, 0xf1, - 0x99, 0xf6, 0x97, 0x66, 0xd9, 0xcb, 0xad, 0x9f, 0x15, 0x2e, 0xfe, 0xd2, 0x8c, 0x81, 0x3c, 0x67, - 0x0b, 0xe5, 0x89, 0xbf, 0x3a, 0x67, 0xff, 0xea, 0x9c, 0xbd, 0x07, 0xe7, 0xec, 0xb7, 0x4f, 0x88, - 0x33, 0x86, 0x5d, 0x3e, 0x7c, 0x04, 0xc6, 0x59, 0xe4, 0x92, 0x48, 0x41, 0xfa, 0xb9, 0xf2, 0x21, - 0x51, 0x02, 0x6e, 0xd8, 0xe0, 0xff, 0x63, 0x81, 0x16, 0xb5, 0xe0, 0xa4, 0xe9, 0x78, 0x03, 0x4b, - 0xe4, 0x9b, 0x5b, 0x8d, 0x6d, 0x28, 0x32, 0x94, 0x5c, 0x33, 0x05, 0xc7, 0x99, 0x16, 0xa8, 0xa3, - 0x5e, 0x47, 0x3c, 0x55, 0xd6, 0xd9, 0x8e, 0x87, 0x4f, 0x97, 0xd7, 0x10, 0x3e, 0x00, 0x89, 0x8e, - 0x8b, 0xe8, 0xc5, 0xd6, 0xf3, 0x25, 0xc3, 0xe4, 0xc9, 0x53, 0x27, 0xb2, 0x38, 0xc8, 0xa2, 0x00, - 0x2b, 0x54, 0x50, 0x00, 0xd3, 0x9b, 0xf6, 0x3a, 0xf1, 0xdd, 0x38, 0x8b, 0x73, 0x59, 0xb3, 0xc0, - 0xb5, 0x18, 0x0f, 0x37, 0xbb, 0x29, 0x05, 0x58, 0xa5, 0x82, 0x02, 0xae, 0x80, 0x72, 0x03, 0x6c, - 0xa5, 0x5c, 0xcf, 0xb1, 0x69, 0x37, 0xfe, 0xd2, 0xb8, 0x0c, 0x2b, 0x64, 0x28, 0x51, 0x57, 0x06, - 0x20, 0x12, 0xf7, 0x6e, 0xe5, 0x88, 0xc6, 0x71, 0x8c, 0x62, 0xa2, 0x71, 0x19, 0x56, 0xc8, 0xd0, - 0xe1, 0xed, 0xc5, 0x61, 0xa7, 0xc4, 0x15, 0xc6, 0x8b, 0x55, 0xe3, 0x7f, 0x09, 0xab, 0x66, 0x5c, - 0x80, 0x55, 0x2a, 0xc8, 0x03, 0xe8, 0xc9, 0x70, 0x54, 0xe2, 0x3e, 0xa3, 0xdc, 0x97, 0xc6, 0x51, - 0xad, 0xb8, 0x52, 0x1d, 0xff, 0xc6, 0x0a, 0x09, 0xb4, 0xa5, 0x5c, 0x67, 0x41, 0x05, 0x4b, 0xff, - 0xa1, 0xae, 0xb2, 0x3e, 0x10, 0xdb, 0x48, 0xa7, 0xd9, 0xbe, 0xbd, 0xa0, 0xd8, 0x47, 0xef, 0xee, - 0xd5, 0x67, 0x18, 0x33, 0xc9, 0xd8, 0x4b, 0x63, 0x7f, 0xc2, 0x99, 0xa1, 0xfe, 0x84, 0x57, 0xa9, - 0x52, 0xae, 0xb8, 0xe2, 0x33, 0x06, 0x31, 0xcb, 0x9a, 0xc8, 0x00, 0x66, 0x9d, 0x74, 0x05, 0x9c, - 0x6d, 0xc3, 0xa5, 0x2e, 0x62, 0xb1, 0xf6, 0x73, 0xaa, 0xd4, 0xc5, 0xcb, 0xb0, 0x84, 0xa2, 0xdb, - 0x30, 0x13, 0x28, 0x0e, 0x8a, 0x22, 0x97, 0x59, 0x95, 0x1b, 0x28, 0xe1, 0x9d, 0xc8, 0xe2, 0xba, - 0xa8, 0x25, 0x38, 0x41, 0x08, 0x7d, 0x0c, 0xa6, 0x22, 0x8b, 0x79, 0x30, 0x7f, 0xb2, 0xc2, 0xf3, - 0xb9, 0xfc, 0x28, 0x64, 0xb1, 0x09, 0x3c, 0x02, 0x05, 0x38, 0x26, 0x88, 0xb6, 0x93, 0x4f, 0xe8, - 0x4f, 0xdd, 0x9b, 0x47, 0xc3, 0xd2, 0x7d, 0xa8, 0xe8, 0xf9, 0x3c, 0x6a, 0xc2, 0x29, 0xb2, 0xd3, - 0xf7, 0x82, 0x81, 0x4f, 0x58, 0x10, 0x44, 0x36, 0x43, 0x28, 0xbe, 0x2e, 0x5a, 0x4a, 0x03, 0x71, - 0xb6, 0x3e, 0xfa, 0xb4, 0x06, 0x27, 0x79, 0x32, 0x38, 0x7a, 0xae, 0x79, 0x2e, 0x71, 0xc3, 0x80, - 0x65, 0x3b, 0x2b, 0xfb, 0xc4, 0xad, 0x93, 0x42, 0xc6, 0xf3, 0x77, 0xa4, 0x4b, 0x71, 0x86, 0x28, - 0x5d, 0x3d, 0xea, 0xbb, 0x63, 0x96, 0x35, 0xad, 0xec, 0xea, 0x51, 0x1f, 0x35, 0xf3, 0xd5, 0xa3, - 0x96, 0xe0, 0x04, 0x21, 0xfd, 0x5f, 0x6b, 0x00, 0xd2, 0x14, 0x4c, 0x8e, 0xc1, 0x3e, 0x4e, 0x12, - 0xf6, 0xf1, 0x66, 0x35, 0xdb, 0x35, 0x29, 0x7c, 0x79, 0xfb, 0x87, 0x1a, 0xcc, 0xc5, 0xd5, 0x8e, - 0x41, 0xf3, 0xb5, 0x92, 0x9a, 0xef, 0x0b, 0x15, 0x3f, 0xac, 0x40, 0xfd, 0xfd, 0xbf, 0x35, 0xf5, - 0xb3, 0x98, 0xb0, 0x75, 0x5b, 0xb9, 0xa1, 0xe5, 0x77, 0xc2, 0xed, 0x4a, 0x37, 0xb4, 0xea, 0x7b, - 0xc6, 0xf8, 0x8b, 0x73, 0x6e, 0x6c, 0x3f, 0x91, 0x90, 0x74, 0xaa, 0x3c, 0xdc, 0x95, 0x62, 0x4d, - 0x44, 0x9b, 0x0f, 0xc1, 0x41, 0x62, 0x8f, 0xaf, 0x72, 0x3e, 0xee, 0xf5, 0xb9, 0x58, 0xf2, 0xb1, - 0xa8, 0xf2, 0xc9, 0x43, 0xf9, 0x9d, 0xfe, 0xad, 0x39, 0x98, 0x56, 0xae, 0x4e, 0x7e, 0x2c, 0x77, - 0xf2, 0x03, 0x98, 0x36, 0x65, 0x90, 0xe0, 0x68, 0xe4, 0xab, 0x12, 0x95, 0x2c, 0x37, 0x8e, 0x3f, - 0x1c, 0x60, 0x95, 0x0e, 0x15, 0x10, 0xe4, 0x42, 0x1b, 0xb9, 0x17, 0xae, 0x00, 0xc3, 0x16, 0xd7, - 0xfb, 0x01, 0x22, 0x61, 0x93, 0x58, 0x22, 0xe4, 0x9c, 0x4c, 0xb2, 0xd1, 0x0e, 0xae, 0x49, 0x18, - 0x56, 0xea, 0xa1, 0x37, 0x60, 0xd6, 0x51, 0x63, 0xce, 0x0b, 0x51, 0xb8, 0xdc, 0x53, 0x8c, 0x44, - 0xf4, 0x7a, 0x7e, 0x15, 0x90, 0x28, 0xc2, 0x49, 0x5a, 0x68, 0x0b, 0xa6, 0x9c, 0x28, 0xa1, 0x84, - 0x90, 0x87, 0x9f, 0x2f, 0x4d, 0x98, 0x61, 0xe1, 0x9e, 0x3b, 0xf2, 0x27, 0x8e, 0xf1, 0xd3, 0x75, - 0x27, 0x7f, 0x54, 0xf3, 0xde, 0x89, 0xa9, 0xc9, 0x75, 0x27, 0x8b, 0x02, 0xac, 0x50, 0x29, 0xf0, - 0xae, 0x98, 0x2c, 0xe5, 0x5d, 0x31, 0x80, 0xd3, 0x3e, 0x09, 0xfd, 0xdd, 0xe6, 0xae, 0xc9, 0x12, - 0xbb, 0xf8, 0x21, 0xd3, 0x5b, 0xa7, 0xca, 0xc5, 0x9a, 0xc1, 0x59, 0x54, 0x38, 0x0f, 0x3f, 0xba, - 0x08, 0xa3, 0x54, 0x78, 0x12, 0xb1, 0xdc, 0x98, 0x8d, 0x8d, 0x8a, 0x56, 0x98, 0x95, 0xa2, 0x0f, - 0xc0, 0x74, 0x48, 0xcc, 0x4d, 0xd7, 0x36, 0x0d, 0xa7, 0xdd, 0x12, 0x92, 0x69, 0x2c, 0x8b, 0xc4, - 0x20, 0xac, 0xd6, 0x43, 0x0d, 0x18, 0x19, 0xd8, 0x96, 0x10, 0x49, 0x7f, 0x5a, 0x5e, 0x75, 0xb6, - 0x5b, 0x77, 0xf7, 0xea, 0xef, 0x8c, 0x3d, 0x95, 0xe5, 0x97, 0x5c, 0xee, 0x6f, 0x75, 0x2f, 0x87, - 0xbb, 0x7d, 0x12, 0x2c, 0xdc, 0x6a, 0xb7, 0x30, 0x6d, 0x9c, 0xe7, 0x6d, 0x32, 0x7b, 0x04, 0x6f, - 0x93, 0xb7, 0x34, 0x38, 0x6d, 0xa4, 0x6f, 0x69, 0x49, 0x30, 0x3f, 0x57, 0x81, 0x2b, 0xe7, 0x5f, - 0xfd, 0xc6, 0x61, 0x7b, 0x17, 0xb3, 0xf4, 0x70, 0x5e, 0x27, 0x90, 0x0f, 0xa8, 0x67, 0x77, 0x65, - 0xfa, 0x08, 0x31, 0xd5, 0x27, 0xca, 0x59, 0x6b, 0x56, 0x32, 0x98, 0x70, 0x0e, 0x76, 0xb4, 0x03, - 0xd3, 0x66, 0x6c, 0xb8, 0x62, 0x49, 0x7c, 0x4b, 0x0b, 0x75, 0xa9, 0x8b, 0x61, 0x91, 0x1f, 0x5e, - 0x31, 0x8b, 0xa9, 0xa4, 0xa4, 0x9d, 0x48, 0x51, 0x9c, 0x85, 0xad, 0x84, 0x7d, 0xf6, 0xa9, 0xf2, - 0x76, 0xa2, 0x7c, 0x8c, 0x78, 0x08, 0x35, 0x16, 0xd4, 0xc5, 0x49, 0xa6, 0x79, 0x61, 0x52, 0x72, - 0xd9, 0x47, 0x9c, 0xa9, 0x94, 0x31, 0x7c, 0x75, 0xa6, 0x0a, 0x71, 0x9a, 0xa2, 0xfe, 0xdf, 0x35, - 0xc8, 0x08, 0xc1, 0xc8, 0x84, 0x09, 0x8a, 0xbb, 0xb5, 0xda, 0x11, 0xd2, 0xd8, 0xb3, 0x25, 0x4f, - 0x30, 0x86, 0x83, 0x1b, 0xd9, 0xc5, 0x0f, 0x1c, 0x61, 0xa6, 0x72, 0xb5, 0xab, 0x04, 0x69, 0x15, - 0x52, 0x67, 0x39, 0x29, 0x41, 0x8d, 0xf6, 0xca, 0xe5, 0x6a, 0xb5, 0x04, 0x27, 0x08, 0xe9, 0xcb, - 0x00, 0xb1, 0xee, 0x52, 0xd9, 0xa9, 0xea, 0x4f, 0xc6, 0xe0, 0x6c, 0x55, 0x87, 0x7e, 0x96, 0x8a, - 0x83, 0xa5, 0x4a, 0x5f, 0xdc, 0x08, 0x89, 0x7f, 0xe3, 0xc6, 0x8a, 0x4c, 0x23, 0x5d, 0x32, 0x17, - 0x48, 0x9c, 0x6c, 0x3f, 0x83, 0x11, 0x17, 0x50, 0x62, 0x7a, 0x9b, 0xc8, 0x12, 0x8a, 0xa9, 0x8c, - 0xc7, 0x72, 0x44, 0xf3, 0xd0, 0x0f, 0x5c, 0x6f, 0x4b, 0x03, 0x71, 0xb6, 0x7e, 0x1a, 0x09, 0x4f, - 0xdb, 0x4e, 0x65, 0x04, 0x2d, 0x8b, 0x84, 0xe7, 0x6e, 0xcf, 0xd6, 0x57, 0x91, 0xf0, 0x99, 0xa2, - 0x7b, 0x63, 0x2c, 0x8b, 0x44, 0x02, 0x71, 0xb6, 0x3e, 0xb2, 0xe0, 0xa2, 0x4f, 0x4c, 0xaf, 0xd7, - 0x23, 0xae, 0xc5, 0xf3, 0x5c, 0x19, 0x7e, 0xd7, 0x76, 0xaf, 0xf8, 0x06, 0xab, 0xc8, 0xc4, 0x00, - 0xad, 0xf1, 0xf0, 0xfe, 0x5e, 0xfd, 0x22, 0x1e, 0x52, 0x0f, 0x0f, 0xc5, 0x82, 0x7a, 0x70, 0x62, - 0xc0, 0x22, 0xb3, 0xfb, 0x6d, 0x37, 0x24, 0xfe, 0xb6, 0xe1, 0x08, 0xd3, 0x57, 0xa9, 0x4c, 0x9f, - 0xb7, 0x92, 0xa8, 0x70, 0x1a, 0x37, 0xda, 0xa5, 0x67, 0xb3, 0xe8, 0x8e, 0x42, 0x72, 0xb2, 0x7c, - 0xb2, 0x1a, 0x9c, 0x45, 0x87, 0xf3, 0x68, 0xe8, 0x7f, 0x5b, 0x03, 0xe1, 0xd6, 0x4b, 0x8f, 0x6a, - 0xe5, 0x4e, 0x6f, 0x32, 0x75, 0x9f, 0x77, 0x51, 0x3c, 0x73, 0xad, 0xc5, 0x50, 0xe5, 0x89, 0xeb, - 0x7b, 0x94, 0x98, 0x22, 0x53, 0xb1, 0x5c, 0xc3, 0x31, 0x2b, 0xd9, 0x0d, 0xfe, 0x3f, 0x98, 0xe8, - 0xfb, 0x76, 0xcf, 0xf0, 0x77, 0x85, 0x88, 0xc9, 0x04, 0x2e, 0xe1, 0x90, 0x40, 0xf7, 0x8e, 0x80, - 0xea, 0xdf, 0xd7, 0x40, 0xb4, 0x66, 0x89, 0x38, 0x0e, 0x95, 0x8f, 0xe1, 0x40, 0xe7, 0x3e, 0x25, - 0x8f, 0xc4, 0x48, 0x61, 0x1e, 0x89, 0xfb, 0x94, 0x5e, 0xe1, 0xdb, 0x1a, 0x9c, 0x48, 0x06, 0x78, - 0x09, 0xd0, 0xbb, 0x61, 0x42, 0x84, 0x82, 0x13, 0x61, 0x9c, 0xf8, 0x2b, 0x75, 0x91, 0x74, 0x3d, - 0x82, 0x25, 0x0d, 0x4e, 0x55, 0xd4, 0xbe, 0xfc, 0x40, 0x33, 0x07, 0x28, 0x60, 0x7b, 0x73, 0x30, - 0xce, 0xa3, 0x88, 0xd1, 0xc3, 0x2d, 0xe7, 0x65, 0xe4, 0x72, 0x85, 0x68, 0x65, 0x65, 0x1e, 0xb2, - 0xa9, 0xb1, 0xab, 0x6b, 0x43, 0x63, 0x57, 0x77, 0x78, 0xea, 0x9a, 0x2a, 0xf7, 0x0d, 0x4d, 0xdc, - 0x16, 0xf9, 0x6b, 0xa3, 0xb4, 0x35, 0x83, 0x84, 0x19, 0x7e, 0xb4, 0x82, 0x9c, 0xc3, 0x87, 0x40, - 0x31, 0xc6, 0xcf, 0x0d, 0x31, 0xc4, 0xc7, 0x51, 0x9a, 0xc6, 0x2a, 0x78, 0xdc, 0x8a, 0x51, 0x3f, - 0x44, 0x94, 0x26, 0xb9, 0x9b, 0xc6, 0x0b, 0x77, 0x53, 0x17, 0x26, 0xc4, 0x7e, 0x10, 0xdc, 0xf1, - 0xd9, 0x2a, 0x59, 0x60, 0x94, 0x18, 0xa3, 0xbc, 0x00, 0x47, 0xd8, 0xe9, 0x99, 0xdb, 0x33, 0x76, - 0xec, 0xde, 0xa0, 0xc7, 0x78, 0xe2, 0x98, 0x5a, 0x95, 0x15, 0xe3, 0x08, 0xce, 0xaa, 0x72, 0x57, - 0x65, 0xa6, 0xda, 0xa8, 0x55, 0x45, 0x0a, 0xf6, 0x08, 0x8e, 0x5e, 0x85, 0xc9, 0x9e, 0xb1, 0xd3, - 0x19, 0xf8, 0x5d, 0x22, 0xec, 0xef, 0xc5, 0xa6, 0xb7, 0x41, 0x68, 0x3b, 0x0b, 0x54, 0x29, 0x0f, - 0xfd, 0x85, 0xb6, 0x1b, 0xde, 0xf0, 0x3b, 0xa1, 0x2f, 0x93, 0x4c, 0xac, 0x08, 0x2c, 0x58, 0xe2, - 0x43, 0x0e, 0xcc, 0xf5, 0x8c, 0x9d, 0x5b, 0xae, 0x21, 0x33, 0x45, 0x4f, 0x97, 0xa4, 0xc0, 0x1c, - 0x20, 0x56, 0x12, 0xb8, 0x70, 0x0a, 0x77, 0x8e, 0xaf, 0xc5, 0xcc, 0xfd, 0xf2, 0xb5, 0x58, 0x94, - 0x0f, 0x58, 0x66, 0xd9, 0x32, 0x7c, 0x30, 0xef, 0x3d, 0xcc, 0xf0, 0xb7, 0x29, 0x1f, 0x91, 0x6f, - 0x53, 0xe6, 0x2a, 0x5c, 0x56, 0x0e, 0x79, 0x97, 0xb2, 0x0d, 0xd3, 0x96, 0x11, 0x1a, 0xbc, 0x34, - 0x98, 0x3f, 0x51, 0xc1, 0x3e, 0xd8, 0x92, 0x78, 0x94, 0x8c, 0x83, 0x31, 0x6e, 0xac, 0x12, 0x42, - 0x37, 0x78, 0x26, 0x61, 0x87, 0x84, 0x71, 0x15, 0x66, 0x26, 0x3f, 0xc9, 0x2f, 0x42, 0xa2, 0xbc, - 0xbf, 0x99, 0x0a, 0x38, 0xbf, 0x5d, 0x1c, 0xa5, 0xe1, 0x54, 0x7e, 0x94, 0x06, 0xf4, 0xb9, 0x3c, - 0x7b, 0x3a, 0xaa, 0xf0, 0x48, 0x8f, 0xf3, 0x87, 0xd2, 0x56, 0xf5, 0x7f, 0xa8, 0xc1, 0x7c, 0xaf, - 0x20, 0x35, 0x9f, 0xb0, 0xf3, 0xdf, 0xaa, 0xc2, 0x23, 0x0a, 0xf3, 0xfd, 0x35, 0x1e, 0xd9, 0xdf, - 0xab, 0x1f, 0x98, 0x15, 0x10, 0x17, 0x76, 0xae, 0xea, 0xa3, 0xe4, 0x2a, 0x31, 0xed, 0x7e, 0x53, - 0x83, 0x93, 0xe9, 0xa3, 0x40, 0xcd, 0x7d, 0xac, 0xdd, 0xe7, 0xdc, 0xc7, 0x8a, 0xfb, 0x54, 0x6d, - 0x88, 0xfb, 0xd4, 0x73, 0x70, 0x2e, 0x7f, 0x75, 0x50, 0xe1, 0x8c, 0x65, 0x1c, 0x17, 0x0a, 0x51, - 0x9c, 0x53, 0x85, 0x16, 0x62, 0x0e, 0xd3, 0x3f, 0x0e, 0xe9, 0x58, 0xa4, 0x68, 0x0b, 0xa6, 0x82, - 0x60, 0x93, 0x47, 0x98, 0x13, 0x5f, 0x59, 0xd2, 0x7d, 0x3f, 0x8a, 0x53, 0x27, 0x5e, 0xde, 0x45, - 0x3f, 0x71, 0x8c, 0xbf, 0xf1, 0xa1, 0xef, 0xfe, 0xe8, 0xd2, 0x3b, 0x7e, 0xff, 0x47, 0x97, 0xde, - 0xf1, 0x83, 0x1f, 0x5d, 0x7a, 0xc7, 0x2f, 0xef, 0x5f, 0xd2, 0xbe, 0xbb, 0x7f, 0x49, 0xfb, 0xfd, - 0xfd, 0x4b, 0xda, 0x0f, 0xf6, 0x2f, 0x69, 0xff, 0x61, 0xff, 0x92, 0xf6, 0x37, 0xff, 0xe3, 0xa5, - 0x77, 0xbc, 0xfa, 0x64, 0x4c, 0xfe, 0x72, 0x44, 0x35, 0xfe, 0xa7, 0xbf, 0xd5, 0xbd, 0x4c, 0xc9, - 0x47, 0x4f, 0xe0, 0x39, 0xf9, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x36, 0x4f, 0xf8, 0x17, 0xd6, - 0xdc, 0x00, 0x00, + // 11425 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0xc9, + 0x75, 0x98, 0x7a, 0xf8, 0xfd, 0xf8, 0xb1, 0xbb, 0xb5, 0x1f, 0xc7, 0xdb, 0xdd, 0xdb, 0x59, 0xf5, + 0x9d, 0xe4, 0xbb, 0x48, 0xe6, 0xfa, 0x3e, 0x64, 0xdf, 0x9d, 0xef, 0x8b, 0x33, 0xc3, 0xdd, 0x1d, + 0x2f, 0xc9, 0xe5, 0xd5, 0xec, 0xde, 0x49, 0x27, 0xc3, 0x72, 0xb3, 0xbb, 0x38, 0xec, 0x63, 0x4f, + 0xf7, 0x5c, 0x77, 0x0f, 0x97, 0xdc, 0x93, 0x65, 0x5b, 0xb1, 0xad, 0xf8, 0x04, 0x3b, 0x09, 0x8c, + 0xc0, 0xc2, 0x59, 0x90, 0x25, 0xc3, 0x09, 0x14, 0x20, 0x8e, 0x0c, 0x01, 0x56, 0x90, 0x0f, 0xf8, + 0x87, 0xf2, 0xc3, 0x82, 0x1c, 0x28, 0x86, 0xe1, 0x04, 0x8a, 0x91, 0x50, 0x11, 0xe3, 0xd8, 0x4e, + 0x10, 0x23, 0x09, 0x82, 0xfc, 0xc8, 0xc2, 0x09, 0x82, 0xfa, 0xe8, 0xea, 0xea, 0xaf, 0x21, 0xd9, + 0xbd, 0x4b, 0xe9, 0x60, 0xff, 0x22, 0xa7, 0x5e, 0xd5, 0x7b, 0xd5, 0xf5, 0xf1, 0xea, 0xbd, 0x57, + 0xaf, 0xde, 0x83, 0x66, 0xd7, 0x0e, 0x37, 0x07, 0xeb, 0x0b, 0xa6, 0xd7, 0xbb, 0xd2, 0x35, 0x7c, + 0x8b, 0xb8, 0xc4, 0x8f, 0xff, 0xe9, 0x6f, 0x75, 0xaf, 0x18, 0x7d, 0x3b, 0xb8, 0x62, 0x7a, 0x3e, + 0xb9, 0xb2, 0xfd, 0xa4, 0xe1, 0xf4, 0x37, 0x8d, 0x27, 0xaf, 0x74, 0x29, 0xd0, 0x08, 0x89, 0xb5, + 0xd0, 0xf7, 0xbd, 0xd0, 0x43, 0x4f, 0xc7, 0x48, 0x16, 0xa2, 0xb6, 0xf1, 0x3f, 0xfd, 0xad, 0xee, + 0x02, 0x45, 0xb2, 0x40, 0x91, 0x2c, 0x44, 0x48, 0xce, 0x37, 0x8e, 0x44, 0x79, 0x9d, 0x84, 0x59, + 0xc2, 0xe7, 0x7f, 0x50, 0xc5, 0xe1, 0x75, 0xbd, 0x2b, 0xac, 0x78, 0x7d, 0xb0, 0xc1, 0x7e, 0xb1, + 0x1f, 0xec, 0x3f, 0x51, 0xfd, 0x89, 0xad, 0x67, 0x83, 0x05, 0xdb, 0xa3, 0x88, 0xaf, 0x18, 0x83, + 0xd0, 0x0b, 0x4c, 0xc3, 0xb1, 0xdd, 0xee, 0x95, 0xed, 0x2c, 0x66, 0x5d, 0xa9, 0x2a, 0xba, 0x30, + 0xb4, 0x8e, 0xbf, 0x6e, 0x98, 0x79, 0x75, 0x9e, 0x89, 0xeb, 0xf4, 0x0c, 0x73, 0xd3, 0x76, 0x89, + 0xbf, 0x1b, 0x7d, 0xdc, 0x15, 0x9f, 0x04, 0xde, 0xc0, 0x37, 0xc9, 0x91, 0x5a, 0x05, 0x57, 0x7a, + 0x24, 0x34, 0xf2, 0x68, 0x5d, 0x29, 0x6a, 0xe5, 0x0f, 0xdc, 0xd0, 0xee, 0x65, 0xc9, 0xfc, 0xf0, + 0x41, 0x0d, 0x02, 0x73, 0x93, 0xf4, 0x8c, 0x4c, 0xbb, 0xa7, 0x8b, 0xda, 0x0d, 0x42, 0xdb, 0xb9, + 0x62, 0xbb, 0x61, 0x10, 0xfa, 0xe9, 0x46, 0xfa, 0x53, 0x30, 0xb6, 0x68, 0x59, 0x9e, 0x8b, 0x9e, + 0x80, 0x09, 0xe2, 0x1a, 0xeb, 0x0e, 0xb1, 0xe6, 0xb5, 0xcb, 0xda, 0xe3, 0x93, 0x8d, 0x13, 0xdf, + 0xd8, 0xab, 0xbf, 0x6f, 0x7f, 0xaf, 0x3e, 0xb1, 0xc4, 0x8b, 0x71, 0x04, 0xd7, 0x7f, 0xb5, 0x06, + 0xe3, 0xac, 0x51, 0x80, 0x7e, 0x45, 0x83, 0xd3, 0x5b, 0x83, 0x75, 0xe2, 0xbb, 0x24, 0x24, 0x41, + 0xcb, 0x08, 0x36, 0xd7, 0x3d, 0xc3, 0xe7, 0x28, 0xa6, 0x9f, 0xba, 0xbe, 0x50, 0x62, 0x09, 0x2e, + 0xdc, 0xc8, 0xe2, 0x6b, 0x3c, 0xb4, 0xbf, 0x57, 0x3f, 0x9d, 0x03, 0xc0, 0x79, 0xd4, 0xd1, 0x1d, + 0x98, 0x71, 0xbb, 0xb6, 0xbb, 0xd3, 0x76, 0xbb, 0x3e, 0x09, 0x82, 0xf9, 0x1a, 0xeb, 0xcd, 0x62, + 0xa9, 0xde, 0xac, 0x2a, 0x88, 0x1a, 0x27, 0xf7, 0xf7, 0xea, 0x33, 0x6a, 0x09, 0x4e, 0x10, 0xd2, + 0x7f, 0x5b, 0x83, 0x13, 0x8b, 0x56, 0xcf, 0x0e, 0x02, 0xdb, 0x73, 0xd7, 0x9c, 0x41, 0xd7, 0x76, + 0xd1, 0x65, 0x18, 0x75, 0x8d, 0x1e, 0x61, 0x43, 0x32, 0xd5, 0x98, 0x11, 0xa3, 0x3a, 0xba, 0x6a, + 0xf4, 0x08, 0x66, 0x10, 0xf4, 0x2a, 0x8c, 0x9b, 0x9e, 0xbb, 0x61, 0x77, 0x45, 0x47, 0x7f, 0x70, + 0x81, 0xcf, 0xe4, 0x82, 0x3a, 0x93, 0xac, 0x7f, 0x62, 0x05, 0x2c, 0x60, 0xe3, 0xce, 0xd2, 0x4e, + 0x48, 0x5c, 0x4a, 0xa6, 0x01, 0xfb, 0x7b, 0xf5, 0xf1, 0x26, 0x43, 0x80, 0x05, 0x22, 0xf4, 0x38, + 0x4c, 0x5a, 0x76, 0xc0, 0xa7, 0x73, 0x84, 0x4d, 0xe7, 0xcc, 0xfe, 0x5e, 0x7d, 0xb2, 0x25, 0xca, + 0xb0, 0x84, 0xea, 0x57, 0x61, 0x72, 0xd1, 0x21, 0x7e, 0x68, 0xbb, 0x5d, 0xf4, 0x3c, 0xcc, 0x91, + 0x9e, 0x61, 0x3b, 0x98, 0x98, 0xc4, 0xde, 0x26, 0x7e, 0x30, 0xaf, 0x5d, 0x1e, 0x79, 0x7c, 0xaa, + 0x81, 0xf6, 0xf7, 0xea, 0x73, 0x4b, 0x09, 0x08, 0x4e, 0xd5, 0xd4, 0x3f, 0xad, 0xc1, 0xf4, 0xe2, + 0xc0, 0xb2, 0x43, 0xde, 0x13, 0x14, 0xc0, 0xb4, 0x41, 0x7f, 0xae, 0x79, 0x8e, 0x6d, 0xee, 0x8a, + 0x05, 0xf1, 0x4a, 0xa9, 0x29, 0x58, 0x8c, 0xf1, 0x34, 0x4e, 0xec, 0xef, 0xd5, 0xa7, 0x95, 0x02, + 0xac, 0x52, 0xd1, 0x37, 0x41, 0x85, 0xa1, 0x8f, 0xc1, 0x0c, 0x1f, 0x8f, 0x15, 0xa3, 0x8f, 0xc9, + 0x86, 0xe8, 0xc4, 0xa3, 0xca, 0xf0, 0x46, 0x94, 0x16, 0x6e, 0xae, 0xbf, 0x49, 0xcc, 0x10, 0x93, + 0x0d, 0xe2, 0x13, 0xd7, 0x24, 0x7c, 0xa6, 0x9b, 0x4a, 0x63, 0x9c, 0x40, 0xa5, 0x7f, 0x47, 0x83, + 0x93, 0x8b, 0xdb, 0x86, 0xed, 0x18, 0xeb, 0xb6, 0x63, 0x87, 0xbb, 0x6f, 0x78, 0x2e, 0x39, 0xc4, + 0x54, 0xdf, 0x86, 0x87, 0x06, 0xae, 0xc1, 0xdb, 0x39, 0x64, 0x85, 0x4f, 0xee, 0xad, 0xdd, 0x3e, + 0xa1, 0x8b, 0x94, 0x0e, 0xf5, 0x85, 0xfd, 0xbd, 0xfa, 0x43, 0xb7, 0xf3, 0xab, 0xe0, 0xa2, 0xb6, + 0x08, 0xc3, 0x39, 0x05, 0xf4, 0x9a, 0xe7, 0x0c, 0x7a, 0x02, 0xeb, 0x08, 0xc3, 0x7a, 0x7e, 0x7f, + 0xaf, 0x7e, 0xee, 0x76, 0x6e, 0x0d, 0x5c, 0xd0, 0x52, 0xff, 0x66, 0x0d, 0x66, 0x1a, 0x86, 0xb9, + 0x35, 0xe8, 0x37, 0x06, 0xe6, 0x16, 0x09, 0xd1, 0x4f, 0xc2, 0x24, 0xe5, 0x71, 0x96, 0x11, 0x1a, + 0x62, 0x24, 0x7f, 0xa8, 0x70, 0xa1, 0xb2, 0x59, 0xa4, 0xb5, 0xe3, 0xb1, 0x5d, 0x21, 0xa1, 0xd1, + 0x40, 0x62, 0x4c, 0x20, 0x2e, 0xc3, 0x12, 0x2b, 0xea, 0xc2, 0x68, 0xd0, 0x27, 0xa6, 0xd8, 0x06, + 0x4b, 0xa5, 0x16, 0x8b, 0xda, 0xe5, 0x4e, 0x9f, 0x98, 0xf1, 0x34, 0xd0, 0x5f, 0x98, 0x11, 0x40, + 0x1e, 0x8c, 0x07, 0xa1, 0x11, 0x0e, 0x02, 0xb6, 0x39, 0xa6, 0x9f, 0xba, 0x56, 0x9d, 0x14, 0x43, + 0xd7, 0x98, 0x13, 0xc4, 0xc6, 0xf9, 0x6f, 0x2c, 0xc8, 0xe8, 0xdf, 0xd6, 0xe0, 0xa4, 0x5a, 0x7d, + 0xd9, 0x0e, 0x42, 0xf4, 0xe3, 0x99, 0x01, 0x5d, 0x38, 0xdc, 0x80, 0xd2, 0xd6, 0x6c, 0x38, 0x4f, + 0x0a, 0x72, 0x93, 0x51, 0x89, 0x32, 0x98, 0x1b, 0x30, 0x66, 0x87, 0xa4, 0xc7, 0x17, 0x56, 0x59, + 0xee, 0xa7, 0xf6, 0xb9, 0x31, 0x2b, 0xa8, 0x8d, 0xb5, 0x29, 0x5e, 0xcc, 0xd1, 0xeb, 0x3f, 0x09, + 0x67, 0xd4, 0x5a, 0x6b, 0xbe, 0xb7, 0x6d, 0x5b, 0xc4, 0xa7, 0x9b, 0x21, 0xdc, 0xed, 0x67, 0x36, + 0x03, 0x5d, 0x5c, 0x98, 0x41, 0xd0, 0x07, 0x61, 0xdc, 0x27, 0x5d, 0xdb, 0x73, 0xd9, 0x84, 0x4f, + 0xc5, 0x83, 0x87, 0x59, 0x29, 0x16, 0x50, 0xfd, 0xbf, 0xd6, 0x92, 0x83, 0x47, 0x27, 0x12, 0xdd, + 0x81, 0xc9, 0xbe, 0x20, 0x25, 0x06, 0xaf, 0x5d, 0xf9, 0x0b, 0xa3, 0xbe, 0xc7, 0xe3, 0x1a, 0x95, + 0x60, 0x49, 0x0c, 0xd9, 0x30, 0x17, 0xfd, 0xdf, 0xac, 0xc0, 0xb5, 0x19, 0x4f, 0x5d, 0x4b, 0x20, + 0xc2, 0x29, 0xc4, 0xe8, 0x16, 0x4c, 0x05, 0xc4, 0xf4, 0x09, 0xe5, 0x4b, 0x62, 0xa5, 0xe6, 0x32, + 0xaf, 0x4e, 0x54, 0x49, 0x30, 0xaf, 0x53, 0xa2, 0xfb, 0x53, 0x12, 0x80, 0x63, 0x44, 0xe8, 0x22, + 0x8c, 0x06, 0x84, 0x58, 0xf3, 0xa3, 0x6c, 0xd0, 0x27, 0xd9, 0xd6, 0x20, 0xc4, 0xc2, 0xac, 0x54, + 0xff, 0x8d, 0x51, 0x40, 0xd9, 0x85, 0xad, 0x7e, 0x35, 0x2f, 0x11, 0x83, 0x5e, 0xe5, 0xab, 0xc5, + 0x1e, 0x49, 0x21, 0x46, 0x6f, 0xc3, 0xac, 0x63, 0x04, 0xe1, 0xcd, 0x3e, 0x15, 0x54, 0xa2, 0xd5, + 0x31, 0xfd, 0x54, 0xa3, 0xd4, 0xf4, 0x2e, 0xab, 0x98, 0x1a, 0xa7, 0xf6, 0xf7, 0xea, 0xb3, 0x89, + 0x22, 0x9c, 0xa4, 0x85, 0xb6, 0x60, 0x8a, 0x16, 0x2c, 0xf9, 0xbe, 0xe7, 0x8b, 0x21, 0x7f, 0xa9, + 0x34, 0x61, 0x86, 0xa5, 0x31, 0x4b, 0x67, 0x42, 0xfe, 0xc4, 0x31, 0x7e, 0xf4, 0x63, 0x80, 0xbc, + 0xf5, 0x80, 0xf8, 0xdb, 0xc4, 0xba, 0xc6, 0xe5, 0x32, 0xfa, 0xb9, 0x74, 0x5e, 0x46, 0x1a, 0xe7, + 0xc5, 0x1c, 0xa2, 0x9b, 0x99, 0x1a, 0x38, 0xa7, 0x15, 0xda, 0x02, 0x24, 0x65, 0x3b, 0x39, 0xed, + 0xf3, 0x63, 0x87, 0x5f, 0x34, 0xe7, 0x28, 0xb1, 0x6b, 0x19, 0x14, 0x38, 0x07, 0xad, 0xfe, 0x7b, + 0x35, 0x98, 0xe6, 0x8b, 0x64, 0xc9, 0x0d, 0xfd, 0xdd, 0x63, 0x38, 0x1a, 0x36, 0x12, 0x47, 0x43, + 0xab, 0xc2, 0x56, 0x67, 0x3d, 0x2e, 0x3c, 0x19, 0xdc, 0xd4, 0xc9, 0x70, 0xb5, 0x32, 0xa5, 0xe1, + 0x07, 0xc3, 0xbf, 0xd5, 0xe0, 0x84, 0x52, 0xfb, 0x18, 0xce, 0x05, 0x92, 0x3c, 0x17, 0x5e, 0xa9, + 0xfa, 0x81, 0x05, 0xc7, 0x82, 0x99, 0xf8, 0x2e, 0xc6, 0xb2, 0x9f, 0x02, 0x58, 0x67, 0x3c, 0x65, + 0x35, 0x16, 0x92, 0xe4, 0xac, 0x37, 0x24, 0x04, 0x2b, 0xb5, 0x24, 0xb3, 0xaa, 0xe5, 0x32, 0xab, + 0x3f, 0x1b, 0x81, 0x53, 0x99, 0xb1, 0xce, 0x32, 0x10, 0xed, 0x7b, 0xc5, 0x40, 0x6a, 0xdf, 0x13, + 0x06, 0x32, 0x52, 0x8a, 0x81, 0x3c, 0x0e, 0x93, 0x74, 0x4c, 0xd9, 0xdc, 0xf0, 0xa3, 0x81, 0xa9, + 0x0c, 0x1d, 0x51, 0x86, 0x25, 0x14, 0xf9, 0x80, 0x7a, 0x76, 0x97, 0x37, 0xeb, 0x84, 0x86, 0x1f, + 0xde, 0xb2, 0x7b, 0x44, 0xb0, 0x9a, 0xbf, 0x71, 0xb8, 0x95, 0x4a, 0x5b, 0x70, 0x8e, 0xb3, 0x92, + 0xc1, 0x84, 0x73, 0xb0, 0xeb, 0x7f, 0x38, 0x0a, 0xd0, 0x5c, 0xc4, 0x5e, 0xc8, 0x3b, 0xfb, 0x32, + 0x8c, 0xf5, 0x37, 0x8d, 0x20, 0x5a, 0x45, 0x4f, 0x44, 0x4b, 0x70, 0x8d, 0x16, 0xde, 0xdb, 0xab, + 0xcf, 0x37, 0x7d, 0x62, 0x11, 0x37, 0xb4, 0x0d, 0x27, 0x88, 0x1a, 0x31, 0x18, 0xe6, 0xed, 0xe8, + 0x37, 0xd0, 0x61, 0x6c, 0x7a, 0xbd, 0xbe, 0x43, 0x28, 0x94, 0x7d, 0x43, 0xad, 0xdc, 0x37, 0x2c, + 0x67, 0x30, 0xe1, 0x1c, 0xec, 0x11, 0xcd, 0xb6, 0x6b, 0x87, 0xb6, 0x21, 0x69, 0x8e, 0x94, 0xa7, + 0x99, 0xc4, 0x84, 0x73, 0xb0, 0xa3, 0x77, 0x34, 0x38, 0x9f, 0x2c, 0xbe, 0x6a, 0xbb, 0x76, 0xb0, + 0x49, 0x2c, 0x46, 0x7c, 0xf4, 0xc8, 0xc4, 0x2f, 0xed, 0xef, 0xd5, 0xcf, 0x2f, 0x17, 0x62, 0xc4, + 0x43, 0xa8, 0xa1, 0x5f, 0xd2, 0xe0, 0x42, 0x6a, 0x5c, 0x7c, 0xbb, 0xdb, 0x25, 0xbe, 0xe8, 0xcd, + 0xd1, 0x97, 0x50, 0x7d, 0x7f, 0xaf, 0x7e, 0x61, 0xb9, 0x18, 0x25, 0x1e, 0x46, 0x4f, 0xff, 0x97, + 0x1a, 0x8c, 0x34, 0x71, 0x1b, 0x7d, 0x28, 0xa1, 0xb7, 0x3d, 0xa4, 0xea, 0x6d, 0xf7, 0xf6, 0xea, + 0x13, 0x4d, 0xdc, 0x56, 0x54, 0xb8, 0x5f, 0xd6, 0xe0, 0x94, 0xe9, 0xb9, 0xa1, 0x41, 0xfb, 0x85, + 0xb9, 0x90, 0x13, 0x31, 0xd3, 0x72, 0x2a, 0x4b, 0x33, 0x85, 0xad, 0xf1, 0xb0, 0xe8, 0xc1, 0xa9, + 0x34, 0x24, 0xc0, 0x59, 0xd2, 0xfa, 0xbf, 0xd3, 0x60, 0xa6, 0xe9, 0x78, 0x03, 0x6b, 0xcd, 0xf7, + 0x36, 0x6c, 0x87, 0xbc, 0x47, 0x14, 0x35, 0xb5, 0xcb, 0x45, 0xc7, 0x31, 0xd3, 0x9b, 0xd4, 0x8a, + 0xef, 0x15, 0xbd, 0x49, 0xed, 0x73, 0xc1, 0x01, 0xf9, 0x6b, 0x13, 0xc9, 0x4f, 0x63, 0x47, 0xe4, + 0xe3, 0x30, 0x69, 0x1a, 0x8d, 0x81, 0x6b, 0x39, 0x52, 0x71, 0xa2, 0xdd, 0x6c, 0x2e, 0xf2, 0x32, + 0x2c, 0xa1, 0xe8, 0x6d, 0x80, 0xd8, 0xf4, 0x25, 0x26, 0xe2, 0x5a, 0x45, 0x7b, 0x5b, 0x87, 0x84, + 0xa1, 0xed, 0x76, 0x83, 0x78, 0xf6, 0x63, 0x18, 0x56, 0xc8, 0xa1, 0x4f, 0xc1, 0xac, 0x18, 0xe6, + 0x76, 0xcf, 0xe8, 0x0a, 0x33, 0x43, 0xd9, 0xb1, 0x5a, 0x51, 0x30, 0x35, 0xce, 0x0a, 0xca, 0xb3, + 0x6a, 0x69, 0x80, 0x93, 0xe4, 0xd0, 0x5d, 0x98, 0xe9, 0xa9, 0xb6, 0x93, 0xd1, 0x0a, 0xa2, 0x8c, + 0x62, 0x48, 0x69, 0x9c, 0x11, 0xd4, 0x67, 0x12, 0x66, 0x97, 0x04, 0xad, 0x1c, 0xfd, 0x6f, 0xec, + 0x41, 0xe9, 0x7f, 0x1b, 0x30, 0xc1, 0x55, 0xe0, 0x60, 0x7e, 0x9c, 0x7d, 0xe1, 0x8f, 0x96, 0xfa, + 0x42, 0xae, 0x4e, 0xc7, 0x06, 0x5d, 0xfe, 0x3b, 0xc0, 0x11, 0x72, 0x74, 0x07, 0x66, 0xe8, 0xe1, + 0xde, 0x21, 0x0e, 0x31, 0x43, 0xcf, 0x9f, 0x9f, 0xa8, 0x60, 0x2f, 0xed, 0x28, 0x88, 0xb8, 0x15, + 0x4d, 0x2d, 0xc1, 0x09, 0x42, 0xd2, 0x46, 0x30, 0x59, 0x68, 0x23, 0xd8, 0x86, 0xe9, 0x6d, 0xc5, + 0x9c, 0x35, 0xc5, 0x86, 0xe1, 0xe5, 0x52, 0x3d, 0x8b, 0x8d, 0x5b, 0x8d, 0xd3, 0x82, 0xd2, 0xb4, + 0x6a, 0x08, 0x53, 0x09, 0xe9, 0x7b, 0x93, 0x70, 0xaa, 0xe9, 0x0c, 0x82, 0x90, 0xf8, 0x8b, 0xe2, + 0x4e, 0x82, 0xf8, 0xe8, 0xd3, 0x1a, 0x9c, 0x63, 0xff, 0xb6, 0xbc, 0x3b, 0x6e, 0x8b, 0x38, 0xc6, + 0xee, 0xe2, 0x06, 0xad, 0x61, 0x59, 0x47, 0x63, 0x44, 0xad, 0x81, 0x90, 0x27, 0x99, 0x61, 0xae, + 0x93, 0x8b, 0x11, 0x17, 0x50, 0x42, 0x9f, 0xd5, 0xe0, 0xe1, 0x1c, 0x50, 0x8b, 0x38, 0x24, 0x8c, + 0x44, 0x98, 0xa3, 0xf6, 0xe3, 0x91, 0xfd, 0xbd, 0xfa, 0xc3, 0x9d, 0x22, 0xa4, 0xb8, 0x98, 0x1e, + 0x3d, 0x0e, 0xcf, 0xe7, 0x40, 0xaf, 0x1a, 0xb6, 0x33, 0xf0, 0x23, 0xe9, 0xe6, 0xa8, 0xdd, 0x61, + 0x42, 0x46, 0xa7, 0x10, 0x2b, 0x1e, 0x42, 0x11, 0xfd, 0x34, 0x9c, 0x95, 0xd0, 0xdb, 0xae, 0x4b, + 0x88, 0x95, 0x90, 0x75, 0x8e, 0xda, 0x95, 0x87, 0xf7, 0xf7, 0xea, 0x67, 0x3b, 0x79, 0x08, 0x71, + 0x3e, 0x1d, 0xd4, 0x85, 0x47, 0x62, 0x40, 0x68, 0x3b, 0xf6, 0x5d, 0x2e, 0x8e, 0x6d, 0xfa, 0x24, + 0xd8, 0xf4, 0x1c, 0x8b, 0xf1, 0x0b, 0xad, 0xf1, 0xfe, 0xfd, 0xbd, 0xfa, 0x23, 0x9d, 0x61, 0x15, + 0xf1, 0x70, 0x3c, 0xc8, 0x82, 0x99, 0xc0, 0x34, 0xdc, 0xb6, 0x1b, 0x12, 0x7f, 0xdb, 0x70, 0xe6, + 0xc7, 0x4b, 0x7d, 0x20, 0xdf, 0xa3, 0x0a, 0x1e, 0x9c, 0xc0, 0x8a, 0x9e, 0x85, 0x49, 0xb2, 0xd3, + 0x37, 0x5c, 0x8b, 0x70, 0xc6, 0x30, 0xd5, 0xb8, 0x48, 0x8f, 0xa4, 0x25, 0x51, 0x76, 0x6f, 0xaf, + 0x3e, 0x13, 0xfd, 0xbf, 0xe2, 0x59, 0x04, 0xcb, 0xda, 0xe8, 0x93, 0x70, 0xa6, 0x67, 0xec, 0xac, + 0x7a, 0x16, 0x61, 0x7c, 0x2e, 0x88, 0x24, 0xde, 0xc9, 0x52, 0xfd, 0x9c, 0xdf, 0xdf, 0xab, 0x9f, + 0x59, 0xc9, 0xc1, 0x87, 0x73, 0xa9, 0xd0, 0x69, 0xe8, 0x19, 0x3b, 0xd7, 0x7c, 0xc3, 0x24, 0x1b, + 0x03, 0xe7, 0x16, 0xf1, 0x7b, 0xb6, 0xcb, 0x95, 0x0a, 0x62, 0x7a, 0xae, 0x45, 0x79, 0x89, 0xf6, + 0xf8, 0x18, 0x9f, 0x86, 0x95, 0x61, 0x15, 0xf1, 0x70, 0x3c, 0xe8, 0x19, 0x98, 0xb1, 0xbb, 0xae, + 0xe7, 0x93, 0x5b, 0x86, 0xed, 0x86, 0xc1, 0x3c, 0x30, 0x93, 0x3b, 0x1b, 0xd6, 0xb6, 0x52, 0x8e, + 0x13, 0xb5, 0xf4, 0xbd, 0x11, 0x98, 0x6a, 0x7a, 0xae, 0x65, 0x33, 0x7d, 0xe6, 0xc9, 0x84, 0xb1, + 0xf4, 0x11, 0x95, 0x11, 0xde, 0xdb, 0xab, 0xcf, 0xca, 0x8a, 0x0a, 0x67, 0x7c, 0x4e, 0x5a, 0x2a, + 0xb8, 0x6e, 0xfc, 0xfe, 0xa4, 0x85, 0xe1, 0xde, 0x5e, 0xfd, 0x84, 0x6c, 0x96, 0x34, 0x3a, 0xa0, + 0x6d, 0xae, 0x88, 0xdc, 0xf2, 0x0d, 0x37, 0xb0, 0x2b, 0x28, 0x22, 0x52, 0xc5, 0x5c, 0xce, 0x60, + 0xc3, 0x39, 0x14, 0xd0, 0x9b, 0x30, 0x47, 0x4b, 0x6f, 0xf7, 0x2d, 0x23, 0x24, 0x25, 0xf5, 0x8f, + 0x73, 0x82, 0xe6, 0xdc, 0x72, 0x02, 0x13, 0x4e, 0x61, 0xe6, 0xc6, 0x65, 0x23, 0xf0, 0x5c, 0xb6, + 0xdd, 0x12, 0xc6, 0x65, 0x5a, 0x8a, 0x05, 0x14, 0x3d, 0x01, 0x13, 0x3d, 0x12, 0x04, 0x46, 0x97, + 0xb0, 0xfd, 0x33, 0x15, 0x1f, 0x93, 0x2b, 0xbc, 0x18, 0x47, 0x70, 0xf4, 0x61, 0x18, 0x33, 0x3d, + 0x8b, 0x04, 0xf3, 0x13, 0x6c, 0x86, 0xa9, 0x1a, 0x36, 0xd6, 0xa4, 0x05, 0xf7, 0xf6, 0xea, 0x53, + 0x4c, 0x21, 0xa7, 0xbf, 0x30, 0xaf, 0xa4, 0xff, 0x3a, 0x15, 0x5d, 0x53, 0xc2, 0x7a, 0xd1, 0x0d, + 0x11, 0x9f, 0x56, 0xa6, 0x5e, 0x1c, 0x9f, 0x79, 0x59, 0xff, 0x1c, 0x55, 0x1c, 0x3c, 0x37, 0xf4, + 0x3d, 0x67, 0xcd, 0x31, 0x5c, 0x82, 0x3e, 0xa3, 0xc1, 0xc9, 0x4d, 0xbb, 0xbb, 0xa9, 0x5e, 0x6c, + 0x89, 0x83, 0xad, 0x9c, 0x8c, 0x7f, 0x3d, 0x85, 0xac, 0x71, 0x66, 0x7f, 0xaf, 0x7e, 0x32, 0x5d, + 0x8a, 0x33, 0x44, 0xf5, 0x5f, 0xac, 0xc1, 0x19, 0xd1, 0x35, 0x87, 0x1e, 0x35, 0x7d, 0xc7, 0xdb, + 0xed, 0x11, 0xf7, 0x38, 0x2e, 0xa1, 0x22, 0x99, 0xa4, 0x56, 0x28, 0x93, 0xf4, 0x32, 0x53, 0x34, + 0x52, 0x66, 0x8a, 0xe4, 0x4a, 0x3e, 0x60, 0x9a, 0xfe, 0x5c, 0x83, 0xf9, 0xbc, 0xb1, 0x38, 0x06, + 0x5d, 0xc8, 0x4d, 0xea, 0x42, 0xed, 0xd2, 0xea, 0x6d, 0xba, 0xef, 0x05, 0x3a, 0xd1, 0x9f, 0xd7, + 0xe0, 0x5c, 0x5c, 0xbd, 0xed, 0x06, 0xa1, 0xe1, 0x38, 0xdc, 0xe2, 0xf3, 0xe0, 0x27, 0xfe, 0xad, + 0x84, 0x52, 0x7b, 0xb3, 0xe2, 0xb7, 0xaa, 0x9d, 0x2f, 0xb4, 0x36, 0xef, 0xa6, 0xac, 0xcd, 0xaf, + 0xde, 0x4f, 0xa2, 0xc3, 0x0d, 0xcf, 0xff, 0x4d, 0x83, 0xf3, 0xf9, 0x0d, 0x8f, 0x61, 0x5d, 0xf5, + 0x93, 0xeb, 0xea, 0xc6, 0x7d, 0xfc, 0xec, 0x82, 0x95, 0xf5, 0xd5, 0x5a, 0xd1, 0xe7, 0x32, 0xbd, + 0x7b, 0x03, 0x4e, 0x50, 0x65, 0x28, 0x08, 0x85, 0x81, 0xf4, 0x68, 0xce, 0x02, 0x91, 0xc5, 0xe8, + 0x04, 0x4e, 0xe2, 0xc0, 0x69, 0xa4, 0x68, 0x15, 0x26, 0xa8, 0x02, 0x44, 0xf1, 0xd7, 0x0e, 0x8f, + 0x5f, 0x1e, 0x49, 0x1d, 0xde, 0x16, 0x47, 0x48, 0xd0, 0x8f, 0xc3, 0xac, 0x25, 0x37, 0xd5, 0x01, + 0xb7, 0x84, 0x69, 0xac, 0xcc, 0x96, 0xdd, 0x52, 0x5b, 0xe3, 0x24, 0x32, 0xfd, 0xff, 0x6a, 0x70, + 0x71, 0xd8, 0xe2, 0x42, 0x3e, 0x80, 0x19, 0xc9, 0x18, 0xdc, 0x59, 0xa4, 0xac, 0xb5, 0x5b, 0x8a, + 0x2a, 0xf1, 0x26, 0x95, 0x45, 0x01, 0x56, 0xa8, 0xe4, 0xdc, 0x44, 0xd6, 0x1e, 0xd0, 0x4d, 0xa4, + 0xfe, 0x17, 0x9a, 0xca, 0x8e, 0xd4, 0xc9, 0x7d, 0xcf, 0xb1, 0x23, 0xb5, 0xf3, 0x85, 0xd6, 0xb6, + 0x3f, 0xaa, 0xc1, 0xe5, 0xfc, 0x26, 0xca, 0x09, 0xfc, 0x0a, 0x8c, 0xf7, 0xb9, 0x4f, 0xcf, 0x08, + 0x3b, 0x21, 0x1f, 0xa7, 0xcc, 0x85, 0x3b, 0xdc, 0xdc, 0xdb, 0xab, 0x9f, 0xcf, 0xe3, 0xf6, 0xc2, + 0x55, 0x47, 0xb4, 0x43, 0x76, 0xca, 0xdc, 0xc0, 0x85, 0xc0, 0xa7, 0x0f, 0xc9, 0x5f, 0x8c, 0x75, + 0xe2, 0x1c, 0xda, 0xc0, 0xf0, 0x69, 0x0d, 0xe6, 0x12, 0x6b, 0x3a, 0x98, 0x1f, 0x63, 0xab, 0xb4, + 0xdc, 0x65, 0x50, 0x62, 0xb7, 0xc4, 0x07, 0x78, 0xa2, 0x38, 0xc0, 0x29, 0x8a, 0x29, 0x56, 0xab, + 0x0e, 0xeb, 0x7b, 0x8f, 0xd5, 0xaa, 0xbd, 0x2f, 0x60, 0xb5, 0x5f, 0xa8, 0x15, 0x7d, 0x2e, 0x63, + 0xb5, 0x3b, 0x30, 0x15, 0x79, 0x58, 0x46, 0x2c, 0xe3, 0x5a, 0xe5, 0x4e, 0x71, 0x7c, 0xb1, 0xe3, + 0x43, 0x54, 0x12, 0xe0, 0x98, 0x18, 0xfa, 0x79, 0x0d, 0x20, 0x9e, 0x1a, 0xb1, 0xb1, 0x6e, 0xdf, + 0xc7, 0x01, 0x51, 0xe4, 0x9b, 0x39, 0xba, 0xaf, 0x95, 0x75, 0xa1, 0x10, 0xd6, 0xbf, 0x32, 0x02, + 0x28, 0xdb, 0x79, 0x2a, 0x78, 0x6e, 0xd9, 0xae, 0x95, 0xd6, 0x0d, 0x6e, 0xd8, 0xae, 0x85, 0x19, + 0xe4, 0x10, 0xa2, 0xe9, 0x8b, 0x70, 0xa2, 0xeb, 0x78, 0xeb, 0x86, 0xe3, 0xec, 0x0a, 0xb7, 0x4d, + 0xe1, 0xfe, 0x77, 0x9a, 0x1e, 0x4f, 0xd7, 0x92, 0x20, 0x9c, 0xae, 0x8b, 0xfa, 0x70, 0xd2, 0xa7, + 0x5a, 0xad, 0x69, 0x3b, 0x4c, 0x8b, 0xf2, 0x06, 0x61, 0x49, 0xb3, 0x09, 0x13, 0xf4, 0x71, 0x0a, + 0x17, 0xce, 0x60, 0x47, 0x1f, 0x80, 0x89, 0xbe, 0x6f, 0xf7, 0x0c, 0x7f, 0x97, 0xe9, 0x69, 0x93, + 0x8d, 0x69, 0x7a, 0xce, 0xad, 0xf1, 0x22, 0x1c, 0xc1, 0xd0, 0x4f, 0xc1, 0x94, 0x63, 0x6f, 0x10, + 0x73, 0xd7, 0x74, 0x88, 0xb0, 0x73, 0xac, 0xdd, 0xa7, 0x45, 0xb3, 0x1c, 0xe1, 0x15, 0xf7, 0xac, + 0xd1, 0x4f, 0x1c, 0x53, 0xd4, 0xdf, 0xa9, 0xc1, 0x85, 0x21, 0x2d, 0x11, 0xa6, 0x6b, 0x5a, 0x7c, + 0x99, 0x98, 0xbf, 0x67, 0xf8, 0x32, 0x14, 0x85, 0xf7, 0xf6, 0xea, 0x8f, 0x0e, 0x41, 0xd0, 0xa1, + 0x0b, 0x88, 0x74, 0x77, 0x71, 0x8c, 0x06, 0xb5, 0x61, 0xdc, 0x8a, 0x4d, 0x7a, 0x53, 0x8d, 0x27, + 0x29, 0x9f, 0xe5, 0x46, 0xb7, 0xc3, 0x62, 0x13, 0x08, 0xd0, 0x32, 0x4c, 0xf0, 0x2b, 0x55, 0x22, + 0x78, 0xf6, 0x53, 0x4c, 0xbf, 0xe5, 0x45, 0x87, 0x45, 0x16, 0xa1, 0xd0, 0xff, 0x8f, 0x06, 0x13, + 0x4d, 0xcf, 0x27, 0xad, 0xd5, 0x0e, 0xba, 0x0b, 0xd3, 0x8a, 0xcb, 0xb6, 0x60, 0x5f, 0x65, 0xb7, + 0x33, 0x43, 0xb9, 0x18, 0xa3, 0x8b, 0x9c, 0x3d, 0x65, 0x01, 0x56, 0x89, 0x21, 0x9f, 0x0e, 0xfa, + 0x1d, 0xdf, 0x0e, 0x29, 0xe5, 0x4a, 0x37, 0x51, 0x9c, 0x32, 0x8e, 0x90, 0xf1, 0x85, 0x20, 0x7f, + 0xe2, 0x98, 0x8c, 0xbe, 0x46, 0x77, 0x6e, 0xba, 0x9f, 0xe8, 0x79, 0x18, 0xed, 0x79, 0x56, 0x34, + 0xf3, 0x1f, 0x8c, 0xf6, 0xe5, 0x8a, 0x67, 0xd1, 0xd1, 0x3d, 0x97, 0x6d, 0xc1, 0x0c, 0x65, 0xac, + 0x8d, 0xbe, 0x0a, 0x27, 0xd3, 0xf4, 0xd1, 0xf3, 0x30, 0x67, 0x7a, 0xbd, 0x9e, 0xe7, 0x76, 0x06, + 0x1b, 0x1b, 0xf6, 0x0e, 0x49, 0xf8, 0xe1, 0x36, 0x13, 0x10, 0x9c, 0xaa, 0xa9, 0x7f, 0x5e, 0x83, + 0x11, 0x3a, 0x33, 0x3a, 0x8c, 0x5b, 0x5e, 0xcf, 0xb0, 0x5d, 0xd1, 0x2b, 0xe6, 0x25, 0xdc, 0x62, + 0x25, 0x58, 0x40, 0xd0, 0x5b, 0x30, 0x15, 0x49, 0x3c, 0xd5, 0xdc, 0x41, 0x5a, 0xab, 0x1d, 0xe9, + 0x3b, 0x27, 0x79, 0x70, 0x54, 0x12, 0xe0, 0x98, 0x8a, 0x6e, 0xc0, 0xa9, 0xd6, 0x6a, 0xa7, 0xed, + 0x9a, 0xce, 0xc0, 0x22, 0x4b, 0x3b, 0xec, 0x0f, 0x65, 0x02, 0x36, 0x2f, 0x11, 0x1f, 0xca, 0x98, + 0x80, 0xa8, 0x84, 0x23, 0x18, 0xad, 0x46, 0x78, 0x0b, 0xe1, 0x2c, 0xcb, 0xaa, 0x09, 0x24, 0x38, + 0x82, 0xe9, 0x7f, 0x5c, 0x83, 0x69, 0xa5, 0x43, 0xa8, 0x07, 0x13, 0xfc, 0x7b, 0x23, 0x9f, 0xb5, + 0xab, 0x65, 0xbf, 0x31, 0xd9, 0x6d, 0x4e, 0x9e, 0x0f, 0x69, 0x80, 0x23, 0x1a, 0x2a, 0x47, 0xab, + 0x0d, 0xe1, 0x68, 0x0b, 0x00, 0xdc, 0x25, 0x8f, 0x39, 0x5c, 0xf0, 0x6d, 0xc9, 0x0e, 0x8d, 0x8e, + 0x2c, 0xc5, 0x4a, 0x0d, 0x74, 0x51, 0xf0, 0x7e, 0xc5, 0x6b, 0x4f, 0xe1, 0xfb, 0x5d, 0x18, 0xbb, + 0xeb, 0xb9, 0x24, 0x10, 0x77, 0x51, 0xf7, 0xeb, 0x0b, 0xa7, 0xe8, 0xe1, 0xfe, 0x06, 0x45, 0x8c, + 0x39, 0x7e, 0xfd, 0x4b, 0x1a, 0x40, 0xcb, 0x08, 0x0d, 0x7e, 0x71, 0x72, 0x08, 0x8f, 0xe7, 0x8b, + 0x89, 0x33, 0x6b, 0x32, 0xe3, 0x02, 0x3a, 0x1a, 0xd8, 0x77, 0xa3, 0xef, 0x97, 0x02, 0x31, 0xc7, + 0xde, 0xb1, 0xef, 0x12, 0xcc, 0xe0, 0xe8, 0x43, 0x30, 0x45, 0x5c, 0xd3, 0xdf, 0xed, 0x87, 0xc2, + 0x71, 0x71, 0x92, 0x6f, 0xd2, 0xa5, 0xa8, 0x10, 0xc7, 0x70, 0xfd, 0x49, 0x48, 0xaa, 0x35, 0x07, + 0xf7, 0x52, 0xbf, 0xa7, 0xc1, 0xc9, 0xa5, 0x9d, 0xbe, 0xed, 0x33, 0x2f, 0x68, 0xe2, 0x53, 0x15, + 0x01, 0x3d, 0x01, 0x13, 0xdb, 0xfc, 0x5f, 0xd1, 0x52, 0xea, 0x61, 0xa2, 0x06, 0x8e, 0xe0, 0x68, + 0x03, 0xe6, 0x08, 0x6b, 0xce, 0xc4, 0x00, 0x23, 0x2c, 0xe3, 0x4a, 0xc2, 0xbd, 0xec, 0x13, 0x58, + 0x70, 0x0a, 0x2b, 0xea, 0xc0, 0x9c, 0xe9, 0x18, 0x41, 0x60, 0x6f, 0xd8, 0x66, 0xec, 0xec, 0x33, + 0xd5, 0xf8, 0x10, 0xe3, 0x0c, 0x09, 0xc8, 0xbd, 0xbd, 0xfa, 0x59, 0xd1, 0xcf, 0x24, 0x00, 0xa7, + 0x50, 0xe8, 0xef, 0xd6, 0x60, 0x76, 0x69, 0xa7, 0xef, 0x05, 0x03, 0x9f, 0xb0, 0xaa, 0xc7, 0xa0, + 0xdd, 0x3c, 0x01, 0x13, 0x9b, 0x86, 0x6b, 0x39, 0xc4, 0x17, 0x2b, 0x43, 0x8e, 0xed, 0x75, 0x5e, + 0x8c, 0x23, 0x38, 0xfa, 0x24, 0x40, 0x60, 0x6e, 0x12, 0x6b, 0xc0, 0x8e, 0x18, 0xae, 0xe0, 0x2e, + 0x97, 0x5a, 0xe0, 0x89, 0x8f, 0xec, 0x48, 0x9c, 0x62, 0xdf, 0xc9, 0xdf, 0x58, 0xa1, 0xa7, 0xff, + 0xb1, 0x06, 0xa7, 0x12, 0xed, 0x8e, 0x41, 0x66, 0xef, 0x26, 0x65, 0xf6, 0x46, 0xf5, 0x8f, 0x2d, + 0x10, 0xd5, 0xdf, 0xa9, 0xc1, 0x43, 0x05, 0x83, 0x92, 0xb9, 0x14, 0xd6, 0x8e, 0xeb, 0x52, 0x78, + 0x1b, 0xa6, 0x43, 0xcf, 0x11, 0x6e, 0x69, 0xd1, 0x18, 0x94, 0xbb, 0xf2, 0xbd, 0x25, 0xf1, 0xc4, + 0x57, 0xbe, 0x71, 0x59, 0x80, 0x55, 0x42, 0xfa, 0xd7, 0x35, 0x98, 0x92, 0xf6, 0x81, 0x43, 0xb8, + 0xaf, 0x1f, 0xa3, 0x23, 0xf8, 0xe1, 0x9f, 0xf3, 0xfc, 0xab, 0x1a, 0x9c, 0x93, 0xb8, 0x23, 0x61, + 0xae, 0x13, 0x52, 0xde, 0x71, 0xb0, 0x7e, 0x71, 0x51, 0xf0, 0x49, 0x85, 0x57, 0x2b, 0x9c, 0x9c, + 0x1e, 0x6c, 0x03, 0xbf, 0xef, 0x05, 0x11, 0xbb, 0xe6, 0x07, 0x1b, 0x2f, 0xc2, 0x11, 0x0c, 0xad, + 0xc2, 0x58, 0x40, 0xe9, 0x09, 0xc5, 0xe1, 0x88, 0xa3, 0xc1, 0x4e, 0x1c, 0xd6, 0x5f, 0xcc, 0xd1, + 0xa0, 0xb7, 0x55, 0x7d, 0x91, 0x2b, 0xef, 0x3f, 0x76, 0xb4, 0xc5, 0xc0, 0x5e, 0x29, 0x2e, 0xd0, + 0x2f, 0xb1, 0xa2, 0x11, 0xc9, 0xf1, 0x95, 0xcf, 0x53, 0x19, 0xf5, 0x65, 0x38, 0x29, 0xee, 0x95, + 0xf9, 0xb2, 0x71, 0x4d, 0x82, 0x9e, 0x4d, 0xac, 0x8c, 0xc7, 0x52, 0x77, 0x75, 0x67, 0xd2, 0xf5, + 0xe3, 0x15, 0xa3, 0x07, 0x30, 0x79, 0x4d, 0x74, 0x12, 0x9d, 0x87, 0x9a, 0x1d, 0xcd, 0x05, 0x08, + 0x1c, 0xb5, 0x76, 0x0b, 0xd7, 0x6c, 0x4b, 0x9e, 0x57, 0xb5, 0xc2, 0x53, 0x55, 0x39, 0x9a, 0x46, + 0x86, 0x1f, 0x4d, 0xfa, 0x7f, 0xae, 0xc1, 0x99, 0x88, 0x6a, 0xf4, 0x8d, 0x2d, 0x71, 0xd1, 0x71, + 0xc0, 0xd9, 0x7d, 0xb0, 0xbe, 0x79, 0x13, 0x46, 0x19, 0x0f, 0x2c, 0x75, 0x01, 0x22, 0x11, 0xd2, + 0xee, 0x60, 0x86, 0x08, 0xfd, 0x14, 0x8c, 0x3b, 0xc6, 0x3a, 0x71, 0x22, 0x9f, 0x9e, 0x72, 0xea, + 0x79, 0xde, 0xf7, 0x72, 0xcb, 0x51, 0xc0, 0x7d, 0x96, 0xa5, 0x55, 0x9c, 0x17, 0x62, 0x41, 0xf4, + 0xfc, 0x73, 0x30, 0xad, 0x54, 0x43, 0x27, 0x61, 0x64, 0x8b, 0xf0, 0x2b, 0xb0, 0x29, 0x4c, 0xff, + 0x45, 0x67, 0x60, 0x6c, 0xdb, 0x70, 0x06, 0x62, 0x4c, 0x30, 0xff, 0xf1, 0x7c, 0xed, 0x59, 0x4d, + 0xff, 0x8a, 0x06, 0xd3, 0xd7, 0xed, 0x75, 0xe2, 0xf3, 0xdb, 0x61, 0x26, 0xad, 0x26, 0x1e, 0x54, + 0x4e, 0xe7, 0x3d, 0xa6, 0x44, 0xbb, 0x30, 0x25, 0x4e, 0x1b, 0xe9, 0x45, 0x78, 0xbd, 0xe4, 0x5d, + 0x9b, 0xa4, 0x2d, 0xb8, 0xb8, 0xfa, 0x10, 0x24, 0x22, 0x81, 0x63, 0x6a, 0xfa, 0xdb, 0x70, 0x3a, + 0xa7, 0x11, 0xaa, 0xb3, 0x0d, 0xec, 0x87, 0x62, 0x61, 0x44, 0x3b, 0xd2, 0x0f, 0x31, 0x2f, 0x47, + 0x0f, 0xc3, 0x08, 0x71, 0x23, 0x97, 0xec, 0x89, 0xfd, 0xbd, 0xfa, 0xc8, 0x92, 0x6b, 0x61, 0x5a, + 0x46, 0x19, 0x95, 0xe3, 0x25, 0x24, 0x13, 0xc6, 0xa8, 0x96, 0x45, 0x19, 0x96, 0x50, 0xfd, 0x8b, + 0x1a, 0x64, 0x2e, 0x02, 0xd1, 0x67, 0x35, 0x38, 0xb9, 0x91, 0xda, 0x3f, 0x95, 0x2e, 0x20, 0xd3, + 0x9b, 0xb1, 0x31, 0x2f, 0x46, 0x24, 0xb3, 0xad, 0x71, 0x86, 0xb0, 0xfe, 0xcf, 0x46, 0xe1, 0x91, + 0xeb, 0x9e, 0x6f, 0xdf, 0xf5, 0xdc, 0xd0, 0x70, 0xd6, 0x3c, 0x2b, 0xf6, 0x04, 0x12, 0x7c, 0xf9, + 0xe7, 0x35, 0x78, 0xc8, 0xec, 0x0f, 0xb8, 0xbb, 0x6b, 0xe4, 0xa0, 0xb1, 0x46, 0x7c, 0xdb, 0x2b, + 0xeb, 0x10, 0xc4, 0xde, 0xff, 0x35, 0xd7, 0x6e, 0xe7, 0xa1, 0xc4, 0x45, 0xb4, 0x98, 0x5f, 0x92, + 0xe5, 0xdd, 0x71, 0x59, 0xe7, 0x3a, 0x21, 0x1b, 0xce, 0xbb, 0xf1, 0x2c, 0x94, 0xf4, 0x4b, 0x6a, + 0xe5, 0x62, 0xc4, 0x05, 0x94, 0xd0, 0x4f, 0xc3, 0x59, 0x9b, 0x77, 0x0e, 0x13, 0xc3, 0xb2, 0x5d, + 0x12, 0x04, 0xcc, 0x3b, 0xa7, 0x8a, 0xe3, 0x4d, 0x3b, 0x0f, 0x21, 0xce, 0xa7, 0x83, 0x7e, 0x02, + 0x20, 0xd8, 0x75, 0x4d, 0x31, 0xfe, 0x63, 0xa5, 0xa8, 0x72, 0x51, 0x50, 0x62, 0xc1, 0x0a, 0x46, + 0xaa, 0x84, 0x84, 0x72, 0x55, 0x8e, 0x33, 0x27, 0x1e, 0xa6, 0x84, 0xc4, 0x6b, 0x28, 0x86, 0xeb, + 0xbf, 0xa5, 0xc1, 0x84, 0x78, 0x16, 0x8c, 0x3e, 0x98, 0xd2, 0xc5, 0x25, 0xf7, 0x49, 0xe9, 0xe3, + 0x77, 0xd9, 0x75, 0x8a, 0xb0, 0xc4, 0x08, 0x69, 0xa2, 0x9c, 0x2a, 0x27, 0x28, 0xc7, 0x76, 0x9d, + 0xc4, 0xb5, 0x4a, 0x64, 0xeb, 0x51, 0xa8, 0xd1, 0xfd, 0x78, 0x2a, 0xd3, 0xea, 0x10, 0x32, 0xc3, + 0x31, 0xfa, 0x2b, 0xfc, 0xee, 0x1c, 0xb0, 0x37, 0xe0, 0x8b, 0x6b, 0xed, 0x0e, 0xf1, 0xb7, 0xe5, + 0x2e, 0xa4, 0x5c, 0x23, 0x76, 0x4e, 0x15, 0xbd, 0xa8, 0xc2, 0x35, 0x6e, 0xa4, 0x90, 0xc5, 0x5c, + 0x23, 0x0d, 0xc1, 0x19, 0xc2, 0xe8, 0x1d, 0x0d, 0x4e, 0x1a, 0xc9, 0x37, 0xe0, 0x11, 0x63, 0x2f, + 0xf7, 0x6c, 0x29, 0xf5, 0xa0, 0x3c, 0xee, 0x4c, 0x0a, 0x10, 0xe0, 0x0c, 0x5d, 0xf4, 0x0c, 0xcc, + 0x18, 0x7d, 0x7b, 0x71, 0x60, 0xd9, 0x54, 0xd8, 0x89, 0x9e, 0x03, 0x33, 0x09, 0x7c, 0x71, 0xad, + 0x2d, 0xcb, 0x71, 0xa2, 0x96, 0x7c, 0xbb, 0x2d, 0x86, 0x72, 0xb4, 0xea, 0xdb, 0x6d, 0x31, 0x8a, + 0xf1, 0xdb, 0x6d, 0x31, 0x78, 0x2a, 0x15, 0xf4, 0x71, 0x78, 0x98, 0x9f, 0x89, 0x0d, 0x23, 0xb0, + 0xcd, 0xc5, 0x41, 0xb8, 0x49, 0xdc, 0x30, 0xd2, 0x72, 0xb9, 0x6d, 0x98, 0x79, 0x29, 0x2e, 0x15, + 0x55, 0xc2, 0xc5, 0xed, 0x91, 0x07, 0xe0, 0xd9, 0x96, 0x29, 0x3e, 0x88, 0x1b, 0x90, 0xcb, 0xa9, + 0x14, 0x37, 0xdb, 0xad, 0xa6, 0xf8, 0x1e, 0xc6, 0x2b, 0xe2, 0xdf, 0x58, 0x21, 0x81, 0x3e, 0xa7, + 0xc1, 0xac, 0x58, 0xe8, 0x82, 0xe8, 0x04, 0x5b, 0x02, 0x1f, 0x2f, 0xbd, 0x20, 0x53, 0xab, 0x7e, + 0x01, 0xab, 0xd8, 0xb9, 0x54, 0x23, 0x9d, 0xa7, 0x13, 0x30, 0x9c, 0xec, 0x08, 0xfa, 0x55, 0x0d, + 0xce, 0x04, 0xc4, 0xdf, 0xb6, 0x4d, 0xb2, 0x68, 0x9a, 0xde, 0xc0, 0x8d, 0xe6, 0x79, 0xb2, 0xc2, + 0x33, 0xda, 0x4e, 0x0e, 0x42, 0xee, 0xb2, 0x97, 0x07, 0xc1, 0xb9, 0x1d, 0x40, 0x7f, 0x53, 0x83, + 0x13, 0x77, 0x8c, 0xd0, 0xdc, 0x6c, 0x1a, 0xe6, 0x26, 0x33, 0xff, 0x70, 0x2f, 0xbd, 0xb2, 0x3b, + 0xe7, 0xf5, 0x24, 0x2e, 0x7e, 0x09, 0x92, 0x2a, 0xc4, 0x69, 0x8a, 0x28, 0x84, 0x49, 0x9f, 0xbc, + 0x35, 0x20, 0x01, 0xf3, 0xe5, 0xd3, 0x8e, 0xae, 0x6f, 0xe4, 0x4d, 0x1a, 0x16, 0x18, 0xb9, 0x3c, + 0x14, 0xfd, 0xc2, 0x92, 0x12, 0xea, 0xc2, 0x23, 0x7c, 0xf9, 0x2e, 0xba, 0x9e, 0xbb, 0xdb, 0xf3, + 0x06, 0x41, 0x6a, 0x0b, 0x4c, 0xb3, 0x2d, 0xc0, 0xdc, 0x15, 0x97, 0x86, 0x55, 0xc4, 0xc3, 0xf1, + 0xa0, 0x8f, 0xc2, 0x24, 0xd9, 0x26, 0x6e, 0x78, 0xeb, 0xd6, 0xf2, 0xfc, 0x4c, 0xa9, 0x33, 0x92, + 0x7d, 0xc2, 0x92, 0xc0, 0x81, 0x25, 0x36, 0xd4, 0x87, 0x09, 0xc7, 0xeb, 0x76, 0x6d, 0xb7, 0x3b, + 0x3f, 0x5b, 0x61, 0x29, 0x25, 0xc6, 0x6d, 0x99, 0x23, 0xe4, 0xc2, 0xb3, 0xf8, 0x81, 0x23, 0x32, + 0xa8, 0x0f, 0x97, 0x2d, 0xb2, 0x61, 0x0c, 0x9c, 0x70, 0xd5, 0x0b, 0xa9, 0x34, 0xb0, 0x1b, 0x6b, + 0xf7, 0x91, 0x9b, 0xe7, 0x1c, 0x7b, 0x0d, 0xf7, 0xd8, 0xfe, 0x5e, 0xfd, 0x72, 0xeb, 0x80, 0xba, + 0xf8, 0x40, 0x6c, 0x68, 0x17, 0x1e, 0x15, 0x75, 0x6e, 0xbb, 0x3e, 0x31, 0xcc, 0x4d, 0x3a, 0xd4, + 0x59, 0xa2, 0x27, 0x18, 0xd1, 0x1f, 0xd8, 0xdf, 0xab, 0x3f, 0xda, 0x3a, 0xb8, 0x3a, 0x3e, 0x0c, + 0xce, 0xf3, 0xaf, 0x00, 0xca, 0xee, 0xf9, 0x83, 0x54, 0x94, 0x49, 0x55, 0x45, 0xf9, 0x65, 0x0d, + 0xce, 0xe4, 0x8d, 0x2e, 0x95, 0x6c, 0xb6, 0x89, 0xbf, 0xee, 0x05, 0x91, 0xc3, 0xdf, 0x18, 0x97, + 0x6c, 0x5e, 0x8b, 0x0a, 0x71, 0x0c, 0x47, 0x6d, 0x38, 0xbd, 0x19, 0x86, 0xfd, 0x45, 0xd3, 0x24, + 0x41, 0x20, 0x6b, 0x30, 0x6a, 0x63, 0x3c, 0x50, 0xcb, 0xf5, 0x5b, 0xb7, 0xd6, 0x52, 0x60, 0x9c, + 0xd7, 0x46, 0xff, 0x9a, 0x06, 0x67, 0x73, 0xb7, 0x09, 0xc2, 0x70, 0x8e, 0x79, 0xf5, 0xba, 0x2b, + 0x83, 0xd0, 0x08, 0x6d, 0xb7, 0xdb, 0x76, 0x37, 0x1c, 0xbb, 0xbb, 0x19, 0x8a, 0xee, 0x31, 0x01, + 0x75, 0x25, 0xb7, 0x06, 0x2e, 0x68, 0x49, 0x3b, 0xde, 0x33, 0x76, 0x32, 0x08, 0x95, 0x8e, 0xaf, + 0x64, 0xc1, 0x38, 0xaf, 0x8d, 0xfe, 0xf9, 0x31, 0xb8, 0x40, 0x3b, 0x1e, 0x8b, 0x4a, 0x2b, 0x86, + 0x6b, 0x74, 0xbf, 0x4f, 0x45, 0x92, 0xaf, 0x68, 0xf0, 0xd0, 0x66, 0xbe, 0x22, 0x23, 0xa4, 0x35, + 0x5c, 0x4e, 0xe5, 0x1c, 0xa6, 0x1c, 0x71, 0x56, 0x35, 0xb4, 0x0a, 0x2e, 0xea, 0x15, 0x7a, 0x05, + 0x4e, 0xba, 0x9e, 0x45, 0x9a, 0xed, 0x16, 0x5e, 0x31, 0x82, 0xad, 0x4e, 0x74, 0x47, 0x30, 0xc6, + 0x2f, 0x96, 0x57, 0x53, 0x30, 0x9c, 0xa9, 0x8d, 0xb6, 0x01, 0xf5, 0x3d, 0x6b, 0x69, 0xdb, 0x36, + 0x23, 0xf7, 0xe3, 0xf2, 0x97, 0xd9, 0xec, 0xc1, 0xe5, 0x5a, 0x06, 0x1b, 0xce, 0xa1, 0xc0, 0x54, + 0x31, 0xda, 0x99, 0x15, 0xcf, 0xb5, 0x43, 0xcf, 0x67, 0x7e, 0xe3, 0x95, 0x34, 0x12, 0xb6, 0xd2, + 0x57, 0x73, 0x31, 0xe2, 0x02, 0x4a, 0xfa, 0xff, 0xd4, 0xe0, 0x04, 0x5d, 0x17, 0x6b, 0xbe, 0xb7, + 0xb3, 0xfb, 0x7d, 0xb9, 0x24, 0x9f, 0x10, 0x57, 0xa6, 0xdc, 0x88, 0x70, 0x56, 0xb9, 0x2e, 0x9d, + 0x62, 0x9d, 0x8e, 0x6f, 0x48, 0x55, 0x43, 0xca, 0x48, 0xb1, 0x21, 0x45, 0xff, 0x5c, 0x8d, 0x6b, + 0x07, 0x91, 0x1d, 0xe3, 0xfb, 0x73, 0x2b, 0xfe, 0x08, 0xcc, 0xd2, 0xb2, 0x15, 0x63, 0x67, 0xad, + 0xf5, 0x9a, 0xe7, 0x44, 0xce, 0xfb, 0xcc, 0x17, 0xef, 0x86, 0x0a, 0xc0, 0xc9, 0x7a, 0xe8, 0x79, + 0x98, 0xe8, 0xf3, 0x87, 0x82, 0xc2, 0xb0, 0x72, 0x99, 0x5f, 0x2b, 0xb2, 0xa2, 0x7b, 0x7b, 0xf5, + 0x53, 0xb1, 0xe9, 0x5e, 0x14, 0xe2, 0xa8, 0x81, 0xfe, 0xee, 0x19, 0x60, 0xc8, 0x1d, 0x12, 0x7e, + 0x5f, 0x0e, 0xca, 0x93, 0x30, 0x6d, 0xf6, 0x07, 0xcd, 0xab, 0x9d, 0x57, 0x07, 0x5e, 0x68, 0x88, + 0x6b, 0x53, 0xa6, 0x2d, 0x34, 0xd7, 0x6e, 0x47, 0xc5, 0x58, 0xad, 0x43, 0x19, 0x84, 0xd9, 0x1f, + 0x08, 0xa6, 0xbb, 0xa6, 0xfa, 0xa3, 0x31, 0x06, 0xd1, 0x5c, 0xbb, 0x9d, 0x80, 0xe1, 0x4c, 0x6d, + 0xf4, 0x33, 0x1a, 0xcc, 0x10, 0xb1, 0x79, 0xaf, 0x1b, 0xbe, 0x25, 0x78, 0x43, 0x79, 0x59, 0x4f, + 0x8e, 0x6e, 0xc4, 0x12, 0xb8, 0x9e, 0xb5, 0xa4, 0xd0, 0xc0, 0x09, 0x8a, 0x4c, 0xe5, 0x11, 0xbf, + 0xe9, 0x44, 0x7b, 0x56, 0x9a, 0x5b, 0x8c, 0x09, 0x95, 0xa7, 0xa8, 0x12, 0x2e, 0x6e, 0x8f, 0xfe, + 0x91, 0x06, 0xe7, 0x24, 0xd4, 0x76, 0xed, 0xde, 0xa0, 0x87, 0x89, 0xe9, 0x18, 0x76, 0x4f, 0xe8, + 0x3f, 0x1f, 0xbd, 0x7f, 0x5f, 0x9a, 0xc4, 0xcf, 0x59, 0x56, 0x3e, 0x0c, 0x17, 0xf4, 0x09, 0x7d, + 0x51, 0x83, 0xcb, 0x11, 0x68, 0xcd, 0x27, 0x41, 0x30, 0xf0, 0x49, 0xfc, 0x7c, 0x44, 0x8c, 0xc9, + 0x44, 0x29, 0x0e, 0xca, 0x64, 0xbf, 0xa5, 0x03, 0x70, 0xe3, 0x03, 0xa9, 0x27, 0x56, 0x4c, 0xc7, + 0xdb, 0x08, 0x85, 0xc2, 0xf4, 0xc0, 0x56, 0x0c, 0xa5, 0x81, 0x13, 0x14, 0xd1, 0x6f, 0x6b, 0xf0, + 0x90, 0x5a, 0xa0, 0x2e, 0x18, 0xae, 0x29, 0x7d, 0xec, 0xfe, 0xf5, 0x26, 0x45, 0x80, 0xdb, 0x26, + 0x0b, 0x80, 0xb8, 0xa8, 0x5b, 0x94, 0x7d, 0xf7, 0xd8, 0xe2, 0xe4, 0xda, 0xd4, 0x18, 0x67, 0xdf, + 0x7c, 0xbd, 0x06, 0x38, 0x82, 0xa1, 0x67, 0x60, 0xa6, 0xef, 0x59, 0x6b, 0xb6, 0x15, 0x2c, 0xdb, + 0x3d, 0x3b, 0x64, 0xea, 0xce, 0x08, 0x1f, 0x8f, 0x35, 0xcf, 0x5a, 0x6b, 0xb7, 0x78, 0x39, 0x4e, + 0xd4, 0x62, 0x6f, 0x21, 0xed, 0x9e, 0xd1, 0x25, 0x6b, 0x03, 0xc7, 0x59, 0xf3, 0x3d, 0x66, 0xbf, + 0x6a, 0x11, 0xc3, 0x72, 0x6c, 0x97, 0x94, 0x54, 0x6f, 0xd8, 0x96, 0x6b, 0x17, 0x21, 0xc5, 0xc5, + 0xf4, 0xd0, 0x02, 0xc0, 0x86, 0x61, 0x3b, 0x9d, 0x3b, 0x46, 0xff, 0xa6, 0xcb, 0x74, 0xa0, 0x49, + 0x6e, 0x24, 0xb8, 0x2a, 0x4b, 0xb1, 0x52, 0x83, 0x2d, 0x28, 0xca, 0x0c, 0x31, 0xe1, 0xd1, 0x38, + 0x98, 0xae, 0x72, 0x5f, 0x16, 0x54, 0x84, 0x91, 0x0f, 0xe0, 0x0d, 0x85, 0x06, 0x4e, 0x50, 0x44, + 0xbf, 0xa0, 0xc1, 0x5c, 0xb0, 0x1b, 0x84, 0xa4, 0x27, 0x3b, 0x71, 0xe2, 0xbe, 0x77, 0x82, 0x19, + 0xf7, 0x3a, 0x09, 0x2a, 0x38, 0x45, 0x15, 0x19, 0x70, 0x81, 0x0d, 0xec, 0xb5, 0xe6, 0x75, 0xbb, + 0xbb, 0x29, 0x1f, 0x39, 0xae, 0x11, 0xdf, 0x24, 0x6e, 0x38, 0x7f, 0x92, 0x2d, 0x1d, 0x16, 0xee, + 0xa1, 0x5d, 0x5c, 0x0d, 0x0f, 0xc3, 0x81, 0x7e, 0x02, 0xce, 0x0b, 0xf0, 0xb2, 0x77, 0x27, 0x43, + 0xe1, 0x14, 0xa3, 0xc0, 0x5e, 0x9e, 0xb6, 0x0b, 0x6b, 0xe1, 0x21, 0x18, 0xa8, 0x7e, 0x11, 0x10, + 0x9f, 0x19, 0xe7, 0x89, 0x5c, 0x3f, 0xc1, 0x3c, 0x62, 0xeb, 0x80, 0xe9, 0x17, 0x9d, 0x2c, 0x18, + 0xe7, 0xb5, 0x41, 0x2f, 0xca, 0xf7, 0x08, 0xbb, 0xb4, 0xe0, 0xd5, 0xb5, 0xce, 0xfc, 0x69, 0xd6, + 0xbf, 0xd3, 0xca, 0x33, 0x83, 0x08, 0x84, 0xd3, 0x75, 0xa9, 0x94, 0x11, 0x15, 0x35, 0x06, 0x7e, + 0x10, 0xce, 0x9f, 0x61, 0x8d, 0x99, 0x94, 0x81, 0x55, 0x00, 0x4e, 0xd6, 0x43, 0xcf, 0xc3, 0x5c, + 0x40, 0x4c, 0xd3, 0xeb, 0xf5, 0x85, 0xda, 0x3a, 0x7f, 0x96, 0xf5, 0x9e, 0xcf, 0x60, 0x02, 0x82, + 0x53, 0x35, 0xd1, 0x2e, 0x9c, 0x96, 0xc1, 0x29, 0x96, 0xbd, 0xee, 0x8a, 0xb1, 0xc3, 0xc4, 0xf6, + 0x73, 0x07, 0x6f, 0xc2, 0x85, 0xe8, 0xc2, 0x75, 0xe1, 0xd5, 0x81, 0xe1, 0x86, 0x76, 0xb8, 0xcb, + 0x87, 0xab, 0x99, 0x45, 0x87, 0xf3, 0x68, 0xa0, 0x65, 0x38, 0x93, 0x2a, 0xbe, 0x6a, 0x3b, 0x24, + 0x98, 0x7f, 0x88, 0x7d, 0x36, 0x33, 0x43, 0x35, 0x73, 0xe0, 0x38, 0xb7, 0x15, 0xba, 0x09, 0x67, + 0xfb, 0xbe, 0x17, 0x12, 0x33, 0xbc, 0x41, 0xe5, 0x14, 0x47, 0x7c, 0x60, 0x30, 0x3f, 0xcf, 0xc6, + 0x82, 0x5d, 0x4c, 0xac, 0xe5, 0x55, 0xc0, 0xf9, 0xed, 0xd0, 0xbb, 0x1a, 0x5c, 0x0a, 0x42, 0x9f, + 0x18, 0x3d, 0xdb, 0xed, 0x36, 0x3d, 0xd7, 0x25, 0x8c, 0x53, 0xb6, 0xad, 0xd8, 0xcb, 0xf6, 0xe1, + 0x52, 0xac, 0x4a, 0xdf, 0xdf, 0xab, 0x5f, 0xea, 0x0c, 0xc5, 0x8c, 0x0f, 0xa0, 0xac, 0xef, 0xd5, + 0xb8, 0x0e, 0x9e, 0x61, 0xff, 0x74, 0x11, 0xf6, 0x48, 0xcf, 0xf3, 0x77, 0x17, 0xa3, 0xf8, 0x90, + 0xe2, 0x1e, 0x80, 0x2d, 0xc2, 0x95, 0x24, 0x08, 0xa7, 0xeb, 0x52, 0x11, 0x8d, 0x6d, 0x96, 0xab, + 0x9d, 0xb8, 0x7d, 0x2d, 0x16, 0xd1, 0xda, 0x29, 0x18, 0xce, 0xd4, 0x46, 0x4d, 0x38, 0x25, 0xca, + 0xda, 0x54, 0xd1, 0x09, 0xae, 0xfa, 0x24, 0x92, 0x7e, 0xa9, 0xc6, 0x70, 0xaa, 0x9d, 0x06, 0xe2, + 0x6c, 0x7d, 0xfa, 0x15, 0xf4, 0x87, 0xda, 0x8b, 0xd1, 0xf8, 0x2b, 0x56, 0x93, 0x20, 0x9c, 0xae, + 0x1b, 0x69, 0xa2, 0x89, 0x2e, 0x8c, 0xc5, 0x5f, 0xb1, 0x9a, 0x82, 0xe1, 0x4c, 0x6d, 0xfd, 0xdf, + 0x8f, 0xc2, 0xa3, 0x87, 0x90, 0x9a, 0x50, 0x2f, 0x7f, 0xb8, 0x8f, 0xbe, 0x77, 0x0e, 0x37, 0x3d, + 0xfd, 0x82, 0xe9, 0x39, 0x3a, 0xbd, 0xc3, 0x4e, 0x67, 0x50, 0x34, 0x9d, 0x47, 0x27, 0x79, 0xf8, + 0xe9, 0xef, 0xe5, 0x4f, 0x7f, 0xc9, 0x51, 0x3d, 0x70, 0xb9, 0xf4, 0x0b, 0x96, 0x4b, 0xc9, 0x51, + 0x3d, 0xc4, 0xf2, 0xfa, 0x0f, 0xa3, 0xf0, 0xd8, 0x61, 0xc4, 0xb7, 0x92, 0xeb, 0x2b, 0x87, 0xeb, + 0x3c, 0xd0, 0xf5, 0x55, 0xf4, 0x96, 0xe0, 0x01, 0xae, 0xaf, 0x1c, 0x92, 0x0f, 0x7a, 0x7d, 0x15, + 0x8d, 0xea, 0x83, 0x5a, 0x5f, 0x45, 0xa3, 0x7a, 0x88, 0xf5, 0xf5, 0xbf, 0xd2, 0xe7, 0x83, 0x14, + 0xd9, 0xda, 0x30, 0x62, 0xf6, 0x07, 0x25, 0x99, 0x14, 0xf3, 0x1b, 0x69, 0xae, 0xdd, 0xc6, 0x14, + 0x07, 0xc2, 0x30, 0xce, 0xd7, 0x4f, 0x49, 0x16, 0xc4, 0xbc, 0xdb, 0xf9, 0x92, 0xc4, 0x02, 0x13, + 0x1d, 0x2a, 0xd2, 0xdf, 0x24, 0x3d, 0xe2, 0x1b, 0x4e, 0x27, 0xf4, 0x7c, 0xa3, 0x5b, 0x96, 0xdb, + 0xb0, 0xa1, 0x5a, 0x4a, 0xe1, 0xc2, 0x19, 0xec, 0x74, 0x40, 0xfa, 0xb6, 0x55, 0x92, 0xbf, 0xb0, + 0x01, 0x59, 0x6b, 0xb7, 0x30, 0xc5, 0xa1, 0xff, 0xd6, 0x14, 0x28, 0xc1, 0x97, 0xd0, 0xc7, 0xe1, + 0x61, 0xc3, 0x71, 0xbc, 0x3b, 0x6b, 0xbe, 0xbd, 0x6d, 0x3b, 0xa4, 0x4b, 0x2c, 0x29, 0xcf, 0x04, + 0xc2, 0xbd, 0x88, 0xa9, 0x2d, 0x8b, 0x45, 0x95, 0x70, 0x71, 0x7b, 0xaa, 0x44, 0x9d, 0x32, 0xd3, + 0xb1, 0x6e, 0x2a, 0xb9, 0x1f, 0x64, 0x22, 0xe7, 0xf0, 0x0d, 0x95, 0x29, 0xc6, 0x59, 0xba, 0xe8, + 0x67, 0x35, 0x6e, 0x22, 0x93, 0x77, 0x02, 0x62, 0xd2, 0xae, 0xdf, 0xaf, 0x9b, 0xd3, 0xd8, 0xd8, + 0x16, 0x5f, 0x3b, 0x24, 0x29, 0xa2, 0x2f, 0x69, 0x70, 0x76, 0x2b, 0xcf, 0xbc, 0x2f, 0xe6, 0x76, + 0xad, 0x74, 0x5f, 0x0a, 0x2e, 0x0c, 0xb8, 0x50, 0x99, 0x5b, 0x01, 0xe7, 0xf7, 0x44, 0x8e, 0x93, + 0xb4, 0x77, 0x0a, 0x3e, 0x50, 0x7e, 0x9c, 0x52, 0x96, 0xd3, 0x78, 0x9c, 0x24, 0x00, 0x27, 0x29, + 0xa2, 0xb7, 0x60, 0x6a, 0x2b, 0x32, 0x33, 0x0b, 0xab, 0x52, 0xab, 0x34, 0x79, 0xc5, 0x58, 0xcd, + 0x6f, 0x9f, 0x64, 0x21, 0x8e, 0xa9, 0x20, 0x1b, 0x26, 0xb6, 0x38, 0x37, 0x12, 0xd6, 0xa0, 0x46, + 0x75, 0x45, 0x95, 0x9b, 0x24, 0x44, 0x11, 0x8e, 0xf0, 0xab, 0x4e, 0x96, 0x93, 0x07, 0xf8, 0xff, + 0xff, 0x9a, 0x06, 0x67, 0xb7, 0x89, 0x1f, 0xda, 0x66, 0xfa, 0x7e, 0x65, 0xaa, 0x82, 0x36, 0xfd, + 0x5a, 0x1e, 0x46, 0xbe, 0x54, 0x72, 0x41, 0x38, 0xbf, 0x0f, 0x54, 0xb7, 0xe6, 0x56, 0xf2, 0x4e, + 0x68, 0x84, 0xb6, 0x79, 0xcb, 0xdb, 0x22, 0x2e, 0xfd, 0x5a, 0x91, 0x75, 0x00, 0x18, 0xff, 0x60, + 0xba, 0xf5, 0x52, 0x71, 0x35, 0x3c, 0x0c, 0x87, 0xfe, 0x67, 0x1a, 0x64, 0x2c, 0xbd, 0xe8, 0xef, + 0x6a, 0x30, 0xb3, 0x41, 0x8c, 0x70, 0xe0, 0x93, 0x6b, 0x46, 0x28, 0x9f, 0x7b, 0xbe, 0x7e, 0x5f, + 0x2c, 0xcc, 0x0b, 0x57, 0x15, 0xcc, 0xdc, 0xff, 0x41, 0x86, 0x6f, 0x53, 0x41, 0x38, 0xd1, 0x85, + 0xf3, 0x2f, 0xc3, 0xa9, 0x4c, 0xc3, 0x23, 0x5d, 0xa2, 0xfe, 0xae, 0x06, 0x79, 0x99, 0x28, 0xd0, + 0x27, 0x60, 0xcc, 0xb0, 0x2c, 0x19, 0xae, 0xfa, 0xf9, 0x92, 0xbe, 0x3e, 0x96, 0xfa, 0xae, 0x96, + 0xfd, 0xc4, 0x1c, 0x2f, 0xba, 0x0a, 0xc8, 0x48, 0x5c, 0xe5, 0xaf, 0xc4, 0x6f, 0xce, 0xd8, 0x0d, + 0xd5, 0x62, 0x06, 0x8a, 0x73, 0x5a, 0xe8, 0xbf, 0xa8, 0x01, 0xca, 0xc6, 0xfc, 0x43, 0x01, 0x4c, + 0x8a, 0xd5, 0x1c, 0xcd, 0xd3, 0x52, 0xd9, 0x77, 0x07, 0x89, 0x67, 0x34, 0xf1, 0x4b, 0x07, 0x51, + 0x10, 0x60, 0x49, 0x48, 0xff, 0x4b, 0x0d, 0xe2, 0xc8, 0xb6, 0xe8, 0x23, 0x30, 0x6d, 0x91, 0xc0, + 0xf4, 0xed, 0x7e, 0x18, 0x3f, 0xba, 0x91, 0x8e, 0xfb, 0xad, 0x18, 0x84, 0xd5, 0x7a, 0x48, 0x87, + 0xf1, 0xd0, 0x08, 0xb6, 0xda, 0x2d, 0xa1, 0x5e, 0x32, 0x61, 0xe0, 0x16, 0x2b, 0xc1, 0x02, 0x12, + 0xc7, 0xee, 0x19, 0x39, 0x44, 0xec, 0x1e, 0xb4, 0x71, 0x1f, 0x02, 0x15, 0xa1, 0x83, 0x83, 0x14, + 0xe9, 0x7f, 0xbf, 0x06, 0x27, 0x68, 0x95, 0x15, 0xc3, 0x76, 0x43, 0xe2, 0x32, 0xf7, 0xf2, 0x92, + 0x83, 0xd0, 0x85, 0xd9, 0x30, 0x11, 0x4c, 0xf5, 0xe8, 0x0f, 0x90, 0xa4, 0xfb, 0x50, 0x32, 0x84, + 0x6a, 0x12, 0x2f, 0x7a, 0x2e, 0xf2, 0xef, 0xe7, 0x8a, 0xf8, 0xa3, 0xd1, 0x5a, 0x65, 0x4e, 0xfb, + 0xf7, 0x44, 0x30, 0x28, 0x19, 0x0f, 0x39, 0xe1, 0xca, 0xff, 0x23, 0x30, 0x2b, 0x9c, 0x6c, 0x79, + 0x10, 0x26, 0xa1, 0x88, 0xb3, 0x73, 0xe6, 0xaa, 0x0a, 0xc0, 0xc9, 0x7a, 0xfa, 0x1f, 0xd6, 0x20, + 0x19, 0x75, 0xb9, 0xec, 0x28, 0x65, 0x23, 0x50, 0xd5, 0x1e, 0x58, 0x04, 0xaa, 0x0f, 0xb3, 0x0c, + 0x05, 0x3c, 0x03, 0x0d, 0xbf, 0xbb, 0x56, 0xd3, 0x0a, 0xf0, 0xf4, 0x31, 0xb2, 0x46, 0x3c, 0xac, + 0xa3, 0x47, 0x1e, 0xd6, 0x8f, 0x08, 0x37, 0xfd, 0xb1, 0x44, 0x1c, 0xb0, 0xe8, 0x41, 0xc2, 0xa9, + 0x44, 0x43, 0xe5, 0x35, 0xc2, 0x37, 0x35, 0x98, 0x10, 0x71, 0x2e, 0x0f, 0xf1, 0xda, 0xa5, 0x0b, + 0x63, 0x4c, 0xf9, 0xa9, 0x24, 0x17, 0x76, 0x36, 0x3d, 0x2f, 0x4c, 0xc4, 0xfb, 0x64, 0xde, 0xe5, + 0xec, 0x5f, 0xcc, 0xf1, 0x33, 0x97, 0x45, 0xdf, 0xdc, 0xb4, 0x43, 0x62, 0x86, 0x51, 0x04, 0xc1, + 0xc8, 0x65, 0x51, 0x29, 0xc7, 0x89, 0x5a, 0xfa, 0xaf, 0x8d, 0xc2, 0x65, 0x81, 0x38, 0x23, 0x2a, + 0x49, 0x16, 0xb7, 0x0b, 0xa7, 0xc5, 0xe4, 0xb6, 0x7c, 0xc3, 0x96, 0x4e, 0x01, 0xe5, 0xb4, 0x60, + 0xe1, 0x30, 0x92, 0x41, 0x87, 0xf3, 0x68, 0xf0, 0x58, 0x78, 0xac, 0xf8, 0x3a, 0x31, 0x9c, 0x70, + 0x33, 0xa2, 0x5d, 0xab, 0x12, 0x0b, 0x2f, 0x8b, 0x0f, 0xe7, 0x52, 0x61, 0x4e, 0x09, 0x02, 0xd0, + 0xf4, 0x89, 0xa1, 0x7a, 0x44, 0x54, 0xf0, 0x0f, 0x5f, 0xc9, 0xc5, 0x88, 0x0b, 0x28, 0x31, 0x73, + 0xa2, 0xb1, 0xc3, 0xac, 0x13, 0x98, 0x84, 0xbe, 0xcd, 0xe2, 0xb6, 0x4a, 0x9b, 0xf6, 0x4a, 0x12, + 0x84, 0xd3, 0x75, 0xd1, 0xf3, 0x30, 0xc7, 0x9c, 0x3c, 0xe2, 0x78, 0x33, 0x63, 0xf1, 0xa3, 0xe8, + 0xd5, 0x04, 0x04, 0xa7, 0x6a, 0xea, 0x5f, 0xd6, 0x60, 0x46, 0x5d, 0x76, 0x87, 0x78, 0xfb, 0xb2, + 0xad, 0x1c, 0x87, 0x55, 0x9e, 0x65, 0xa8, 0x64, 0x0f, 0x73, 0x22, 0xfe, 0xed, 0x11, 0x38, 0x9d, + 0xd3, 0x86, 0xdd, 0xd8, 0x93, 0xd4, 0xd1, 0x5a, 0xe9, 0xc6, 0x3e, 0x73, 0x4e, 0xcb, 0x1b, 0xfb, + 0x34, 0x04, 0x67, 0x08, 0xa3, 0xd7, 0x61, 0xc4, 0xf4, 0x6d, 0x31, 0x30, 0xcf, 0x96, 0xd3, 0x11, + 0x71, 0xbb, 0x31, 0x2d, 0x48, 0x8e, 0x34, 0x71, 0x1b, 0x53, 0x8c, 0xf4, 0x88, 0x50, 0xf7, 0x75, + 0x74, 0x5e, 0xb3, 0x23, 0x42, 0xdd, 0xfe, 0x01, 0x4e, 0xd6, 0x43, 0x1f, 0x85, 0x79, 0x21, 0xb7, + 0x47, 0x8f, 0x5e, 0x3d, 0x37, 0x08, 0xe9, 0x16, 0x0c, 0x05, 0x4b, 0xbd, 0xb8, 0xbf, 0x57, 0x9f, + 0xbf, 0x51, 0x50, 0x07, 0x17, 0xb6, 0xd6, 0xff, 0xfb, 0x08, 0x4c, 0x2b, 0xf1, 0x80, 0xd1, 0x4a, + 0x15, 0xb3, 0x47, 0xfc, 0xc5, 0x91, 0xe9, 0x63, 0x05, 0x46, 0xba, 0xfd, 0x41, 0x49, 0xbb, 0x87, + 0x44, 0x77, 0x8d, 0xa2, 0xeb, 0xf6, 0x07, 0xe8, 0x35, 0x69, 0x49, 0x29, 0x67, 0xeb, 0x90, 0x6f, + 0x13, 0x52, 0xd6, 0x94, 0x68, 0xc7, 0x8c, 0x16, 0xee, 0x18, 0x17, 0x26, 0x02, 0x61, 0x66, 0x19, + 0xab, 0x10, 0x07, 0x42, 0x19, 0x6a, 0x61, 0x57, 0xe1, 0xea, 0x59, 0x64, 0x76, 0x89, 0x88, 0x50, + 0xb1, 0x6f, 0xc0, 0x5e, 0x3d, 0x32, 0xcd, 0x73, 0x92, 0x8b, 0x7d, 0xb7, 0x59, 0x09, 0x16, 0x90, + 0xcc, 0x61, 0x32, 0x71, 0xa8, 0xc3, 0xe4, 0x33, 0x35, 0x40, 0xd9, 0x6e, 0xa0, 0x47, 0x61, 0x8c, + 0xbd, 0x9c, 0x16, 0x5c, 0x43, 0x4a, 0xe9, 0xec, 0xe5, 0x2c, 0xe6, 0x30, 0xd4, 0x11, 0x2f, 0xda, + 0xcb, 0xcd, 0x27, 0x73, 0x7a, 0x11, 0xf4, 0x94, 0xe7, 0xef, 0xd1, 0xf1, 0x3c, 0x52, 0x78, 0x3c, + 0xdf, 0x86, 0x89, 0x9e, 0xed, 0xb2, 0x0b, 0xb7, 0x72, 0xe6, 0x27, 0x7e, 0x2b, 0xcf, 0x51, 0xe0, + 0x08, 0x97, 0xfe, 0x9d, 0x1a, 0x5d, 0xfb, 0xb1, 0x70, 0x7a, 0x17, 0xc0, 0x18, 0x84, 0x1e, 0x97, + 0x72, 0xc4, 0x16, 0xf8, 0xb1, 0x92, 0xd3, 0x2c, 0xb1, 0x2e, 0x4a, 0x8c, 0xfc, 0xb6, 0x3c, 0xfe, + 0x8d, 0x15, 0x6a, 0x94, 0x76, 0x68, 0xf7, 0xc8, 0xeb, 0xb6, 0x6b, 0x79, 0x77, 0xc4, 0xf8, 0x56, + 0xa6, 0x7d, 0x4b, 0x62, 0xe4, 0xb4, 0xe3, 0xdf, 0x58, 0xa1, 0x46, 0xb9, 0x0b, 0x53, 0x74, 0x5d, + 0x16, 0xa6, 0x5d, 0x74, 0xce, 0x73, 0x9c, 0xe8, 0x04, 0x9d, 0xe4, 0xdc, 0xa5, 0x59, 0x50, 0x07, + 0x17, 0xb6, 0xd6, 0xbf, 0xa2, 0xc1, 0xd9, 0xdc, 0xb1, 0x40, 0xd7, 0xe0, 0x54, 0xec, 0x29, 0xa5, + 0x72, 0xfc, 0xc9, 0x38, 0x41, 0xc0, 0x8d, 0x74, 0x05, 0x9c, 0x6d, 0x83, 0x56, 0xa4, 0xd8, 0xa3, + 0x9e, 0x28, 0xc2, 0xcd, 0xea, 0x82, 0x40, 0x95, 0x77, 0xe8, 0xe0, 0xbc, 0x76, 0xfa, 0xc7, 0x13, + 0x1d, 0x8e, 0x07, 0x8c, 0xee, 0x8f, 0x75, 0xd2, 0x95, 0xaf, 0x9c, 0xe4, 0xfe, 0x68, 0xd0, 0x42, + 0xcc, 0x61, 0xe8, 0x11, 0xf5, 0xf1, 0xa0, 0x64, 0x5f, 0xd1, 0x03, 0x42, 0x7d, 0x00, 0x20, 0xfc, + 0x19, 0x6d, 0xb7, 0x8b, 0xba, 0x30, 0x69, 0x88, 0xe4, 0x84, 0x62, 0xb1, 0xbd, 0x58, 0x4e, 0xad, + 0x16, 0x48, 0xb8, 0xeb, 0x7a, 0xf4, 0x0b, 0x4b, 0xe4, 0xfa, 0x3f, 0xd4, 0xe0, 0x5c, 0xfe, 0x03, + 0xe1, 0x43, 0x88, 0x0a, 0x3d, 0x98, 0xf6, 0xe3, 0x66, 0x62, 0x65, 0xfe, 0xb0, 0x1a, 0x82, 0x4f, + 0x09, 0x5b, 0x43, 0xc5, 0xa8, 0xa6, 0xef, 0x05, 0xd1, 0xec, 0xa4, 0xa3, 0xf2, 0x49, 0x1d, 0x46, + 0xe9, 0x09, 0x56, 0xf1, 0xeb, 0x9f, 0xae, 0x01, 0xac, 0x92, 0xf0, 0x8e, 0xe7, 0x6f, 0xd1, 0x31, + 0xfa, 0xbe, 0x7a, 0xa8, 0x7e, 0x11, 0x46, 0xfb, 0x9e, 0x15, 0x08, 0x46, 0xc5, 0x5e, 0x90, 0x33, + 0x37, 0x1f, 0x56, 0x8a, 0xea, 0x30, 0xc6, 0xee, 0x15, 0xc4, 0x21, 0xc2, 0x64, 0x7f, 0x2a, 0xb9, + 0x05, 0x98, 0x97, 0xf3, 0x1c, 0x34, 0xec, 0x61, 0x48, 0x20, 0xb4, 0x19, 0x91, 0x83, 0x86, 0x97, + 0x61, 0x09, 0xd5, 0x7f, 0x6e, 0x14, 0x12, 0x89, 0x38, 0x63, 0xf3, 0xcb, 0xe8, 0x03, 0x32, 0xbf, + 0x7c, 0x14, 0xe6, 0x1d, 0xcf, 0xb0, 0x1a, 0x86, 0x43, 0x97, 0xbd, 0xdf, 0xe1, 0xf3, 0x61, 0xb8, + 0x5d, 0x19, 0x9e, 0x87, 0xb1, 0x80, 0xe5, 0x82, 0x3a, 0xb8, 0xb0, 0x35, 0x1a, 0x28, 0xf9, 0x3f, + 0xa9, 0x3c, 0xb5, 0x52, 0x39, 0x51, 0xe9, 0x82, 0xfa, 0x2a, 0x48, 0x9e, 0xe8, 0xa9, 0x1c, 0xa1, + 0xbf, 0xa0, 0xc1, 0x59, 0xb2, 0x13, 0x12, 0xdf, 0x35, 0x9c, 0x5b, 0xbe, 0xb1, 0xb1, 0x61, 0x9b, + 0x09, 0x47, 0xca, 0xb5, 0xfd, 0xbd, 0xfa, 0xd9, 0xa5, 0xbc, 0x0a, 0xf7, 0xf6, 0xea, 0x4f, 0x67, + 0x33, 0xf1, 0x46, 0x6f, 0x80, 0x72, 0x9b, 0xb0, 0xe5, 0x98, 0x4f, 0xee, 0xfc, 0x73, 0x30, 0x7d, + 0x84, 0x17, 0x0d, 0x89, 0x47, 0xd7, 0xff, 0xbc, 0x06, 0x33, 0x74, 0x05, 0x2d, 0x7b, 0xa6, 0xe1, + 0xb4, 0x56, 0x3b, 0x47, 0x48, 0x63, 0x8b, 0x96, 0xe1, 0xcc, 0x86, 0xe7, 0x9b, 0xe4, 0x56, 0x73, + 0xed, 0x96, 0x27, 0xae, 0x26, 0x5a, 0xab, 0x1d, 0xc1, 0x17, 0x99, 0x8a, 0x75, 0x35, 0x07, 0x8e, + 0x73, 0x5b, 0xa1, 0x9b, 0x70, 0x36, 0x2e, 0xbf, 0xdd, 0xe7, 0x4e, 0x17, 0x14, 0xdd, 0x48, 0xec, + 0x34, 0x72, 0x35, 0xaf, 0x02, 0xce, 0x6f, 0x87, 0x0c, 0xb8, 0x20, 0xa2, 0x3a, 0x5c, 0xf5, 0xfc, + 0x3b, 0x86, 0x6f, 0x25, 0xd1, 0x8e, 0xc6, 0x46, 0xdb, 0x56, 0x71, 0x35, 0x3c, 0x0c, 0x87, 0xfe, + 0x85, 0x71, 0x50, 0xde, 0xaf, 0x1d, 0x21, 0xf9, 0xc8, 0x6f, 0x6a, 0x70, 0xc6, 0x74, 0x6c, 0xe2, + 0x86, 0xa9, 0x47, 0x4a, 0x9c, 0xb1, 0xbc, 0x56, 0xee, 0x65, 0x5d, 0x9f, 0xb8, 0xed, 0x96, 0x70, + 0x52, 0x69, 0xe6, 0x60, 0x17, 0x8e, 0x3c, 0x39, 0x10, 0x9c, 0xdb, 0x1b, 0xf6, 0x41, 0xac, 0xbc, + 0xdd, 0x52, 0x5f, 0xa3, 0x37, 0x45, 0x19, 0x96, 0x50, 0xf4, 0x24, 0x4c, 0x77, 0x7d, 0x6f, 0xd0, + 0x0f, 0x9a, 0xcc, 0x41, 0x96, 0xf3, 0x27, 0x26, 0x8c, 0x5d, 0x8b, 0x8b, 0xb1, 0x5a, 0x87, 0x8a, + 0x96, 0xfc, 0xe7, 0x9a, 0x4f, 0x36, 0xec, 0x1d, 0xc1, 0xaf, 0x98, 0x68, 0x79, 0x4d, 0x29, 0xc7, + 0x89, 0x5a, 0xe8, 0x43, 0x30, 0x65, 0x07, 0xc1, 0x80, 0xf8, 0xb7, 0xf1, 0xb2, 0x08, 0x38, 0xce, + 0xee, 0x3a, 0xda, 0x51, 0x21, 0x8e, 0xe1, 0xe8, 0x57, 0x34, 0x98, 0xf3, 0xc9, 0x5b, 0x03, 0xdb, + 0x27, 0x16, 0x23, 0x1a, 0x88, 0x57, 0x84, 0x9d, 0x8a, 0x4f, 0x17, 0x17, 0x70, 0x02, 0x2b, 0xe7, + 0x13, 0xd2, 0xae, 0x95, 0x04, 0xe2, 0x54, 0x17, 0xe8, 0x58, 0x05, 0x76, 0xd7, 0xb5, 0xdd, 0xee, + 0xa2, 0xd3, 0x0d, 0xe6, 0x27, 0x19, 0xef, 0xe3, 0x82, 0x6b, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, 0xab, + 0x1b, 0x04, 0x74, 0xe7, 0xf7, 0x08, 0x1f, 0xe0, 0xa9, 0xd8, 0xf0, 0x77, 0x5b, 0x05, 0xe0, 0x64, + 0x3d, 0xaa, 0xf4, 0x47, 0x05, 0x62, 0x98, 0x81, 0x47, 0x8a, 0xa2, 0xfd, 0xbc, 0x9d, 0x80, 0xe0, + 0x54, 0xcd, 0xf3, 0x8b, 0x70, 0x3a, 0xe7, 0x33, 0x8f, 0xc4, 0x5e, 0xbe, 0x5c, 0x83, 0xf7, 0x1f, + 0xb8, 0x2c, 0xd1, 0x17, 0x34, 0x98, 0x26, 0x3b, 0xa1, 0x6f, 0x48, 0x3f, 0x7a, 0x3a, 0x47, 0xdd, + 0x07, 0xb3, 0x09, 0x16, 0x96, 0x62, 0x4a, 0x7c, 0xde, 0xa4, 0xc4, 0xa0, 0x40, 0xb0, 0xda, 0x21, + 0xaa, 0x29, 0xf1, 0x48, 0x62, 0xaa, 0x81, 0x5c, 0x64, 0x73, 0x14, 0x90, 0xf3, 0x2f, 0xc1, 0xc9, + 0x34, 0xe6, 0xa3, 0x72, 0xe2, 0x89, 0x35, 0xdf, 0xa3, 0xc2, 0xcc, 0x31, 0x84, 0x8f, 0x5a, 0x4f, + 0x04, 0xc7, 0x2d, 0xf7, 0x34, 0x59, 0xf4, 0xb6, 0x30, 0x38, 0xf7, 0x9b, 0xa9, 0xe0, 0xdc, 0x8d, + 0x4a, 0x54, 0x86, 0x47, 0xe3, 0xfe, 0x96, 0x06, 0xd3, 0xa2, 0xe6, 0x31, 0xc4, 0x97, 0x32, 0x92, + 0xf1, 0xa5, 0x5e, 0xa8, 0xf2, 0x61, 0x05, 0x91, 0xa5, 0xde, 0xd5, 0x60, 0x56, 0xd4, 0x58, 0x21, + 0xbd, 0x75, 0xe2, 0xa3, 0xab, 0x30, 0x11, 0x0c, 0xd8, 0x5c, 0x8a, 0x2f, 0xba, 0xa0, 0x4a, 0xc8, + 0xfe, 0xba, 0x61, 0xb2, 0xac, 0xa4, 0xbc, 0x8a, 0x12, 0xf2, 0x9a, 0x17, 0xe0, 0xa8, 0x31, 0x95, + 0x77, 0x7d, 0xcf, 0xc9, 0x04, 0xa5, 0xc1, 0x9e, 0x43, 0x30, 0x83, 0x50, 0x31, 0x93, 0xfe, 0x8d, + 0x6c, 0x47, 0x4c, 0xcc, 0xa4, 0xe0, 0x00, 0xf3, 0x72, 0xfd, 0x33, 0xa3, 0x72, 0xb4, 0x59, 0x48, + 0xda, 0xeb, 0x30, 0x65, 0xfa, 0xc4, 0x08, 0x89, 0xd5, 0xd8, 0x3d, 0x4c, 0xe7, 0x18, 0xc7, 0x6e, + 0x46, 0x2d, 0x70, 0xdc, 0x98, 0xf2, 0x46, 0xf5, 0x5a, 0xa2, 0x16, 0x9f, 0x23, 0x85, 0x57, 0x12, + 0x2f, 0xc0, 0x98, 0x77, 0xc7, 0x95, 0x6e, 0x0e, 0x43, 0x09, 0xb3, 0x4f, 0xb9, 0x49, 0x6b, 0x63, + 0xde, 0x48, 0x0d, 0xca, 0x34, 0x3a, 0x24, 0x28, 0x53, 0x0f, 0x26, 0x7a, 0x6c, 0x1a, 0xaa, 0xc5, + 0x3f, 0x4e, 0xcc, 0xa8, 0x9a, 0x29, 0x83, 0xa1, 0xc6, 0x11, 0x0d, 0x7a, 0xca, 0x51, 0x46, 0x1c, + 0xf4, 0x0d, 0x93, 0xa8, 0xa7, 0xdc, 0x6a, 0x54, 0x88, 0x63, 0x38, 0xba, 0x9b, 0x8c, 0xf7, 0x35, + 0x51, 0xc1, 0x76, 0x24, 0xfa, 0xa7, 0x84, 0xf8, 0xe2, 0x83, 0x5f, 0x18, 0xf3, 0xeb, 0xb3, 0xa3, + 0x72, 0x99, 0x8a, 0x90, 0xe6, 0xf9, 0x29, 0x35, 0xb5, 0x52, 0x29, 0x35, 0x9f, 0x8e, 0xb2, 0x54, + 0xd6, 0x12, 0x69, 0x5d, 0x64, 0x96, 0xca, 0x19, 0x41, 0x3a, 0x91, 0x99, 0x72, 0x00, 0xa7, 0x83, + 0xd0, 0x70, 0x48, 0xc7, 0x16, 0xda, 0x75, 0x10, 0x1a, 0xbd, 0x7e, 0x89, 0xec, 0x2c, 0xdc, 0xe3, + 0x3c, 0x8b, 0x0a, 0xe7, 0xe1, 0x47, 0x3f, 0xa7, 0xc1, 0x3c, 0x2b, 0x5f, 0x1c, 0x84, 0x1e, 0x0f, + 0x33, 0x1b, 0x13, 0x3f, 0xfa, 0xed, 0x27, 0xd3, 0x85, 0x3a, 0x05, 0xf8, 0x70, 0x21, 0x25, 0xf4, + 0x36, 0x9c, 0x75, 0x8c, 0x20, 0x5c, 0x34, 0x43, 0x7b, 0xdb, 0x0e, 0x77, 0xe3, 0x2e, 0x1c, 0x3d, + 0x37, 0x24, 0x13, 0xb9, 0x97, 0xf3, 0x90, 0xe1, 0x7c, 0x1a, 0xfa, 0xff, 0xd6, 0x00, 0x65, 0x97, + 0x10, 0xea, 0xc1, 0xa4, 0x15, 0xb9, 0x80, 0x6b, 0xf7, 0x27, 0x1a, 0x9d, 0xe4, 0xce, 0xd2, 0x75, + 0x5c, 0x92, 0x40, 0x7d, 0x98, 0xba, 0xb3, 0x69, 0x87, 0xc4, 0xb1, 0x83, 0xf0, 0x7e, 0x45, 0xbf, + 0x93, 0x81, 0xa0, 0x5e, 0x8f, 0x30, 0xe3, 0x98, 0x88, 0xfe, 0xcb, 0xa3, 0x30, 0x79, 0x84, 0xbc, + 0xed, 0x03, 0x40, 0xa6, 0x92, 0x36, 0xa6, 0x8a, 0x4d, 0x81, 0xf9, 0x2d, 0x34, 0x33, 0xc8, 0x70, + 0x0e, 0x01, 0xf4, 0x36, 0x9c, 0xb1, 0xdd, 0x0d, 0xdf, 0x08, 0x42, 0x7f, 0xc0, 0xec, 0xb4, 0x55, + 0x92, 0xaf, 0x30, 0x55, 0xa2, 0x9d, 0x83, 0x0e, 0xe7, 0x12, 0x41, 0x1b, 0x30, 0x71, 0xc7, 0xf3, + 0xb7, 0x28, 0x03, 0x1d, 0xad, 0x90, 0x8a, 0xef, 0x75, 0x86, 0x23, 0xe6, 0x9c, 0xfc, 0x77, 0x80, + 0x23, 0xe4, 0x3c, 0x04, 0x06, 0xff, 0x3f, 0xba, 0xb6, 0x14, 0x4b, 0xbf, 0x55, 0x81, 0x60, 0x9c, + 0xd9, 0x91, 0x87, 0xc0, 0x48, 0x16, 0xe2, 0x34, 0x45, 0xfd, 0xf7, 0x35, 0x18, 0xe3, 0xef, 0x2c, + 0x1f, 0xbc, 0x28, 0xf7, 0x93, 0x09, 0x51, 0xae, 0x5c, 0xf6, 0x08, 0xd6, 0xd7, 0xc2, 0xb4, 0x06, + 0xdf, 0xd4, 0x60, 0x8a, 0xd5, 0x38, 0x06, 0xd1, 0xea, 0x13, 0x49, 0xd1, 0xea, 0xf9, 0xf2, 0x9f, + 0x53, 0x20, 0x58, 0xfd, 0xfe, 0x88, 0xf8, 0x18, 0x26, 0xb9, 0xb4, 0xe1, 0xb4, 0xf0, 0xa0, 0x5c, + 0xb6, 0x37, 0x08, 0x5d, 0xe6, 0x2d, 0x63, 0x37, 0x10, 0x31, 0x12, 0xf8, 0x1b, 0x9a, 0x2c, 0x18, + 0xe7, 0xb5, 0x41, 0xff, 0x42, 0xa3, 0x32, 0x42, 0xe8, 0xdb, 0x66, 0xb5, 0x5c, 0x01, 0xb2, 0x73, + 0x0b, 0x2b, 0x1c, 0x1b, 0xd7, 0x52, 0x6e, 0xc7, 0xc2, 0x02, 0x2b, 0xbd, 0xb7, 0x57, 0xaf, 0xe7, + 0xd8, 0x90, 0xe2, 0xf8, 0xe3, 0x41, 0xf8, 0xe9, 0xef, 0x0c, 0xad, 0xc2, 0x2c, 0xb0, 0x51, 0x97, + 0xd1, 0x75, 0x18, 0x0b, 0x4c, 0xaf, 0x4f, 0x8e, 0x92, 0x01, 0x45, 0x8e, 0x70, 0x87, 0xb6, 0xc4, + 0x1c, 0xc1, 0xf9, 0x37, 0x61, 0x46, 0xed, 0x79, 0x8e, 0x16, 0xd4, 0x52, 0xb5, 0xa0, 0x23, 0x5f, + 0xb5, 0xa8, 0x5a, 0xd3, 0xd7, 0x6b, 0x30, 0xce, 0xd3, 0x71, 0x1e, 0xc2, 0xce, 0xfc, 0x66, 0x14, + 0xe4, 0xb9, 0x4a, 0xb2, 0x61, 0x35, 0xde, 0xde, 0x1b, 0x9e, 0xab, 0x0c, 0x82, 0x1a, 0xe7, 0x19, + 0x79, 0x32, 0x0e, 0xe3, 0x48, 0x85, 0x14, 0x0d, 0xfc, 0xd3, 0x1e, 0x74, 0xe4, 0xc5, 0x6f, 0x69, + 0x30, 0x93, 0x88, 0x6c, 0xd9, 0x83, 0x11, 0x5f, 0x66, 0xf0, 0x29, 0x6b, 0x88, 0x8f, 0x3c, 0x70, + 0x2e, 0x0c, 0xa9, 0x84, 0x29, 0x1d, 0x19, 0x04, 0xb3, 0x76, 0x9f, 0x82, 0x60, 0xea, 0xbf, 0xaa, + 0xc1, 0xb9, 0xe8, 0x83, 0x92, 0xe1, 0x8a, 0xd0, 0xe3, 0x30, 0x69, 0xf4, 0x6d, 0x66, 0x60, 0x52, + 0x6d, 0x74, 0x8b, 0x6b, 0x6d, 0x56, 0x86, 0x25, 0x14, 0x7d, 0x18, 0x26, 0xa3, 0xa5, 0x27, 0xe4, + 0x4f, 0xc9, 0xb7, 0xe4, 0xd5, 0x82, 0xac, 0x81, 0x3e, 0xa0, 0x04, 0xe2, 0x1e, 0x8b, 0xc5, 0x05, + 0x49, 0x98, 0x5f, 0x44, 0xea, 0x3f, 0x0c, 0x53, 0x9d, 0xce, 0x75, 0x1e, 0xc6, 0xe5, 0x08, 0xb6, + 0x56, 0xfd, 0x9d, 0x11, 0x98, 0xe5, 0x06, 0x87, 0x86, 0xed, 0x5a, 0xb6, 0xdb, 0x3d, 0x86, 0x83, + 0xe5, 0x16, 0x4c, 0x71, 0xdb, 0xc6, 0x01, 0xd9, 0x96, 0x3a, 0x51, 0xa5, 0x74, 0x44, 0x58, 0x09, + 0xc0, 0x31, 0x22, 0x74, 0x03, 0xc6, 0xdf, 0xa2, 0x1c, 0x2e, 0xda, 0x18, 0x87, 0x62, 0x34, 0x72, + 0xd1, 0x33, 0xe6, 0x18, 0x60, 0x81, 0x02, 0x85, 0xcc, 0x45, 0x8c, 0xc9, 0x5d, 0x95, 0xc2, 0x0f, + 0x24, 0x86, 0x56, 0x46, 0xe2, 0x9f, 0x11, 0xae, 0x66, 0xec, 0x17, 0x96, 0x94, 0x58, 0x48, 0xeb, + 0x44, 0x8b, 0xf7, 0x4a, 0x48, 0xeb, 0x44, 0xa7, 0x0b, 0xce, 0xc7, 0xe7, 0xe0, 0x6c, 0xee, 0x68, + 0x1c, 0x2c, 0xd7, 0xea, 0x5f, 0xad, 0xc1, 0x68, 0x87, 0x10, 0xeb, 0x18, 0xd6, 0xe6, 0x27, 0x12, + 0x42, 0xcf, 0x8b, 0xe5, 0x83, 0x6a, 0x17, 0x19, 0xaf, 0xba, 0x29, 0xe3, 0xd5, 0xcb, 0xe5, 0x49, + 0x0c, 0xb7, 0x5c, 0xfd, 0x7a, 0x0d, 0x80, 0x56, 0x6b, 0x18, 0xe6, 0x16, 0xe7, 0x3a, 0x72, 0x45, + 0x6b, 0x49, 0xae, 0x93, 0x5d, 0x89, 0xc7, 0x79, 0x33, 0xa9, 0xc3, 0x38, 0x4f, 0x77, 0x2d, 0x6e, + 0x02, 0x80, 0xe7, 0x02, 0xa5, 0x25, 0x58, 0x40, 0x92, 0x1c, 0x63, 0xf4, 0x3e, 0x71, 0x0c, 0xfd, + 0xab, 0x1a, 0xb0, 0xc4, 0x6d, 0xad, 0x55, 0xf6, 0x30, 0xdb, 0xe6, 0x57, 0x74, 0x2d, 0x35, 0x20, + 0x28, 0x33, 0x84, 0xb7, 0x55, 0x00, 0x4e, 0xd6, 0x43, 0xae, 0x32, 0xae, 0xb5, 0x0a, 0xfa, 0x80, + 0xe8, 0xc8, 0x81, 0x3c, 0xe2, 0xbb, 0x35, 0x38, 0x91, 0xaa, 0x7b, 0x08, 0xcd, 0xf0, 0xc1, 0xb0, + 0x5c, 0x25, 0x81, 0xc7, 0xc8, 0x31, 0x24, 0xf0, 0x90, 0xb9, 0x34, 0x46, 0x1f, 0x70, 0x2e, 0x8d, + 0x6f, 0x68, 0x30, 0x49, 0xc7, 0xf8, 0x18, 0xd8, 0xef, 0x4f, 0x24, 0xd9, 0xef, 0x73, 0xa5, 0xd7, + 0x4e, 0x01, 0xd7, 0xfd, 0x4b, 0x0d, 0x58, 0x48, 0x7f, 0xe1, 0x97, 0xa0, 0x5c, 0xf5, 0x6b, 0x05, + 0x57, 0xfd, 0x97, 0x85, 0xa7, 0x40, 0xca, 0x8c, 0xab, 0x78, 0x0b, 0x7c, 0x58, 0x71, 0x06, 0x18, + 0x49, 0xb2, 0x92, 0xac, 0x43, 0x00, 0x7a, 0x1b, 0x66, 0x83, 0x4d, 0xcf, 0x0b, 0xe5, 0x63, 0xfd, + 0xd1, 0x0a, 0x46, 0x7b, 0xe6, 0xa7, 0x1c, 0x7d, 0x0b, 0xdf, 0x9d, 0x1d, 0x15, 0x39, 0x4e, 0xd2, + 0xd2, 0xff, 0x44, 0x7c, 0xfe, 0x11, 0xb6, 0xca, 0x31, 0xb2, 0xbe, 0x0f, 0xa6, 0x58, 0x9f, 0x92, + 0x0a, 0x39, 0xc1, 0xfe, 0xea, 0xf1, 0xc2, 0x97, 0x76, 0xf3, 0xc4, 0x82, 0xfd, 0xa7, 0xe2, 0x33, + 0x65, 0xaa, 0x86, 0x3e, 0xcc, 0x3a, 0x6a, 0x3e, 0x3e, 0xb1, 0x72, 0x4b, 0xa5, 0xf2, 0x93, 0xaf, + 0x0f, 0x12, 0xc5, 0x38, 0x49, 0x80, 0x32, 0xd0, 0xe8, 0xeb, 0x58, 0xa2, 0x7e, 0x91, 0x09, 0x88, + 0x4d, 0xd1, 0x9a, 0x0a, 0xc0, 0xc9, 0x7a, 0xfa, 0x17, 0x6b, 0xf0, 0x08, 0xef, 0x3b, 0xb3, 0x71, + 0xb4, 0x48, 0x9f, 0xb8, 0x16, 0x71, 0xcd, 0x5d, 0x26, 0x60, 0x5b, 0x5e, 0x17, 0xfd, 0x9c, 0x06, + 0x93, 0xc4, 0xb5, 0xfa, 0x9e, 0xed, 0x46, 0x57, 0x14, 0x6f, 0x54, 0xc8, 0x76, 0x51, 0x40, 0x66, + 0x49, 0x50, 0x10, 0x51, 0x34, 0xc5, 0x2f, 0x2c, 0x29, 0xa3, 0x1d, 0x18, 0xeb, 0xfb, 0xde, 0x7a, + 0xa4, 0x5c, 0xbe, 0x7e, 0xff, 0xbb, 0xb0, 0x46, 0xd1, 0xf3, 0xe9, 0x65, 0xff, 0x62, 0x4e, 0x50, + 0xc7, 0xf0, 0x81, 0x43, 0x75, 0xfd, 0x28, 0x82, 0xff, 0x4d, 0xd0, 0x0f, 0xee, 0xcb, 0x51, 0x10, + 0xbe, 0x0a, 0x8f, 0x29, 0x08, 0x97, 0x76, 0xa8, 0x26, 0xd2, 0x34, 0xfa, 0x86, 0x49, 0x35, 0x6b, + 0xf6, 0x32, 0x99, 0xdb, 0xde, 0x8f, 0x80, 0xf2, 0x17, 0x47, 0xa1, 0xae, 0xe0, 0x4c, 0x78, 0xf0, + 0x44, 0xec, 0xe5, 0xf3, 0x1a, 0x4c, 0x1b, 0xae, 0xeb, 0x85, 0x86, 0x9a, 0xeb, 0x94, 0x54, 0x9d, + 0x9c, 0x3c, 0x5a, 0x0b, 0x8b, 0x31, 0x9d, 0xd4, 0x0d, 0xaf, 0x02, 0xc1, 0x6a, 0x77, 0x86, 0xf8, + 0xf2, 0xd4, 0x8e, 0xd5, 0x97, 0x07, 0x7d, 0x2a, 0xe2, 0x21, 0x5c, 0x3b, 0xfa, 0xd8, 0x83, 0x18, + 0x20, 0xc6, 0x93, 0xf2, 0xed, 0x16, 0xe7, 0x5f, 0x82, 0x93, 0xe9, 0xe1, 0x3b, 0x92, 0x2d, 0xe1, + 0x77, 0x46, 0x12, 0xeb, 0xab, 0x90, 0xfc, 0x21, 0xcc, 0x35, 0x5f, 0x4a, 0x2d, 0x19, 0x7e, 0xf4, + 0xbe, 0xf9, 0xc0, 0x46, 0xe4, 0xfe, 0xae, 0x9b, 0x63, 0xf6, 0x01, 0xab, 0x3a, 0x6f, 0x4d, 0x38, + 0xa7, 0x8c, 0x11, 0xbb, 0x22, 0x6d, 0x6e, 0x12, 0x73, 0xeb, 0x48, 0x56, 0x8a, 0x06, 0xd5, 0x1d, + 0x25, 0x12, 0x25, 0x17, 0xd2, 0x13, 0x30, 0xb1, 0x6d, 0x07, 0x76, 0x14, 0x32, 0x43, 0xc1, 0xf1, + 0x1a, 0x2f, 0xc6, 0x11, 0x5c, 0x5f, 0x81, 0xcb, 0x0a, 0x8e, 0xdc, 0x67, 0xba, 0x47, 0xe9, 0xd2, + 0x3f, 0x9e, 0x88, 0x8e, 0x5c, 0xf1, 0x86, 0xe9, 0x6b, 0x1a, 0x3c, 0x4c, 0x8a, 0xb8, 0x9e, 0x38, + 0xb6, 0x2a, 0xef, 0xba, 0x42, 0xb6, 0x2a, 0xe2, 0x11, 0x16, 0x81, 0x71, 0x71, 0xd7, 0xd0, 0xdd, + 0x44, 0x1a, 0xaf, 0x5a, 0x25, 0x6b, 0x47, 0xce, 0x1c, 0x0d, 0x4b, 0xe2, 0x85, 0x7e, 0x43, 0x83, + 0x33, 0x4e, 0xce, 0xbe, 0x11, 0x42, 0xe2, 0xad, 0x07, 0xb1, 0x27, 0xf9, 0x15, 0x53, 0x1e, 0x04, + 0xe7, 0xf6, 0x05, 0xfd, 0x83, 0xc2, 0x37, 0xe4, 0x63, 0x15, 0x32, 0xd5, 0x1e, 0xb4, 0x18, 0x4b, + 0x3c, 0x27, 0xff, 0x14, 0x4c, 0x7b, 0xf1, 0x06, 0x13, 0xef, 0xfe, 0x6f, 0x54, 0xed, 0x9d, 0xb2, + 0x67, 0xf9, 0xa5, 0xbd, 0x52, 0x80, 0x55, 0x82, 0xe8, 0x5d, 0x0d, 0x90, 0x95, 0x91, 0x24, 0x84, + 0xe3, 0x00, 0xbe, 0xff, 0xf2, 0x12, 0xbf, 0xa5, 0xcc, 0x96, 0xe3, 0x9c, 0x5e, 0xe8, 0xff, 0x7a, + 0x82, 0x2b, 0x75, 0xec, 0x7a, 0xc6, 0x84, 0xf1, 0x75, 0x66, 0x17, 0x11, 0x1b, 0xb3, 0xbc, 0x15, + 0x86, 0x9b, 0x57, 0xb8, 0xd5, 0x82, 0xff, 0x8f, 0x05, 0x6a, 0xb4, 0x00, 0xb0, 0xee, 0x78, 0xe6, + 0x56, 0xb3, 0xdd, 0xc2, 0x91, 0x3c, 0xcc, 0x36, 0x43, 0x43, 0x96, 0x62, 0xa5, 0x06, 0xfa, 0x38, + 0x8c, 0x58, 0x52, 0x95, 0x7e, 0xa1, 0x8a, 0x15, 0x21, 0xf6, 0xdf, 0x6f, 0xad, 0x76, 0x30, 0xc5, + 0x8a, 0x3c, 0x98, 0x74, 0x85, 0xde, 0x24, 0x36, 0x57, 0xf9, 0x8c, 0x71, 0x52, 0x01, 0x93, 0x7a, + 0x5f, 0x54, 0x82, 0x25, 0x11, 0x4a, 0x50, 0x1a, 0x46, 0xc6, 0x2a, 0x12, 0x94, 0x56, 0x91, 0x61, + 0x36, 0xab, 0x35, 0xd5, 0xc6, 0x31, 0x7e, 0x78, 0x1b, 0xc7, 0x6c, 0xa1, 0x7d, 0x63, 0x03, 0xc6, + 0x43, 0xc3, 0x76, 0xc3, 0xc8, 0xbb, 0xf3, 0xa5, 0xd2, 0x1f, 0x70, 0x8b, 0xa2, 0x89, 0xf5, 0x3b, + 0xf6, 0x33, 0xc0, 0x02, 0x3b, 0x5d, 0x8d, 0xdb, 0x2c, 0xb1, 0xa6, 0x08, 0x5c, 0x5a, 0x7e, 0x35, + 0xf2, 0xfc, 0x9c, 0x7c, 0x35, 0xf2, 0xff, 0xb1, 0x40, 0x8d, 0xb6, 0xa8, 0xd6, 0x2e, 0x2e, 0xae, + 0xa7, 0x2a, 0xa7, 0x0c, 0x14, 0xb7, 0xd6, 0xe2, 0x15, 0x80, 0xb8, 0xae, 0x96, 0x04, 0x90, 0x09, + 0x13, 0xc2, 0x4c, 0x26, 0x32, 0x35, 0xbc, 0x50, 0x25, 0x5b, 0x4e, 0x94, 0x76, 0x96, 0x3f, 0xcd, + 0x8e, 0x30, 0xeb, 0x7f, 0x32, 0xca, 0x2d, 0x9c, 0xc2, 0x41, 0xc8, 0x67, 0x49, 0x7a, 0xa2, 0x37, + 0xa8, 0x5a, 0x85, 0x19, 0x93, 0x0f, 0x54, 0x13, 0xc9, 0x79, 0xa2, 0x37, 0xac, 0x0a, 0x15, 0xd4, + 0x85, 0xc9, 0x08, 0x59, 0x25, 0x93, 0x71, 0x94, 0x17, 0x8d, 0x0f, 0xa8, 0xcc, 0x92, 0x26, 0x91, + 0xa3, 0x66, 0xde, 0x9b, 0x23, 0x25, 0xe2, 0xde, 0xa1, 0xde, 0x1b, 0xe5, 0xbb, 0x50, 0x8d, 0x96, + 0x72, 0xa1, 0x7a, 0x11, 0x4e, 0x88, 0xcb, 0xea, 0xb6, 0x45, 0xd8, 0xf5, 0xa9, 0x70, 0xb4, 0x66, + 0x8e, 0x0c, 0xcd, 0x24, 0x08, 0xa7, 0xeb, 0xa2, 0x2f, 0x6b, 0xf0, 0x18, 0x77, 0xf2, 0x6e, 0xd2, + 0xa3, 0x8c, 0xa5, 0x3c, 0x25, 0x71, 0x8e, 0xd5, 0xd8, 0xbd, 0x68, 0xfc, 0xc8, 0xee, 0x45, 0x8f, + 0xef, 0xef, 0xd5, 0x1f, 0x6b, 0x1e, 0x02, 0x37, 0x3e, 0x54, 0x0f, 0xf4, 0x1b, 0x30, 0x25, 0xb7, + 0x30, 0x7a, 0x44, 0x11, 0x7d, 0x63, 0x2e, 0x7b, 0x83, 0xec, 0x72, 0x39, 0xb8, 0x9e, 0x90, 0x83, + 0xb9, 0x2a, 0xff, 0x1a, 0x2d, 0x10, 0x22, 0xb1, 0xfe, 0x5f, 0x34, 0xbe, 0x66, 0x45, 0x9a, 0x5e, + 0x03, 0xa6, 0x7b, 0x3c, 0xd8, 0x20, 0x7b, 0x21, 0xa8, 0x95, 0x7f, 0x9b, 0xb8, 0x12, 0xa3, 0xc1, + 0x2a, 0x4e, 0xb4, 0x93, 0xcd, 0x25, 0x7d, 0xad, 0x22, 0x7f, 0x39, 0x74, 0x4a, 0x69, 0x94, 0x6d, + 0x43, 0x65, 0xec, 0xc8, 0x31, 0x32, 0x95, 0xbc, 0x37, 0xe3, 0x1c, 0x79, 0x60, 0xba, 0x45, 0xfd, + 0xeb, 0x35, 0xc8, 0xcd, 0x63, 0x83, 0x74, 0x18, 0xe7, 0xee, 0xfa, 0x6a, 0x96, 0x6d, 0xee, 0xcb, + 0x8f, 0x05, 0x04, 0xdd, 0xe4, 0x2a, 0x96, 0x6b, 0xb1, 0x98, 0x39, 0xf1, 0xd4, 0xab, 0x2f, 0x43, + 0x96, 0xf2, 0x2a, 0xe0, 0xfc, 0x76, 0x68, 0x1b, 0x50, 0xcf, 0xd8, 0x49, 0x63, 0xab, 0x90, 0xda, + 0x60, 0x25, 0x83, 0x0d, 0xe7, 0x50, 0xa0, 0x7b, 0xd1, 0x30, 0x4d, 0xd2, 0x0f, 0x89, 0xc5, 0x3f, + 0x31, 0x7a, 0x82, 0xcf, 0xf6, 0xe2, 0x62, 0x12, 0x84, 0xd3, 0x75, 0xf5, 0xdf, 0xa9, 0xc1, 0x18, + 0xb3, 0xa2, 0xbe, 0x47, 0x9c, 0x8a, 0x58, 0x5f, 0x0b, 0x2f, 0xd8, 0x36, 0x53, 0x17, 0x6c, 0xaf, + 0x54, 0xa0, 0x31, 0xfc, 0x86, 0xed, 0x63, 0x70, 0x8e, 0x55, 0x5b, 0xb4, 0x98, 0x38, 0x1e, 0x10, + 0x6b, 0xd1, 0xb2, 0xd8, 0x9b, 0xb7, 0x83, 0x6d, 0x10, 0x8f, 0xc0, 0xc8, 0xc0, 0x77, 0xd2, 0xaf, + 0x2d, 0x6f, 0xe3, 0x65, 0x4c, 0xcb, 0xf5, 0xcf, 0x6a, 0x70, 0x92, 0xe1, 0x6e, 0xfa, 0x84, 0xb1, + 0x4c, 0xc3, 0x09, 0xd0, 0x1d, 0x98, 0xf4, 0x85, 0x22, 0x2e, 0x66, 0x67, 0xa5, 0xfc, 0xb7, 0x29, + 0x88, 0xb1, 0x40, 0x2a, 0x52, 0x20, 0x89, 0x5f, 0x58, 0x12, 0xd3, 0xff, 0x62, 0x1c, 0xe6, 0x8b, + 0x1a, 0xa1, 0x5f, 0xd1, 0xe0, 0x9c, 0x19, 0x73, 0xd0, 0xc5, 0x41, 0xb8, 0xe9, 0xf9, 0x76, 0x68, + 0x93, 0xa0, 0x92, 0x6c, 0xdd, 0x5c, 0x94, 0xdd, 0x62, 0x31, 0x2d, 0x9a, 0xb9, 0x24, 0x70, 0x01, + 0x69, 0xf4, 0x49, 0x80, 0xad, 0x38, 0x90, 0x56, 0xad, 0x42, 0x6e, 0x6a, 0xf6, 0xe1, 0x4a, 0xb4, + 0xad, 0xa8, 0x57, 0x4c, 0x92, 0x57, 0xca, 0x15, 0x7a, 0x2c, 0x33, 0x76, 0xb0, 0x79, 0x83, 0xec, + 0xf6, 0x0d, 0xdb, 0xaf, 0x94, 0x19, 0x9b, 0xaf, 0xc3, 0xce, 0x75, 0x81, 0x2b, 0x49, 0x5d, 0x29, + 0x57, 0xe8, 0xa1, 0xbf, 0xa5, 0xc1, 0x2c, 0x3f, 0xb1, 0x85, 0x3b, 0x91, 0x60, 0x41, 0x37, 0xcb, + 0xf7, 0xe0, 0xa6, 0x8a, 0x4e, 0x76, 0x82, 0x19, 0xf7, 0x93, 0xa0, 0x24, 0x61, 0xf4, 0x39, 0x0d, + 0x4e, 0x25, 0x33, 0x8a, 0xdd, 0x20, 0xbb, 0x42, 0x1d, 0xe8, 0x54, 0x18, 0x90, 0x34, 0x4a, 0xd9, + 0x25, 0x26, 0x0c, 0x65, 0xc1, 0xd9, 0x4e, 0xb0, 0xae, 0x91, 0xd0, 0xb4, 0x44, 0xa6, 0x7a, 0xdb, + 0x73, 0x69, 0xd7, 0xc6, 0xab, 0x76, 0x6d, 0xe9, 0x56, 0xb3, 0x95, 0x40, 0x99, 0xec, 0x5a, 0x16, + 0x9c, 0xed, 0x84, 0xfe, 0xa7, 0xa3, 0x70, 0x69, 0x38, 0x32, 0xf4, 0x72, 0xe4, 0xc1, 0xce, 0x59, + 0xcc, 0x13, 0x69, 0x0f, 0xf6, 0xf9, 0x9c, 0xad, 0x9a, 0xf0, 0x66, 0xf7, 0x01, 0x39, 0x46, 0x10, + 0x36, 0xbd, 0x5e, 0xdf, 0x21, 0x91, 0xc0, 0x53, 0x26, 0xe8, 0xd2, 0xbe, 0x08, 0x81, 0x94, 0xc4, + 0x84, 0x73, 0xb0, 0x47, 0x34, 0x79, 0xee, 0x50, 0x49, 0x73, 0xa4, 0x3c, 0xcd, 0x24, 0x26, 0x9c, + 0x83, 0x1d, 0xbd, 0xa3, 0xc1, 0xf9, 0x64, 0xf1, 0x55, 0xdb, 0xb5, 0x83, 0x4d, 0x11, 0x8c, 0xeb, + 0xe8, 0x0e, 0xf4, 0x2c, 0x10, 0xfd, 0x72, 0x21, 0x46, 0x3c, 0x84, 0x1a, 0xfa, 0x25, 0x0d, 0x2e, + 0xa4, 0xc6, 0x25, 0x11, 0x1a, 0xec, 0xe8, 0xbe, 0xf4, 0xec, 0x9d, 0xe9, 0x72, 0x31, 0x4a, 0x3c, + 0x8c, 0x9e, 0xfe, 0xb3, 0x35, 0x78, 0xa8, 0x80, 0xbf, 0x15, 0x4c, 0x96, 0xf6, 0x40, 0x27, 0xeb, + 0x7b, 0xb0, 0x28, 0x99, 0x13, 0x32, 0x1b, 0x83, 0xf7, 0x8a, 0x13, 0x32, 0xeb, 0x6c, 0xc1, 0x75, + 0xff, 0xef, 0x69, 0x70, 0x2a, 0x13, 0xcb, 0xeb, 0x10, 0xe2, 0xc8, 0x31, 0x5e, 0x7a, 0x7f, 0x20, + 0x9d, 0x21, 0x7d, 0x3a, 0x37, 0x3b, 0xfa, 0xeb, 0x30, 0x9b, 0xb8, 0xec, 0x97, 0x11, 0x0c, 0xb4, + 0xdc, 0x08, 0x06, 0x6a, 0x80, 0x82, 0xda, 0xf0, 0x00, 0x05, 0x35, 0x38, 0x5f, 0x7c, 0xa6, 0xfd, + 0x95, 0x59, 0xf6, 0x72, 0xeb, 0x67, 0x85, 0x8b, 0xbf, 0x32, 0x63, 0x20, 0xcf, 0xd9, 0x42, 0x79, + 0xe2, 0xaf, 0xcf, 0xd9, 0xbf, 0x3e, 0x67, 0xef, 0xc3, 0x39, 0xfb, 0xb5, 0x13, 0xe2, 0x8c, 0x61, + 0x97, 0x0f, 0x9f, 0x80, 0x71, 0x16, 0xb9, 0x24, 0x52, 0x90, 0x7e, 0xb4, 0x7c, 0x48, 0x94, 0x80, + 0x1b, 0x36, 0xf8, 0xff, 0x58, 0xa0, 0x45, 0x2d, 0x38, 0x69, 0x3a, 0xde, 0xc0, 0x12, 0xf9, 0xe6, + 0x56, 0x63, 0x1b, 0x8a, 0x0c, 0x25, 0xd7, 0x4c, 0xc1, 0x71, 0xa6, 0x05, 0xea, 0xa8, 0xd7, 0x11, + 0xcf, 0x96, 0x75, 0xb6, 0xe3, 0xe1, 0xd3, 0xe5, 0x35, 0x84, 0x0f, 0x40, 0xa2, 0xe3, 0x22, 0x7a, + 0xb1, 0xf5, 0x52, 0xc9, 0x30, 0x79, 0xf2, 0xd4, 0x89, 0x2c, 0x0e, 0xb2, 0x28, 0xc0, 0x0a, 0x15, + 0x14, 0xc0, 0xf4, 0xa6, 0xbd, 0x4e, 0x7c, 0x37, 0x4e, 0x59, 0x5d, 0xd6, 0x2c, 0x70, 0x3d, 0xc6, + 0xc3, 0xcd, 0x6e, 0x4a, 0x01, 0x56, 0xa9, 0xa0, 0x80, 0x2b, 0xa0, 0xdc, 0x00, 0x5b, 0x29, 0xb1, + 0x75, 0x6c, 0xda, 0x8d, 0xbf, 0x34, 0x2e, 0xc3, 0x0a, 0x19, 0x4a, 0xd4, 0x95, 0x01, 0x88, 0xc4, + 0xbd, 0x5b, 0x39, 0xa2, 0x71, 0x1c, 0xa3, 0x98, 0x68, 0x5c, 0x86, 0x15, 0x32, 0x74, 0x78, 0x7b, + 0x71, 0xd8, 0x29, 0x71, 0x85, 0xf1, 0x4a, 0xd5, 0xf8, 0x5f, 0xc2, 0xaa, 0x19, 0x17, 0x60, 0x95, + 0x0a, 0xf2, 0x00, 0x7a, 0x32, 0x1c, 0x95, 0xb8, 0xcf, 0x28, 0xf7, 0xa5, 0x71, 0x54, 0x2b, 0xae, + 0x54, 0xc7, 0xbf, 0xb1, 0x42, 0x02, 0x6d, 0x29, 0xd7, 0x59, 0x50, 0xc1, 0xd2, 0x7f, 0xa8, 0xab, + 0xac, 0x8f, 0xc4, 0x36, 0xd2, 0x69, 0xb6, 0x6f, 0x2f, 0x28, 0xf6, 0xd1, 0x7b, 0x7b, 0xf5, 0x19, + 0xc6, 0x4c, 0x32, 0xf6, 0xd2, 0xd8, 0x9f, 0x70, 0x66, 0xa8, 0x3f, 0xe1, 0x35, 0xaa, 0x94, 0x2b, + 0xae, 0xf8, 0x8c, 0x41, 0xcc, 0xb2, 0x26, 0x32, 0x80, 0x59, 0x27, 0x5d, 0x01, 0x67, 0xdb, 0x70, + 0xa9, 0x8b, 0x58, 0xac, 0xfd, 0x9c, 0x2a, 0x75, 0xf1, 0x32, 0x2c, 0xa1, 0xe8, 0x0e, 0xcc, 0x04, + 0x8a, 0x83, 0xa2, 0xc8, 0x65, 0x56, 0xe5, 0x06, 0x4a, 0x78, 0x27, 0xb2, 0xb8, 0x2e, 0x6a, 0x09, + 0x4e, 0x10, 0x42, 0x9f, 0x84, 0xa9, 0xc8, 0x62, 0x1e, 0xcc, 0x9f, 0xac, 0xf0, 0x7c, 0x2e, 0x3f, + 0x0a, 0x59, 0x6c, 0x02, 0x8f, 0x40, 0x01, 0x8e, 0x09, 0xa2, 0xed, 0xe4, 0x13, 0xfa, 0x53, 0xf7, + 0xe7, 0xd1, 0xb0, 0x74, 0x1f, 0x2a, 0x7a, 0x3e, 0x8f, 0x9a, 0x70, 0x8a, 0xec, 0xf4, 0xbd, 0x60, + 0xe0, 0x13, 0x16, 0x04, 0x91, 0xcd, 0x10, 0x8a, 0xaf, 0x8b, 0x96, 0xd2, 0x40, 0x9c, 0xad, 0x8f, + 0x3e, 0xa3, 0xc1, 0x49, 0x9e, 0x0c, 0x8e, 0x9e, 0x6b, 0x9e, 0x4b, 0xdc, 0x30, 0x60, 0xd9, 0xce, + 0xca, 0x3e, 0x71, 0xeb, 0xa4, 0x90, 0xf1, 0xfc, 0x1d, 0xe9, 0x52, 0x9c, 0x21, 0x4a, 0x57, 0x8f, + 0xfa, 0xee, 0x98, 0x65, 0x4d, 0x2b, 0xbb, 0x7a, 0xd4, 0x47, 0xcd, 0x7c, 0xf5, 0xa8, 0x25, 0x38, + 0x41, 0x48, 0xff, 0x37, 0x1a, 0x80, 0x34, 0x05, 0x93, 0x63, 0xb0, 0x8f, 0x93, 0x84, 0x7d, 0xbc, + 0x59, 0xcd, 0x76, 0x4d, 0x0a, 0x5f, 0xde, 0xfe, 0x91, 0x06, 0x73, 0x71, 0xb5, 0x63, 0xd0, 0x7c, + 0xad, 0xa4, 0xe6, 0xfb, 0x72, 0xc5, 0x0f, 0x2b, 0x50, 0x7f, 0xff, 0x5f, 0x4d, 0xfd, 0x2c, 0x26, + 0x6c, 0xdd, 0x51, 0x6e, 0x68, 0xf9, 0x9d, 0x70, 0xbb, 0xd2, 0x0d, 0xad, 0xfa, 0x9e, 0x31, 0xfe, + 0xe2, 0x9c, 0x1b, 0xdb, 0x9f, 0x4e, 0x48, 0x3a, 0x55, 0x1e, 0xee, 0x4a, 0xb1, 0x26, 0xa2, 0xcd, + 0x87, 0xe0, 0x20, 0xb1, 0xc7, 0x57, 0x39, 0x1f, 0xf7, 0xfa, 0x5c, 0x2c, 0xf9, 0x58, 0x54, 0xf9, + 0xe4, 0xa1, 0xfc, 0x4e, 0xff, 0xea, 0x1c, 0x4c, 0x2b, 0x57, 0x27, 0xdf, 0x93, 0x3b, 0xf9, 0x01, + 0x4c, 0x9b, 0x32, 0x48, 0x70, 0x34, 0xf2, 0x55, 0x89, 0x4a, 0x96, 0x1b, 0xc7, 0x1f, 0x0e, 0xb0, + 0x4a, 0x87, 0x0a, 0x08, 0x72, 0xa1, 0x8d, 0xdc, 0x0f, 0x57, 0x80, 0x61, 0x8b, 0xeb, 0x19, 0x80, + 0x48, 0xd8, 0x24, 0x96, 0x08, 0x39, 0x27, 0x93, 0x6c, 0xb4, 0x83, 0xeb, 0x12, 0x86, 0x95, 0x7a, + 0xe8, 0x6d, 0x98, 0x75, 0xd4, 0x98, 0xf3, 0x42, 0x14, 0x2e, 0xf7, 0x14, 0x23, 0x11, 0xbd, 0x9e, + 0x5f, 0x05, 0x24, 0x8a, 0x70, 0x92, 0x16, 0xda, 0x82, 0x29, 0x27, 0x4a, 0x28, 0x21, 0xe4, 0xe1, + 0x97, 0x4a, 0x13, 0x66, 0x58, 0xb8, 0xe7, 0x8e, 0xfc, 0x89, 0x63, 0xfc, 0x74, 0xdd, 0xc9, 0x1f, + 0xd5, 0xbc, 0x77, 0x62, 0x6a, 0x72, 0xdd, 0xc9, 0xa2, 0x00, 0x2b, 0x54, 0x0a, 0xbc, 0x2b, 0x26, + 0x4b, 0x79, 0x57, 0x0c, 0xe0, 0xb4, 0x4f, 0x42, 0x7f, 0xb7, 0xb9, 0x6b, 0xb2, 0xc4, 0x2e, 0x7e, + 0xc8, 0xf4, 0xd6, 0xa9, 0x72, 0xb1, 0x66, 0x70, 0x16, 0x15, 0xce, 0xc3, 0x8f, 0x2e, 0xc2, 0x28, + 0x15, 0x9e, 0x44, 0x2c, 0x37, 0x66, 0x63, 0xa3, 0xa2, 0x15, 0x66, 0xa5, 0xe8, 0x23, 0x30, 0x1d, + 0x12, 0x73, 0xd3, 0xb5, 0x4d, 0xc3, 0x69, 0xb7, 0x84, 0x64, 0x1a, 0xcb, 0x22, 0x31, 0x08, 0xab, + 0xf5, 0x50, 0x03, 0x46, 0x06, 0xb6, 0x25, 0x44, 0xd2, 0x1f, 0x92, 0x57, 0x9d, 0xed, 0xd6, 0xbd, + 0xbd, 0xfa, 0xfb, 0x63, 0x4f, 0x65, 0xf9, 0x25, 0x57, 0xfa, 0x5b, 0xdd, 0x2b, 0xe1, 0x6e, 0x9f, + 0x04, 0x0b, 0xb7, 0xdb, 0x2d, 0x4c, 0x1b, 0xe7, 0x79, 0x9b, 0xcc, 0x1e, 0xc1, 0xdb, 0xe4, 0x5d, + 0x0d, 0x4e, 0x1b, 0xe9, 0x5b, 0x5a, 0x12, 0xcc, 0xcf, 0x55, 0xe0, 0xca, 0xf9, 0x57, 0xbf, 0x71, + 0xd8, 0xde, 0xc5, 0x2c, 0x3d, 0x9c, 0xd7, 0x09, 0xe4, 0x03, 0xea, 0xd9, 0x5d, 0x99, 0x3e, 0x42, + 0x4c, 0xf5, 0x89, 0x72, 0xd6, 0x9a, 0x95, 0x0c, 0x26, 0x9c, 0x83, 0x1d, 0xed, 0xc0, 0xb4, 0x19, + 0x1b, 0xae, 0x58, 0x12, 0xdf, 0xd2, 0x42, 0x5d, 0xea, 0x62, 0x58, 0xe4, 0x87, 0x57, 0xcc, 0x62, + 0x2a, 0x29, 0x69, 0x27, 0x52, 0x14, 0x67, 0x61, 0x2b, 0x61, 0x9f, 0x7d, 0xaa, 0xbc, 0x9d, 0x28, + 0x1f, 0x23, 0x1e, 0x42, 0x8d, 0x05, 0x75, 0x71, 0x92, 0x69, 0x5e, 0x98, 0x94, 0x5c, 0xf6, 0x11, + 0x67, 0x2a, 0x65, 0x0c, 0x5f, 0x9d, 0xa9, 0x42, 0x9c, 0xa6, 0xa8, 0xff, 0x0f, 0x0d, 0x32, 0x42, + 0x30, 0x32, 0x61, 0x82, 0xe2, 0x6e, 0xad, 0x76, 0x84, 0x34, 0xf6, 0x42, 0xc9, 0x13, 0x8c, 0xe1, + 0xe0, 0x46, 0x76, 0xf1, 0x03, 0x47, 0x98, 0xa9, 0x5c, 0xed, 0x2a, 0x41, 0x5a, 0x85, 0xd4, 0x59, + 0x4e, 0x4a, 0x50, 0xa3, 0xbd, 0x72, 0xb9, 0x5a, 0x2d, 0xc1, 0x09, 0x42, 0xfa, 0x32, 0x40, 0xac, + 0xbb, 0x54, 0x76, 0xaa, 0xfa, 0xd3, 0x31, 0x38, 0x5b, 0xd5, 0xa1, 0x9f, 0xa5, 0xe2, 0x60, 0xa9, + 0xd2, 0x17, 0x37, 0x42, 0xe2, 0xdf, 0xbc, 0xb9, 0x22, 0xd3, 0x48, 0x97, 0xcc, 0x05, 0x12, 0x27, + 0xdb, 0xcf, 0x60, 0xc4, 0x05, 0x94, 0x98, 0xde, 0x26, 0xb2, 0x84, 0x62, 0x2a, 0xe3, 0xb1, 0x1c, + 0xd1, 0x3c, 0xf4, 0x03, 0xd7, 0xdb, 0xd2, 0x40, 0x9c, 0xad, 0x9f, 0x46, 0xc2, 0xd3, 0xb6, 0x53, + 0x19, 0x41, 0xcb, 0x22, 0xe1, 0xb9, 0xdb, 0xb3, 0xf5, 0x55, 0x24, 0x7c, 0xa6, 0xe8, 0xde, 0x18, + 0xcb, 0x22, 0x91, 0x40, 0x9c, 0xad, 0x8f, 0x2c, 0xb8, 0xe8, 0x13, 0xd3, 0xeb, 0xf5, 0x88, 0x6b, + 0xf1, 0x3c, 0x57, 0x86, 0xdf, 0xb5, 0xdd, 0xab, 0xbe, 0xc1, 0x2a, 0x32, 0x31, 0x40, 0x6b, 0x5c, + 0xde, 0xdf, 0xab, 0x5f, 0xc4, 0x43, 0xea, 0xe1, 0xa1, 0x58, 0x50, 0x0f, 0x4e, 0x0c, 0x58, 0x64, + 0x76, 0xbf, 0xed, 0x86, 0xc4, 0xdf, 0x36, 0x1c, 0x61, 0xfa, 0x2a, 0x95, 0xe9, 0xf3, 0x76, 0x12, + 0x15, 0x4e, 0xe3, 0x46, 0xbb, 0xf4, 0x6c, 0x16, 0xdd, 0x51, 0x48, 0x4e, 0x96, 0x4f, 0x56, 0x83, + 0xb3, 0xe8, 0x70, 0x1e, 0x0d, 0xfd, 0xef, 0x69, 0x20, 0xdc, 0x7a, 0xe9, 0x51, 0xad, 0xdc, 0xe9, + 0x4d, 0xa6, 0xee, 0xf3, 0x2e, 0x8a, 0x67, 0xae, 0xb5, 0x18, 0xaa, 0x3c, 0x71, 0xfd, 0xa0, 0x12, + 0x53, 0x64, 0x2a, 0x96, 0x6b, 0x38, 0x66, 0x25, 0xbb, 0xc1, 0x0f, 0xc0, 0x44, 0xdf, 0xb7, 0x7b, + 0x86, 0xbf, 0x2b, 0x44, 0x4c, 0x26, 0x70, 0x09, 0x87, 0x04, 0xba, 0x77, 0x04, 0x54, 0xff, 0x96, + 0x06, 0xa2, 0x35, 0x4b, 0xc4, 0x71, 0xa8, 0x7c, 0x0c, 0x07, 0x3a, 0xf7, 0x29, 0x79, 0x24, 0x46, + 0x0a, 0xf3, 0x48, 0x3c, 0xa0, 0xf4, 0x0a, 0x5f, 0xd3, 0xe0, 0x44, 0x32, 0xc0, 0x4b, 0x80, 0x3e, + 0x00, 0x13, 0x22, 0x14, 0x9c, 0x08, 0xe3, 0xc4, 0x5f, 0xa9, 0x8b, 0xa4, 0xeb, 0x11, 0x2c, 0x69, + 0x70, 0xaa, 0xa2, 0xf6, 0xe5, 0x07, 0x9a, 0x39, 0x40, 0x01, 0xdb, 0x9b, 0x83, 0x71, 0x1e, 0x45, + 0x8c, 0x1e, 0x6e, 0x39, 0x2f, 0x23, 0x97, 0x2b, 0x44, 0x2b, 0x2b, 0xf3, 0x90, 0x4d, 0x8d, 0x5d, + 0x5d, 0x1b, 0x1a, 0xbb, 0xba, 0xc3, 0x53, 0xd7, 0x54, 0xb9, 0x6f, 0x68, 0xe2, 0xb6, 0xc8, 0x5f, + 0x1b, 0xa5, 0xad, 0x19, 0x24, 0xcc, 0xf0, 0xa3, 0x15, 0xe4, 0x1c, 0x3e, 0x04, 0x8a, 0x31, 0x7e, + 0x6e, 0x88, 0x21, 0x3e, 0x8e, 0xd2, 0x34, 0x56, 0xc1, 0xe3, 0x56, 0x8c, 0xfa, 0x21, 0xa2, 0x34, + 0xc9, 0xdd, 0x34, 0x5e, 0xb8, 0x9b, 0xba, 0x30, 0x21, 0xf6, 0x83, 0xe0, 0x8e, 0x2f, 0x54, 0xc9, + 0x02, 0xa3, 0xc4, 0x18, 0xe5, 0x05, 0x38, 0xc2, 0x4e, 0xcf, 0xdc, 0x9e, 0xb1, 0x63, 0xf7, 0x06, + 0x3d, 0xc6, 0x13, 0xc7, 0xd4, 0xaa, 0xac, 0x18, 0x47, 0x70, 0x56, 0x95, 0xbb, 0x2a, 0x33, 0xd5, + 0x46, 0xad, 0x2a, 0x52, 0xb0, 0x47, 0x70, 0xf4, 0x06, 0x4c, 0xf6, 0x8c, 0x9d, 0xce, 0xc0, 0xef, + 0x12, 0x61, 0x7f, 0x2f, 0x36, 0xbd, 0x0d, 0x42, 0xdb, 0x59, 0xa0, 0x4a, 0x79, 0xe8, 0x2f, 0xb4, + 0xdd, 0xf0, 0xa6, 0xdf, 0x09, 0x7d, 0x99, 0x64, 0x62, 0x45, 0x60, 0xc1, 0x12, 0x1f, 0x72, 0x60, + 0xae, 0x67, 0xec, 0xdc, 0x76, 0x0d, 0x99, 0x29, 0x7a, 0xba, 0x24, 0x05, 0xe6, 0x00, 0xb1, 0x92, + 0xc0, 0x85, 0x53, 0xb8, 0x73, 0x7c, 0x2d, 0x66, 0x1e, 0x94, 0xaf, 0xc5, 0xa2, 0x7c, 0xc0, 0x32, + 0xcb, 0x96, 0xe1, 0xc3, 0x79, 0xef, 0x61, 0x86, 0xbf, 0x4d, 0xf9, 0x84, 0x7c, 0x9b, 0x32, 0x57, + 0xe1, 0xb2, 0x72, 0xc8, 0xbb, 0x94, 0x6d, 0x98, 0xb6, 0x8c, 0xd0, 0xe0, 0xa5, 0xc1, 0xfc, 0x89, + 0x0a, 0xf6, 0xc1, 0x96, 0xc4, 0xa3, 0x64, 0x1c, 0x8c, 0x71, 0x63, 0x95, 0x10, 0xba, 0xc9, 0x33, + 0x09, 0x3b, 0x24, 0x8c, 0xab, 0x30, 0x33, 0xf9, 0x49, 0x7e, 0x11, 0x12, 0xe5, 0xfd, 0xcd, 0x54, + 0xc0, 0xf9, 0xed, 0xe2, 0x28, 0x0d, 0xa7, 0xf2, 0xa3, 0x34, 0xa0, 0x5f, 0xca, 0xb3, 0xa7, 0xa3, + 0x0a, 0x8f, 0xf4, 0x38, 0x7f, 0x28, 0x6d, 0x55, 0xff, 0x27, 0x1a, 0xcc, 0xf7, 0x0a, 0x52, 0xf3, + 0x09, 0x3b, 0xff, 0xed, 0x2a, 0x3c, 0xa2, 0x30, 0xdf, 0x5f, 0xe3, 0xb1, 0xfd, 0xbd, 0xfa, 0x81, + 0x59, 0x01, 0x71, 0x61, 0xe7, 0xaa, 0x3e, 0x4a, 0xae, 0x12, 0xd3, 0xee, 0x37, 0x35, 0x38, 0x99, + 0x3e, 0x0a, 0xd4, 0xdc, 0xc7, 0xda, 0x03, 0xce, 0x7d, 0xac, 0xb8, 0x4f, 0xd5, 0x86, 0xb8, 0x4f, + 0xbd, 0x08, 0xe7, 0xf2, 0x57, 0x07, 0x15, 0xce, 0x58, 0xc6, 0x71, 0xa1, 0x10, 0xc5, 0x39, 0x55, + 0x68, 0x21, 0xe6, 0x30, 0xfd, 0x53, 0x90, 0x8e, 0x45, 0x8a, 0xb6, 0x60, 0x2a, 0x08, 0x36, 0x79, + 0x84, 0x39, 0xf1, 0x95, 0x25, 0xdd, 0xf7, 0xa3, 0x38, 0x75, 0xe2, 0xe5, 0x5d, 0xf4, 0x13, 0xc7, + 0xf8, 0x1b, 0x1f, 0xfb, 0xc6, 0x77, 0x2f, 0xbd, 0xef, 0x0f, 0xbe, 0x7b, 0xe9, 0x7d, 0xdf, 0xfe, + 0xee, 0xa5, 0xf7, 0xfd, 0xcc, 0xfe, 0x25, 0xed, 0x1b, 0xfb, 0x97, 0xb4, 0x3f, 0xd8, 0xbf, 0xa4, + 0x7d, 0x7b, 0xff, 0x92, 0xf6, 0x1f, 0xf7, 0x2f, 0x69, 0x7f, 0xe7, 0x3f, 0x5d, 0x7a, 0xdf, 0x1b, + 0x4f, 0xc7, 0xe4, 0xaf, 0x44, 0x54, 0xe3, 0x7f, 0xfa, 0x5b, 0xdd, 0x2b, 0x94, 0x7c, 0xf4, 0x04, + 0x9e, 0x93, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xa9, 0x72, 0x23, 0xc3, 0xdd, 0x00, + 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -8537,6 +8541,16 @@ func (m *KubeAPIServerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.DefaultUnreachableTolerationSeconds != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultUnreachableTolerationSeconds)) + i-- + dAtA[i] = 0x78 + } + if m.DefaultNotReadyTolerationSeconds != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultNotReadyTolerationSeconds)) + i-- + dAtA[i] = 0x70 + } if m.Logging != nil { { size, err := m.Logging.MarshalToSizedBuffer(dAtA[:i]) @@ -16163,6 +16177,12 @@ func (m *KubeAPIServerConfig) Size() (n int) { l = m.Logging.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.DefaultNotReadyTolerationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DefaultNotReadyTolerationSeconds)) + } + if m.DefaultUnreachableTolerationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DefaultUnreachableTolerationSeconds)) + } return n } @@ -19338,6 +19358,8 @@ func (this *KubeAPIServerConfig) String() string { `EnableAnonymousAuthentication:` + valueToStringGenerated(this.EnableAnonymousAuthentication) + `,`, `EventTTL:` + strings.Replace(fmt.Sprintf("%v", this.EventTTL), "Duration", "v11.Duration", 1) + `,`, `Logging:` + strings.Replace(this.Logging.String(), "KubeAPIServerLogging", "KubeAPIServerLogging", 1) + `,`, + `DefaultNotReadyTolerationSeconds:` + valueToStringGenerated(this.DefaultNotReadyTolerationSeconds) + `,`, + `DefaultUnreachableTolerationSeconds:` + valueToStringGenerated(this.DefaultUnreachableTolerationSeconds) + `,`, `}`, }, "") return s @@ -30158,6 +30180,46 @@ func (m *KubeAPIServerConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultNotReadyTolerationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultNotReadyTolerationSeconds = &v + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultUnreachableTolerationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultUnreachableTolerationSeconds = &v default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/core/v1alpha1/generated.proto b/pkg/apis/core/v1alpha1/generated.proto index 8d188e22284..6ae67b38a09 100644 --- a/pkg/apis/core/v1alpha1/generated.proto +++ b/pkg/apis/core/v1alpha1/generated.proto @@ -965,6 +965,20 @@ message KubeAPIServerConfig { // Logging contains configuration for the log level and HTTP access logs. // +optional optional KubeAPIServerLogging logging = 13; + + // DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + optional int64 defaultNotReadyTolerationSeconds = 14; + + // DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + optional int64 defaultUnreachableTolerationSeconds = 15; } // KubeAPIServerLogging contains configuration for the logs level and http access logs @@ -1005,6 +1019,13 @@ message KubeControllerManagerConfig { optional int32 nodeCIDRMaskSize = 3; // PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m. + // + // Deprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated + // in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. + // The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint + // based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, + // instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and + // `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`. // +optional optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration podEvictionTimeout = 4; @@ -1315,8 +1336,9 @@ message Kubernetes { // +optional optional VerticalPodAutoscaler verticalPodAutoscaler = 9; - // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster - // (default: true). + // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. + // Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. + // Starting Kubernetes 1.27 the field will be locked to false. // +optional optional bool enableStaticTokenKubeconfig = 10; } diff --git a/pkg/apis/core/v1alpha1/types_shoot.go b/pkg/apis/core/v1alpha1/types_shoot.go index 960d35dac0d..5550873fd7a 100644 --- a/pkg/apis/core/v1alpha1/types_shoot.go +++ b/pkg/apis/core/v1alpha1/types_shoot.go @@ -527,8 +527,9 @@ type Kubernetes struct { // VerticalPodAutoscaler contains the configuration flags for the Kubernetes vertical pod autoscaler. // +optional VerticalPodAutoscaler *VerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty" protobuf:"bytes,9,opt,name=verticalPodAutoscaler"` - // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster - // (default: true). + // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. + // Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. + // Starting Kubernetes 1.27 the field will be locked to false. // +optional EnableStaticTokenKubeconfig *bool `json:"enableStaticTokenKubeconfig,omitempty" protobuf:"varint,10,opt,name=enableStaticTokenKubeconfig"` } @@ -703,6 +704,18 @@ type KubeAPIServerConfig struct { // Logging contains configuration for the log level and HTTP access logs. // +optional Logging *KubeAPIServerLogging `json:"logging,omitempty" protobuf:"bytes,13,opt,name=logging"` + // DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + DefaultNotReadyTolerationSeconds *int64 `json:"defaultNotReadyTolerationSeconds,omitempty" protobuf:"varint,14,opt,name=defaultNotReadyTolerationSeconds"` + // DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + DefaultUnreachableTolerationSeconds *int64 `json:"defaultUnreachableTolerationSeconds,omitempty" protobuf:"varint,15,opt,name=defaultUnreachableTolerationSeconds"` } // KubeAPIServerLogging contains configuration for the logs level and http access logs @@ -869,6 +882,13 @@ type KubeControllerManagerConfig struct { // +optional NodeCIDRMaskSize *int32 `json:"nodeCIDRMaskSize,omitempty" protobuf:"varint,3,opt,name=nodeCIDRMaskSize"` // PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m. + // + // Deprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated + // in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. + // The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint + // based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, + // instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and + // `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`. // +optional PodEvictionTimeout *metav1.Duration `json:"podEvictionTimeout,omitempty" protobuf:"bytes,4,opt,name=podEvictionTimeout"` // NodeMonitorGracePeriod defines the grace period before an unresponsive node is marked unhealthy. diff --git a/pkg/apis/core/v1alpha1/zz_generated.conversion.go b/pkg/apis/core/v1alpha1/zz_generated.conversion.go index aa801c414e9..0b13bcc8a9f 100644 --- a/pkg/apis/core/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/core/v1alpha1/zz_generated.conversion.go @@ -3188,6 +3188,8 @@ func autoConvert_v1alpha1_KubeAPIServerConfig_To_core_KubeAPIServerConfig(in *Ku out.EnableAnonymousAuthentication = (*bool)(unsafe.Pointer(in.EnableAnonymousAuthentication)) out.EventTTL = (*metav1.Duration)(unsafe.Pointer(in.EventTTL)) out.Logging = (*core.KubeAPIServerLogging)(unsafe.Pointer(in.Logging)) + out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) + out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) return nil } @@ -3222,6 +3224,8 @@ func autoConvert_core_KubeAPIServerConfig_To_v1alpha1_KubeAPIServerConfig(in *co out.EnableAnonymousAuthentication = (*bool)(unsafe.Pointer(in.EnableAnonymousAuthentication)) out.EventTTL = (*metav1.Duration)(unsafe.Pointer(in.EventTTL)) out.Logging = (*KubeAPIServerLogging)(unsafe.Pointer(in.Logging)) + out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) + out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) return nil } diff --git a/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go index 2287dc3b72d..e7ba1e852a9 100644 --- a/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go @@ -1767,6 +1767,16 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(KubeAPIServerLogging) (*in).DeepCopyInto(*out) } + if in.DefaultNotReadyTolerationSeconds != nil { + in, out := &in.DefaultNotReadyTolerationSeconds, &out.DefaultNotReadyTolerationSeconds + *out = new(int64) + **out = **in + } + if in.DefaultUnreachableTolerationSeconds != nil { + in, out := &in.DefaultUnreachableTolerationSeconds, &out.DefaultUnreachableTolerationSeconds + *out = new(int64) + **out = **in + } return } diff --git a/pkg/apis/core/v1beta1/defaults.go b/pkg/apis/core/v1beta1/defaults.go index 8636c2eeff0..60ddfbd2f48 100644 --- a/pkg/apis/core/v1beta1/defaults.go +++ b/pkg/apis/core/v1beta1/defaults.go @@ -159,9 +159,24 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight == nil { obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight = pointer.Int32(200) } + if obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication == nil { + obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication = pointer.Bool(false) + } if obj.Spec.Kubernetes.KubeAPIServer.EventTTL == nil { obj.Spec.Kubernetes.KubeAPIServer.EventTTL = &metav1.Duration{Duration: time.Hour} } + if obj.Spec.Kubernetes.KubeAPIServer.Logging == nil { + obj.Spec.Kubernetes.KubeAPIServer.Logging = &KubeAPIServerLogging{} + } + if obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity == nil { + obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity = pointer.Int32(2) + } + if obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds == nil { + obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(300) + } + if obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds == nil { + obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(300) + } if obj.Spec.Kubernetes.KubeControllerManager == nil { obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} @@ -169,9 +184,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(obj.Spec.Kubernetes.Kubelet, obj.Spec.Provider.Workers) } - if obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout == nil { - obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout = &metav1.Duration{Duration: 2 * time.Minute} - } if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} } @@ -196,7 +208,12 @@ func SetDefaults_Shoot(obj *Shoot) { } if obj.Spec.Kubernetes.EnableStaticTokenKubeconfig == nil { - obj.Spec.Kubernetes.EnableStaticTokenKubeconfig = pointer.Bool(true) + // Error is ignored here because we cannot do anything meaningful with it - variable will default to "false". + if k8sLessThan126, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.26"); k8sLessThan126 { + obj.Spec.Kubernetes.EnableStaticTokenKubeconfig = pointer.Bool(true) + } else { + obj.Spec.Kubernetes.EnableStaticTokenKubeconfig = pointer.Bool(false) + } } if obj.Spec.Addons == nil { @@ -268,18 +285,6 @@ func SetDefaults_Shoot(obj *Shoot) { obj.Spec.Maintenance = &Maintenance{} } - if obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication = pointer.Bool(false) - } - - if obj.Spec.Kubernetes.KubeAPIServer.Logging == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging = &KubeAPIServerLogging{} - } - - if obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity = pointer.Int32(2) - } - for i, worker := range obj.Spec.Provider.Workers { kubernetesVersion := obj.Spec.Kubernetes.Version if worker.Kubernetes != nil && worker.Kubernetes.Version != nil { @@ -292,7 +297,7 @@ func SetDefaults_Shoot(obj *Shoot) { if k8sVersionGreaterOrEqualThan122, _ := versionutils.CompareVersions(kubernetesVersion, ">=", "1.22"); !k8sVersionGreaterOrEqualThan122 { // Error is ignored here because we cannot do anything meaningful with it. - // k8sVersionLessThan116 and k8sVersionGreaterOrEqualThan122 will default to `false`. + // k8sVersionGreaterOrEqualThan122 will default to `false`. continue } diff --git a/pkg/apis/core/v1beta1/defaults_test.go b/pkg/apis/core/v1beta1/defaults_test.go index 01d1c82d09c..438e2a48327 100644 --- a/pkg/apis/core/v1beta1/defaults_test.go +++ b/pkg/apis/core/v1beta1/defaults_test.go @@ -520,23 +520,6 @@ var _ = Describe("Defaults", func() { }) }) - It("should not default the kube-controller-manager's pod eviction timeout field", func() { - podEvictionTimeout := &metav1.Duration{Duration: time.Minute} - obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{PodEvictionTimeout: podEvictionTimeout} - - SetDefaults_Shoot(obj) - - Expect(obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout).To(Equal(podEvictionTimeout)) - }) - - It("should default the kube-controller-manager's pod eviction timeout field", func() { - obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} - - SetDefaults_Shoot(obj) - - Expect(obj.Spec.Kubernetes.KubeControllerManager.PodEvictionTimeout).To(Equal(&metav1.Duration{Duration: 2 * time.Minute})) - }) - It("should not default the kube-controller-manager's node monitor grace period", func() { nodeMonitorGracePeriod := &metav1.Duration{Duration: time.Minute} obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{NodeMonitorGracePeriod: nodeMonitorGracePeriod} @@ -608,6 +591,18 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight).To(Equal(&maxMutatingRequestsInflight)) }) + It("should disable anonymous authentication by default", func() { + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeFalse())) + }) + + It("should not default the anonymous authentication field if it is explicitly set", func() { + trueVar := true + obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{EnableAnonymousAuthentication: &trueVar} + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeTrue())) + }) + It("should default the event ttl field", func() { SetDefaults_Shoot(obj) Expect(obj.Spec.Kubernetes.KubeAPIServer.EventTTL).To(Equal(&metav1.Duration{Duration: time.Hour})) @@ -621,18 +616,6 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.KubeAPIServer.EventTTL).To(Equal(eventTTL)) }) - It("should disable anonymous authentication by default", func() { - SetDefaults_Shoot(obj) - Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeFalse())) - }) - - It("should not default the anonymous authentication field if it is explicitly set", func() { - trueVar := true - obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{EnableAnonymousAuthentication: &trueVar} - SetDefaults_Shoot(obj) - Expect(obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication).To(PointTo(BeTrue())) - }) - It("should default the log verbosity level", func() { SetDefaults_Shoot(obj) Expect(obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity).To(PointTo(Equal(int32(2)))) @@ -649,6 +632,32 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.Kubernetes.KubeAPIServer.Logging.HTTPAccessVerbosity).To(BeNil()) }) + It("should default the defaultNotReadyTolerationSeconds field", func() { + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds).To(PointTo(Equal(int64(300)))) + }) + + It("should not overwrite the defaultNotReadyTolerationSeconds field if it is already set", func() { + var tolerationSeconds int64 = 120 + obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{DefaultNotReadyTolerationSeconds: pointer.Int64(tolerationSeconds)} + + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds).To(PointTo(Equal(tolerationSeconds))) + }) + + It("should default the defaultUnreachableTolerationSeconds field", func() { + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds).To(PointTo(Equal(int64(300)))) + }) + + It("should not overwrite the defaultUnreachableTolerationSeconds field if it is already set", func() { + var tolerationSeconds int64 = 120 + obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{DefaultUnreachableTolerationSeconds: pointer.Int64(tolerationSeconds)} + + SetDefaults_Shoot(obj) + Expect(obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds).To(PointTo(Equal(tolerationSeconds))) + }) + It("should default architecture of worker's machine to amd64", func() { obj.Spec.Provider.Workers = []Worker{ {Name: "Default Worker"}, @@ -740,10 +749,33 @@ var _ = Describe("Defaults", func() { Expect(obj.Spec.SystemComponents).To(Equal(&SystemComponents{CoreDNS: &CoreDNS{Autoscaling: &CoreDNSAutoscaling{Mode: CoreDNSAutoscalingModeHorizontal}}})) }) - It("should default the enableStaticTokenKubeconfig field", func() { - SetDefaults_Shoot(obj) + Context("static token kubeconfig", func() { + It("should not default the enableStaticTokenKubeconfig field when it is set", func() { + obj.Spec.Kubernetes = Kubernetes{ + Version: "1.24.0", + EnableStaticTokenKubeconfig: pointer.Bool(false), + } + + SetDefaults_Shoot(obj) + + Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeFalse())) + }) + + It("should default the enableStaticTokenKubeconfig field to true for k8s version < 1.26", func() { + obj.Spec.Kubernetes = Kubernetes{Version: "1.25.0"} - Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeTrue())) + SetDefaults_Shoot(obj) + + Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeTrue())) + }) + + It("should default the enableStaticTokenKubeconfig field to false for k8s version >= 1.26", func() { + obj.Spec.Kubernetes = Kubernetes{Version: "1.26.0"} + + SetDefaults_Shoot(obj) + + Expect(obj.Spec.Kubernetes.EnableStaticTokenKubeconfig).To(PointTo(BeFalse())) + }) }) Context("k8s version < 1.25", func() { diff --git a/pkg/apis/core/v1beta1/generated.pb.go b/pkg/apis/core/v1beta1/generated.pb.go index 20bf72bd6e3..076dca6ed2f 100644 --- a/pkg/apis/core/v1beta1/generated.pb.go +++ b/pkg/apis/core/v1beta1/generated.pb.go @@ -4569,697 +4569,701 @@ func init() { } var fileDescriptor_ca37af0df9a5bbd2 = []byte{ - // 11037 bytes of a gzipped FileDescriptorProto + // 11104 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x2c, 0xd7, - 0x75, 0x98, 0x67, 0xf9, 0xb5, 0x3c, 0xfc, 0x78, 0xe4, 0x7d, 0x1f, 0xa2, 0x28, 0xe9, 0xad, 0x3c, - 0x96, 0x0d, 0xa9, 0x76, 0xf8, 0x22, 0xf9, 0x53, 0xb2, 0x65, 0x99, 0xdc, 0x25, 0xdf, 0x5b, 0x3f, - 0x92, 0x8f, 0xba, 0xcb, 0x27, 0xc9, 0x72, 0xaa, 0x7a, 0x38, 0x73, 0xb9, 0x1c, 0x71, 0x76, 0x66, - 0x35, 0x33, 0xcb, 0x47, 0xca, 0x31, 0x1c, 0xbb, 0xfe, 0xa8, 0x95, 0x38, 0x30, 0x0c, 0xa4, 0x82, - 0xed, 0xb4, 0x71, 0x10, 0xa4, 0x71, 0x91, 0xc2, 0x49, 0x3f, 0x12, 0x20, 0x0d, 0x0a, 0x04, 0x06, - 0x8a, 0xd8, 0x41, 0x5b, 0xb8, 0x2e, 0x82, 0xba, 0x40, 0x43, 0xd7, 0x6c, 0xeb, 0x14, 0x68, 0x11, - 0x14, 0x08, 0x8a, 0x02, 0x0f, 0xf9, 0x11, 0xdc, 0x8f, 0xb9, 0x73, 0xe7, 0x6b, 0x1f, 0x39, 0x4b, - 0xd2, 0x12, 0x92, 0x5f, 0xe4, 0xde, 0x73, 0xef, 0x39, 0x77, 0xee, 0xc7, 0xb9, 0xe7, 0x9c, 0x7b, - 0xee, 0x39, 0xb0, 0xd4, 0xb6, 0xc3, 0x9d, 0xde, 0xd6, 0x82, 0xe9, 0x75, 0xae, 0xb5, 0x0d, 0xdf, - 0x22, 0x2e, 0xf1, 0xe3, 0x7f, 0xba, 0xbb, 0xed, 0x6b, 0x46, 0xd7, 0x0e, 0xae, 0x99, 0x9e, 0x4f, - 0xae, 0xed, 0x3d, 0xbe, 0x45, 0x42, 0xe3, 0xf1, 0x6b, 0x6d, 0x0a, 0x33, 0x42, 0x62, 0x2d, 0x74, - 0x7d, 0x2f, 0xf4, 0xd0, 0x13, 0x31, 0x8e, 0x85, 0xa8, 0x69, 0xfc, 0x4f, 0x77, 0xb7, 0xbd, 0x40, - 0x71, 0x2c, 0x50, 0x1c, 0x0b, 0x02, 0xc7, 0xfc, 0xcf, 0xa8, 0x74, 0xbd, 0xb6, 0x77, 0x8d, 0xa1, - 0xda, 0xea, 0x6d, 0xb3, 0x5f, 0xec, 0x07, 0xfb, 0x8f, 0x93, 0x98, 0x7f, 0x6c, 0xf7, 0x03, 0xc1, - 0x82, 0xed, 0xd1, 0xce, 0x5c, 0x33, 0x7a, 0xa1, 0x17, 0x98, 0x86, 0x63, 0xbb, 0xed, 0x6b, 0x7b, - 0x99, 0xde, 0xcc, 0xeb, 0x4a, 0x55, 0xd1, 0xed, 0xbe, 0x75, 0xfc, 0x2d, 0xc3, 0xcc, 0xab, 0xf3, - 0x9e, 0xb8, 0x4e, 0xc7, 0x30, 0x77, 0x6c, 0x97, 0xf8, 0x07, 0xd1, 0x80, 0x5c, 0xf3, 0x49, 0xe0, - 0xf5, 0x7c, 0x93, 0x9c, 0xa8, 0x55, 0x70, 0xad, 0x43, 0x42, 0x23, 0x8f, 0xd6, 0xb5, 0xa2, 0x56, - 0x7e, 0xcf, 0x0d, 0xed, 0x4e, 0x96, 0xcc, 0xfb, 0xee, 0xd5, 0x20, 0x30, 0x77, 0x48, 0xc7, 0xc8, - 0xb4, 0x7b, 0x77, 0x51, 0xbb, 0x5e, 0x68, 0x3b, 0xd7, 0x6c, 0x37, 0x0c, 0x42, 0x3f, 0xdd, 0x48, - 0x7f, 0x02, 0x46, 0x16, 0x2d, 0xcb, 0x73, 0xd1, 0x63, 0x30, 0x46, 0x5c, 0x63, 0xcb, 0x21, 0xd6, - 0x9c, 0xf6, 0xb0, 0xf6, 0x68, 0x75, 0xe9, 0xc2, 0x77, 0x0f, 0x6b, 0x6f, 0x39, 0x3a, 0xac, 0x8d, - 0x2d, 0xf3, 0x62, 0x1c, 0xc1, 0xf5, 0x5f, 0xa9, 0xc0, 0x28, 0x6b, 0x14, 0xa0, 0xaf, 0x6a, 0x70, - 0x71, 0xb7, 0xb7, 0x45, 0x7c, 0x97, 0x84, 0x24, 0x68, 0x18, 0xc1, 0xce, 0x96, 0x67, 0xf8, 0x1c, - 0xc5, 0xc4, 0x13, 0xd7, 0x17, 0x4e, 0xbe, 0x7a, 0x16, 0x6e, 0x66, 0xd1, 0x2d, 0xdd, 0x77, 0x74, - 0x58, 0xbb, 0x98, 0x03, 0xc0, 0x79, 0xc4, 0xd1, 0x1e, 0x4c, 0xba, 0x6d, 0xdb, 0xdd, 0x6f, 0xba, - 0x6d, 0x9f, 0x04, 0xc1, 0x5c, 0x85, 0x75, 0xe6, 0x23, 0x65, 0x3a, 0xb3, 0xae, 0xe0, 0x59, 0x9a, - 0x39, 0x3a, 0xac, 0x4d, 0xaa, 0x25, 0x38, 0x41, 0x47, 0xff, 0x5d, 0x0d, 0x2e, 0x2c, 0x5a, 0x1d, - 0x3b, 0x08, 0x6c, 0xcf, 0xdd, 0x70, 0x7a, 0x6d, 0xdb, 0x45, 0x0f, 0xc3, 0xb0, 0x6b, 0x74, 0x08, - 0x1b, 0x90, 0xf1, 0xa5, 0x49, 0x31, 0xa6, 0xc3, 0xeb, 0x46, 0x87, 0x60, 0x06, 0x41, 0xcf, 0xc2, - 0xa8, 0xe9, 0xb9, 0xdb, 0x76, 0x5b, 0xf4, 0xf3, 0x67, 0x16, 0xf8, 0x3c, 0x2e, 0xa8, 0xf3, 0xc8, - 0xba, 0x27, 0xe6, 0x7f, 0x01, 0x1b, 0x77, 0x96, 0xf7, 0x43, 0xe2, 0x52, 0x32, 0x4b, 0x70, 0x74, - 0x58, 0x1b, 0xad, 0x33, 0x04, 0x58, 0x20, 0x42, 0x8f, 0x42, 0xd5, 0xb2, 0x03, 0x3e, 0x99, 0x43, - 0x6c, 0x32, 0x27, 0x8f, 0x0e, 0x6b, 0xd5, 0x86, 0x28, 0xc3, 0x12, 0xaa, 0xaf, 0x40, 0x75, 0xd1, - 0x21, 0x7e, 0x68, 0xbb, 0x6d, 0xf4, 0x14, 0x4c, 0x93, 0x8e, 0x61, 0x3b, 0x98, 0x98, 0xc4, 0xde, - 0x23, 0x7e, 0x30, 0xa7, 0x3d, 0x3c, 0xf4, 0xe8, 0xf8, 0x12, 0x3a, 0x3a, 0xac, 0x4d, 0x2f, 0x27, - 0x20, 0x38, 0x55, 0x53, 0xff, 0x8c, 0x06, 0x13, 0x8b, 0x3d, 0xcb, 0x0e, 0x79, 0x4f, 0x90, 0x0f, - 0x13, 0x06, 0xfd, 0xb9, 0xe1, 0x39, 0xb6, 0x79, 0x20, 0x96, 0xc3, 0x33, 0x65, 0x66, 0x60, 0x31, - 0x46, 0xb3, 0x74, 0xe1, 0xe8, 0xb0, 0x36, 0xa1, 0x14, 0x60, 0x95, 0x88, 0xbe, 0x03, 0x2a, 0x0c, - 0x7d, 0x0c, 0x26, 0xf9, 0x70, 0xac, 0x19, 0x5d, 0x4c, 0xb6, 0x45, 0x1f, 0xde, 0xa6, 0x8c, 0x6e, - 0x44, 0x68, 0xe1, 0xd6, 0xd6, 0xcb, 0xc4, 0x0c, 0x31, 0xd9, 0x26, 0x3e, 0x71, 0x4d, 0xc2, 0x27, - 0xba, 0xae, 0x34, 0xc6, 0x09, 0x54, 0xfa, 0x8f, 0x34, 0x98, 0x59, 0xdc, 0x33, 0x6c, 0xc7, 0xd8, - 0xb2, 0x1d, 0x3b, 0x3c, 0x78, 0xd1, 0x73, 0xc9, 0x31, 0x66, 0xfa, 0x36, 0xdc, 0xd7, 0x73, 0x0d, - 0xde, 0xce, 0x21, 0x6b, 0x7c, 0x6e, 0x37, 0x0f, 0xba, 0x84, 0x2e, 0x51, 0x3a, 0xd2, 0x0f, 0x1c, - 0x1d, 0xd6, 0xee, 0xbb, 0x9d, 0x5f, 0x05, 0x17, 0xb5, 0x45, 0x18, 0xae, 0x28, 0xa0, 0xe7, 0x3c, - 0xa7, 0xd7, 0x11, 0x58, 0x87, 0x18, 0xd6, 0xf9, 0xa3, 0xc3, 0xda, 0x95, 0xdb, 0xb9, 0x35, 0x70, - 0x41, 0x4b, 0xfd, 0xbb, 0x15, 0x98, 0x5c, 0x32, 0xcc, 0xdd, 0x5e, 0x77, 0xa9, 0x67, 0xee, 0x92, - 0x10, 0x7d, 0x02, 0xaa, 0x94, 0xc1, 0x59, 0x46, 0x68, 0x88, 0x91, 0xfc, 0xd9, 0xc2, 0x75, 0xca, - 0x26, 0x91, 0xd6, 0x8e, 0xc7, 0x76, 0x8d, 0x84, 0xc6, 0x12, 0x12, 0x63, 0x02, 0x71, 0x19, 0x96, - 0x58, 0xd1, 0x36, 0x0c, 0x07, 0x5d, 0x62, 0x8a, 0x5d, 0xd0, 0x28, 0xb3, 0x56, 0xd4, 0x1e, 0xb7, - 0xba, 0xc4, 0x8c, 0x67, 0x81, 0xfe, 0xc2, 0x0c, 0x3f, 0x72, 0x61, 0x34, 0x08, 0x8d, 0xb0, 0x17, - 0xb0, 0xad, 0x31, 0xf1, 0xc4, 0xca, 0xc0, 0x94, 0x18, 0xb6, 0xa5, 0x69, 0x41, 0x6b, 0x94, 0xff, - 0xc6, 0x82, 0x8a, 0xfe, 0x9f, 0x35, 0x98, 0x51, 0xab, 0xaf, 0xda, 0x41, 0x88, 0x7e, 0x2e, 0x33, - 0x9c, 0x0b, 0xc7, 0x1b, 0x4e, 0xda, 0x9a, 0x0d, 0xe6, 0x8c, 0x20, 0x57, 0x8d, 0x4a, 0x94, 0xa1, - 0x24, 0x30, 0x62, 0x87, 0xa4, 0xc3, 0x97, 0x55, 0x49, 0xce, 0xa7, 0x76, 0x79, 0x69, 0x4a, 0x10, - 0x1b, 0x69, 0x52, 0xb4, 0x98, 0x63, 0xd7, 0x3f, 0x01, 0x97, 0xd4, 0x5a, 0x1b, 0xbe, 0xb7, 0x67, - 0x5b, 0xc4, 0xa7, 0x3b, 0x21, 0x3c, 0xe8, 0x66, 0x76, 0x02, 0x5d, 0x59, 0x98, 0x41, 0xd0, 0x3b, - 0x60, 0xd4, 0x27, 0x6d, 0xdb, 0x73, 0xd9, 0x6c, 0x8f, 0xc7, 0x63, 0x87, 0x59, 0x29, 0x16, 0x50, - 0xfd, 0xff, 0x55, 0x92, 0x63, 0x47, 0xa7, 0x11, 0xed, 0x41, 0xb5, 0x2b, 0x48, 0x89, 0xb1, 0xbb, - 0x31, 0xe8, 0x07, 0x46, 0x5d, 0x8f, 0x47, 0x35, 0x2a, 0xc1, 0x92, 0x16, 0xb2, 0x61, 0x3a, 0xfa, - 0xbf, 0x3e, 0x00, 0xc3, 0x66, 0xec, 0x74, 0x23, 0x81, 0x08, 0xa7, 0x10, 0xa3, 0x4d, 0x18, 0x0f, - 0x88, 0xe9, 0x13, 0xca, 0x93, 0xc4, 0x32, 0xcd, 0x65, 0x5c, 0xad, 0xa8, 0x92, 0x60, 0x5c, 0xb3, - 0xa2, 0xfb, 0xe3, 0x12, 0x80, 0x63, 0x44, 0xf4, 0x58, 0x08, 0x08, 0xb1, 0x28, 0x47, 0x9a, 0x1b, - 0xe6, 0x73, 0x43, 0x3f, 0xb5, 0x25, 0xca, 0xb0, 0x84, 0xea, 0xdf, 0x1c, 0x06, 0x94, 0x5d, 0xe2, - 0xea, 0x08, 0xf0, 0x12, 0x31, 0xfe, 0x83, 0x8c, 0x80, 0xd8, 0x2d, 0x29, 0xc4, 0xe8, 0x55, 0x98, - 0x72, 0x8c, 0x20, 0xbc, 0xd5, 0xa5, 0xd2, 0x4a, 0xb4, 0x50, 0x26, 0x9e, 0x58, 0x2c, 0x33, 0xd3, - 0xab, 0x2a, 0xa2, 0xa5, 0xd9, 0xa3, 0xc3, 0xda, 0x54, 0xa2, 0x08, 0x27, 0x49, 0xa1, 0x97, 0x61, - 0x9c, 0x16, 0x2c, 0xfb, 0xbe, 0xe7, 0x8b, 0xd1, 0x7f, 0xba, 0x2c, 0x5d, 0x86, 0x64, 0x69, 0x8a, - 0xce, 0x89, 0xfc, 0x89, 0x63, 0xf4, 0xe8, 0xa3, 0x80, 0xbc, 0xad, 0x80, 0xf8, 0x7b, 0xc4, 0xba, - 0xce, 0x45, 0x33, 0xfa, 0xb1, 0x74, 0x76, 0x86, 0x96, 0xe6, 0xc5, 0x6c, 0xa2, 0x5b, 0x99, 0x1a, - 0x38, 0xa7, 0x15, 0xda, 0x05, 0x24, 0xc5, 0x3b, 0xb9, 0x00, 0xe6, 0x46, 0x8e, 0xbf, 0x7c, 0xae, - 0x50, 0x62, 0xd7, 0x33, 0x28, 0x70, 0x0e, 0x5a, 0xfd, 0xdf, 0x56, 0x60, 0x82, 0x2f, 0x91, 0x65, - 0x37, 0xf4, 0x0f, 0xce, 0xe1, 0x80, 0x20, 0x89, 0x03, 0xa2, 0x5e, 0x7e, 0xcf, 0xb3, 0x0e, 0x17, - 0x9e, 0x0f, 0x9d, 0xd4, 0xf9, 0xb0, 0x3c, 0x28, 0xa1, 0xfe, 0xc7, 0xc3, 0x9f, 0x6a, 0x70, 0x41, - 0xa9, 0x7d, 0x0e, 0xa7, 0x83, 0x95, 0x3c, 0x1d, 0x9e, 0x19, 0xf0, 0xfb, 0x0a, 0x0e, 0x07, 0x2f, - 0xf1, 0x59, 0x8c, 0x71, 0x3f, 0x01, 0xb0, 0xc5, 0xd8, 0xc9, 0x7a, 0x2c, 0x27, 0xc9, 0x29, 0x5f, - 0x92, 0x10, 0xac, 0xd4, 0x4a, 0xf0, 0xac, 0x4a, 0x5f, 0x9e, 0xf5, 0x3f, 0x87, 0x60, 0x36, 0x33, - 0xec, 0x59, 0x3e, 0xa2, 0xfd, 0x94, 0xf8, 0x48, 0xe5, 0xa7, 0xc1, 0x47, 0x86, 0x4a, 0xf1, 0x91, - 0x63, 0x9f, 0x13, 0xc8, 0x07, 0xd4, 0xb1, 0xdb, 0xbc, 0x59, 0x2b, 0x34, 0xfc, 0x70, 0xd3, 0xee, - 0x10, 0xc1, 0x71, 0xfe, 0xce, 0xf1, 0x96, 0x2c, 0x6d, 0xc1, 0x19, 0xcf, 0x5a, 0x06, 0x13, 0xce, - 0xc1, 0xae, 0xff, 0x60, 0x18, 0xa0, 0xbe, 0x88, 0xbd, 0x90, 0x77, 0xf6, 0x19, 0x18, 0xe9, 0xee, - 0x18, 0x41, 0xb4, 0x9e, 0x1e, 0x8b, 0x16, 0xe3, 0x06, 0x2d, 0xbc, 0x7b, 0x58, 0x9b, 0xab, 0xfb, - 0xc4, 0x22, 0x6e, 0x68, 0x1b, 0x4e, 0x10, 0x35, 0x62, 0x30, 0xcc, 0xdb, 0xd1, 0x6f, 0xa0, 0xc3, - 0x58, 0xf7, 0x3a, 0x5d, 0x87, 0x50, 0x28, 0xfb, 0x86, 0x4a, 0xb9, 0x6f, 0x58, 0xcd, 0x60, 0xc2, - 0x39, 0xd8, 0x23, 0x9a, 0x4d, 0xd7, 0x0e, 0x6d, 0x43, 0xd2, 0x1c, 0x2a, 0x4f, 0x33, 0x89, 0x09, - 0xe7, 0x60, 0x47, 0xaf, 0x69, 0x30, 0x9f, 0x2c, 0x5e, 0xb1, 0x5d, 0x3b, 0xd8, 0x21, 0x16, 0x23, - 0x3e, 0x7c, 0x62, 0xe2, 0x57, 0x8f, 0x0e, 0x6b, 0xf3, 0xab, 0x85, 0x18, 0x71, 0x1f, 0x6a, 0xe8, - 0xcb, 0x1a, 0x3c, 0x90, 0x1a, 0x17, 0xdf, 0x6e, 0xb7, 0x89, 0x2f, 0x7a, 0x73, 0xf2, 0x25, 0x54, - 0x3b, 0x3a, 0xac, 0x3d, 0xb0, 0x5a, 0x8c, 0x12, 0xf7, 0xa3, 0xa7, 0x7f, 0x47, 0x83, 0xa1, 0x3a, - 0x6e, 0xa2, 0x77, 0x26, 0x94, 0xb8, 0xfb, 0x54, 0x25, 0xee, 0xee, 0x61, 0x6d, 0xac, 0x8e, 0x9b, - 0x8a, 0x3e, 0xf7, 0x65, 0x0d, 0x66, 0x4d, 0xcf, 0x0d, 0x0d, 0xda, 0x2f, 0xcc, 0x25, 0x9d, 0x88, - 0xab, 0x96, 0xd2, 0x5f, 0xea, 0x29, 0x64, 0x4b, 0xf7, 0x8b, 0x0e, 0xcc, 0xa6, 0x21, 0x01, 0xce, - 0x52, 0xd6, 0x7f, 0xa8, 0xc1, 0x64, 0xdd, 0xf1, 0x7a, 0xd6, 0x86, 0xef, 0x6d, 0xdb, 0x0e, 0x79, - 0x73, 0x28, 0x6d, 0x6a, 0x8f, 0x8b, 0x0e, 0x65, 0xa6, 0x44, 0xa9, 0x15, 0xdf, 0x24, 0x4a, 0x94, - 0xda, 0xe5, 0x82, 0x73, 0xf2, 0x57, 0xc6, 0x92, 0x5f, 0xc6, 0x4e, 0xca, 0x47, 0xa1, 0x6a, 0x1a, - 0x4b, 0x3d, 0xd7, 0x72, 0xa4, 0x16, 0x45, 0x7b, 0x59, 0x5f, 0xe4, 0x65, 0x58, 0x42, 0xd1, 0xab, - 0x00, 0xb1, 0x09, 0x4c, 0x4c, 0xc3, 0xca, 0x60, 0x66, 0xb7, 0x16, 0x09, 0x43, 0xdb, 0x6d, 0x07, - 0xf1, 0xd4, 0xc7, 0x30, 0xac, 0x50, 0x43, 0x9f, 0x82, 0x29, 0x31, 0xc8, 0xcd, 0x8e, 0xd1, 0x16, - 0xf6, 0x86, 0x92, 0x23, 0xb5, 0xa6, 0x20, 0x5a, 0xba, 0x2c, 0x08, 0x4f, 0xa9, 0xa5, 0x01, 0x4e, - 0x52, 0x43, 0x07, 0x30, 0xd9, 0x51, 0x6d, 0x28, 0xc3, 0xe5, 0xc5, 0x19, 0xc5, 0x9e, 0xb2, 0x74, - 0x49, 0x10, 0x9f, 0x4c, 0x58, 0x5f, 0x12, 0xa4, 0x72, 0x54, 0xc1, 0x91, 0xb3, 0x52, 0x05, 0x09, - 0x8c, 0x71, 0x65, 0x38, 0x98, 0x1b, 0x65, 0x1f, 0xf8, 0x54, 0x99, 0x0f, 0xe4, 0x7a, 0x75, 0x6c, - 0xd3, 0xe5, 0xbf, 0x03, 0x1c, 0xe1, 0x46, 0x7b, 0x30, 0x49, 0x4f, 0xf5, 0x16, 0x71, 0x88, 0x19, - 0x7a, 0xfe, 0xdc, 0x58, 0x79, 0x9b, 0x69, 0x4b, 0xc1, 0xc3, 0x4d, 0x69, 0x6a, 0x09, 0x4e, 0xd0, - 0x91, 0xb6, 0x82, 0x6a, 0xa1, 0xad, 0xa0, 0x07, 0x13, 0x7b, 0x8a, 0x4d, 0x6b, 0x9c, 0x0d, 0xc2, - 0x87, 0xcb, 0x74, 0x2c, 0x36, 0x70, 0x2d, 0x5d, 0x14, 0x84, 0x26, 0x54, 0x63, 0x98, 0x4a, 0x47, - 0x3f, 0xac, 0xc2, 0x6c, 0xdd, 0xe9, 0x05, 0x21, 0xf1, 0x17, 0xc5, 0xa5, 0x04, 0xf1, 0xd1, 0x67, - 0x35, 0xb8, 0xc2, 0xfe, 0x6d, 0x78, 0x77, 0xdc, 0x06, 0x71, 0x8c, 0x83, 0xc5, 0x6d, 0x5a, 0xc3, - 0xb2, 0x4e, 0xc6, 0x81, 0x1a, 0x3d, 0x21, 0x45, 0x32, 0xe3, 0x5c, 0x2b, 0x17, 0x23, 0x2e, 0xa0, - 0x84, 0x7e, 0x51, 0x83, 0xfb, 0x73, 0x40, 0x0d, 0xe2, 0x90, 0x30, 0x92, 0x5c, 0x4e, 0xda, 0x8f, - 0x87, 0x8e, 0x0e, 0x6b, 0xf7, 0xb7, 0x8a, 0x90, 0xe2, 0x62, 0x7a, 0xe8, 0x97, 0x35, 0x98, 0xcf, - 0x81, 0xae, 0x18, 0xb6, 0xd3, 0xf3, 0x23, 0xa1, 0xe6, 0xa4, 0xdd, 0x61, 0xb2, 0x45, 0xab, 0x10, - 0x2b, 0xee, 0x43, 0x11, 0x7d, 0x1a, 0x2e, 0x4b, 0xe8, 0x6d, 0xd7, 0x25, 0xc4, 0x4a, 0x88, 0x38, - 0x27, 0xed, 0xca, 0xfd, 0x47, 0x87, 0xb5, 0xcb, 0xad, 0x3c, 0x84, 0x38, 0x9f, 0x0e, 0x6a, 0xc3, - 0x43, 0x31, 0x20, 0xb4, 0x1d, 0xfb, 0x55, 0x2e, 0x85, 0xed, 0xf8, 0x24, 0xd8, 0xf1, 0x1c, 0x8b, - 0x31, 0x0b, 0x6d, 0xe9, 0xad, 0x47, 0x87, 0xb5, 0x87, 0x5a, 0xfd, 0x2a, 0xe2, 0xfe, 0x78, 0x90, - 0x05, 0x93, 0x81, 0x69, 0xb8, 0x4d, 0x37, 0x24, 0xfe, 0x9e, 0xe1, 0xcc, 0x8d, 0x96, 0xfa, 0x40, - 0xbe, 0x45, 0x15, 0x3c, 0x38, 0x81, 0x15, 0x7d, 0x00, 0xaa, 0x64, 0xbf, 0x6b, 0xb8, 0x16, 0xe1, - 0x6c, 0x61, 0x7c, 0xe9, 0x41, 0x7a, 0x18, 0x2d, 0x8b, 0xb2, 0xbb, 0x87, 0xb5, 0xc9, 0xe8, 0xff, - 0x35, 0xcf, 0x22, 0x58, 0xd6, 0x46, 0x3f, 0x0f, 0x97, 0x3a, 0xc6, 0xfe, 0xba, 0x67, 0x11, 0xc6, - 0xe4, 0x82, 0x48, 0xd0, 0xad, 0x96, 0xea, 0xe7, 0xdc, 0xd1, 0x61, 0xed, 0xd2, 0x5a, 0x0e, 0x3e, - 0x9c, 0x4b, 0x85, 0x4e, 0x43, 0xc7, 0xd8, 0xbf, 0xee, 0x1b, 0x26, 0xd9, 0xee, 0x39, 0x9b, 0xc4, - 0xef, 0xd8, 0x2e, 0xd7, 0x25, 0x88, 0xe9, 0xb9, 0x16, 0x65, 0x25, 0xda, 0xa3, 0x23, 0x7c, 0x1a, - 0xd6, 0xfa, 0x55, 0xc4, 0xfd, 0xf1, 0xa0, 0xf7, 0xc0, 0xa4, 0xdd, 0x76, 0x3d, 0x9f, 0x6c, 0x1a, - 0xb6, 0x1b, 0x06, 0x73, 0xc0, 0xcc, 0xee, 0x6c, 0x58, 0x9b, 0x4a, 0x39, 0x4e, 0xd4, 0xd2, 0x0f, - 0x87, 0x60, 0xbc, 0xee, 0xb9, 0x96, 0xcd, 0xd4, 0x98, 0xc7, 0x13, 0x36, 0xd3, 0x87, 0x54, 0x3e, - 0x78, 0xf7, 0xb0, 0x36, 0x25, 0x2b, 0x2a, 0x8c, 0xf1, 0x49, 0x69, 0xa8, 0xe0, 0x8a, 0xf1, 0x5b, - 0x93, 0x16, 0x86, 0xbb, 0x87, 0xb5, 0x0b, 0xb2, 0x59, 0xd2, 0xe8, 0x80, 0xf6, 0xb8, 0xfe, 0xb1, - 0xe9, 0x1b, 0x6e, 0x60, 0x0f, 0xa0, 0x7f, 0x48, 0xcd, 0x72, 0x35, 0x83, 0x0d, 0xe7, 0x50, 0x40, - 0x2f, 0xc3, 0x34, 0x2d, 0xbd, 0xdd, 0xb5, 0x8c, 0x90, 0x94, 0x54, 0x3b, 0xae, 0x08, 0x9a, 0xd3, - 0xab, 0x09, 0x4c, 0x38, 0x85, 0x99, 0xdb, 0x98, 0x8d, 0xc0, 0x73, 0xd9, 0x76, 0x4b, 0xd8, 0x98, - 0x69, 0x29, 0x16, 0x50, 0xf4, 0x18, 0x8c, 0x75, 0x48, 0x10, 0x18, 0x6d, 0xc2, 0xf6, 0xcf, 0x78, - 0x7c, 0x48, 0xae, 0xf1, 0x62, 0x1c, 0xc1, 0xd1, 0xbb, 0x60, 0xc4, 0xf4, 0x2c, 0x12, 0xcc, 0x8d, - 0xb1, 0x19, 0xa6, 0xda, 0xd7, 0x48, 0x9d, 0x16, 0xdc, 0x3d, 0xac, 0x8d, 0x33, 0x3d, 0x9c, 0xfe, - 0xc2, 0xbc, 0x92, 0xfe, 0x6b, 0x54, 0x66, 0x4d, 0x09, 0xe9, 0xc7, 0xb0, 0x8d, 0x9f, 0x9f, 0x99, - 0x59, 0x7f, 0x9d, 0x2a, 0x0c, 0x9e, 0x1b, 0xfa, 0x9e, 0xb3, 0xe1, 0x18, 0x2e, 0x41, 0x5f, 0xd0, - 0x60, 0x66, 0xc7, 0x6e, 0xef, 0xa8, 0x97, 0x5b, 0xe2, 0x60, 0x2b, 0x25, 0xdb, 0xdf, 0x48, 0xe1, - 0x5a, 0xba, 0x74, 0x74, 0x58, 0x9b, 0x49, 0x97, 0xe2, 0x0c, 0x4d, 0xfd, 0x4b, 0x15, 0xb8, 0x24, - 0x7a, 0xe6, 0xd0, 0x93, 0xa6, 0xeb, 0x78, 0x07, 0x1d, 0xe2, 0x9e, 0xc7, 0x3d, 0x54, 0x34, 0x43, - 0x95, 0xc2, 0x19, 0xea, 0x64, 0x66, 0x68, 0xa8, 0xcc, 0x0c, 0xc9, 0x85, 0x7c, 0x8f, 0x59, 0xfa, - 0x73, 0x0d, 0xe6, 0xf2, 0xc6, 0xe2, 0x1c, 0x74, 0xa0, 0x4e, 0x52, 0x07, 0xba, 0x51, 0x56, 0xa9, - 0x4d, 0x77, 0xbd, 0x40, 0x17, 0xfa, 0x49, 0x05, 0xae, 0xc4, 0xd5, 0x9b, 0x6e, 0x10, 0x1a, 0x8e, - 0xc3, 0xcd, 0x3c, 0x67, 0x3f, 0xef, 0xdd, 0x84, 0x2a, 0xbb, 0x3e, 0xd8, 0xa7, 0xaa, 0x7d, 0x2f, - 0xb4, 0x34, 0xef, 0xa7, 0x2c, 0xcd, 0x1b, 0xa7, 0x48, 0xb3, 0xbf, 0xd1, 0xf9, 0x7f, 0x6b, 0x30, - 0x9f, 0xdf, 0xf0, 0x1c, 0x16, 0x95, 0x97, 0x5c, 0x54, 0x1f, 0x3d, 0xbd, 0xaf, 0x2e, 0x58, 0x56, - 0xff, 0xa2, 0x52, 0xf4, 0xb5, 0x4c, 0xd9, 0xde, 0x86, 0x0b, 0x54, 0x0b, 0x0a, 0x42, 0x61, 0x12, - 0x3d, 0x99, 0xaf, 0x40, 0x64, 0x23, 0xba, 0x80, 0x93, 0x38, 0x70, 0x1a, 0x29, 0x5a, 0x87, 0x31, - 0xaa, 0xfa, 0x50, 0xfc, 0x95, 0xe3, 0xe3, 0x97, 0xa7, 0x51, 0x8b, 0xb7, 0xc5, 0x11, 0x12, 0xf4, - 0x73, 0x30, 0x65, 0xc9, 0x1d, 0x75, 0x8f, 0x8b, 0xc2, 0x34, 0x56, 0x66, 0xbc, 0x6e, 0xa8, 0xad, - 0x71, 0x12, 0x99, 0xfe, 0x57, 0x1a, 0x3c, 0xd8, 0x6f, 0x6d, 0xa1, 0x57, 0x00, 0xcc, 0x48, 0xbc, - 0xe0, 0xae, 0x22, 0x25, 0xcd, 0xdb, 0x52, 0x48, 0x89, 0x37, 0xa8, 0x2c, 0x0a, 0xb0, 0x42, 0x24, - 0xe7, 0xfe, 0xb1, 0x72, 0x46, 0xf7, 0x8f, 0xfa, 0xff, 0xd1, 0x54, 0x56, 0xa4, 0xce, 0xed, 0x9b, - 0x8d, 0x15, 0xa9, 0x7d, 0x2f, 0xb4, 0xaf, 0xfd, 0xa7, 0x0a, 0x3c, 0x9c, 0xdf, 0x44, 0x39, 0x7b, - 0x3f, 0x02, 0xa3, 0x5d, 0xee, 0xcf, 0x33, 0xc4, 0xce, 0xc6, 0x47, 0x29, 0x67, 0xe1, 0xde, 0x36, - 0x77, 0x0f, 0x6b, 0xf3, 0x79, 0x8c, 0x5e, 0xf8, 0xe9, 0x88, 0x76, 0xc8, 0x4e, 0x59, 0x19, 0xb8, - 0xf4, 0xf7, 0xee, 0x63, 0x32, 0x17, 0x63, 0x8b, 0x38, 0xc7, 0x36, 0x2c, 0x7c, 0x46, 0x83, 0xe9, - 0xc4, 0x8a, 0x0e, 0xe6, 0x46, 0xd8, 0x1a, 0x2d, 0x75, 0xf5, 0x93, 0xd8, 0x2a, 0xf1, 0xc9, 0x9d, - 0x28, 0x0e, 0x70, 0x8a, 0x60, 0x8a, 0xcd, 0xaa, 0xa3, 0xfa, 0xa6, 0x63, 0xb3, 0x6a, 0xe7, 0x0b, - 0xd8, 0xec, 0xaf, 0x56, 0x8a, 0xbe, 0x96, 0xb1, 0xd9, 0x3b, 0x30, 0x1e, 0x79, 0x56, 0x46, 0xec, - 0x62, 0x65, 0xd0, 0x3e, 0x71, 0x74, 0xb1, 0xdb, 0x43, 0x54, 0x12, 0xe0, 0x98, 0x16, 0xfa, 0x9c, - 0x06, 0x10, 0x4f, 0x8c, 0xd8, 0x54, 0x9b, 0xa7, 0x37, 0x1c, 0x8a, 0x58, 0x33, 0x4d, 0xb7, 0xb4, - 0xb2, 0x28, 0x14, 0xba, 0xfa, 0xb7, 0x87, 0x00, 0x65, 0xfb, 0x4e, 0xc5, 0xcd, 0x5d, 0xdb, 0xb5, - 0xd2, 0x0a, 0xc1, 0x4d, 0xdb, 0xb5, 0x30, 0x83, 0x1c, 0x43, 0x20, 0x7d, 0x1a, 0x2e, 0xb4, 0x1d, - 0x6f, 0xcb, 0x70, 0x9c, 0x03, 0xe1, 0xac, 0x29, 0xdc, 0xfe, 0x2e, 0xd2, 0x83, 0xe9, 0x7a, 0x12, - 0x84, 0xd3, 0x75, 0x51, 0x17, 0x66, 0x7c, 0xaa, 0xca, 0x9a, 0xb6, 0xc3, 0x54, 0x27, 0xaf, 0x17, - 0x96, 0xb4, 0x95, 0x30, 0xf1, 0x1e, 0xa7, 0x70, 0xe1, 0x0c, 0x76, 0xf4, 0x76, 0x18, 0xeb, 0xfa, - 0x76, 0xc7, 0xf0, 0x0f, 0x98, 0x72, 0x56, 0x5d, 0x9a, 0xa0, 0x27, 0xdc, 0x06, 0x2f, 0xc2, 0x11, - 0x0c, 0xfd, 0x3c, 0x8c, 0x3b, 0xf6, 0x36, 0x31, 0x0f, 0x4c, 0x87, 0x08, 0xe3, 0xc6, 0xad, 0xd3, - 0x59, 0x32, 0xab, 0x11, 0x5a, 0x71, 0xa5, 0x1a, 0xfd, 0xc4, 0x31, 0x41, 0xfd, 0xb5, 0x0a, 0x3c, - 0xd0, 0xa7, 0x25, 0xc2, 0x74, 0x41, 0x8b, 0x0f, 0x13, 0xd3, 0xf7, 0x1e, 0xbe, 0x08, 0x45, 0xe1, - 0xdd, 0xc3, 0xda, 0xdb, 0xfa, 0x20, 0x68, 0xd1, 0xf5, 0x43, 0xda, 0x07, 0x38, 0x46, 0x83, 0x9a, - 0x30, 0x6a, 0xc5, 0x66, 0xbc, 0xf1, 0xa5, 0xc7, 0x29, 0x8b, 0xe5, 0x86, 0xb6, 0xe3, 0x62, 0x13, - 0x08, 0xd0, 0x2a, 0x8c, 0xf1, 0xdb, 0x53, 0x22, 0xd8, 0xf5, 0x13, 0x4c, 0xa7, 0xe5, 0x45, 0xc7, - 0x45, 0x16, 0xa1, 0xd0, 0xff, 0xbf, 0x06, 0x63, 0x75, 0xcf, 0x27, 0x8d, 0xf5, 0x16, 0x3a, 0x80, - 0x09, 0xc5, 0x4f, 0x5b, 0xb0, 0xae, 0x92, 0x7b, 0x99, 0x61, 0x5c, 0x8c, 0xb1, 0x45, 0x3e, 0x9e, - 0xb2, 0x00, 0xab, 0xb4, 0xd0, 0x2b, 0x74, 0xcc, 0xef, 0xf8, 0x76, 0x48, 0x09, 0x0f, 0x72, 0xe9, - 0xc4, 0x09, 0xe3, 0x08, 0x17, 0x5f, 0x06, 0xf2, 0x27, 0x8e, 0xa9, 0xe8, 0x1b, 0x74, 0xdb, 0xa6, - 0xbb, 0x89, 0x9e, 0x82, 0xe1, 0x8e, 0x67, 0x45, 0xf3, 0xfe, 0x8e, 0x68, 0x53, 0xae, 0x79, 0x16, - 0x1d, 0xdb, 0x2b, 0xd9, 0x16, 0xcc, 0x34, 0xc6, 0xda, 0xe8, 0xeb, 0x30, 0x93, 0xa6, 0x8f, 0x9e, - 0x82, 0x69, 0xd3, 0xeb, 0x74, 0x3c, 0xb7, 0xd5, 0xdb, 0xde, 0xb6, 0xf7, 0x49, 0xc2, 0xf9, 0xb6, - 0x9e, 0x80, 0xe0, 0x54, 0x4d, 0xfd, 0x1b, 0x1a, 0x0c, 0xd1, 0x79, 0xd1, 0x61, 0xd4, 0xf2, 0x3a, - 0x86, 0xed, 0x8a, 0x5e, 0x31, 0xd7, 0xe0, 0x06, 0x2b, 0xc1, 0x02, 0x82, 0xba, 0x30, 0x1e, 0x49, - 0x3a, 0x03, 0x39, 0x80, 0x34, 0xd6, 0x5b, 0xd2, 0x69, 0x4e, 0xb2, 0xdf, 0xa8, 0x24, 0xc0, 0x31, - 0x11, 0xdd, 0x80, 0xd9, 0xc6, 0x7a, 0xab, 0xe9, 0x9a, 0x4e, 0xcf, 0x22, 0xcb, 0xfb, 0xec, 0x0f, - 0x65, 0x00, 0x36, 0x2f, 0x11, 0xdf, 0xc9, 0x18, 0x80, 0xa8, 0x84, 0x23, 0x18, 0xad, 0x46, 0x78, - 0x0b, 0xe1, 0x21, 0xcb, 0xaa, 0x09, 0x24, 0x38, 0x82, 0xe9, 0x3f, 0xac, 0xc0, 0x84, 0xd2, 0x21, - 0xe4, 0xc0, 0x18, 0xff, 0xdc, 0xc8, 0x41, 0x6d, 0xb9, 0xe4, 0x27, 0x26, 0x7b, 0xcd, 0xa9, 0xf3, - 0x01, 0x0d, 0x70, 0x44, 0x42, 0x65, 0x66, 0x95, 0x3e, 0xcc, 0x6c, 0x01, 0x80, 0xbb, 0xe2, 0x31, - 0xbf, 0x0a, 0xbe, 0x25, 0xd9, 0x79, 0xd1, 0x92, 0xa5, 0x58, 0xa9, 0x81, 0x1e, 0x14, 0x6c, 0x9f, - 0x7b, 0x60, 0x54, 0x53, 0x2c, 0x7f, 0x1b, 0x46, 0x5e, 0xf5, 0x5c, 0x12, 0x88, 0x8b, 0xa7, 0x53, - 0xfa, 0xc0, 0x71, 0x7a, 0xa8, 0xbf, 0x48, 0xf1, 0x62, 0x8e, 0x5e, 0xff, 0x75, 0x0d, 0xa0, 0x61, - 0x84, 0x06, 0xbf, 0x27, 0x39, 0x86, 0x93, 0xf3, 0x83, 0x89, 0xd3, 0xaa, 0x9a, 0x71, 0xfc, 0x1c, - 0x0e, 0xec, 0x57, 0xa3, 0xcf, 0x97, 0x52, 0x30, 0xc7, 0xde, 0xb2, 0x5f, 0x25, 0x98, 0xc1, 0xd1, - 0x3b, 0x61, 0x9c, 0xb8, 0xa6, 0x7f, 0xd0, 0x0d, 0x89, 0xc5, 0x46, 0xa0, 0xca, 0x77, 0xe8, 0x72, - 0x54, 0x88, 0x63, 0xb8, 0xfe, 0x38, 0x24, 0x55, 0x99, 0x7b, 0xf7, 0x52, 0xbf, 0xab, 0xc1, 0xcc, - 0xf2, 0x7e, 0xd7, 0xf6, 0x99, 0xe3, 0x33, 0xf1, 0xa9, 0x5e, 0x80, 0x1e, 0x83, 0xb1, 0x3d, 0xfe, - 0xaf, 0x68, 0x29, 0x75, 0x2f, 0x51, 0x03, 0x47, 0x70, 0xb4, 0x0d, 0xd3, 0x84, 0x35, 0x67, 0x02, - 0x80, 0x11, 0x96, 0x71, 0x18, 0xe1, 0x7e, 0xf5, 0x09, 0x2c, 0x38, 0x85, 0x15, 0xb5, 0x60, 0xda, - 0x74, 0x8c, 0x20, 0xb0, 0xb7, 0x6d, 0x33, 0x76, 0xe9, 0x19, 0x5f, 0x7a, 0x27, 0x63, 0x0b, 0x09, - 0xc8, 0xdd, 0xc3, 0xda, 0x65, 0xd1, 0xcf, 0x24, 0x00, 0xa7, 0x50, 0xe8, 0xdf, 0xd1, 0x60, 0x5c, - 0x6a, 0x43, 0x6f, 0x28, 0x8b, 0xe4, 0x09, 0x5e, 0x2e, 0xac, 0xc2, 0x8c, 0xb8, 0xf0, 0xd9, 0xf4, - 0x1c, 0xe2, 0x1b, 0xae, 0x49, 0xd0, 0x07, 0x12, 0x9f, 0xf2, 0x48, 0xca, 0x88, 0x7e, 0x29, 0x5d, - 0x3f, 0xfe, 0x44, 0x3d, 0x80, 0xea, 0x75, 0xb1, 0x59, 0xd0, 0x3c, 0x54, 0xec, 0x48, 0x1e, 0x03, - 0x81, 0xa3, 0xd2, 0x6c, 0xe0, 0x8a, 0x6d, 0xc9, 0x95, 0x55, 0x29, 0x5c, 0xff, 0xca, 0x22, 0x1a, - 0xea, 0xbf, 0x88, 0xf4, 0x6f, 0x6b, 0x30, 0x71, 0xc3, 0xde, 0x22, 0x3e, 0xbf, 0x4e, 0x60, 0xdc, - 0x2e, 0xf1, 0x04, 0x67, 0x22, 0xef, 0xf9, 0x0d, 0xda, 0x87, 0xf1, 0xc0, 0xdc, 0x21, 0x56, 0xcf, - 0x91, 0xde, 0x26, 0xd7, 0xcb, 0x19, 0x67, 0x25, 0xe9, 0x96, 0xc0, 0xa7, 0x38, 0x10, 0x47, 0x14, - 0x70, 0x4c, 0x4c, 0xff, 0x24, 0x5c, 0xcc, 0x69, 0x84, 0x6a, 0x30, 0x12, 0x84, 0x86, 0x1f, 0x8a, - 0x31, 0x63, 0x4c, 0x84, 0xf9, 0x6b, 0x61, 0x5e, 0x8e, 0xee, 0x87, 0x21, 0xe2, 0x5a, 0x62, 0xd0, - 0xc6, 0x8e, 0x0e, 0x6b, 0x43, 0xcb, 0xae, 0x85, 0x69, 0x19, 0x9d, 0x70, 0xc7, 0x4b, 0x2c, 0x6d, - 0x36, 0xe1, 0xab, 0xa2, 0x0c, 0x4b, 0x28, 0x33, 0xa7, 0xa7, 0x2d, 0xc7, 0xe8, 0x35, 0x0d, 0x66, - 0xb6, 0x53, 0xd3, 0x3a, 0x88, 0xc1, 0x3a, 0xbd, 0x44, 0x96, 0xe6, 0xc4, 0x80, 0x64, 0x16, 0x1b, - 0xce, 0xd0, 0xd5, 0xff, 0xf5, 0x30, 0x3c, 0x74, 0xc3, 0xf3, 0xed, 0x57, 0x3d, 0x37, 0x34, 0x9c, - 0x0d, 0xcf, 0x8a, 0x2f, 0x8e, 0xc5, 0xf2, 0xfe, 0xbc, 0x06, 0xf7, 0x99, 0xdd, 0x1e, 0x77, 0x8a, - 0x8a, 0xee, 0xf3, 0x36, 0x88, 0x6f, 0x7b, 0x65, 0xef, 0x8f, 0xd9, 0x93, 0x91, 0xfa, 0xc6, 0xed, - 0x3c, 0x94, 0xb8, 0x88, 0x16, 0xbb, 0xc6, 0xb6, 0xbc, 0x3b, 0x2e, 0xeb, 0x5c, 0x2b, 0x64, 0xa3, - 0xf9, 0x6a, 0x3c, 0x09, 0x25, 0xaf, 0xb1, 0x1b, 0xb9, 0x18, 0x71, 0x01, 0x25, 0xf4, 0x69, 0xb8, - 0x6c, 0xf3, 0xce, 0x61, 0x62, 0x58, 0xb6, 0x4b, 0x82, 0x80, 0x5d, 0xe6, 0x0e, 0x72, 0x4f, 0xdb, - 0xcc, 0x43, 0x88, 0xf3, 0xe9, 0xa0, 0x97, 0x00, 0x82, 0x03, 0xd7, 0x14, 0xe3, 0x3f, 0x52, 0x8a, - 0x2a, 0x3f, 0xc1, 0x25, 0x16, 0xac, 0x60, 0xa4, 0x87, 0x58, 0x28, 0x17, 0xe5, 0x28, 0xbb, 0xf3, - 0x65, 0x87, 0x58, 0xbc, 0x86, 0x62, 0xb8, 0xfe, 0xcf, 0x34, 0x18, 0x13, 0x0f, 0xc9, 0xd0, 0x3b, - 0x52, 0x82, 0x9c, 0x34, 0xe3, 0xa6, 0x84, 0xb9, 0x03, 0x66, 0x82, 0x13, 0x42, 0xbc, 0x60, 0xca, - 0xa5, 0x24, 0x01, 0x41, 0x38, 0xd6, 0x08, 0x12, 0xa6, 0xb8, 0x48, 0x4b, 0x50, 0x88, 0xe9, 0xdf, - 0xd4, 0x60, 0x36, 0xd3, 0xea, 0x18, 0xca, 0xec, 0x39, 0xde, 0x6e, 0x7d, 0x77, 0x12, 0xd8, 0x9b, - 0xc1, 0xc5, 0x8d, 0x66, 0x8b, 0xf8, 0x7b, 0x72, 0x13, 0x52, 0x9e, 0x11, 0x7b, 0x31, 0x89, 0x5e, - 0x0c, 0xc0, 0x33, 0x6e, 0xa6, 0x70, 0xc5, 0x3c, 0x23, 0x0d, 0xc1, 0x19, 0xba, 0xe8, 0x4b, 0x1a, - 0xcc, 0x18, 0xc9, 0x37, 0x83, 0x11, 0x53, 0x2f, 0xe5, 0xe1, 0x9e, 0x7a, 0x7f, 0x18, 0xf7, 0x25, - 0x05, 0x08, 0x70, 0x86, 0x2c, 0x7a, 0x0f, 0x4c, 0x1a, 0x5d, 0x7b, 0xb1, 0x67, 0xd9, 0xc4, 0x35, - 0xe5, 0xf3, 0x31, 0x66, 0x68, 0x5b, 0xdc, 0x68, 0xca, 0x72, 0x9c, 0xa8, 0x25, 0x9f, 0xfa, 0x89, - 0x81, 0x1c, 0x1e, 0xf0, 0xa9, 0x9f, 0x18, 0xc3, 0xf8, 0xa9, 0x9f, 0x18, 0x3a, 0x95, 0x08, 0xfa, - 0x38, 0xdc, 0xcf, 0x4f, 0xc3, 0x25, 0x23, 0xb0, 0xcd, 0xc5, 0x5e, 0xb8, 0x43, 0xdc, 0x30, 0x92, - 0x90, 0xb8, 0x45, 0x81, 0x39, 0xb4, 0x2c, 0x17, 0x55, 0xc2, 0xc5, 0xed, 0x91, 0x0b, 0xe0, 0xd9, - 0x96, 0x29, 0xbe, 0x87, 0x9b, 0x1d, 0x4a, 0xf9, 0x1b, 0xdd, 0x6a, 0x36, 0xea, 0xe2, 0x73, 0x18, - 0x9b, 0x88, 0x7f, 0x63, 0x85, 0x02, 0x7a, 0x5d, 0x83, 0x29, 0xb1, 0xc8, 0x05, 0xcd, 0x31, 0x36, - 0xff, 0x2f, 0x96, 0x5d, 0x8c, 0xa9, 0x05, 0xbf, 0x80, 0x55, 0xe4, 0xdc, 0x67, 0x5f, 0x7a, 0xd8, - 0x25, 0x60, 0x38, 0xd9, 0x0f, 0xf4, 0x0f, 0x35, 0xb8, 0x14, 0x10, 0x7f, 0xcf, 0x36, 0xc9, 0xa2, - 0x69, 0x7a, 0x3d, 0x37, 0x9a, 0xe4, 0x6a, 0xf9, 0x67, 0x57, 0xad, 0x1c, 0x7c, 0xdc, 0xb5, 0x23, - 0x0f, 0x82, 0x73, 0xe9, 0xd3, 0xf3, 0xeb, 0xc2, 0x1d, 0x23, 0x34, 0x77, 0xea, 0x86, 0xb9, 0xc3, - 0xf4, 0x06, 0xee, 0xcd, 0x51, 0x72, 0xd3, 0x3c, 0x9f, 0x44, 0xc5, 0xcd, 0x66, 0xa9, 0x42, 0x9c, - 0x26, 0x88, 0x02, 0xa8, 0xfa, 0xe4, 0x95, 0x1e, 0x09, 0x98, 0xcb, 0x07, 0x25, 0xde, 0x1c, 0x78, - 0xc6, 0xb0, 0x40, 0xc8, 0xa5, 0xa0, 0xe8, 0x17, 0x96, 0x84, 0x50, 0x1b, 0x1e, 0xe2, 0x2b, 0x77, - 0xd1, 0xf5, 0xdc, 0x83, 0x8e, 0xd7, 0x0b, 0x52, 0xab, 0x7f, 0x82, 0xad, 0x7e, 0xe6, 0xd4, 0xb2, - 0xdc, 0xaf, 0x22, 0xee, 0x8f, 0x07, 0xbd, 0x00, 0x55, 0xb2, 0x47, 0xdc, 0x70, 0x73, 0x73, 0x75, - 0x6e, 0xb2, 0xd4, 0xd1, 0xc8, 0x3e, 0x61, 0x59, 0xe0, 0xc0, 0x12, 0x1b, 0xf2, 0x60, 0xcc, 0xf1, - 0xda, 0x6d, 0xdb, 0x6d, 0xcf, 0x4d, 0x95, 0x5f, 0x47, 0x89, 0x61, 0x5b, 0xe5, 0xf8, 0xb8, 0xc0, - 0x2c, 0x7e, 0xe0, 0x88, 0xca, 0xfc, 0x47, 0x00, 0x65, 0xb7, 0x00, 0x9a, 0x81, 0xa1, 0x5d, 0xc2, - 0xbd, 0x1b, 0xc6, 0x31, 0xfd, 0x17, 0x5d, 0x82, 0x91, 0x3d, 0xc3, 0xe9, 0x71, 0xe9, 0xbe, 0x8a, - 0xf9, 0x8f, 0xa7, 0x2a, 0x1f, 0xd0, 0xf4, 0x5f, 0xd6, 0xe0, 0x52, 0x1e, 0x41, 0x7a, 0xc4, 0xef, - 0x11, 0x7f, 0xcb, 0x0b, 0x22, 0x47, 0x89, 0x11, 0x7e, 0xc4, 0x3f, 0x17, 0x15, 0xe2, 0x18, 0x8e, - 0x9a, 0x70, 0x71, 0x27, 0x0c, 0xbb, 0x8b, 0xa6, 0x49, 0x82, 0x40, 0xd6, 0x60, 0xd4, 0x46, 0xf8, - 0x13, 0xf7, 0x1b, 0x9b, 0x9b, 0x1b, 0x29, 0x30, 0xce, 0x6b, 0xa3, 0xff, 0xbe, 0x06, 0x97, 0x73, - 0x17, 0x0e, 0xc2, 0x70, 0x85, 0x79, 0x43, 0xb9, 0x6b, 0xbd, 0xd0, 0x08, 0x6d, 0xb7, 0xdd, 0x74, - 0xb7, 0x1d, 0xbb, 0xbd, 0x13, 0x8a, 0xee, 0x31, 0x49, 0x6d, 0x2d, 0xb7, 0x06, 0x2e, 0x68, 0x49, - 0x3b, 0xde, 0x31, 0xf6, 0x33, 0x08, 0x95, 0x8e, 0xaf, 0x65, 0xc1, 0x38, 0xaf, 0x8d, 0xfe, 0xf5, - 0x11, 0x78, 0x80, 0x76, 0x3c, 0x16, 0x1a, 0xd6, 0x0c, 0xd7, 0x68, 0xbf, 0x31, 0x0f, 0xe7, 0x6f, - 0x6b, 0x70, 0xdf, 0x4e, 0xbe, 0x40, 0x2f, 0xc4, 0x96, 0x67, 0x4b, 0x29, 0x5e, 0xfd, 0x74, 0x04, - 0xbe, 0x75, 0xfb, 0x56, 0xc1, 0x45, 0x9d, 0x42, 0x1f, 0x81, 0x19, 0xd7, 0xb3, 0x48, 0xbd, 0xd9, - 0xc0, 0x6b, 0x46, 0xb0, 0xdb, 0x8a, 0x4c, 0x2d, 0x23, 0xdc, 0x32, 0xbf, 0x9e, 0x82, 0xe1, 0x4c, - 0x6d, 0xb4, 0x07, 0xa8, 0xeb, 0x59, 0xcb, 0x7b, 0xb6, 0x19, 0x39, 0x6d, 0x95, 0xbf, 0x0d, 0x60, - 0xaf, 0x53, 0x36, 0x32, 0xd8, 0x70, 0x0e, 0x05, 0xa6, 0x91, 0xd0, 0xce, 0xac, 0x79, 0xae, 0x1d, - 0x7a, 0x3e, 0xf3, 0xb6, 0x1b, 0x48, 0x30, 0x67, 0xeb, 0x7c, 0x3d, 0x17, 0x23, 0x2e, 0xa0, 0xa4, - 0xff, 0x5f, 0x0d, 0x2e, 0xd0, 0x65, 0xb1, 0xe1, 0x7b, 0xfb, 0x07, 0x6f, 0xc4, 0x05, 0xf9, 0x98, - 0xb0, 0x3a, 0x73, 0x4d, 0xfa, 0xb2, 0x62, 0x71, 0x1e, 0x67, 0x7d, 0x8e, 0x8d, 0xcc, 0xaa, 0x31, - 0x61, 0xa8, 0xd8, 0x98, 0xa0, 0xbf, 0x5e, 0xe1, 0x42, 0x72, 0xa4, 0xcc, 0xbf, 0x21, 0xf7, 0xe1, - 0xfb, 0x61, 0x8a, 0x96, 0xad, 0x19, 0xfb, 0x1b, 0x8d, 0xe7, 0x3c, 0x27, 0x72, 0x78, 0x64, 0x4e, - 0x0c, 0x37, 0x55, 0x00, 0x4e, 0xd6, 0x43, 0x4f, 0xc1, 0x58, 0x97, 0x3f, 0xab, 0x10, 0xc6, 0x85, - 0x87, 0xb9, 0x69, 0x96, 0x15, 0xdd, 0x3d, 0xac, 0xcd, 0x8a, 0xcf, 0xb6, 0xdd, 0xb6, 0x28, 0xc4, - 0x51, 0x03, 0xfd, 0x2b, 0x97, 0x80, 0x21, 0x77, 0x48, 0xf8, 0x46, 0x1c, 0x93, 0xc7, 0x61, 0xc2, - 0xec, 0xf6, 0xea, 0x2b, 0xad, 0x67, 0x7b, 0x5e, 0x68, 0x08, 0xcb, 0x33, 0x93, 0x9a, 0xeb, 0x1b, - 0xb7, 0xa3, 0x62, 0xac, 0xd6, 0xa1, 0xdc, 0xc1, 0xec, 0xf6, 0x04, 0xbf, 0xdd, 0x50, 0x6f, 0xf2, - 0x19, 0x77, 0xa8, 0x6f, 0xdc, 0x4e, 0xc0, 0x70, 0xa6, 0x36, 0xfa, 0x34, 0x4c, 0x12, 0xb1, 0x71, - 0x6f, 0x18, 0xbe, 0x25, 0xf8, 0x42, 0x69, 0xb1, 0x47, 0x0e, 0x6d, 0xc4, 0x0d, 0xb8, 0xb2, 0xb1, - 0xac, 0x90, 0xc0, 0x09, 0x82, 0x4c, 0xf0, 0x17, 0xbf, 0xe9, 0x2c, 0x7b, 0x56, 0x9a, 0x51, 0x8c, - 0x08, 0xc1, 0xbf, 0xa8, 0x12, 0x2e, 0x6e, 0x8f, 0x7e, 0x5b, 0x83, 0x2b, 0x12, 0x6a, 0xbb, 0x76, - 0xa7, 0xd7, 0xc1, 0xc4, 0x74, 0x0c, 0xbb, 0x23, 0xb4, 0x80, 0xe7, 0x4f, 0xed, 0x43, 0x93, 0xe8, - 0x39, 0xb3, 0xca, 0x87, 0xe1, 0x82, 0x2e, 0xa1, 0x6f, 0x6a, 0xf0, 0x70, 0x04, 0xda, 0xa0, 0x7a, - 0x78, 0xcf, 0x27, 0xb1, 0xbb, 0xad, 0x18, 0x92, 0xb1, 0x52, 0xbc, 0xf3, 0x91, 0xa3, 0xc3, 0xda, - 0xc3, 0xcb, 0xf7, 0xc0, 0x8d, 0xef, 0x49, 0x5d, 0x5d, 0x2e, 0x2d, 0x6f, 0x3b, 0x14, 0x6a, 0xc3, - 0x59, 0x2d, 0x17, 0x4a, 0x02, 0x27, 0x08, 0xa2, 0xdf, 0xd1, 0xe0, 0x3e, 0xb5, 0x40, 0x5d, 0x2d, - 0x5c, 0x5f, 0x78, 0xe1, 0xd4, 0x3a, 0x93, 0xc2, 0xcf, 0x2d, 0x73, 0x05, 0x40, 0x5c, 0xd4, 0x2b, - 0xca, 0xb6, 0x3b, 0x6c, 0x61, 0x72, 0x9d, 0x62, 0x84, 0xb3, 0x6d, 0xbe, 0x56, 0x03, 0x1c, 0xc1, - 0xa8, 0xaa, 0xde, 0xf5, 0xac, 0x0d, 0xdb, 0x0a, 0x56, 0xed, 0x8e, 0x1d, 0x32, 0xa9, 0x7f, 0x88, - 0x0f, 0xc7, 0x86, 0x67, 0x6d, 0x34, 0x1b, 0xbc, 0x1c, 0x27, 0x6a, 0xb1, 0x87, 0x23, 0x76, 0xc7, - 0x68, 0x93, 0x8d, 0x9e, 0xe3, 0x6c, 0xf8, 0x1e, 0x33, 0xdf, 0x34, 0x88, 0x61, 0x39, 0xb6, 0x4b, - 0x4a, 0x4a, 0xf9, 0x6c, 0xbb, 0x35, 0x8b, 0x90, 0xe2, 0x62, 0x7a, 0x68, 0x01, 0x60, 0xdb, 0xb0, - 0x9d, 0xd6, 0x1d, 0xa3, 0x7b, 0xcb, 0x65, 0xaa, 0x40, 0x95, 0xeb, 0xc9, 0x2b, 0xb2, 0x14, 0x2b, - 0x35, 0xe8, 0x6a, 0xa2, 0x5c, 0x10, 0x13, 0xfe, 0x60, 0x79, 0x6e, 0xfa, 0x94, 0x56, 0x53, 0x84, - 0x90, 0x0f, 0xdf, 0x4d, 0x85, 0x04, 0x4e, 0x10, 0x44, 0x9f, 0xd7, 0x60, 0x3a, 0x38, 0x08, 0x42, - 0xd2, 0x91, 0x7d, 0xb8, 0x70, 0xda, 0x7d, 0x60, 0x86, 0xad, 0x56, 0x82, 0x08, 0x4e, 0x11, 0x45, - 0x06, 0x3c, 0xc0, 0x46, 0xf5, 0x7a, 0xfd, 0x86, 0xdd, 0xde, 0x91, 0xcf, 0x41, 0x36, 0x88, 0x6f, - 0x12, 0x37, 0x9c, 0x9b, 0x61, 0xeb, 0x86, 0xbd, 0x87, 0x6d, 0x16, 0x57, 0xc3, 0xfd, 0x70, 0xa0, - 0x97, 0x60, 0x5e, 0x80, 0x57, 0xbd, 0x3b, 0x19, 0x0a, 0xb3, 0x8c, 0x02, 0x7b, 0xa3, 0xd3, 0x2c, - 0xac, 0x85, 0xfb, 0x60, 0xa0, 0x1a, 0x45, 0x40, 0x7c, 0x66, 0x97, 0x26, 0x72, 0xf1, 0x04, 0x73, - 0x88, 0x2d, 0x02, 0xa6, 0x51, 0xb4, 0xb2, 0x60, 0x9c, 0xd7, 0x06, 0x3d, 0x2d, 0xdd, 0x37, 0x0f, - 0x68, 0xc1, 0xb3, 0x1b, 0xad, 0xb9, 0x8b, 0xac, 0x7f, 0x17, 0x15, 0xaf, 0xcc, 0x08, 0x84, 0xd3, - 0x75, 0xa9, 0x6c, 0x11, 0x15, 0x2d, 0xf5, 0xfc, 0x20, 0x9c, 0xbb, 0xc4, 0x1a, 0x33, 0xd9, 0x02, - 0xab, 0x00, 0x9c, 0xac, 0x87, 0x9e, 0x82, 0xe9, 0x80, 0x98, 0xa6, 0xd7, 0xe9, 0x36, 0xc8, 0xb6, - 0xd1, 0x73, 0xc2, 0xb9, 0xcb, 0xac, 0xf7, 0x7c, 0x06, 0x13, 0x10, 0x9c, 0xaa, 0x89, 0x0e, 0xe0, - 0xa2, 0x7c, 0xbe, 0xbb, 0xea, 0xb5, 0xd7, 0x8c, 0x7d, 0x26, 0xaa, 0x5f, 0xb9, 0xf7, 0x0e, 0x5c, - 0x88, 0xfc, 0x9a, 0x16, 0x9e, 0xed, 0x19, 0x6e, 0x68, 0x87, 0x07, 0x7c, 0xb8, 0xea, 0x59, 0x74, - 0x38, 0x8f, 0x06, 0x5a, 0x85, 0x4b, 0xa9, 0xe2, 0x15, 0xdb, 0x21, 0xc1, 0xdc, 0x7d, 0xec, 0xb3, - 0x99, 0x21, 0xa6, 0x9e, 0x03, 0xc7, 0xb9, 0xad, 0xd0, 0x2d, 0xb8, 0xdc, 0xf5, 0xbd, 0x90, 0x98, - 0xe1, 0x4d, 0x2a, 0x9e, 0x38, 0xe2, 0x03, 0x83, 0xb9, 0x39, 0x36, 0x16, 0xcc, 0x26, 0xbf, 0x91, - 0x57, 0x01, 0xe7, 0xb7, 0x43, 0x5f, 0xd7, 0xe0, 0x6a, 0x10, 0xfa, 0xc4, 0xe8, 0xd8, 0x6e, 0xbb, - 0xee, 0xb9, 0x2e, 0x61, 0x6c, 0xb2, 0x69, 0xc5, 0xae, 0x49, 0xf7, 0x97, 0xe2, 0x53, 0xfa, 0xd1, - 0x61, 0xed, 0x6a, 0xab, 0x2f, 0x66, 0x7c, 0x0f, 0xca, 0xfa, 0x61, 0x85, 0x6b, 0xdd, 0x19, 0xde, - 0x4f, 0x17, 0x61, 0x87, 0x74, 0x3c, 0xff, 0x60, 0x31, 0x8a, 0xa6, 0x25, 0x6c, 0xe0, 0x6c, 0x11, - 0xae, 0x25, 0x41, 0x38, 0x5d, 0x97, 0x4a, 0x66, 0x6c, 0xb3, 0xac, 0xb4, 0xe2, 0xf6, 0x95, 0x58, - 0x32, 0x6b, 0xa6, 0x60, 0x38, 0x53, 0x1b, 0xd5, 0x61, 0x56, 0x94, 0x35, 0xa9, 0x72, 0x13, 0xac, - 0xf8, 0x24, 0x92, 0x79, 0xa9, 0x9a, 0x30, 0xdb, 0x4c, 0x03, 0x71, 0xb6, 0x3e, 0xfd, 0x0a, 0xfa, - 0x43, 0xed, 0xc5, 0x70, 0xfc, 0x15, 0xeb, 0x49, 0x10, 0x4e, 0xd7, 0x8d, 0xb4, 0xcf, 0x44, 0x17, - 0x46, 0xe2, 0xaf, 0x58, 0x4f, 0xc1, 0x70, 0xa6, 0xb6, 0xfe, 0x5f, 0x87, 0xe1, 0x6d, 0xc7, 0x90, - 0x97, 0x50, 0x27, 0x7f, 0xb8, 0x4f, 0xbe, 0x77, 0x8e, 0x37, 0x3d, 0xdd, 0x82, 0xe9, 0x39, 0x39, - 0xbd, 0xe3, 0x4e, 0x67, 0x50, 0x34, 0x9d, 0x27, 0x27, 0x79, 0xfc, 0xe9, 0xef, 0xe4, 0x4f, 0x7f, - 0xc9, 0x51, 0xbd, 0xe7, 0x72, 0xe9, 0x16, 0x2c, 0x97, 0x92, 0xa3, 0x7a, 0x8c, 0xe5, 0xf5, 0x67, - 0xc3, 0xf0, 0xc8, 0x71, 0x64, 0xb7, 0x92, 0xeb, 0x2b, 0x87, 0xeb, 0x9c, 0xe9, 0xfa, 0x2a, 0x72, - 0xc0, 0x3c, 0xc3, 0xf5, 0x95, 0x43, 0xf2, 0xac, 0xd7, 0x57, 0xd1, 0xa8, 0x9e, 0xd5, 0xfa, 0x2a, - 0x1a, 0xd5, 0x63, 0xac, 0xaf, 0xbf, 0x4c, 0x9f, 0x0f, 0x52, 0x64, 0x6b, 0xc2, 0x90, 0xd9, 0xed, - 0x95, 0x64, 0x52, 0xcc, 0x63, 0xa2, 0xbe, 0x71, 0x1b, 0x53, 0x1c, 0x08, 0xc3, 0x28, 0x5f, 0x3f, - 0x25, 0x59, 0x10, 0xf3, 0x0a, 0xe4, 0x4b, 0x12, 0x0b, 0x4c, 0x74, 0xa8, 0x48, 0x77, 0x87, 0x74, - 0x88, 0x6f, 0x38, 0xad, 0xd0, 0xf3, 0x8d, 0x76, 0x59, 0x6e, 0xc3, 0x86, 0x6a, 0x39, 0x85, 0x0b, - 0x67, 0xb0, 0xd3, 0x01, 0xe9, 0xda, 0x56, 0x49, 0xfe, 0xc2, 0x06, 0x64, 0xa3, 0xd9, 0xc0, 0x14, - 0x87, 0xfe, 0x4f, 0xc6, 0x41, 0x89, 0x50, 0x81, 0x3e, 0x0e, 0xf7, 0x1b, 0x8e, 0xe3, 0xdd, 0xd9, - 0xf0, 0xed, 0x3d, 0xdb, 0x21, 0x6d, 0x62, 0x49, 0x79, 0x26, 0x10, 0x7e, 0x35, 0x4c, 0x67, 0x59, - 0x2c, 0xaa, 0x84, 0x8b, 0xdb, 0xa3, 0xd7, 0x34, 0x98, 0x35, 0xd3, 0x51, 0x01, 0x06, 0xb9, 0x79, - 0xcf, 0x84, 0x18, 0xe0, 0xfb, 0x29, 0x53, 0x8c, 0xb3, 0x64, 0xd1, 0x2f, 0x68, 0xdc, 0x2e, 0x26, - 0x2f, 0x01, 0xc4, 0x9c, 0x5d, 0x3f, 0xa5, 0x8b, 0xc3, 0xd8, 0xc0, 0x16, 0x5f, 0x33, 0x24, 0x09, - 0xa2, 0x6f, 0x6a, 0x70, 0x79, 0x37, 0xcf, 0x9c, 0x2f, 0x66, 0xf6, 0x56, 0xd9, 0xae, 0x14, 0xdc, - 0x0f, 0x70, 0x89, 0x32, 0xb7, 0x02, 0xce, 0xef, 0x88, 0x1c, 0x25, 0x69, 0xe1, 0x14, 0x4c, 0xa0, - 0xf4, 0x28, 0xa5, 0x4c, 0xa5, 0xf1, 0x28, 0x49, 0x00, 0x4e, 0x12, 0x44, 0x5d, 0x18, 0xdf, 0x8d, - 0xcc, 0xca, 0xc2, 0x94, 0x54, 0x2f, 0x4b, 0x5d, 0xb1, 0x4d, 0xf3, 0xab, 0x26, 0x59, 0x88, 0x63, - 0x22, 0x68, 0x07, 0xc6, 0x76, 0x39, 0x23, 0x12, 0x26, 0xa0, 0xc5, 0x81, 0x55, 0x54, 0x6e, 0x89, - 0x10, 0x45, 0x38, 0x42, 0xaf, 0xfa, 0xbb, 0x55, 0xef, 0xe1, 0x34, 0xf9, 0x75, 0x0d, 0x2e, 0xef, - 0x11, 0x3f, 0xb4, 0xcd, 0xf4, 0x65, 0xca, 0x78, 0x79, 0x35, 0xfa, 0xb9, 0x3c, 0x84, 0x7c, 0x99, - 0xe4, 0x82, 0x70, 0x7e, 0x17, 0xa8, 0x52, 0xcd, 0x6d, 0xe2, 0xad, 0xd0, 0x08, 0x6d, 0x73, 0xd3, - 0xdb, 0x25, 0x2e, 0xfd, 0x58, 0x11, 0x9b, 0x19, 0x18, 0xe3, 0x60, 0x4a, 0xf5, 0x72, 0x71, 0x35, - 0xdc, 0x0f, 0x87, 0xfe, 0x13, 0x0d, 0x32, 0x96, 0x5d, 0xf4, 0x15, 0x0d, 0x26, 0xb7, 0x89, 0x11, - 0xf6, 0x7c, 0x72, 0xdd, 0x08, 0xe5, 0xd3, 0x98, 0xe7, 0x4e, 0xc3, 0xa0, 0xbc, 0xb0, 0xa2, 0x20, - 0xe6, 0x17, 0xff, 0x32, 0xba, 0x8d, 0x0a, 0xc2, 0x89, 0x1e, 0xcc, 0x3f, 0x03, 0xb3, 0x99, 0x86, - 0x27, 0xba, 0x2e, 0xfd, 0x37, 0x1a, 0xe4, 0x45, 0xeb, 0x46, 0x2f, 0xc1, 0x88, 0x61, 0x59, 0x32, - 0x98, 0xe7, 0x93, 0xe5, 0x1c, 0x5c, 0x2c, 0xf5, 0x05, 0x12, 0xfb, 0x89, 0x39, 0x5a, 0xb4, 0x02, - 0xc8, 0x48, 0xdc, 0x62, 0xaf, 0xc5, 0x2e, 0xfa, 0xec, 0x32, 0x6a, 0x31, 0x03, 0xc5, 0x39, 0x2d, - 0xf4, 0x7f, 0xa0, 0x01, 0xca, 0xc6, 0x43, 0x42, 0x3e, 0x54, 0xc5, 0x52, 0x8e, 0x66, 0xa9, 0x94, - 0xd9, 0x3f, 0xed, 0x77, 0x1c, 0xbf, 0xe2, 0x12, 0x05, 0x01, 0x96, 0x74, 0xf4, 0xbf, 0xd2, 0x20, - 0x0e, 0xf8, 0x87, 0xde, 0x0b, 0x13, 0x16, 0x09, 0x4c, 0xdf, 0xee, 0x86, 0xb1, 0x97, 0xb2, 0x8c, - 0x65, 0xd3, 0x88, 0x41, 0x58, 0xad, 0x87, 0x74, 0x18, 0x0d, 0x8d, 0x60, 0xb7, 0xd9, 0x10, 0x4a, - 0x25, 0x13, 0x01, 0x36, 0x59, 0x09, 0x16, 0x90, 0x38, 0xb6, 0xc1, 0xd0, 0x31, 0x62, 0x1b, 0xa0, - 0xed, 0x53, 0x08, 0xe4, 0x80, 0xee, 0x1d, 0xc4, 0x41, 0xff, 0xcd, 0x0a, 0x5c, 0xa0, 0x55, 0xd6, - 0x0c, 0xdb, 0x0d, 0x89, 0xcb, 0xbc, 0x7c, 0x4b, 0x0e, 0x42, 0x1b, 0xa6, 0xc2, 0x44, 0x8c, 0xb9, - 0x93, 0x7b, 0x6c, 0x4b, 0xaf, 0x99, 0x64, 0x64, 0xb9, 0x24, 0x5e, 0xf4, 0x24, 0x73, 0x87, 0x95, - 0xcf, 0x6e, 0xde, 0x16, 0x2d, 0x55, 0xca, 0x14, 0xc8, 0x5d, 0x11, 0x2c, 0x43, 0x46, 0x89, 0x64, - 0xa5, 0x98, 0xb7, 0x40, 0xef, 0x87, 0x29, 0xe1, 0x55, 0xca, 0x83, 0x54, 0x08, 0xf5, 0x9b, 0x9d, - 0x30, 0x2b, 0x2a, 0x00, 0x27, 0xeb, 0xe9, 0x3f, 0xa8, 0x40, 0x32, 0x16, 0x65, 0xd9, 0x51, 0xca, - 0x46, 0xe8, 0xa8, 0x9c, 0x59, 0x84, 0x8e, 0x77, 0xb1, 0x40, 0xce, 0x3c, 0x46, 0x3f, 0xbf, 0xa5, - 0x56, 0xc3, 0x2f, 0xf3, 0x08, 0xfb, 0xb2, 0x46, 0x3c, 0xac, 0xc3, 0x27, 0x1e, 0xd6, 0xf7, 0x0a, - 0xbf, 0xf0, 0x91, 0x44, 0x9c, 0x94, 0xc8, 0x2f, 0x7c, 0x36, 0xd1, 0x50, 0x71, 0x0a, 0xff, 0x9e, - 0x06, 0x63, 0x22, 0x08, 0xd8, 0x31, 0xbc, 0xe4, 0xb7, 0x61, 0x84, 0xa9, 0x3c, 0x83, 0x48, 0x83, - 0xad, 0x1d, 0xcf, 0x0b, 0x13, 0xa1, 0xd0, 0x98, 0x33, 0x35, 0xfb, 0x17, 0x73, 0xf4, 0xcc, 0x4b, - 0xcf, 0x37, 0x77, 0xec, 0x90, 0x98, 0x61, 0x14, 0x60, 0x29, 0xf2, 0xd2, 0x53, 0xca, 0x71, 0xa2, - 0x96, 0xfe, 0x8d, 0x61, 0x78, 0x58, 0x20, 0xce, 0x88, 0x48, 0x92, 0xc1, 0x1d, 0xc0, 0x45, 0x31, - 0xb7, 0x0d, 0xdf, 0xb0, 0xe5, 0xed, 0x7f, 0x39, 0xd5, 0x57, 0xf8, 0x85, 0x64, 0xd0, 0xe1, 0x3c, - 0x1a, 0x3c, 0x54, 0x10, 0x2b, 0xbe, 0x41, 0x0c, 0x27, 0xdc, 0x89, 0x68, 0x57, 0x06, 0x09, 0x15, - 0x94, 0xc5, 0x87, 0x73, 0xa9, 0x30, 0xef, 0x03, 0x01, 0xa8, 0xfb, 0xc4, 0x50, 0x5d, 0x1f, 0x06, - 0xf0, 0x87, 0x5e, 0xcb, 0xc5, 0x88, 0x0b, 0x28, 0x31, 0x1b, 0xa2, 0xb1, 0xcf, 0x4c, 0x12, 0x98, - 0x84, 0xbe, 0xcd, 0x42, 0xda, 0x49, 0x43, 0xf6, 0x5a, 0x12, 0x84, 0xd3, 0x75, 0xd1, 0x53, 0x30, - 0xcd, 0xbc, 0x39, 0xe2, 0x37, 0xf9, 0x23, 0xf1, 0x0b, 0xb2, 0xf5, 0x04, 0x04, 0xa7, 0x6a, 0xea, - 0xbf, 0xa5, 0xc1, 0xa4, 0xba, 0xec, 0x8e, 0xf1, 0xce, 0xa7, 0xa7, 0x1c, 0x86, 0x03, 0x3c, 0x42, - 0x50, 0xa9, 0x1e, 0xe7, 0x3c, 0xfc, 0xf2, 0x10, 0x5c, 0xcc, 0x69, 0xc3, 0xee, 0xe6, 0x49, 0xea, - 0x60, 0x1d, 0xe4, 0x6e, 0x3e, 0x73, 0x48, 0xcb, 0xbb, 0xf9, 0x34, 0x04, 0x67, 0xe8, 0xa2, 0xe7, - 0x60, 0xc8, 0xf4, 0x6d, 0x31, 0x2c, 0xef, 0x2f, 0xa5, 0x16, 0xe2, 0xe6, 0xd2, 0x84, 0xa0, 0x38, - 0x54, 0xc7, 0x4d, 0x4c, 0x11, 0xd2, 0xe3, 0x41, 0xdd, 0xd4, 0xd1, 0x59, 0xcd, 0x8e, 0x07, 0x75, - 0xef, 0x07, 0x38, 0x59, 0x0f, 0xbd, 0x00, 0x73, 0x42, 0x5e, 0x8f, 0x5e, 0x08, 0x79, 0x6e, 0x10, - 0xd2, 0xfd, 0x17, 0x0a, 0x76, 0xfa, 0xe0, 0xd1, 0x61, 0x6d, 0xee, 0x66, 0x41, 0x1d, 0x5c, 0xd8, - 0x5a, 0xff, 0x8b, 0x21, 0x98, 0x50, 0x02, 0x25, 0xa2, 0xb5, 0x41, 0x0c, 0x1d, 0xf1, 0x17, 0x47, - 0xc6, 0x8e, 0x35, 0x18, 0x6a, 0x77, 0x7b, 0x25, 0x2d, 0x1d, 0x12, 0xdd, 0x75, 0x8a, 0xae, 0xdd, - 0xed, 0xa1, 0xe7, 0xa4, 0xed, 0xa4, 0x9c, 0x75, 0x43, 0x3a, 0xe2, 0xa7, 0xec, 0x27, 0xd1, 0x76, - 0x19, 0x2e, 0xdc, 0x2e, 0x1d, 0x18, 0x0b, 0x84, 0x61, 0x65, 0xa4, 0xfc, 0x7b, 0x59, 0x65, 0xa4, - 0x85, 0x21, 0x85, 0x6b, 0x65, 0x91, 0x9d, 0x25, 0xa2, 0x41, 0x25, 0xbe, 0x1e, 0x7b, 0x28, 0xc5, - 0xd4, 0xcd, 0x2a, 0x97, 0xf8, 0x6e, 0xb3, 0x12, 0x2c, 0x20, 0x99, 0x83, 0x64, 0xec, 0x58, 0x07, - 0xc9, 0x17, 0x2b, 0x80, 0xb2, 0xdd, 0x40, 0x6f, 0x83, 0x11, 0xf6, 0xca, 0x4c, 0x70, 0x0c, 0x29, - 0x9f, 0xb3, 0xa7, 0x68, 0x98, 0xc3, 0x50, 0x4b, 0xbc, 0xfe, 0x2b, 0x37, 0x9d, 0xcc, 0xb9, 0x45, - 0xd0, 0x53, 0x9e, 0x0a, 0x46, 0x27, 0xf3, 0x50, 0xe1, 0xc9, 0x7c, 0x1b, 0xc6, 0x3a, 0xb6, 0xcb, - 0x6e, 0xd8, 0xca, 0xd9, 0x9b, 0xf8, 0x1d, 0x3c, 0x47, 0x81, 0x23, 0x5c, 0xfa, 0x9f, 0x55, 0xe8, - 0xd2, 0x8f, 0xe5, 0xd2, 0x03, 0x00, 0xa3, 0x17, 0x7a, 0x5c, 0xc0, 0x11, 0x3b, 0xa0, 0x59, 0x6e, - 0x96, 0x25, 0xd2, 0x45, 0x89, 0x90, 0x5f, 0x8d, 0xc7, 0xbf, 0xb1, 0x42, 0x8c, 0x92, 0x0e, 0xed, - 0x0e, 0x79, 0xde, 0x76, 0x2d, 0xef, 0x8e, 0x18, 0xde, 0x41, 0x49, 0x6f, 0x4a, 0x84, 0x9c, 0x74, - 0xfc, 0x1b, 0x2b, 0xc4, 0x28, 0x6b, 0x61, 0xea, 0xad, 0xcb, 0x22, 0xd7, 0x8a, 0xbe, 0x79, 0x8e, - 0x13, 0x9d, 0x9d, 0x55, 0xce, 0x5a, 0xea, 0x05, 0x75, 0x70, 0x61, 0x6b, 0xfd, 0x77, 0x34, 0xb8, - 0x9c, 0x3b, 0x14, 0xe8, 0x3a, 0xcc, 0xc6, 0xfe, 0x50, 0x2a, 0xb3, 0xaf, 0xc6, 0x11, 0x93, 0x6f, - 0xa6, 0x2b, 0xe0, 0x6c, 0x1b, 0xb4, 0x26, 0x05, 0x1e, 0xf5, 0x30, 0x11, 0xce, 0x54, 0x0f, 0x08, - 0x54, 0x79, 0xe7, 0x0d, 0xce, 0x6b, 0xa7, 0x7f, 0x3c, 0xd1, 0xe1, 0x78, 0xc0, 0xe8, 0xee, 0xd8, - 0x22, 0x6d, 0xf9, 0x9e, 0x47, 0xee, 0x8e, 0x25, 0x5a, 0x88, 0x39, 0x0c, 0x3d, 0xa4, 0xbe, 0x92, - 0x93, 0xbc, 0x2b, 0x7a, 0x29, 0xa7, 0x87, 0x00, 0xc2, 0x65, 0xd1, 0x76, 0xdb, 0x68, 0x1b, 0xaa, - 0x86, 0x48, 0xdc, 0x24, 0x96, 0xda, 0x87, 0x4a, 0x69, 0xd3, 0x02, 0x07, 0x77, 0xd6, 0x8e, 0x7e, - 0x61, 0x89, 0x5b, 0xff, 0xa7, 0x1a, 0x5c, 0xa1, 0x6c, 0xcc, 0x8a, 0x62, 0x04, 0xc8, 0x18, 0x42, - 0xc7, 0x90, 0x11, 0x3a, 0x30, 0xe1, 0xc7, 0xcd, 0xc4, 0xba, 0x7c, 0x9f, 0x1a, 0x9f, 0x48, 0x79, - 0xdb, 0x4f, 0xe5, 0xa7, 0xba, 0xef, 0x05, 0xd1, 0xe4, 0xa4, 0x43, 0x16, 0x49, 0xdd, 0x45, 0xe9, - 0x09, 0x56, 0xf1, 0xeb, 0x9f, 0xad, 0x00, 0xac, 0x93, 0xf0, 0x8e, 0xe7, 0xef, 0xd2, 0x21, 0x7a, - 0x43, 0x3d, 0x6c, 0x7d, 0x10, 0x86, 0xbb, 0x9e, 0x15, 0x08, 0x2e, 0xc5, 0x9e, 0x45, 0x33, 0x8f, - 0x1e, 0x56, 0x8a, 0x6a, 0x30, 0xc2, 0x6e, 0x11, 0xc4, 0x01, 0xc2, 0x84, 0x7e, 0x2a, 0xb2, 0x05, - 0x98, 0x97, 0xf3, 0x90, 0xfc, 0xec, 0x21, 0x44, 0x20, 0xb4, 0x18, 0x11, 0x92, 0x9f, 0x97, 0x61, - 0x09, 0xd5, 0x3f, 0x3b, 0x0c, 0x89, 0x1c, 0x65, 0xb1, 0xd1, 0x45, 0x3b, 0x1b, 0xa3, 0xcb, 0x0b, - 0x30, 0xe7, 0x78, 0x86, 0xb5, 0x64, 0x38, 0x74, 0xd1, 0xfb, 0x2d, 0x3e, 0x1d, 0x86, 0xdb, 0x96, - 0x69, 0xad, 0x18, 0x03, 0x58, 0x2d, 0xa8, 0x83, 0x0b, 0x5b, 0xa3, 0x50, 0x66, 0x46, 0xe3, 0x81, - 0xa5, 0x57, 0x07, 0xcd, 0xe0, 0xb6, 0xa0, 0x3e, 0x81, 0x91, 0x67, 0x79, 0x2a, 0x79, 0xda, 0x17, - 0x34, 0xb8, 0x4c, 0xf6, 0x43, 0xe2, 0xbb, 0x86, 0xb3, 0xe9, 0x1b, 0xdb, 0xdb, 0xb6, 0x29, 0x7c, - 0x25, 0xf9, 0xe4, 0x6c, 0x1c, 0x1d, 0xd6, 0x2e, 0x2f, 0xe7, 0x55, 0xb8, 0x7b, 0x58, 0x7b, 0x77, - 0x36, 0x41, 0x61, 0xf4, 0xe2, 0x25, 0xb7, 0x09, 0x5b, 0x8c, 0xf9, 0xe4, 0xe6, 0x9f, 0x84, 0x89, - 0x13, 0xbc, 0x57, 0x18, 0x57, 0x0d, 0x70, 0x7f, 0x58, 0x81, 0x49, 0xba, 0x7e, 0x56, 0x3d, 0xd3, - 0x70, 0x1a, 0xeb, 0xad, 0x13, 0x64, 0xf7, 0x43, 0xab, 0x70, 0x69, 0xdb, 0xf3, 0x4d, 0xb2, 0x59, - 0xdf, 0xd8, 0xf4, 0xc4, 0x3d, 0x44, 0x63, 0xbd, 0x25, 0x98, 0x22, 0xd3, 0xac, 0x56, 0x72, 0xe0, - 0x38, 0xb7, 0x15, 0xba, 0x05, 0x97, 0xe3, 0xf2, 0xdb, 0x5d, 0xee, 0x60, 0x41, 0xd1, 0x0d, 0xc5, - 0x0e, 0x22, 0x2b, 0x79, 0x15, 0x70, 0x7e, 0x3b, 0x64, 0xc0, 0x03, 0xe2, 0x0d, 0xf8, 0x8a, 0xe7, - 0xdf, 0x31, 0x7c, 0x2b, 0x89, 0x76, 0x38, 0xb6, 0xd3, 0x36, 0x8a, 0xab, 0xe1, 0x7e, 0x38, 0xf4, - 0x5f, 0x1d, 0x05, 0xe5, 0xad, 0xd6, 0x09, 0x82, 0xb1, 0xff, 0x86, 0x06, 0x97, 0x4c, 0xc7, 0x26, - 0x6e, 0x98, 0x7a, 0x94, 0xc3, 0xd9, 0xca, 0xed, 0x52, 0x8f, 0xc8, 0xba, 0xc4, 0x6d, 0x36, 0x84, - 0x3f, 0x4a, 0x3d, 0x07, 0xb9, 0xf0, 0xd9, 0xc9, 0x81, 0xe0, 0xdc, 0xce, 0xb0, 0xef, 0x61, 0xe5, - 0xcd, 0x86, 0xfa, 0xe4, 0xba, 0x2e, 0xca, 0xb0, 0x84, 0xa2, 0xc7, 0x61, 0xa2, 0xed, 0x7b, 0xbd, - 0x6e, 0x50, 0x67, 0x4e, 0xb0, 0x7c, 0xfd, 0x33, 0x31, 0xec, 0x7a, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, - 0xa8, 0xe4, 0x3f, 0x37, 0x7c, 0xb2, 0x6d, 0xef, 0x0b, 0x66, 0xc5, 0x84, 0xca, 0xeb, 0x4a, 0x39, - 0x4e, 0xd4, 0x42, 0xef, 0x84, 0x71, 0x3b, 0x08, 0x7a, 0xc4, 0xbf, 0x8d, 0x57, 0x45, 0x14, 0x56, - 0x76, 0xb7, 0xd1, 0x8c, 0x0a, 0x71, 0x0c, 0x47, 0x5f, 0xd5, 0x60, 0xda, 0x27, 0xaf, 0xf4, 0x6c, - 0x9f, 0x58, 0x8c, 0x68, 0x20, 0x1e, 0xcc, 0xe1, 0xc1, 0x1e, 0xe9, 0x2d, 0xe0, 0x04, 0x52, 0xce, - 0x25, 0xa4, 0x2d, 0x2b, 0x09, 0xc4, 0xa9, 0x1e, 0xd0, 0xa1, 0x0a, 0xec, 0xb6, 0x6b, 0xbb, 0xed, - 0x45, 0xa7, 0x1d, 0xcc, 0x55, 0x19, 0xe3, 0xe3, 0x12, 0x6b, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, 0x9b, - 0xeb, 0x05, 0x74, 0xdf, 0x77, 0x08, 0x1f, 0xdf, 0xf1, 0xd8, 0xd8, 0x77, 0x5b, 0x05, 0xe0, 0x64, - 0x3d, 0xaa, 0xe9, 0x47, 0x05, 0x62, 0x94, 0x81, 0x87, 0xd3, 0xa0, 0xfd, 0xbc, 0x9d, 0x80, 0xe0, - 0x54, 0xcd, 0xf9, 0x45, 0xb8, 0x98, 0xf3, 0x99, 0x27, 0x62, 0x2e, 0xbf, 0x55, 0x81, 0xb7, 0xde, - 0x73, 0x55, 0xa2, 0x7f, 0xa4, 0xc1, 0x04, 0xd9, 0x0f, 0x7d, 0x43, 0xfa, 0xc9, 0xd3, 0x29, 0xda, - 0x3e, 0x93, 0x2d, 0xb0, 0xb0, 0x1c, 0x13, 0xe2, 0xd3, 0x26, 0x85, 0x05, 0x05, 0x82, 0xd5, 0xfe, - 0x50, 0x0d, 0x89, 0x07, 0x5b, 0x51, 0x6d, 0xe2, 0x22, 0xbd, 0x95, 0x80, 0xcc, 0x7f, 0x18, 0x66, - 0xd2, 0x98, 0x4f, 0x34, 0x52, 0x7f, 0x50, 0x81, 0xb1, 0x0d, 0xdf, 0xa3, 0x72, 0xcc, 0x39, 0x44, - 0x0d, 0x34, 0x12, 0x51, 0x03, 0x4b, 0xbd, 0xc0, 0x15, 0x9d, 0x2d, 0x8c, 0x58, 0x6a, 0xa7, 0x22, - 0x96, 0x2e, 0x0e, 0x42, 0xa4, 0x7f, 0x88, 0xd2, 0x7f, 0xaf, 0xc1, 0x84, 0xa8, 0x79, 0x0e, 0xc1, - 0xf2, 0x3e, 0x91, 0x0c, 0x96, 0xf7, 0xc1, 0x01, 0xbe, 0xab, 0x20, 0x3a, 0xde, 0xd7, 0x35, 0x98, - 0x12, 0x35, 0xd6, 0x48, 0x67, 0x8b, 0xf8, 0x68, 0x05, 0xc6, 0x82, 0x1e, 0x9b, 0x48, 0xf1, 0x41, - 0x0f, 0xa8, 0x92, 0xb1, 0xbf, 0x65, 0x98, 0x2c, 0x47, 0x1b, 0xaf, 0xa2, 0xc4, 0x01, 0xe5, 0x05, - 0x38, 0x6a, 0x4c, 0xe5, 0x5c, 0xdf, 0x73, 0x32, 0x31, 0x49, 0xb0, 0xe7, 0x10, 0xcc, 0x20, 0x54, - 0xbc, 0xa4, 0x7f, 0x23, 0x7b, 0x11, 0x13, 0x2f, 0x29, 0x38, 0xc0, 0xbc, 0x5c, 0xff, 0xfc, 0xb0, - 0x1c, 0x6c, 0x16, 0xab, 0xef, 0x06, 0x8c, 0x9b, 0x3e, 0x31, 0x42, 0x62, 0x2d, 0x1d, 0x1c, 0xa7, - 0x73, 0x8c, 0x59, 0xd7, 0xa3, 0x16, 0x38, 0x6e, 0x4c, 0xf9, 0xa2, 0x7a, 0x0d, 0x51, 0x89, 0x8f, - 0x90, 0xc2, 0x2b, 0x88, 0x0f, 0xc1, 0x88, 0x77, 0xc7, 0x95, 0xde, 0x0c, 0x7d, 0x09, 0xb3, 0x4f, - 0xb9, 0x45, 0x6b, 0x63, 0xde, 0x88, 0x45, 0x63, 0xea, 0xf9, 0x5d, 0x2f, 0x88, 0xac, 0x31, 0x3c, - 0x1a, 0x13, 0x2f, 0xc2, 0x11, 0x0c, 0x39, 0x30, 0xd6, 0x61, 0xd3, 0x30, 0x50, 0x58, 0xc8, 0xc4, - 0x84, 0xaa, 0x81, 0xc3, 0x19, 0x66, 0x1c, 0x91, 0xa0, 0xe7, 0x1b, 0xe5, 0xc1, 0x41, 0xd7, 0x30, - 0x89, 0x7a, 0xbe, 0xad, 0x47, 0x85, 0x38, 0x86, 0xa3, 0x03, 0x98, 0xe0, 0x61, 0x21, 0xb8, 0x15, - 0x77, 0xac, 0xbc, 0xb9, 0x48, 0x74, 0x6f, 0x33, 0xc6, 0xc6, 0x87, 0x5e, 0x29, 0xc0, 0x2a, 0x2d, - 0xfd, 0x17, 0x87, 0xe5, 0x22, 0x15, 0x51, 0x5e, 0xf3, 0xf3, 0x8a, 0x69, 0xa5, 0xf2, 0x8a, 0xbd, - 0x3b, 0x4a, 0xd5, 0x55, 0x49, 0x04, 0xb9, 0x97, 0xa9, 0xba, 0x26, 0x05, 0xe9, 0x44, 0x7a, 0xae, - 0x1e, 0x5c, 0x0c, 0x42, 0xc3, 0x21, 0x2d, 0x5b, 0xa8, 0xd4, 0x41, 0x68, 0x74, 0xba, 0x25, 0x62, - 0xd5, 0x73, 0xaf, 0xf2, 0x2c, 0x2a, 0x9c, 0x87, 0x1f, 0x7d, 0x4e, 0x83, 0x39, 0x56, 0xbe, 0xd8, - 0x0b, 0x3d, 0x1e, 0x80, 0x2f, 0x26, 0x7e, 0xf2, 0xbb, 0x4e, 0xa6, 0x02, 0xb5, 0x0a, 0xf0, 0xe1, - 0x42, 0x4a, 0xe8, 0x93, 0x70, 0xd9, 0x31, 0x82, 0x70, 0xd1, 0x0c, 0xed, 0x3d, 0x3b, 0x3c, 0x88, - 0xbb, 0x70, 0xf2, 0x04, 0x59, 0x4c, 0xd4, 0x5e, 0xcd, 0x43, 0x86, 0xf3, 0x69, 0xe8, 0x7f, 0xa9, - 0x01, 0xca, 0x2e, 0x21, 0xe4, 0x40, 0xd5, 0x8a, 0xdc, 0xbc, 0xb5, 0xf2, 0xd9, 0x58, 0x62, 0x94, - 0x31, 0x67, 0x96, 0xde, 0xe1, 0x92, 0x02, 0xf2, 0x60, 0xfc, 0xce, 0x8e, 0x1d, 0x12, 0xc7, 0x0e, - 0x42, 0xc1, 0x9d, 0x07, 0x25, 0x27, 0x83, 0x1c, 0x3d, 0x1f, 0x21, 0xc6, 0x31, 0x0d, 0xfd, 0x97, - 0x86, 0xa1, 0x7a, 0x82, 0x54, 0xb6, 0x3d, 0x40, 0xa6, 0x12, 0x42, 0x7f, 0x10, 0x3b, 0x02, 0x73, - 0x51, 0xa8, 0x67, 0x90, 0xe1, 0x1c, 0x02, 0xe8, 0x93, 0x70, 0xc9, 0x76, 0xb7, 0x7d, 0x23, 0x08, - 0xfd, 0x1e, 0x33, 0xcc, 0x0e, 0x12, 0x89, 0x9e, 0x69, 0x10, 0xcd, 0x1c, 0x74, 0x38, 0x97, 0x08, - 0x22, 0x30, 0x76, 0xc7, 0xf3, 0x77, 0x29, 0xf3, 0x1c, 0x2e, 0x9f, 0x93, 0xe8, 0x79, 0x86, 0x22, - 0xe6, 0x9a, 0xfc, 0x77, 0x80, 0x23, 0xdc, 0x3c, 0xca, 0x03, 0xff, 0x3f, 0xba, 0xa2, 0x14, 0xeb, - 0xbe, 0x5e, 0x9e, 0x5e, 0x9c, 0xde, 0x8a, 0x47, 0x79, 0x48, 0x16, 0xe2, 0x34, 0x41, 0xfd, 0x4f, - 0x34, 0x18, 0xe1, 0xcf, 0x27, 0xcf, 0x5e, 0x82, 0xfb, 0x7b, 0x09, 0x09, 0xae, 0x54, 0x30, 0x6d, - 0xd6, 0xd5, 0xc2, 0x30, 0xcf, 0xdf, 0xd3, 0x60, 0x9c, 0xd5, 0x38, 0x07, 0x91, 0xea, 0xa5, 0xa4, - 0x48, 0xf5, 0x64, 0xe9, 0xaf, 0x29, 0x10, 0xa8, 0xfe, 0x64, 0x48, 0x7c, 0x0b, 0x93, 0x58, 0x9a, - 0x70, 0x51, 0x38, 0x48, 0xae, 0xda, 0xdb, 0x84, 0x2e, 0xf1, 0x86, 0x71, 0x10, 0x88, 0x98, 0x07, - 0xfc, 0x85, 0x4c, 0x16, 0x8c, 0xf3, 0xda, 0xa0, 0x3f, 0xd4, 0xa8, 0x6c, 0x10, 0xfa, 0xb6, 0x39, - 0x50, 0xec, 0x64, 0xd9, 0xb7, 0x85, 0x35, 0x8e, 0x8c, 0x6b, 0x26, 0xb7, 0x63, 0x21, 0x81, 0x95, - 0xde, 0x3d, 0xac, 0xd5, 0x72, 0x8c, 0x46, 0x71, 0x48, 0xd6, 0x20, 0xfc, 0xec, 0x8f, 0xfa, 0x56, - 0x61, 0x06, 0xd7, 0xa8, 0xc7, 0xe8, 0x06, 0x8c, 0x04, 0xa6, 0xd7, 0x25, 0x27, 0x89, 0x06, 0x2f, - 0x07, 0xb8, 0x45, 0x5b, 0x62, 0x8e, 0x60, 0xfe, 0x65, 0x98, 0x54, 0x7b, 0x9e, 0xa3, 0xf9, 0x34, - 0x54, 0xcd, 0xe7, 0xc4, 0xd7, 0x2a, 0xaa, 0xa6, 0xf4, 0x47, 0x15, 0x10, 0xb9, 0xbf, 0x8f, 0x61, - 0x56, 0xb6, 0xa3, 0xd8, 0x97, 0x03, 0xa4, 0x5a, 0x4c, 0xa7, 0xef, 0x8f, 0xc7, 0x40, 0x0d, 0x7f, - 0x89, 0x5c, 0x18, 0x75, 0x8c, 0x2d, 0xe2, 0x44, 0xb9, 0xed, 0x56, 0xca, 0x27, 0x5f, 0xe3, 0xf1, - 0xcb, 0x83, 0x94, 0xf1, 0x91, 0x17, 0x62, 0x41, 0x65, 0xfe, 0x49, 0x98, 0x50, 0xaa, 0x9d, 0x48, - 0xd9, 0x7c, 0x5d, 0x83, 0x2b, 0xd1, 0x92, 0x48, 0xc6, 0xae, 0x41, 0x8f, 0x42, 0xd5, 0xe8, 0xda, - 0xcc, 0xfe, 0xa2, 0x5a, 0xb0, 0x16, 0x37, 0x9a, 0xac, 0x0c, 0x4b, 0x28, 0x7a, 0x17, 0x54, 0xa3, - 0x79, 0x12, 0x52, 0x9a, 0xdc, 0xe2, 0xd2, 0xec, 0x2e, 0x6b, 0xa0, 0xb7, 0x2b, 0xd1, 0x3c, 0x47, - 0xe2, 0x63, 0x55, 0x12, 0xe6, 0x37, 0x74, 0xfa, 0xfb, 0x60, 0xbc, 0xd5, 0xba, 0xc1, 0x43, 0x98, - 0x9c, 0xc0, 0x12, 0xa9, 0x7f, 0x69, 0x08, 0xa6, 0xb8, 0x46, 0xbe, 0x64, 0xbb, 0x96, 0xed, 0xb6, - 0xcf, 0x81, 0x05, 0x27, 0x32, 0xaf, 0x57, 0x4e, 0x2b, 0xf3, 0xfa, 0x4d, 0x18, 0x7d, 0x85, 0xb2, - 0x83, 0x68, 0x19, 0x1d, 0x6b, 0x57, 0xca, 0x35, 0xc2, 0x38, 0x49, 0x80, 0x05, 0x0a, 0x14, 0x28, - 0xf9, 0xef, 0x07, 0x78, 0x80, 0x9f, 0x18, 0x59, 0x19, 0xcb, 0x77, 0x32, 0x3f, 0xf9, 0xbd, 0xfe, - 0x5f, 0x34, 0x98, 0x4d, 0xb4, 0x38, 0x87, 0x13, 0x64, 0x3b, 0x79, 0x82, 0x2c, 0x0e, 0xfc, 0x95, - 0x05, 0x27, 0xc9, 0x93, 0x70, 0x39, 0x77, 0x30, 0xee, 0x2d, 0xfd, 0xe9, 0xbf, 0x5b, 0x81, 0xe1, - 0x16, 0x21, 0xd6, 0x39, 0xac, 0xcc, 0x97, 0x12, 0xc2, 0xc1, 0x87, 0x4a, 0x67, 0x66, 0x2c, 0xb2, - 0xed, 0x6c, 0xa7, 0x6c, 0x3b, 0x1f, 0x2e, 0x4d, 0xa1, 0xbf, 0x61, 0xe7, 0xd7, 0x2a, 0x00, 0xb4, - 0x1a, 0xcf, 0xd5, 0x2d, 0x9c, 0x00, 0xf9, 0x6a, 0xd6, 0x92, 0x1c, 0x27, 0xbb, 0x0c, 0xcf, 0xf3, - 0xc6, 0x4e, 0x87, 0x51, 0x9e, 0x1c, 0x53, 0x18, 0xc9, 0x81, 0xe7, 0x0e, 0xa3, 0x25, 0x58, 0x40, - 0x92, 0xdc, 0x62, 0xf8, 0x94, 0xb8, 0x85, 0xfe, 0xcf, 0x35, 0x60, 0xd9, 0x5e, 0x1a, 0xeb, 0xec, - 0x79, 0xb2, 0xcd, 0x2f, 0xaf, 0x1a, 0x6a, 0x44, 0x48, 0x66, 0x24, 0x6e, 0xaa, 0x00, 0x9c, 0xac, - 0x87, 0x3a, 0xca, 0xb8, 0x0e, 0x90, 0x31, 0x5f, 0xf4, 0xe3, 0x9e, 0xfc, 0xe1, 0x47, 0x15, 0xb8, - 0x90, 0xaa, 0x7b, 0x0c, 0xe5, 0xe9, 0x6c, 0xb8, 0xad, 0x12, 0xfe, 0x7b, 0xe8, 0xec, 0xc3, 0x7f, - 0xcb, 0x48, 0xdc, 0xc3, 0x67, 0x1b, 0x89, 0xfb, 0x8f, 0x35, 0x60, 0x29, 0xd8, 0xcf, 0x81, 0xf1, - 0xfe, 0xdd, 0x24, 0xe3, 0xfd, 0x40, 0xd9, 0x85, 0x53, 0xc0, 0x6f, 0x7f, 0xbb, 0x02, 0x2c, 0x73, - 0x8b, 0xb8, 0xab, 0x57, 0xae, 0xbf, 0xb5, 0x82, 0xeb, 0xef, 0x87, 0xc5, 0xed, 0x79, 0xca, 0xc4, - 0xa9, 0xdc, 0xa0, 0xbf, 0x4b, 0xb9, 0x20, 0x1f, 0x4a, 0xb2, 0x91, 0xec, 0x25, 0x39, 0x7a, 0x15, - 0xa6, 0x82, 0x1d, 0xcf, 0x0b, 0xe5, 0x73, 0xf5, 0xe1, 0xf2, 0xe6, 0x6c, 0xe6, 0xb3, 0x1b, 0x7d, - 0x0a, 0xdf, 0x98, 0x2d, 0x15, 0x37, 0x4e, 0x92, 0x42, 0x0b, 0x00, 0x5b, 0x8e, 0x67, 0xee, 0xd6, - 0x9b, 0x0d, 0x1c, 0xf9, 0x68, 0x32, 0x07, 0x9b, 0x25, 0x59, 0x8a, 0x95, 0x1a, 0xfa, 0xff, 0xd0, - 0xf8, 0x68, 0x9d, 0x60, 0x5b, 0x9d, 0x23, 0x97, 0x7c, 0x47, 0x8a, 0x4b, 0x2a, 0x59, 0x16, 0x13, - 0x9c, 0xb2, 0x16, 0xef, 0x12, 0x69, 0x82, 0x4e, 0x2c, 0xef, 0x3f, 0x10, 0x9f, 0x29, 0x13, 0xf8, - 0x74, 0x61, 0xca, 0x51, 0x33, 0xfe, 0x88, 0x75, 0x5e, 0x2a, 0x59, 0x90, 0x74, 0xdc, 0x4f, 0x14, - 0xe3, 0x24, 0x01, 0xca, 0x6b, 0xa3, 0xaf, 0xe3, 0xb9, 0x86, 0x2b, 0xb1, 0x7b, 0xe5, 0x86, 0x0a, - 0xc0, 0xc9, 0x7a, 0xfa, 0x3f, 0xae, 0xc0, 0x43, 0xbc, 0xef, 0xcc, 0x68, 0xd0, 0x20, 0x5d, 0xe2, - 0x5a, 0xc4, 0x35, 0x0f, 0x98, 0x1c, 0x6e, 0x79, 0x6d, 0xf4, 0xf7, 0x35, 0xa8, 0x12, 0xd7, 0xea, - 0x7a, 0xb6, 0x1b, 0x59, 0xfb, 0x3f, 0x56, 0x3e, 0xb7, 0x72, 0x01, 0x95, 0x65, 0x41, 0x40, 0x44, - 0x5e, 0x14, 0xbf, 0xb0, 0x24, 0x8c, 0xee, 0xc0, 0x48, 0xd7, 0xf7, 0xb6, 0x22, 0x7d, 0xed, 0xb9, - 0x53, 0xef, 0xc1, 0x06, 0xc5, 0xce, 0x27, 0x97, 0xfd, 0x8b, 0x39, 0x3d, 0x1d, 0xc3, 0xdb, 0x8f, - 0xd5, 0xf3, 0x93, 0x68, 0x07, 0xb7, 0x40, 0xbf, 0x77, 0x5f, 0x4e, 0x82, 0xf0, 0x59, 0x78, 0x44, - 0x41, 0xb8, 0xbc, 0x4f, 0xd5, 0x95, 0xba, 0xd1, 0x35, 0x4c, 0xaa, 0xab, 0xb2, 0x87, 0xbc, 0xdc, - 0x8c, 0x7d, 0x02, 0x94, 0x5f, 0x1c, 0x86, 0x9a, 0x82, 0x33, 0xe1, 0x03, 0x13, 0xf1, 0xa2, 0x6f, - 0x68, 0x30, 0x61, 0xb8, 0xae, 0x17, 0x1a, 0x6a, 0x26, 0x35, 0x6b, 0xc0, 0xb9, 0xc9, 0x23, 0xb5, - 0xb0, 0x18, 0x93, 0x49, 0x5d, 0x93, 0x2a, 0x10, 0xac, 0xf6, 0xa6, 0x8f, 0x37, 0x4c, 0xe5, 0x5c, - 0xbd, 0x61, 0xd0, 0xa7, 0x22, 0x06, 0xc2, 0x35, 0xa8, 0x17, 0xce, 0x60, 0x7c, 0x18, 0x3f, 0xca, - 0x37, 0x04, 0xcc, 0x7f, 0x18, 0x66, 0xd2, 0xa3, 0x77, 0x22, 0xed, 0xfc, 0x5f, 0x0d, 0x25, 0x56, - 0x57, 0x21, 0xf9, 0x63, 0x98, 0x3f, 0xbe, 0x99, 0x5a, 0x30, 0xfc, 0x90, 0xb6, 0xcf, 0x6a, 0x40, - 0x4e, 0x77, 0xd5, 0x0c, 0x9d, 0xaf, 0x0f, 0xd5, 0xa0, 0xd3, 0x56, 0x87, 0x2b, 0xca, 0x18, 0xb1, - 0x8b, 0xc6, 0xfa, 0x0e, 0x31, 0x77, 0x4f, 0x64, 0xc7, 0x58, 0xa2, 0xfa, 0xa5, 0x44, 0x12, 0x87, - 0x1c, 0x64, 0x6f, 0x67, 0xed, 0xc0, 0x8e, 0xc2, 0x4b, 0x28, 0x38, 0x9e, 0xe3, 0xc5, 0x38, 0x82, - 0xeb, 0x6b, 0xf0, 0xb0, 0x82, 0x23, 0xf7, 0x65, 0xeb, 0x49, 0xba, 0xf4, 0xad, 0xb1, 0xe8, 0xb4, - 0x15, 0x4f, 0x7f, 0x7e, 0x4f, 0x83, 0xfb, 0x49, 0x11, 0xcb, 0x13, 0x27, 0xd6, 0xa0, 0x7b, 0xae, - 0x90, 0xa5, 0x8a, 0x98, 0x7d, 0x45, 0x60, 0x5c, 0xdc, 0x33, 0x74, 0x00, 0x10, 0xc8, 0x01, 0x1d, - 0xc4, 0xf3, 0x39, 0x77, 0x86, 0x44, 0x78, 0x7f, 0xf9, 0x1b, 0x2b, 0xc4, 0xd0, 0xaf, 0x6b, 0x70, - 0xc9, 0xc9, 0xd9, 0x35, 0x42, 0x98, 0x6c, 0x9d, 0xc1, 0x86, 0xe4, 0x37, 0x35, 0x79, 0x10, 0x9c, - 0xdb, 0x15, 0xf4, 0x9b, 0x85, 0x4f, 0xae, 0x47, 0xca, 0xa7, 0xc1, 0xbb, 0xd7, 0x42, 0x2c, 0xf1, - 0xfa, 0xfa, 0x53, 0x30, 0xe1, 0xc5, 0x9b, 0x4b, 0xbc, 0x91, 0xff, 0xe8, 0x80, 0x9d, 0x53, 0xb6, - 0x2b, 0xbf, 0xf7, 0x56, 0x0a, 0xb0, 0x4a, 0x0f, 0x7d, 0x4d, 0x03, 0x64, 0x65, 0x24, 0x08, 0x71, - 0xf5, 0xfe, 0xec, 0xa9, 0x8b, 0x49, 0xfc, 0xa6, 0x2f, 0x5b, 0x8e, 0x73, 0x3a, 0xa1, 0xbf, 0x3e, - 0xc6, 0xf5, 0x3e, 0x76, 0xcd, 0xb1, 0x05, 0xa3, 0x5b, 0xcc, 0x6e, 0x22, 0xb6, 0x64, 0x69, 0x23, - 0x0d, 0xb7, 0xbe, 0x70, 0xa3, 0x06, 0xff, 0x1f, 0x0b, 0xcc, 0xe8, 0x45, 0x18, 0xb2, 0xdc, 0x28, - 0xb5, 0xea, 0x07, 0x07, 0x30, 0x1a, 0xc4, 0x4e, 0xec, 0x8d, 0xf5, 0x16, 0xa6, 0x48, 0x91, 0x0b, - 0x55, 0x57, 0xa8, 0x4a, 0x42, 0x37, 0xff, 0x48, 0x59, 0x02, 0x52, 0xe5, 0x92, 0x8a, 0x5e, 0x54, - 0x82, 0x25, 0x0d, 0x4a, 0x2f, 0x65, 0x2b, 0x2d, 0x4d, 0x4f, 0x9a, 0x40, 0xfa, 0xd9, 0xa7, 0x36, - 0x54, 0x83, 0xc6, 0xc8, 0xf1, 0x0d, 0x1a, 0x53, 0x85, 0xc6, 0x0c, 0x02, 0xa3, 0xa1, 0x61, 0xbb, - 0x21, 0xdd, 0x14, 0xa5, 0x53, 0xec, 0xd2, 0xfe, 0x6f, 0x52, 0x2c, 0xb1, 0x7e, 0xc6, 0x7e, 0x06, - 0x58, 0x20, 0xa7, 0x0b, 0x6b, 0x8f, 0x25, 0xe1, 0x12, 0x8b, 0xbe, 0xf4, 0xc2, 0xe2, 0xa9, 0xbc, - 0xf8, 0xc2, 0xe2, 0xff, 0x63, 0x81, 0x19, 0xbd, 0x4c, 0x75, 0x74, 0x71, 0x8f, 0x5b, 0x1d, 0x6c, - 0x32, 0xe4, 0x25, 0xae, 0x70, 0x83, 0x17, 0xb7, 0xb7, 0x12, 0x3f, 0xda, 0x82, 0x31, 0x61, 0x0f, - 0x13, 0xc1, 0x25, 0x3e, 0x38, 0x40, 0x5e, 0x94, 0x28, 0x3b, 0x1d, 0x7f, 0x92, 0x1c, 0x21, 0xd6, - 0xff, 0xe3, 0x38, 0xb7, 0x64, 0x0a, 0x57, 0x99, 0x6d, 0xa8, 0x46, 0xe8, 0x06, 0x79, 0x92, 0x11, - 0xe5, 0xa1, 0xe2, 0x9f, 0x16, 0xfd, 0xc2, 0x12, 0x37, 0xaa, 0xe7, 0xbd, 0x7e, 0x89, 0x23, 0x42, - 0x1f, 0xef, 0xe5, 0x4b, 0x32, 0x7b, 0xf3, 0xd0, 0x79, 0x64, 0x6f, 0xce, 0x77, 0x25, 0x1a, 0x2e, - 0xe5, 0x4a, 0xf4, 0x34, 0x5c, 0x10, 0x57, 0xb7, 0x4d, 0x8b, 0xb0, 0xdb, 0x44, 0xe1, 0x69, 0xcc, - 0x2e, 0xf5, 0xeb, 0x49, 0x10, 0x4e, 0xd7, 0x45, 0x7f, 0xa4, 0x41, 0xd5, 0x14, 0xd2, 0x84, 0xd8, - 0x57, 0xab, 0x83, 0x99, 0xbb, 0x17, 0x22, 0xe1, 0x84, 0x8b, 0xc8, 0xcf, 0x45, 0x3c, 0x22, 0x2a, - 0x3e, 0xa5, 0x6b, 0x5e, 0xd9, 0x6b, 0xf4, 0xef, 0xa8, 0x16, 0xe0, 0xb0, 0xec, 0x58, 0xec, 0x9d, - 0x1f, 0x77, 0x81, 0xbe, 0x35, 0xe0, 0x57, 0x2c, 0xc6, 0x18, 0xf9, 0x87, 0x7c, 0x4c, 0xca, 0xfa, - 0x31, 0xe4, 0x94, 0xbe, 0x45, 0xed, 0x3e, 0xfa, 0x96, 0x06, 0x8f, 0x70, 0xbf, 0xf3, 0x3a, 0x15, - 0x10, 0x58, 0xae, 0x3a, 0x12, 0x27, 0xc7, 0x8b, 0x1d, 0x9f, 0xaa, 0x27, 0x76, 0x7c, 0x7a, 0xf4, - 0xe8, 0xb0, 0xf6, 0x48, 0xfd, 0x18, 0xb8, 0xf1, 0xb1, 0x7a, 0x30, 0xbf, 0x0b, 0x53, 0x89, 0xc9, - 0x3e, 0xcb, 0x8b, 0xf1, 0x79, 0x17, 0x66, 0xd2, 0x73, 0x72, 0xa6, 0x17, 0xf1, 0x37, 0x61, 0x5c, - 0x1e, 0x16, 0xe8, 0x21, 0x85, 0x50, 0x7c, 0x98, 0xdf, 0x24, 0x07, 0x9c, 0x6a, 0x2d, 0xa1, 0x36, - 0x71, 0xb3, 0xcf, 0x73, 0xb4, 0x40, 0x20, 0xd4, 0xbf, 0x2f, 0x6c, 0x7a, 0x9b, 0xa4, 0xd3, 0x75, - 0x8c, 0x90, 0xbc, 0xf9, 0x6f, 0xc9, 0xf4, 0xff, 0xa5, 0x71, 0x9e, 0x2f, 0xf2, 0x61, 0x1a, 0x30, - 0xd1, 0xe1, 0xa1, 0x29, 0xd9, 0xf3, 0x52, 0xad, 0xfc, 0xc3, 0xd6, 0xb5, 0x18, 0x0d, 0x56, 0x71, - 0xa2, 0x3b, 0xd9, 0x8c, 0xad, 0x2b, 0x83, 0x1d, 0xce, 0xc7, 0x4e, 0xdc, 0x8a, 0xb2, 0x6d, 0xa8, - 0x92, 0x19, 0xf9, 0xd7, 0xa6, 0x92, 0x64, 0x66, 0x7c, 0x6c, 0xef, 0x99, 0x2c, 0x51, 0xff, 0x4e, - 0x05, 0x72, 0xd3, 0xfe, 0x20, 0x1d, 0x46, 0xf9, 0x83, 0x0f, 0x35, 0x95, 0x2d, 0x7f, 0x0d, 0x82, - 0x05, 0x04, 0xdd, 0xe2, 0x36, 0x06, 0xd7, 0x62, 0x71, 0x96, 0xe2, 0x9d, 0xaa, 0x3e, 0x2d, 0x5a, - 0xce, 0xab, 0x80, 0xf3, 0xdb, 0xa1, 0x3d, 0x40, 0x1d, 0x63, 0x3f, 0x8d, 0x6d, 0x80, 0xdc, 0x17, - 0x6b, 0x19, 0x6c, 0x38, 0x87, 0x02, 0x3d, 0xcc, 0x0c, 0xd3, 0x24, 0xdd, 0x90, 0x58, 0xfc, 0x13, - 0xa3, 0x6b, 0x01, 0x76, 0x98, 0x2d, 0x26, 0x41, 0x38, 0x5d, 0x57, 0xff, 0x97, 0x15, 0x18, 0x61, - 0x37, 0x0e, 0x6f, 0x0e, 0x0f, 0x35, 0xd6, 0xd5, 0xc2, 0x5b, 0xe8, 0x76, 0xea, 0x16, 0xfa, 0x99, - 0xf2, 0x24, 0xfa, 0x5f, 0x43, 0x7f, 0x0c, 0xae, 0xb0, 0x6a, 0x8b, 0x16, 0xd3, 0x48, 0x03, 0x62, - 0x2d, 0x5a, 0x16, 0x7b, 0x30, 0x79, 0x6f, 0x0b, 0xdc, 0x43, 0x30, 0xd4, 0xf3, 0x9d, 0xf4, 0x4b, - 0xdd, 0xdb, 0x78, 0x15, 0xd3, 0x72, 0xfd, 0x35, 0x0d, 0x66, 0x18, 0xee, 0xba, 0x4f, 0x98, 0xc4, - 0x61, 0x38, 0x01, 0xda, 0x83, 0xaa, 0x2f, 0xec, 0x50, 0x62, 0x6e, 0x56, 0x4b, 0x7f, 0x9a, 0x82, - 0x17, 0x0b, 0x9c, 0x22, 0x61, 0x94, 0xf8, 0x85, 0x25, 0x2d, 0xfd, 0xcf, 0x47, 0x61, 0xae, 0xa8, - 0x11, 0xfa, 0xaa, 0x06, 0x57, 0xcc, 0xf8, 0xb4, 0x5b, 0xec, 0x85, 0x3b, 0x9e, 0x6f, 0x87, 0x36, - 0x09, 0x06, 0xd1, 0x2f, 0xeb, 0x8b, 0xb2, 0x57, 0x2c, 0x0e, 0x4a, 0x3d, 0x97, 0x02, 0x2e, 0xa0, - 0x8c, 0x3e, 0x09, 0xb0, 0x1b, 0x07, 0x5e, 0xe3, 0x2b, 0xed, 0x66, 0xe9, 0xb1, 0x52, 0x82, 0xb3, - 0x45, 0x9d, 0x62, 0x46, 0x1d, 0xa5, 0x5c, 0x21, 0x47, 0x89, 0x07, 0xc1, 0xce, 0x4d, 0x72, 0xd0, - 0x35, 0xec, 0xe8, 0x05, 0x42, 0x79, 0xe2, 0xad, 0xd6, 0x0d, 0x81, 0x2a, 0x49, 0x5c, 0x29, 0x57, - 0xc8, 0xa1, 0x2f, 0x6a, 0x30, 0xc5, 0x85, 0x5d, 0xe1, 0x99, 0x26, 0x98, 0xcf, 0x7a, 0xe9, 0x0e, - 0xdc, 0x52, 0xb1, 0xc9, 0x3e, 0xb0, 0x1b, 0xad, 0x24, 0x28, 0x49, 0x17, 0xbd, 0xae, 0xc1, 0x6c, - 0x32, 0xf3, 0xda, 0x4d, 0x72, 0x20, 0x14, 0x5a, 0x5c, 0x7e, 0x38, 0xd2, 0x18, 0x65, 0x8f, 0x98, - 0xe2, 0x92, 0x05, 0x67, 0xfb, 0xc0, 0x7a, 0x46, 0x42, 0xd3, 0x12, 0x99, 0xa0, 0x6d, 0xcf, 0xa5, - 0x3d, 0x1b, 0x1d, 0xb0, 0x67, 0xcb, 0x9b, 0xf5, 0x46, 0x02, 0x63, 0xb2, 0x67, 0x59, 0x70, 0xb6, - 0x0f, 0xfa, 0x4f, 0x86, 0xe1, 0x6a, 0x7f, 0x64, 0xe8, 0x99, 0xe8, 0x05, 0x04, 0xe7, 0x2d, 0x8f, - 0xa5, 0x5f, 0x40, 0xcc, 0xe5, 0x6c, 0xd2, 0xc4, 0x6b, 0x08, 0x1f, 0x90, 0x63, 0x04, 0x61, 0xdd, - 0xeb, 0x74, 0x1d, 0x12, 0x89, 0xa5, 0x65, 0x42, 0x74, 0x1d, 0x89, 0x80, 0x59, 0x49, 0x4c, 0x38, - 0x07, 0x7b, 0x44, 0x93, 0xa7, 0x56, 0x95, 0x34, 0x87, 0xca, 0xd3, 0x4c, 0x62, 0xc2, 0x39, 0xd8, - 0xd1, 0x6b, 0x1a, 0xcc, 0x27, 0x8b, 0x57, 0x6c, 0xd7, 0x0e, 0x76, 0x44, 0xe8, 0xb6, 0x93, 0x3f, - 0xc0, 0x60, 0xc9, 0x0a, 0x56, 0x0b, 0x31, 0xe2, 0x3e, 0xd4, 0xd0, 0x97, 0x35, 0x78, 0x20, 0x35, - 0x2e, 0x89, 0x40, 0x72, 0x27, 0x7f, 0x8b, 0xc1, 0xde, 0x27, 0xaf, 0x16, 0xa3, 0xc4, 0xfd, 0xe8, - 0xe9, 0x9f, 0xa9, 0xc0, 0x7d, 0x05, 0xbc, 0xad, 0x60, 0xb2, 0xb4, 0x33, 0x9d, 0xac, 0x9f, 0xc2, - 0xa2, 0x64, 0x9e, 0xec, 0x6c, 0x0c, 0xde, 0x24, 0x9e, 0xec, 0xac, 0xaf, 0x05, 0xfe, 0x30, 0x7f, - 0xac, 0xc1, 0x6c, 0x26, 0xf2, 0xdb, 0xb1, 0xfc, 0xa0, 0xcf, 0xcd, 0xcd, 0xe3, 0xed, 0xe9, 0xac, - 0xe6, 0x13, 0xb9, 0x19, 0xcd, 0x9f, 0x87, 0xa9, 0x84, 0x3b, 0x8c, 0x0c, 0x7b, 0xa1, 0xe5, 0x86, - 0xbd, 0x50, 0xa3, 0x5a, 0x54, 0xfa, 0x46, 0xb5, 0xf8, 0x5c, 0x05, 0xe6, 0x8b, 0x0f, 0xb4, 0xbf, - 0x31, 0xab, 0x5e, 0xee, 0xfc, 0xac, 0x60, 0xf1, 0x37, 0x66, 0x0c, 0xe4, 0x31, 0x5b, 0x28, 0x4d, - 0xfc, 0xed, 0x31, 0xfb, 0xb7, 0xc7, 0xec, 0x29, 0x1c, 0xb3, 0xdf, 0xba, 0x20, 0x8e, 0x18, 0x76, - 0xf3, 0xf6, 0x12, 0x8c, 0xb2, 0x78, 0x37, 0x91, 0x66, 0xf4, 0x54, 0xe9, 0x38, 0x3a, 0x01, 0xb7, - 0x66, 0xf0, 0xff, 0xb1, 0xc0, 0x8a, 0x1a, 0x30, 0x63, 0x3a, 0x5e, 0xcf, 0x12, 0x79, 0x08, 0xd7, - 0x63, 0xc3, 0x89, 0x8c, 0x3c, 0x58, 0x4f, 0xc1, 0x71, 0xa6, 0x05, 0xc2, 0xfc, 0xee, 0x8e, 0xaf, - 0x9a, 0xf7, 0x97, 0x74, 0x45, 0xe5, 0xf1, 0xf5, 0xe5, 0x9d, 0xdd, 0x2b, 0x00, 0x24, 0x3a, 0x2c, - 0xa2, 0x07, 0x7f, 0x4f, 0x97, 0x8b, 0xa9, 0x28, 0x8f, 0x9c, 0xc8, 0xc8, 0x20, 0x8b, 0x02, 0xac, - 0x10, 0x41, 0x3e, 0x4c, 0xec, 0xd8, 0x5b, 0xc4, 0x77, 0xe3, 0x8c, 0xde, 0x25, 0x4d, 0x01, 0x37, - 0x62, 0x34, 0xdc, 0xce, 0xa6, 0x14, 0x60, 0x95, 0x08, 0xf2, 0xb9, 0xda, 0xc9, 0xaf, 0x49, 0x06, - 0x49, 0xfb, 0x1d, 0xdf, 0xbf, 0xc4, 0xdf, 0x19, 0x97, 0x61, 0x85, 0x0a, 0xa5, 0xe9, 0xca, 0x80, - 0x55, 0x83, 0xdc, 0xbc, 0xc5, 0x61, 0xaf, 0x62, 0x9a, 0x71, 0x19, 0x56, 0xa8, 0xd0, 0xb1, 0xed, - 0xc4, 0x41, 0xca, 0x84, 0x3d, 0xfd, 0x99, 0x01, 0x83, 0xc5, 0x09, 0x1b, 0x66, 0x5c, 0x80, 0x55, - 0x22, 0xc8, 0x05, 0xe8, 0xc8, 0xd8, 0x65, 0xe2, 0x42, 0xae, 0xd4, 0x77, 0xc6, 0x11, 0xd0, 0xb8, - 0x22, 0x1d, 0xff, 0xc6, 0x0a, 0x05, 0xf4, 0xb2, 0x72, 0xed, 0x0b, 0xe5, 0x2d, 0xc1, 0xc7, 0xba, - 0xf2, 0x7d, 0x6f, 0x6c, 0x10, 0x9d, 0x60, 0xfb, 0xf5, 0x01, 0xc5, 0x18, 0x7a, 0xf7, 0xb0, 0x36, - 0xc9, 0x78, 0x48, 0xc6, 0x38, 0x1a, 0x3b, 0xce, 0x4e, 0xf6, 0x75, 0x9c, 0xbd, 0x4e, 0x15, 0x71, - 0xe5, 0x71, 0x0a, 0x63, 0x0c, 0x53, 0xac, 0x89, 0x8c, 0x75, 0xd7, 0x4a, 0x57, 0xc0, 0xd9, 0x36, - 0x5c, 0xd8, 0x22, 0x16, 0x6b, 0x3f, 0xad, 0x0a, 0x5b, 0xbc, 0x0c, 0x4b, 0x28, 0xda, 0x83, 0xc9, - 0x40, 0xf1, 0xc4, 0x15, 0x49, 0xee, 0x06, 0xb8, 0xab, 0x15, 0x5e, 0xb8, 0x2c, 0x0a, 0x90, 0x5a, - 0x82, 0x13, 0x74, 0xd0, 0x27, 0x61, 0x3c, 0x32, 0x8e, 0x07, 0x73, 0x33, 0xe5, 0x5f, 0x5e, 0xe6, - 0xc7, 0xab, 0x8b, 0xad, 0xdd, 0x11, 0x28, 0xc0, 0x31, 0x3d, 0xd4, 0x4b, 0x46, 0x5d, 0x98, 0x3d, - 0x95, 0x97, 0xe6, 0xd2, 0x53, 0xae, 0x28, 0xe2, 0x02, 0xaa, 0xc3, 0x2c, 0xd9, 0xef, 0x7a, 0x41, - 0xcf, 0x27, 0x2c, 0x54, 0x26, 0x9b, 0x1e, 0x14, 0x5f, 0xe6, 0x2e, 0xa7, 0x81, 0x38, 0x5b, 0x1f, - 0x7d, 0x41, 0x83, 0x19, 0x9e, 0x23, 0x90, 0x9e, 0x65, 0x9e, 0x4b, 0xdc, 0x30, 0x60, 0x49, 0xf0, - 0x4a, 0x3e, 0x8e, 0x6c, 0xa5, 0x70, 0xf1, 0xac, 0x2e, 0xe9, 0x52, 0x9c, 0xa1, 0x49, 0x57, 0x8e, - 0xfa, 0x56, 0x9d, 0xe5, 0xd2, 0x2b, 0xb9, 0x72, 0xd4, 0x77, 0xf0, 0x7c, 0xe5, 0xa8, 0x25, 0x38, - 0x41, 0x47, 0xff, 0xde, 0x14, 0x4c, 0x28, 0x46, 0xdf, 0xd4, 0xed, 0xb6, 0x76, 0x1e, 0xb7, 0xdb, - 0x21, 0x4c, 0x98, 0x32, 0x2c, 0x6e, 0xa4, 0x2a, 0x0e, 0x48, 0x53, 0x2e, 0x9f, 0x38, 0xe0, 0x6e, - 0x80, 0x55, 0x32, 0x94, 0xd1, 0x49, 0x9f, 0x83, 0xa1, 0x53, 0xf0, 0x39, 0x90, 0x8c, 0x2e, 0xc7, - 0xef, 0xe0, 0x3d, 0x00, 0xd1, 0x79, 0x49, 0x2c, 0x11, 0x68, 0x4d, 0xa6, 0x93, 0x68, 0x06, 0x37, - 0x24, 0x0c, 0x2b, 0xf5, 0xd0, 0xab, 0x30, 0xe5, 0xa8, 0xf1, 0xd5, 0xc5, 0x61, 0x5e, 0xea, 0xa9, - 0x45, 0x22, 0x50, 0x3b, 0xb7, 0x62, 0x26, 0x8a, 0x70, 0x92, 0x14, 0x5d, 0x06, 0x4e, 0x94, 0x3b, - 0x61, 0x20, 0xff, 0x19, 0x99, 0x81, 0x21, 0x5e, 0x06, 0xb2, 0x28, 0xc0, 0x0a, 0x91, 0x02, 0x27, - 0x87, 0xb1, 0x52, 0x4e, 0x0e, 0x3d, 0xb8, 0xe8, 0x93, 0xd0, 0x3f, 0xa8, 0x1f, 0x98, 0x2c, 0xa5, - 0x88, 0x1f, 0x32, 0x39, 0xb8, 0x5a, 0x2e, 0xf4, 0x09, 0xce, 0xa2, 0xc2, 0x79, 0xf8, 0x13, 0x07, - 0xc5, 0x78, 0xdf, 0x83, 0xe2, 0xbd, 0x30, 0x11, 0x12, 0x73, 0xc7, 0xb5, 0x4d, 0xc3, 0x69, 0x36, - 0x44, 0x14, 0xb2, 0x98, 0xe7, 0xc5, 0x20, 0xac, 0xd6, 0x43, 0x4b, 0x30, 0xd4, 0xb3, 0x2d, 0x71, - 0x5a, 0xfe, 0xac, 0xbc, 0x3e, 0x69, 0x36, 0xee, 0x1e, 0xd6, 0xde, 0x1a, 0x7b, 0x0d, 0xc8, 0xaf, - 0xba, 0xd6, 0xdd, 0x6d, 0x5f, 0x0b, 0x0f, 0xba, 0x24, 0x58, 0xb8, 0xdd, 0x6c, 0x60, 0xda, 0x38, - 0xcf, 0x01, 0x64, 0xf2, 0x04, 0x0e, 0x20, 0x5f, 0xd3, 0xe0, 0xa2, 0x91, 0xbe, 0xf9, 0x21, 0xc1, - 0xdc, 0x54, 0xf9, 0x53, 0x27, 0xff, 0x36, 0x29, 0x8e, 0x22, 0xbb, 0x98, 0x25, 0x87, 0xf3, 0xfa, - 0x40, 0x15, 0xc1, 0x8e, 0xdd, 0x96, 0x69, 0x0c, 0xc4, 0xac, 0x4f, 0x97, 0x53, 0x04, 0xd7, 0x32, - 0x98, 0x70, 0x0e, 0x76, 0x74, 0x07, 0x26, 0xcc, 0x58, 0x27, 0x16, 0x27, 0x7e, 0xe3, 0x34, 0x2e, - 0xa8, 0x44, 0x4e, 0x72, 0x45, 0xe1, 0x56, 0x29, 0x49, 0x0d, 0x54, 0x11, 0xcb, 0x85, 0x16, 0xc6, - 0xbe, 0x7a, 0xa6, 0xbc, 0x06, 0x9a, 0x8f, 0x11, 0xf7, 0xa1, 0xc6, 0x02, 0x8e, 0x38, 0xc9, 0x6c, - 0x23, 0x2c, 0xd7, 0x6d, 0xc9, 0xb7, 0x93, 0xa9, 0xc4, 0x25, 0x7c, 0x69, 0xa6, 0x0a, 0x71, 0x9a, - 0xa0, 0xfe, 0x03, 0x4d, 0x18, 0xd1, 0xce, 0xd1, 0x6b, 0xe2, 0xac, 0xaf, 0x75, 0xf5, 0xbf, 0xd0, - 0x20, 0x23, 0x3f, 0xa0, 0x2d, 0x18, 0xa3, 0x28, 0x1a, 0xeb, 0x2d, 0xf1, 0x59, 0x1f, 0x2c, 0x77, - 0x5c, 0x32, 0x14, 0xdc, 0x22, 0x29, 0x7e, 0xe0, 0x08, 0x31, 0x95, 0x48, 0x5c, 0x25, 0x10, 0xaa, - 0xf8, 0xc2, 0x52, 0x12, 0x89, 0x1a, 0x50, 0x95, 0x4b, 0x24, 0x6a, 0x09, 0x4e, 0xd0, 0xd1, 0x57, - 0x01, 0x62, 0x99, 0x6f, 0x60, 0x47, 0x9a, 0x9f, 0x8c, 0xc0, 0xe5, 0x41, 0x7d, 0xfe, 0x59, 0x92, - 0x0b, 0x96, 0x76, 0x7c, 0x71, 0x3b, 0x24, 0xfe, 0xad, 0x5b, 0x6b, 0x32, 0x2b, 0x73, 0xc9, 0x2c, - 0x1b, 0x71, 0xd6, 0xfa, 0x0c, 0x46, 0x5c, 0x40, 0x89, 0xc9, 0xbb, 0x22, 0xe9, 0x26, 0x36, 0x42, - 0xc2, 0x53, 0x2e, 0xf3, 0xf8, 0x11, 0x5c, 0xde, 0x4d, 0x03, 0x71, 0xb6, 0x7e, 0x1a, 0x09, 0x4f, - 0x81, 0x4e, 0x05, 0x12, 0x2d, 0x8b, 0x84, 0xe7, 0x41, 0xcf, 0xd6, 0x57, 0x91, 0xf0, 0x99, 0xa2, - 0xbb, 0x7d, 0x24, 0x8b, 0x44, 0x02, 0x71, 0xb6, 0x3e, 0xb2, 0xe0, 0x41, 0x9f, 0x98, 0x5e, 0xa7, - 0x43, 0x5c, 0x8b, 0xe7, 0x8f, 0x32, 0xfc, 0xb6, 0xed, 0xae, 0xf8, 0x06, 0xab, 0xc8, 0xcc, 0x08, - 0xda, 0xd2, 0xc3, 0x47, 0x87, 0xb5, 0x07, 0x71, 0x9f, 0x7a, 0xb8, 0x2f, 0x16, 0xd4, 0x81, 0x0b, - 0x3d, 0x16, 0xf9, 0xdc, 0x6f, 0xba, 0x21, 0xf1, 0xf7, 0x0c, 0xa7, 0x64, 0x62, 0x7f, 0xc6, 0x81, - 0x6e, 0x27, 0x51, 0xe1, 0x34, 0x6e, 0x74, 0x40, 0xe5, 0x0e, 0xd1, 0x1d, 0x85, 0x64, 0xb5, 0x7c, - 0x1a, 0x18, 0x9c, 0x45, 0x87, 0xf3, 0x68, 0xe8, 0x5f, 0xd3, 0x40, 0x78, 0x0d, 0xa3, 0x07, 0x13, - 0xf7, 0x1f, 0xd5, 0xd4, 0xdd, 0xc7, 0x83, 0xe2, 0x11, 0x6c, 0x25, 0x86, 0x2a, 0x0f, 0x60, 0xdf, - 0xa1, 0x04, 0x26, 0x19, 0x8f, 0x79, 0x1f, 0xc7, 0xac, 0xe4, 0x0e, 0x78, 0x27, 0x8c, 0x13, 0x7e, - 0x51, 0x2b, 0x25, 0x5a, 0xe6, 0x89, 0xbd, 0x1c, 0x15, 0xe2, 0x18, 0xae, 0xff, 0x07, 0x0d, 0x04, - 0x06, 0x96, 0xe9, 0xe2, 0x58, 0x19, 0x0f, 0xee, 0xe9, 0x02, 0xa5, 0x64, 0x6a, 0x18, 0x2a, 0xcc, - 0xd4, 0x70, 0x46, 0x09, 0x0c, 0x7e, 0x4f, 0x83, 0x0b, 0xc9, 0x48, 0x31, 0x01, 0x7a, 0x3b, 0x8c, - 0x89, 0xd0, 0x6b, 0x22, 0x76, 0x12, 0x7f, 0xf4, 0x2e, 0xf2, 0x98, 0x47, 0xb0, 0xa4, 0xaa, 0x3e, - 0x40, 0x90, 0xa4, 0xfc, 0x80, 0x35, 0xfd, 0x55, 0x75, 0xfd, 0x4f, 0xa7, 0x61, 0x94, 0xc7, 0xed, - 0xa2, 0x3c, 0x2d, 0xe7, 0xf1, 0xe4, 0xcd, 0xf2, 0xe1, 0xc1, 0xca, 0xbc, 0x76, 0x53, 0x03, 0x44, - 0x57, 0xfa, 0x06, 0x88, 0xc6, 0x3c, 0x31, 0xcc, 0x00, 0xe6, 0xd9, 0x3a, 0x6e, 0x8a, 0x7c, 0xb0, - 0x51, 0x52, 0x98, 0x30, 0x61, 0xb7, 0x1c, 0x2e, 0x2f, 0xb9, 0xf1, 0x01, 0x50, 0xac, 0x97, 0xd3, - 0x7d, 0x2c, 0x97, 0x71, 0x60, 0xa4, 0x91, 0xf2, 0x2e, 0x89, 0x62, 0xc8, 0x8f, 0x11, 0x18, 0x49, - 0x6e, 0xa4, 0xd1, 0xc2, 0x8d, 0xb4, 0x0d, 0x63, 0x62, 0x2b, 0x08, 0xe6, 0xf8, 0xc1, 0x01, 0x32, - 0xac, 0x28, 0xb1, 0x3c, 0x79, 0x01, 0x8e, 0x90, 0xd3, 0x13, 0xb7, 0x63, 0xec, 0xdb, 0x9d, 0x5e, - 0x87, 0x71, 0xc4, 0x11, 0xb5, 0x2a, 0x2b, 0xc6, 0x11, 0x9c, 0x55, 0xe5, 0x9e, 0x9c, 0x4c, 0x91, - 0x52, 0xab, 0x8a, 0x7c, 0xe6, 0x11, 0x1c, 0xbd, 0x08, 0xd5, 0x8e, 0xb1, 0xdf, 0xea, 0xf9, 0x6d, - 0x22, 0x2c, 0x96, 0xc5, 0x32, 0x5e, 0x2f, 0xb4, 0x9d, 0x05, 0xaa, 0xfe, 0x87, 0xfe, 0x42, 0xd3, - 0x0d, 0x6f, 0xf9, 0xad, 0xd0, 0x97, 0x39, 0x1c, 0xd6, 0x04, 0x16, 0x2c, 0xf1, 0x21, 0x07, 0xa6, - 0x3b, 0xc6, 0xfe, 0x6d, 0xd7, 0x90, 0x69, 0x97, 0x27, 0x4a, 0x52, 0x60, 0x57, 0xc5, 0x6b, 0x09, - 0x5c, 0x38, 0x85, 0x3b, 0xe7, 0x56, 0x7a, 0xf2, 0xac, 0x6e, 0xa5, 0x17, 0xe5, 0xdb, 0x18, 0xae, - 0xb7, 0xdd, 0x9f, 0xf7, 0xd4, 0xa6, 0xff, 0xbb, 0x97, 0x97, 0xe4, 0xbb, 0x97, 0xe9, 0xf2, 0xd7, - 0x3a, 0x7d, 0xde, 0xbc, 0xf4, 0x60, 0x82, 0x4a, 0xd8, 0xbc, 0x94, 0x2a, 0x56, 0xa5, 0xcd, 0x8a, - 0x0d, 0x89, 0x46, 0x49, 0xe3, 0x17, 0xa3, 0xc6, 0x2a, 0x1d, 0x74, 0x8b, 0xa7, 0xe5, 0x75, 0x48, - 0x18, 0x57, 0x61, 0x0a, 0xfd, 0x0c, 0xb7, 0x1c, 0x47, 0x59, 0x74, 0x33, 0x15, 0x70, 0x7e, 0xbb, - 0x38, 0x7e, 0xc3, 0x6c, 0x7e, 0xfc, 0x06, 0xf4, 0x4b, 0x79, 0x36, 0x48, 0x54, 0xfe, 0x1d, 0x1f, - 0xe7, 0x0d, 0xa5, 0x2d, 0x91, 0xbf, 0xaf, 0xc1, 0x5c, 0xa7, 0x20, 0xdf, 0x9d, 0x30, 0x8d, 0x6e, - 0x0e, 0xc0, 0x1f, 0x0a, 0x73, 0xe8, 0x2d, 0x3d, 0x72, 0x74, 0x58, 0xbb, 0x67, 0xa6, 0x3d, 0x5c, - 0xd8, 0xb7, 0x41, 0x5f, 0x2c, 0x0f, 0x12, 0x41, 0xee, 0x37, 0x34, 0x98, 0x49, 0x1f, 0x02, 0x6a, - 0x26, 0x61, 0xed, 0x6c, 0x33, 0x09, 0x2b, 0x3e, 0x26, 0x95, 0x3e, 0x3e, 0x26, 0x4f, 0xc3, 0x95, - 0xfc, 0xb5, 0x41, 0x25, 0x32, 0x96, 0xb9, 0x5b, 0x68, 0x42, 0x71, 0xba, 0x12, 0x5a, 0x88, 0x39, - 0x4c, 0xff, 0x14, 0xa4, 0x63, 0x7e, 0xa2, 0x97, 0x61, 0x3c, 0x08, 0x76, 0x78, 0x7c, 0x3a, 0xf1, - 0x91, 0xe5, 0x54, 0xe0, 0x28, 0xc8, 0x9d, 0x78, 0xce, 0x17, 0xfd, 0xc4, 0x31, 0xfa, 0xa5, 0x17, - 0xbe, 0xfb, 0xe3, 0xab, 0x6f, 0xf9, 0xfe, 0x8f, 0xaf, 0xbe, 0xe5, 0x87, 0x3f, 0xbe, 0xfa, 0x96, - 0x5f, 0x38, 0xba, 0xaa, 0x7d, 0xf7, 0xe8, 0xaa, 0xf6, 0xfd, 0xa3, 0xab, 0xda, 0x0f, 0x8f, 0xae, - 0x6a, 0xff, 0xed, 0xe8, 0xaa, 0xf6, 0x95, 0xff, 0x7e, 0xf5, 0x2d, 0x2f, 0x3e, 0x11, 0x53, 0xbf, - 0x16, 0x11, 0x8d, 0xff, 0xe9, 0xee, 0xb6, 0xaf, 0x51, 0xea, 0xd1, 0xb3, 0x1a, 0x46, 0xfd, 0xaf, - 0x03, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x35, 0x31, 0x8c, 0xee, 0xd5, 0x00, 0x00, + 0x75, 0x98, 0x67, 0xf9, 0xb5, 0x3c, 0xfc, 0x78, 0xe4, 0x7d, 0x1f, 0xa2, 0xf8, 0xa4, 0xb7, 0xcf, + 0x23, 0xd9, 0x95, 0x6a, 0x87, 0x2f, 0x92, 0xe5, 0xd8, 0x92, 0x2d, 0xcb, 0xe4, 0x2e, 0xf9, 0xde, + 0xfa, 0x91, 0x7c, 0xd4, 0x5d, 0xf2, 0x49, 0x96, 0x53, 0xd5, 0xc3, 0x99, 0xcb, 0xe5, 0x88, 0xb3, + 0x33, 0xab, 0x99, 0x59, 0x3e, 0x52, 0x8e, 0xe1, 0xd8, 0xf5, 0x47, 0xad, 0xc4, 0x81, 0x61, 0x20, + 0x15, 0x6c, 0xa7, 0x8d, 0x83, 0x20, 0x8d, 0x8b, 0x14, 0x4e, 0xfa, 0xe1, 0x00, 0x69, 0x50, 0x20, + 0x30, 0x50, 0xc4, 0x0e, 0xda, 0xc2, 0x75, 0x11, 0xd4, 0x05, 0x9a, 0x75, 0xcd, 0xb6, 0x4e, 0x81, + 0x16, 0x41, 0x81, 0xa0, 0x28, 0xf0, 0x90, 0x1f, 0xc5, 0xfd, 0x98, 0x99, 0x3b, 0x5f, 0xcb, 0xe5, + 0x2c, 0x49, 0x4b, 0x48, 0x7e, 0x91, 0x7b, 0xcf, 0xbd, 0xe7, 0xdc, 0xb9, 0x1f, 0xe7, 0x9e, 0x73, + 0xee, 0xb9, 0xe7, 0xc0, 0x52, 0xd3, 0xf4, 0x77, 0x3b, 0xdb, 0x0b, 0xba, 0xd3, 0xba, 0xd1, 0xd4, + 0x5c, 0x83, 0xd8, 0xc4, 0x8d, 0xfe, 0x69, 0xef, 0x35, 0x6f, 0x68, 0x6d, 0xd3, 0xbb, 0xa1, 0x3b, + 0x2e, 0xb9, 0xb1, 0xff, 0xc4, 0x36, 0xf1, 0xb5, 0x27, 0x6e, 0x34, 0x29, 0x4c, 0xf3, 0x89, 0xb1, + 0xd0, 0x76, 0x1d, 0xdf, 0x41, 0x4f, 0x46, 0x38, 0x16, 0x82, 0xa6, 0xd1, 0x3f, 0xed, 0xbd, 0xe6, + 0x02, 0xc5, 0xb1, 0x40, 0x71, 0x2c, 0x08, 0x1c, 0xf3, 0x3f, 0x23, 0xd3, 0x75, 0x9a, 0xce, 0x0d, + 0x86, 0x6a, 0xbb, 0xb3, 0xc3, 0x7e, 0xb1, 0x1f, 0xec, 0x3f, 0x4e, 0x62, 0xfe, 0xf1, 0xbd, 0xf7, + 0x7b, 0x0b, 0xa6, 0x43, 0x3b, 0x73, 0x43, 0xeb, 0xf8, 0x8e, 0xa7, 0x6b, 0x96, 0x69, 0x37, 0x6f, + 0xec, 0xa7, 0x7a, 0x33, 0xaf, 0x4a, 0x55, 0x45, 0xb7, 0x7b, 0xd6, 0x71, 0xb7, 0x35, 0x3d, 0xab, + 0xce, 0x53, 0x51, 0x9d, 0x96, 0xa6, 0xef, 0x9a, 0x36, 0x71, 0x0f, 0x83, 0x01, 0xb9, 0xe1, 0x12, + 0xcf, 0xe9, 0xb8, 0x3a, 0x39, 0x51, 0x2b, 0xef, 0x46, 0x8b, 0xf8, 0x5a, 0x16, 0xad, 0x1b, 0x79, + 0xad, 0xdc, 0x8e, 0xed, 0x9b, 0xad, 0x34, 0x99, 0x9f, 0x3b, 0xae, 0x81, 0xa7, 0xef, 0x92, 0x96, + 0x96, 0x6a, 0xf7, 0x9e, 0xbc, 0x76, 0x1d, 0xdf, 0xb4, 0x6e, 0x98, 0xb6, 0xef, 0xf9, 0x6e, 0xb2, + 0x91, 0xfa, 0x24, 0x8c, 0x2c, 0x1a, 0x86, 0x63, 0xa3, 0xc7, 0x61, 0x8c, 0xd8, 0xda, 0xb6, 0x45, + 0x8c, 0x39, 0xe5, 0xba, 0xf2, 0x58, 0x79, 0xe9, 0xc2, 0x77, 0xbb, 0x95, 0xb7, 0x1d, 0x75, 0x2b, + 0x63, 0xcb, 0xbc, 0x18, 0x07, 0x70, 0xf5, 0x57, 0x4b, 0x30, 0xca, 0x1a, 0x79, 0xe8, 0x2b, 0x0a, + 0x5c, 0xdc, 0xeb, 0x6c, 0x13, 0xd7, 0x26, 0x3e, 0xf1, 0x6a, 0x9a, 0xb7, 0xbb, 0xed, 0x68, 0x2e, + 0x47, 0x31, 0xf1, 0xe4, 0xcd, 0x85, 0x93, 0xaf, 0x9e, 0x85, 0xdb, 0x69, 0x74, 0x4b, 0x0f, 0x1c, + 0x75, 0x2b, 0x17, 0x33, 0x00, 0x38, 0x8b, 0x38, 0xda, 0x87, 0x49, 0xbb, 0x69, 0xda, 0x07, 0x75, + 0xbb, 0xe9, 0x12, 0xcf, 0x9b, 0x2b, 0xb1, 0xce, 0x7c, 0xb8, 0x48, 0x67, 0xd6, 0x25, 0x3c, 0x4b, + 0x33, 0x47, 0xdd, 0xca, 0xa4, 0x5c, 0x82, 0x63, 0x74, 0xd4, 0xdf, 0x53, 0xe0, 0xc2, 0xa2, 0xd1, + 0x32, 0x3d, 0xcf, 0x74, 0xec, 0x0d, 0xab, 0xd3, 0x34, 0x6d, 0x74, 0x1d, 0x86, 0x6d, 0xad, 0x45, + 0xd8, 0x80, 0x8c, 0x2f, 0x4d, 0x8a, 0x31, 0x1d, 0x5e, 0xd7, 0x5a, 0x04, 0x33, 0x08, 0x7a, 0x1e, + 0x46, 0x75, 0xc7, 0xde, 0x31, 0x9b, 0xa2, 0x9f, 0x3f, 0xb3, 0xc0, 0xe7, 0x71, 0x41, 0x9e, 0x47, + 0xd6, 0x3d, 0x31, 0xff, 0x0b, 0x58, 0xbb, 0xb7, 0x7c, 0xe0, 0x13, 0x9b, 0x92, 0x59, 0x82, 0xa3, + 0x6e, 0x65, 0xb4, 0xca, 0x10, 0x60, 0x81, 0x08, 0x3d, 0x06, 0x65, 0xc3, 0xf4, 0xf8, 0x64, 0x0e, + 0xb1, 0xc9, 0x9c, 0x3c, 0xea, 0x56, 0xca, 0x35, 0x51, 0x86, 0x43, 0xa8, 0xba, 0x02, 0xe5, 0x45, + 0x8b, 0xb8, 0xbe, 0x69, 0x37, 0xd1, 0x33, 0x30, 0x4d, 0x5a, 0x9a, 0x69, 0x61, 0xa2, 0x13, 0x73, + 0x9f, 0xb8, 0xde, 0x9c, 0x72, 0x7d, 0xe8, 0xb1, 0xf1, 0x25, 0x74, 0xd4, 0xad, 0x4c, 0x2f, 0xc7, + 0x20, 0x38, 0x51, 0x53, 0xfd, 0xb4, 0x02, 0x13, 0x8b, 0x1d, 0xc3, 0xf4, 0x79, 0x4f, 0x90, 0x0b, + 0x13, 0x1a, 0xfd, 0xb9, 0xe1, 0x58, 0xa6, 0x7e, 0x28, 0x96, 0xc3, 0x73, 0x45, 0x66, 0x60, 0x31, + 0x42, 0xb3, 0x74, 0xe1, 0xa8, 0x5b, 0x99, 0x90, 0x0a, 0xb0, 0x4c, 0x44, 0xdd, 0x05, 0x19, 0x86, + 0x3e, 0x0a, 0x93, 0x7c, 0x38, 0xd6, 0xb4, 0x36, 0x26, 0x3b, 0xa2, 0x0f, 0x8f, 0x48, 0xa3, 0x1b, + 0x10, 0x5a, 0xb8, 0xb3, 0xfd, 0x0a, 0xd1, 0x7d, 0x4c, 0x76, 0x88, 0x4b, 0x6c, 0x9d, 0xf0, 0x89, + 0xae, 0x4a, 0x8d, 0x71, 0x0c, 0x95, 0xfa, 0x23, 0x05, 0x66, 0x16, 0xf7, 0x35, 0xd3, 0xd2, 0xb6, + 0x4d, 0xcb, 0xf4, 0x0f, 0x5f, 0x72, 0x6c, 0xd2, 0xc7, 0x4c, 0x6f, 0xc1, 0x03, 0x1d, 0x5b, 0xe3, + 0xed, 0x2c, 0xb2, 0xc6, 0xe7, 0x76, 0xf3, 0xb0, 0x4d, 0xe8, 0x12, 0xa5, 0x23, 0x7d, 0xf5, 0xa8, + 0x5b, 0x79, 0x60, 0x2b, 0xbb, 0x0a, 0xce, 0x6b, 0x8b, 0x30, 0x5c, 0x91, 0x40, 0x77, 0x1d, 0xab, + 0xd3, 0x12, 0x58, 0x87, 0x18, 0xd6, 0xf9, 0xa3, 0x6e, 0xe5, 0xca, 0x56, 0x66, 0x0d, 0x9c, 0xd3, + 0x52, 0xfd, 0x6e, 0x09, 0x26, 0x97, 0x34, 0x7d, 0xaf, 0xd3, 0x5e, 0xea, 0xe8, 0x7b, 0xc4, 0x47, + 0x1f, 0x87, 0x32, 0x65, 0x70, 0x86, 0xe6, 0x6b, 0x62, 0x24, 0x7f, 0x36, 0x77, 0x9d, 0xb2, 0x49, + 0xa4, 0xb5, 0xa3, 0xb1, 0x5d, 0x23, 0xbe, 0xb6, 0x84, 0xc4, 0x98, 0x40, 0x54, 0x86, 0x43, 0xac, + 0x68, 0x07, 0x86, 0xbd, 0x36, 0xd1, 0xc5, 0x2e, 0xa8, 0x15, 0x59, 0x2b, 0x72, 0x8f, 0x1b, 0x6d, + 0xa2, 0x47, 0xb3, 0x40, 0x7f, 0x61, 0x86, 0x1f, 0xd9, 0x30, 0xea, 0xf9, 0x9a, 0xdf, 0xf1, 0xd8, + 0xd6, 0x98, 0x78, 0x72, 0x65, 0x60, 0x4a, 0x0c, 0xdb, 0xd2, 0xb4, 0xa0, 0x35, 0xca, 0x7f, 0x63, + 0x41, 0x45, 0xfd, 0x4f, 0x0a, 0xcc, 0xc8, 0xd5, 0x57, 0x4d, 0xcf, 0x47, 0x3f, 0x9f, 0x1a, 0xce, + 0x85, 0xfe, 0x86, 0x93, 0xb6, 0x66, 0x83, 0x39, 0x23, 0xc8, 0x95, 0x83, 0x12, 0x69, 0x28, 0x09, + 0x8c, 0x98, 0x3e, 0x69, 0xf1, 0x65, 0x55, 0x90, 0xf3, 0xc9, 0x5d, 0x5e, 0x9a, 0x12, 0xc4, 0x46, + 0xea, 0x14, 0x2d, 0xe6, 0xd8, 0xd5, 0x8f, 0xc3, 0x25, 0xb9, 0xd6, 0x86, 0xeb, 0xec, 0x9b, 0x06, + 0x71, 0xe9, 0x4e, 0xf0, 0x0f, 0xdb, 0xa9, 0x9d, 0x40, 0x57, 0x16, 0x66, 0x10, 0xf4, 0x4e, 0x18, + 0x75, 0x49, 0xd3, 0x74, 0x6c, 0x36, 0xdb, 0xe3, 0xd1, 0xd8, 0x61, 0x56, 0x8a, 0x05, 0x54, 0xfd, + 0xbf, 0xa5, 0xf8, 0xd8, 0xd1, 0x69, 0x44, 0xfb, 0x50, 0x6e, 0x0b, 0x52, 0x62, 0xec, 0x6e, 0x0d, + 0xfa, 0x81, 0x41, 0xd7, 0xa3, 0x51, 0x0d, 0x4a, 0x70, 0x48, 0x0b, 0x99, 0x30, 0x1d, 0xfc, 0x5f, + 0x1d, 0x80, 0x61, 0x33, 0x76, 0xba, 0x11, 0x43, 0x84, 0x13, 0x88, 0xd1, 0x26, 0x8c, 0x7b, 0x44, + 0x77, 0x09, 0xe5, 0x49, 0x62, 0x99, 0x66, 0x32, 0xae, 0x46, 0x50, 0x49, 0x30, 0xae, 0x59, 0xd1, + 0xfd, 0xf1, 0x10, 0x80, 0x23, 0x44, 0xf4, 0x58, 0xf0, 0x08, 0x31, 0x28, 0x47, 0x9a, 0x1b, 0xe6, + 0x73, 0x43, 0x3f, 0xb5, 0x21, 0xca, 0x70, 0x08, 0x55, 0xbf, 0x31, 0x0c, 0x28, 0xbd, 0xc4, 0xe5, + 0x11, 0xe0, 0x25, 0x62, 0xfc, 0x07, 0x19, 0x01, 0xb1, 0x5b, 0x12, 0x88, 0xd1, 0x6b, 0x30, 0x65, + 0x69, 0x9e, 0x7f, 0xa7, 0x4d, 0xa5, 0x95, 0x60, 0xa1, 0x4c, 0x3c, 0xb9, 0x58, 0x64, 0xa6, 0x57, + 0x65, 0x44, 0x4b, 0xb3, 0x47, 0xdd, 0xca, 0x54, 0xac, 0x08, 0xc7, 0x49, 0xa1, 0x57, 0x60, 0x9c, + 0x16, 0x2c, 0xbb, 0xae, 0xe3, 0x8a, 0xd1, 0x7f, 0xb6, 0x28, 0x5d, 0x86, 0x64, 0x69, 0x8a, 0xce, + 0x49, 0xf8, 0x13, 0x47, 0xe8, 0xd1, 0x47, 0x00, 0x39, 0xdb, 0x1e, 0x71, 0xf7, 0x89, 0x71, 0x93, + 0x8b, 0x66, 0xf4, 0x63, 0xe9, 0xec, 0x0c, 0x2d, 0xcd, 0x8b, 0xd9, 0x44, 0x77, 0x52, 0x35, 0x70, + 0x46, 0x2b, 0xb4, 0x07, 0x28, 0x14, 0xef, 0xc2, 0x05, 0x30, 0x37, 0xd2, 0xff, 0xf2, 0xb9, 0x42, + 0x89, 0xdd, 0x4c, 0xa1, 0xc0, 0x19, 0x68, 0xd5, 0x7f, 0x53, 0x82, 0x09, 0xbe, 0x44, 0x96, 0x6d, + 0xdf, 0x3d, 0x3c, 0x87, 0x03, 0x82, 0xc4, 0x0e, 0x88, 0x6a, 0xf1, 0x3d, 0xcf, 0x3a, 0x9c, 0x7b, + 0x3e, 0xb4, 0x12, 0xe7, 0xc3, 0xf2, 0xa0, 0x84, 0x7a, 0x1f, 0x0f, 0x7f, 0xaa, 0xc0, 0x05, 0xa9, + 0xf6, 0x39, 0x9c, 0x0e, 0x46, 0xfc, 0x74, 0x78, 0x6e, 0xc0, 0xef, 0xcb, 0x39, 0x1c, 0x9c, 0xd8, + 0x67, 0x31, 0xc6, 0xfd, 0x24, 0xc0, 0x36, 0x63, 0x27, 0xeb, 0x91, 0x9c, 0x14, 0x4e, 0xf9, 0x52, + 0x08, 0xc1, 0x52, 0xad, 0x18, 0xcf, 0x2a, 0xf5, 0xe4, 0x59, 0xff, 0x63, 0x08, 0x66, 0x53, 0xc3, + 0x9e, 0xe6, 0x23, 0xca, 0x4f, 0x89, 0x8f, 0x94, 0x7e, 0x1a, 0x7c, 0x64, 0xa8, 0x10, 0x1f, 0xe9, + 0xfb, 0x9c, 0x40, 0x2e, 0xa0, 0x96, 0xd9, 0xe4, 0xcd, 0x1a, 0xbe, 0xe6, 0xfa, 0x9b, 0x66, 0x8b, + 0x08, 0x8e, 0xf3, 0xb7, 0xfb, 0x5b, 0xb2, 0xb4, 0x05, 0x67, 0x3c, 0x6b, 0x29, 0x4c, 0x38, 0x03, + 0xbb, 0xfa, 0x83, 0x61, 0x80, 0xea, 0x22, 0x76, 0x7c, 0xde, 0xd9, 0xe7, 0x60, 0xa4, 0xbd, 0xab, + 0x79, 0xc1, 0x7a, 0x7a, 0x3c, 0x58, 0x8c, 0x1b, 0xb4, 0xf0, 0x7e, 0xb7, 0x32, 0x57, 0x75, 0x89, + 0x41, 0x6c, 0xdf, 0xd4, 0x2c, 0x2f, 0x68, 0xc4, 0x60, 0x98, 0xb7, 0xa3, 0xdf, 0x40, 0x87, 0xb1, + 0xea, 0xb4, 0xda, 0x16, 0xa1, 0x50, 0xf6, 0x0d, 0xa5, 0x62, 0xdf, 0xb0, 0x9a, 0xc2, 0x84, 0x33, + 0xb0, 0x07, 0x34, 0xeb, 0xb6, 0xe9, 0x9b, 0x5a, 0x48, 0x73, 0xa8, 0x38, 0xcd, 0x38, 0x26, 0x9c, + 0x81, 0x1d, 0xbd, 0xae, 0xc0, 0x7c, 0xbc, 0x78, 0xc5, 0xb4, 0x4d, 0x6f, 0x97, 0x18, 0x8c, 0xf8, + 0xf0, 0x89, 0x89, 0x5f, 0x3b, 0xea, 0x56, 0xe6, 0x57, 0x73, 0x31, 0xe2, 0x1e, 0xd4, 0xd0, 0x97, + 0x14, 0xb8, 0x9a, 0x18, 0x17, 0xd7, 0x6c, 0x36, 0x89, 0x2b, 0x7a, 0x73, 0xf2, 0x25, 0x54, 0x39, + 0xea, 0x56, 0xae, 0xae, 0xe6, 0xa3, 0xc4, 0xbd, 0xe8, 0xa9, 0xdf, 0x51, 0x60, 0xa8, 0x8a, 0xeb, + 0xe8, 0x5d, 0x31, 0x25, 0xee, 0x01, 0x59, 0x89, 0xbb, 0xdf, 0xad, 0x8c, 0x55, 0x71, 0x5d, 0xd2, + 0xe7, 0xbe, 0xa4, 0xc0, 0xac, 0xee, 0xd8, 0xbe, 0x46, 0xfb, 0x85, 0xb9, 0xa4, 0x13, 0x70, 0xd5, + 0x42, 0xfa, 0x4b, 0x35, 0x81, 0x6c, 0xe9, 0x41, 0xd1, 0x81, 0xd9, 0x24, 0xc4, 0xc3, 0x69, 0xca, + 0xea, 0x0f, 0x15, 0x98, 0xac, 0x5a, 0x4e, 0xc7, 0xd8, 0x70, 0x9d, 0x1d, 0xd3, 0x22, 0x6f, 0x0d, + 0xa5, 0x4d, 0xee, 0x71, 0xde, 0xa1, 0xcc, 0x94, 0x28, 0xb9, 0xe2, 0x5b, 0x44, 0x89, 0x92, 0xbb, + 0x9c, 0x73, 0x4e, 0xfe, 0xea, 0x58, 0xfc, 0xcb, 0xd8, 0x49, 0xf9, 0x18, 0x94, 0x75, 0x6d, 0xa9, + 0x63, 0x1b, 0x56, 0xa8, 0x45, 0xd1, 0x5e, 0x56, 0x17, 0x79, 0x19, 0x0e, 0xa1, 0xe8, 0x35, 0x80, + 0xc8, 0x04, 0x26, 0xa6, 0x61, 0x65, 0x30, 0xb3, 0x5b, 0x83, 0xf8, 0xbe, 0x69, 0x37, 0xbd, 0x68, + 0xea, 0x23, 0x18, 0x96, 0xa8, 0xa1, 0x4f, 0xc2, 0x94, 0x18, 0xe4, 0x7a, 0x4b, 0x6b, 0x0a, 0x7b, + 0x43, 0xc1, 0x91, 0x5a, 0x93, 0x10, 0x2d, 0x5d, 0x16, 0x84, 0xa7, 0xe4, 0x52, 0x0f, 0xc7, 0xa9, + 0xa1, 0x43, 0x98, 0x6c, 0xc9, 0x36, 0x94, 0xe1, 0xe2, 0xe2, 0x8c, 0x64, 0x4f, 0x59, 0xba, 0x24, + 0x88, 0x4f, 0xc6, 0xac, 0x2f, 0x31, 0x52, 0x19, 0xaa, 0xe0, 0xc8, 0x59, 0xa9, 0x82, 0x04, 0xc6, + 0xb8, 0x32, 0xec, 0xcd, 0x8d, 0xb2, 0x0f, 0x7c, 0xa6, 0xc8, 0x07, 0x72, 0xbd, 0x3a, 0xb2, 0xe9, + 0xf2, 0xdf, 0x1e, 0x0e, 0x70, 0xa3, 0x7d, 0x98, 0xa4, 0xa7, 0x7a, 0x83, 0x58, 0x44, 0xf7, 0x1d, + 0x77, 0x6e, 0xac, 0xb8, 0xcd, 0xb4, 0x21, 0xe1, 0xe1, 0xa6, 0x34, 0xb9, 0x04, 0xc7, 0xe8, 0x84, + 0xb6, 0x82, 0x72, 0xae, 0xad, 0xa0, 0x03, 0x13, 0xfb, 0x92, 0x4d, 0x6b, 0x9c, 0x0d, 0xc2, 0x87, + 0x8a, 0x74, 0x2c, 0x32, 0x70, 0x2d, 0x5d, 0x14, 0x84, 0x26, 0x64, 0x63, 0x98, 0x4c, 0x47, 0xed, + 0x96, 0x61, 0xb6, 0x6a, 0x75, 0x3c, 0x9f, 0xb8, 0x8b, 0xe2, 0x52, 0x82, 0xb8, 0xe8, 0x33, 0x0a, + 0x5c, 0x61, 0xff, 0xd6, 0x9c, 0x7b, 0x76, 0x8d, 0x58, 0xda, 0xe1, 0xe2, 0x0e, 0xad, 0x61, 0x18, + 0x27, 0xe3, 0x40, 0xb5, 0x8e, 0x90, 0x22, 0x99, 0x71, 0xae, 0x91, 0x89, 0x11, 0xe7, 0x50, 0x42, + 0xbf, 0xa4, 0xc0, 0x83, 0x19, 0xa0, 0x1a, 0xb1, 0x88, 0x1f, 0x48, 0x2e, 0x27, 0xed, 0xc7, 0xc3, + 0x47, 0xdd, 0xca, 0x83, 0x8d, 0x3c, 0xa4, 0x38, 0x9f, 0x1e, 0xfa, 0x15, 0x05, 0xe6, 0x33, 0xa0, + 0x2b, 0x9a, 0x69, 0x75, 0xdc, 0x40, 0xa8, 0x39, 0x69, 0x77, 0x98, 0x6c, 0xd1, 0xc8, 0xc5, 0x8a, + 0x7b, 0x50, 0x44, 0x9f, 0x82, 0xcb, 0x21, 0x74, 0xcb, 0xb6, 0x09, 0x31, 0x62, 0x22, 0xce, 0x49, + 0xbb, 0xf2, 0xe0, 0x51, 0xb7, 0x72, 0xb9, 0x91, 0x85, 0x10, 0x67, 0xd3, 0x41, 0x4d, 0x78, 0x38, + 0x02, 0xf8, 0xa6, 0x65, 0xbe, 0xc6, 0xa5, 0xb0, 0x5d, 0x97, 0x78, 0xbb, 0x8e, 0x65, 0x30, 0x66, + 0xa1, 0x2c, 0xbd, 0xfd, 0xa8, 0x5b, 0x79, 0xb8, 0xd1, 0xab, 0x22, 0xee, 0x8d, 0x07, 0x19, 0x30, + 0xe9, 0xe9, 0x9a, 0x5d, 0xb7, 0x7d, 0xe2, 0xee, 0x6b, 0xd6, 0xdc, 0x68, 0xa1, 0x0f, 0xe4, 0x5b, + 0x54, 0xc2, 0x83, 0x63, 0x58, 0xd1, 0xfb, 0xa1, 0x4c, 0x0e, 0xda, 0x9a, 0x6d, 0x10, 0xce, 0x16, + 0xc6, 0x97, 0x1e, 0xa2, 0x87, 0xd1, 0xb2, 0x28, 0xbb, 0xdf, 0xad, 0x4c, 0x06, 0xff, 0xaf, 0x39, + 0x06, 0xc1, 0x61, 0x6d, 0xf4, 0x0b, 0x70, 0xa9, 0xa5, 0x1d, 0xac, 0x3b, 0x06, 0x61, 0x4c, 0xce, + 0x0b, 0x04, 0xdd, 0x72, 0xa1, 0x7e, 0xce, 0x1d, 0x75, 0x2b, 0x97, 0xd6, 0x32, 0xf0, 0xe1, 0x4c, + 0x2a, 0x74, 0x1a, 0x5a, 0xda, 0xc1, 0x4d, 0x57, 0xd3, 0xc9, 0x4e, 0xc7, 0xda, 0x24, 0x6e, 0xcb, + 0xb4, 0xb9, 0x2e, 0x41, 0x74, 0xc7, 0x36, 0x28, 0x2b, 0x51, 0x1e, 0x1b, 0xe1, 0xd3, 0xb0, 0xd6, + 0xab, 0x22, 0xee, 0x8d, 0x07, 0x3d, 0x05, 0x93, 0x66, 0xd3, 0x76, 0x5c, 0xb2, 0xa9, 0x99, 0xb6, + 0xef, 0xcd, 0x01, 0x33, 0xbb, 0xb3, 0x61, 0xad, 0x4b, 0xe5, 0x38, 0x56, 0x4b, 0xed, 0x0e, 0xc1, + 0x78, 0xd5, 0xb1, 0x0d, 0x93, 0xa9, 0x31, 0x4f, 0xc4, 0x6c, 0xa6, 0x0f, 0xcb, 0x7c, 0xf0, 0x7e, + 0xb7, 0x32, 0x15, 0x56, 0x94, 0x18, 0xe3, 0xd3, 0xa1, 0xa1, 0x82, 0x2b, 0xc6, 0x6f, 0x8f, 0x5b, + 0x18, 0xee, 0x77, 0x2b, 0x17, 0xc2, 0x66, 0x71, 0xa3, 0x03, 0xda, 0xe7, 0xfa, 0xc7, 0xa6, 0xab, + 0xd9, 0x9e, 0x39, 0x80, 0xfe, 0x11, 0x6a, 0x96, 0xab, 0x29, 0x6c, 0x38, 0x83, 0x02, 0x7a, 0x05, + 0xa6, 0x69, 0xe9, 0x56, 0xdb, 0xd0, 0x7c, 0x52, 0x50, 0xed, 0xb8, 0x22, 0x68, 0x4e, 0xaf, 0xc6, + 0x30, 0xe1, 0x04, 0x66, 0x6e, 0x63, 0xd6, 0x3c, 0xc7, 0x66, 0xdb, 0x2d, 0x66, 0x63, 0xa6, 0xa5, + 0x58, 0x40, 0xd1, 0xe3, 0x30, 0xd6, 0x22, 0x9e, 0xa7, 0x35, 0x09, 0xdb, 0x3f, 0xe3, 0xd1, 0x21, + 0xb9, 0xc6, 0x8b, 0x71, 0x00, 0x47, 0xef, 0x86, 0x11, 0xdd, 0x31, 0x88, 0x37, 0x37, 0xc6, 0x66, + 0x98, 0x6a, 0x5f, 0x23, 0x55, 0x5a, 0x70, 0xbf, 0x5b, 0x19, 0x67, 0x7a, 0x38, 0xfd, 0x85, 0x79, + 0x25, 0xf5, 0xd7, 0xa9, 0xcc, 0x9a, 0x10, 0xd2, 0xfb, 0xb0, 0x8d, 0x9f, 0x9f, 0x99, 0x59, 0x7d, + 0x83, 0x2a, 0x0c, 0x8e, 0xed, 0xbb, 0x8e, 0xb5, 0x61, 0x69, 0x36, 0x41, 0x9f, 0x57, 0x60, 0x66, + 0xd7, 0x6c, 0xee, 0xca, 0x97, 0x5b, 0xe2, 0x60, 0x2b, 0x24, 0xdb, 0xdf, 0x4a, 0xe0, 0x5a, 0xba, + 0x74, 0xd4, 0xad, 0xcc, 0x24, 0x4b, 0x71, 0x8a, 0xa6, 0xfa, 0xc5, 0x12, 0x5c, 0x12, 0x3d, 0xb3, + 0xe8, 0x49, 0xd3, 0xb6, 0x9c, 0xc3, 0x16, 0xb1, 0xcf, 0xe3, 0x1e, 0x2a, 0x98, 0xa1, 0x52, 0xee, + 0x0c, 0xb5, 0x52, 0x33, 0x34, 0x54, 0x64, 0x86, 0xc2, 0x85, 0x7c, 0xcc, 0x2c, 0xfd, 0xb9, 0x02, + 0x73, 0x59, 0x63, 0x71, 0x0e, 0x3a, 0x50, 0x2b, 0xae, 0x03, 0xdd, 0x2a, 0xaa, 0xd4, 0x26, 0xbb, + 0x9e, 0xa3, 0x0b, 0xfd, 0xa4, 0x04, 0x57, 0xa2, 0xea, 0x75, 0xdb, 0xf3, 0x35, 0xcb, 0xe2, 0x66, + 0x9e, 0xb3, 0x9f, 0xf7, 0x76, 0x4c, 0x95, 0x5d, 0x1f, 0xec, 0x53, 0xe5, 0xbe, 0xe7, 0x5a, 0x9a, + 0x0f, 0x12, 0x96, 0xe6, 0x8d, 0x53, 0xa4, 0xd9, 0xdb, 0xe8, 0xfc, 0xbf, 0x14, 0x98, 0xcf, 0x6e, + 0x78, 0x0e, 0x8b, 0xca, 0x89, 0x2f, 0xaa, 0x8f, 0x9c, 0xde, 0x57, 0xe7, 0x2c, 0xab, 0x7f, 0x5e, + 0xca, 0xfb, 0x5a, 0xa6, 0x6c, 0xef, 0xc0, 0x05, 0xaa, 0x05, 0x79, 0xbe, 0x30, 0x89, 0x9e, 0xcc, + 0x57, 0x20, 0xb0, 0x11, 0x5d, 0xc0, 0x71, 0x1c, 0x38, 0x89, 0x14, 0xad, 0xc3, 0x18, 0x55, 0x7d, + 0x28, 0xfe, 0x52, 0xff, 0xf8, 0xc3, 0xd3, 0xa8, 0xc1, 0xdb, 0xe2, 0x00, 0x09, 0xfa, 0x79, 0x98, + 0x32, 0xc2, 0x1d, 0x75, 0xcc, 0x45, 0x61, 0x12, 0x2b, 0x33, 0x5e, 0xd7, 0xe4, 0xd6, 0x38, 0x8e, + 0x4c, 0xfd, 0x2b, 0x05, 0x1e, 0xea, 0xb5, 0xb6, 0xd0, 0xab, 0x00, 0x7a, 0x20, 0x5e, 0x70, 0x57, + 0x91, 0x82, 0xe6, 0xed, 0x50, 0x48, 0x89, 0x36, 0x68, 0x58, 0xe4, 0x61, 0x89, 0x48, 0xc6, 0xfd, + 0x63, 0xe9, 0x8c, 0xee, 0x1f, 0xd5, 0xff, 0xad, 0xc8, 0xac, 0x48, 0x9e, 0xdb, 0xb7, 0x1a, 0x2b, + 0x92, 0xfb, 0x9e, 0x6b, 0x5f, 0xfb, 0x8f, 0x25, 0xb8, 0x9e, 0xdd, 0x44, 0x3a, 0x7b, 0x3f, 0x0c, + 0xa3, 0x6d, 0xee, 0xcf, 0x33, 0xc4, 0xce, 0xc6, 0xc7, 0x28, 0x67, 0xe1, 0xde, 0x36, 0xf7, 0xbb, + 0x95, 0xf9, 0x2c, 0x46, 0x2f, 0xfc, 0x74, 0x44, 0x3b, 0x64, 0x26, 0xac, 0x0c, 0x5c, 0xfa, 0x7b, + 0x4f, 0x9f, 0xcc, 0x45, 0xdb, 0x26, 0x56, 0xdf, 0x86, 0x85, 0x4f, 0x2b, 0x30, 0x1d, 0x5b, 0xd1, + 0xde, 0xdc, 0x08, 0x5b, 0xa3, 0x85, 0xae, 0x7e, 0x62, 0x5b, 0x25, 0x3a, 0xb9, 0x63, 0xc5, 0x1e, + 0x4e, 0x10, 0x4c, 0xb0, 0x59, 0x79, 0x54, 0xdf, 0x72, 0x6c, 0x56, 0xee, 0x7c, 0x0e, 0x9b, 0xfd, + 0xb5, 0x52, 0xde, 0xd7, 0x32, 0x36, 0x7b, 0x0f, 0xc6, 0x03, 0xcf, 0xca, 0x80, 0x5d, 0xac, 0x0c, + 0xda, 0x27, 0x8e, 0x2e, 0x72, 0x7b, 0x08, 0x4a, 0x3c, 0x1c, 0xd1, 0x42, 0x9f, 0x55, 0x00, 0xa2, + 0x89, 0x11, 0x9b, 0x6a, 0xf3, 0xf4, 0x86, 0x43, 0x12, 0x6b, 0xa6, 0xe9, 0x96, 0x96, 0x16, 0x85, + 0x44, 0x57, 0xfd, 0xd6, 0x10, 0xa0, 0x74, 0xdf, 0xa9, 0xb8, 0xb9, 0x67, 0xda, 0x46, 0x52, 0x21, + 0xb8, 0x6d, 0xda, 0x06, 0x66, 0x90, 0x3e, 0x04, 0xd2, 0x67, 0xe1, 0x42, 0xd3, 0x72, 0xb6, 0x35, + 0xcb, 0x3a, 0x14, 0xce, 0x9a, 0xc2, 0xed, 0xef, 0x22, 0x3d, 0x98, 0x6e, 0xc6, 0x41, 0x38, 0x59, + 0x17, 0xb5, 0x61, 0xc6, 0xa5, 0xaa, 0xac, 0x6e, 0x5a, 0x4c, 0x75, 0x72, 0x3a, 0x7e, 0x41, 0x5b, + 0x09, 0x13, 0xef, 0x71, 0x02, 0x17, 0x4e, 0x61, 0x47, 0xef, 0x80, 0xb1, 0xb6, 0x6b, 0xb6, 0x34, + 0xf7, 0x90, 0x29, 0x67, 0xe5, 0xa5, 0x09, 0x7a, 0xc2, 0x6d, 0xf0, 0x22, 0x1c, 0xc0, 0xd0, 0x2f, + 0xc0, 0xb8, 0x65, 0xee, 0x10, 0xfd, 0x50, 0xb7, 0x88, 0x30, 0x6e, 0xdc, 0x39, 0x9d, 0x25, 0xb3, + 0x1a, 0xa0, 0x15, 0x57, 0xaa, 0xc1, 0x4f, 0x1c, 0x11, 0x54, 0x5f, 0x2f, 0xc1, 0xd5, 0x1e, 0x2d, + 0x11, 0xa6, 0x0b, 0x5a, 0x7c, 0x98, 0x98, 0xbe, 0xa7, 0xf8, 0x22, 0x14, 0x85, 0xf7, 0xbb, 0x95, + 0x47, 0x7a, 0x20, 0x68, 0xd0, 0xf5, 0x43, 0x9a, 0x87, 0x38, 0x42, 0x83, 0xea, 0x30, 0x6a, 0x44, + 0x66, 0xbc, 0xf1, 0xa5, 0x27, 0x28, 0x8b, 0xe5, 0x86, 0xb6, 0x7e, 0xb1, 0x09, 0x04, 0x68, 0x15, + 0xc6, 0xf8, 0xed, 0x29, 0x11, 0xec, 0xfa, 0x49, 0xa6, 0xd3, 0xf2, 0xa2, 0x7e, 0x91, 0x05, 0x28, + 0xd4, 0xff, 0xa7, 0xc0, 0x58, 0xd5, 0x71, 0x49, 0x6d, 0xbd, 0x81, 0x0e, 0x61, 0x42, 0xf2, 0xd3, + 0x16, 0xac, 0xab, 0xe0, 0x5e, 0x66, 0x18, 0x17, 0x23, 0x6c, 0x81, 0x8f, 0x67, 0x58, 0x80, 0x65, + 0x5a, 0xe8, 0x55, 0x3a, 0xe6, 0xf7, 0x5c, 0xd3, 0xa7, 0x84, 0x07, 0xb9, 0x74, 0xe2, 0x84, 0x71, + 0x80, 0x8b, 0x2f, 0x83, 0xf0, 0x27, 0x8e, 0xa8, 0xa8, 0x1b, 0x74, 0xdb, 0x26, 0xbb, 0x89, 0x9e, + 0x81, 0xe1, 0x96, 0x63, 0x04, 0xf3, 0xfe, 0xce, 0x60, 0x53, 0xae, 0x39, 0x06, 0x1d, 0xdb, 0x2b, + 0xe9, 0x16, 0xcc, 0x34, 0xc6, 0xda, 0xa8, 0xeb, 0x30, 0x93, 0xa4, 0x8f, 0x9e, 0x81, 0x69, 0xdd, + 0x69, 0xb5, 0x1c, 0xbb, 0xd1, 0xd9, 0xd9, 0x31, 0x0f, 0x48, 0xcc, 0xf9, 0xb6, 0x1a, 0x83, 0xe0, + 0x44, 0x4d, 0xf5, 0xeb, 0x0a, 0x0c, 0xd1, 0x79, 0x51, 0x61, 0xd4, 0x70, 0x5a, 0x9a, 0x69, 0x8b, + 0x5e, 0x31, 0xd7, 0xe0, 0x1a, 0x2b, 0xc1, 0x02, 0x82, 0xda, 0x30, 0x1e, 0x48, 0x3a, 0x03, 0x39, + 0x80, 0xd4, 0xd6, 0x1b, 0xa1, 0xd3, 0x5c, 0xc8, 0x7e, 0x83, 0x12, 0x0f, 0x47, 0x44, 0x54, 0x0d, + 0x66, 0x6b, 0xeb, 0x8d, 0xba, 0xad, 0x5b, 0x1d, 0x83, 0x2c, 0x1f, 0xb0, 0x3f, 0x94, 0x01, 0x98, + 0xbc, 0x44, 0x7c, 0x27, 0x63, 0x00, 0xa2, 0x12, 0x0e, 0x60, 0xb4, 0x1a, 0xe1, 0x2d, 0x84, 0x87, + 0x2c, 0xab, 0x26, 0x90, 0xe0, 0x00, 0xa6, 0xfe, 0xb0, 0x04, 0x13, 0x52, 0x87, 0x90, 0x05, 0x63, + 0xfc, 0x73, 0x03, 0x07, 0xb5, 0xe5, 0x82, 0x9f, 0x18, 0xef, 0x35, 0xa7, 0xce, 0x07, 0xd4, 0xc3, + 0x01, 0x09, 0x99, 0x99, 0x95, 0x7a, 0x30, 0xb3, 0x05, 0x00, 0xee, 0x8a, 0xc7, 0xfc, 0x2a, 0xf8, + 0x96, 0x64, 0xe7, 0x45, 0x23, 0x2c, 0xc5, 0x52, 0x0d, 0xf4, 0x90, 0x60, 0xfb, 0xdc, 0x03, 0xa3, + 0x9c, 0x60, 0xf9, 0x3b, 0x30, 0xf2, 0x9a, 0x63, 0x13, 0x4f, 0x5c, 0x3c, 0x9d, 0xd2, 0x07, 0x8e, + 0xd3, 0x43, 0xfd, 0x25, 0x8a, 0x17, 0x73, 0xf4, 0xea, 0x6f, 0x28, 0x00, 0x35, 0xcd, 0xd7, 0xf8, + 0x3d, 0x49, 0x1f, 0x4e, 0xce, 0x0f, 0xc5, 0x4e, 0xab, 0x72, 0xca, 0xf1, 0x73, 0xd8, 0x33, 0x5f, + 0x0b, 0x3e, 0x3f, 0x94, 0x82, 0x39, 0xf6, 0x86, 0xf9, 0x1a, 0xc1, 0x0c, 0x8e, 0xde, 0x05, 0xe3, + 0xc4, 0xd6, 0xdd, 0xc3, 0xb6, 0x4f, 0x0c, 0x36, 0x02, 0x65, 0xbe, 0x43, 0x97, 0x83, 0x42, 0x1c, + 0xc1, 0xd5, 0x27, 0x20, 0xae, 0xca, 0x1c, 0xdf, 0x4b, 0xf5, 0xbe, 0x02, 0x33, 0xcb, 0x07, 0x6d, + 0xd3, 0x65, 0x8e, 0xcf, 0xc4, 0xa5, 0x7a, 0x01, 0x7a, 0x1c, 0xc6, 0xf6, 0xf9, 0xbf, 0xa2, 0x65, + 0xa8, 0x7b, 0x89, 0x1a, 0x38, 0x80, 0xa3, 0x1d, 0x98, 0x26, 0xac, 0x39, 0x13, 0x00, 0x34, 0xbf, + 0x88, 0xc3, 0x08, 0xf7, 0xab, 0x8f, 0x61, 0xc1, 0x09, 0xac, 0xa8, 0x01, 0xd3, 0xba, 0xa5, 0x79, + 0x9e, 0xb9, 0x63, 0xea, 0x91, 0x4b, 0xcf, 0xf8, 0xd2, 0xbb, 0x18, 0x5b, 0x88, 0x41, 0xee, 0x77, + 0x2b, 0x97, 0x45, 0x3f, 0xe3, 0x00, 0x9c, 0x40, 0xa1, 0x7e, 0x47, 0x81, 0xf1, 0x50, 0x1b, 0x7a, + 0x53, 0x59, 0x24, 0x4f, 0xf0, 0x72, 0x61, 0x15, 0x66, 0xc4, 0x85, 0xcf, 0xa6, 0x63, 0x11, 0x57, + 0xb3, 0x75, 0x82, 0xde, 0x1f, 0xfb, 0x94, 0x47, 0x13, 0x46, 0xf4, 0x4b, 0xc9, 0xfa, 0xd1, 0x27, + 0xaa, 0x1e, 0x94, 0x6f, 0x8a, 0xcd, 0x82, 0xe6, 0xa1, 0x64, 0x06, 0xf2, 0x18, 0x08, 0x1c, 0xa5, + 0x7a, 0x0d, 0x97, 0x4c, 0x23, 0x5c, 0x59, 0xa5, 0xdc, 0xf5, 0x2f, 0x2d, 0xa2, 0xa1, 0xde, 0x8b, + 0x48, 0xfd, 0x96, 0x02, 0x13, 0xb7, 0xcc, 0x6d, 0xe2, 0xf2, 0xeb, 0x04, 0xc6, 0xed, 0x62, 0x4f, + 0x70, 0x26, 0xb2, 0x9e, 0xdf, 0xa0, 0x03, 0x18, 0xf7, 0xf4, 0x5d, 0x62, 0x74, 0xac, 0xd0, 0xdb, + 0xe4, 0x66, 0x31, 0xe3, 0x6c, 0x48, 0xba, 0x21, 0xf0, 0x49, 0x0e, 0xc4, 0x01, 0x05, 0x1c, 0x11, + 0x53, 0x3f, 0x01, 0x17, 0x33, 0x1a, 0xa1, 0x0a, 0x8c, 0x78, 0xbe, 0xe6, 0xfa, 0x62, 0xcc, 0x18, + 0x13, 0x61, 0xfe, 0x5a, 0x98, 0x97, 0xa3, 0x07, 0x61, 0x88, 0xd8, 0x86, 0x18, 0xb4, 0xb1, 0xa3, + 0x6e, 0x65, 0x68, 0xd9, 0x36, 0x30, 0x2d, 0xa3, 0x13, 0x6e, 0x39, 0xb1, 0xa5, 0xcd, 0x26, 0x7c, + 0x55, 0x94, 0xe1, 0x10, 0xca, 0xcc, 0xe9, 0x49, 0xcb, 0x31, 0x7a, 0x5d, 0x81, 0x99, 0x9d, 0xc4, + 0xb4, 0x0e, 0x62, 0xb0, 0x4e, 0x2e, 0x91, 0xa5, 0x39, 0x31, 0x20, 0xa9, 0xc5, 0x86, 0x53, 0x74, + 0xd5, 0x7f, 0x35, 0x0c, 0x0f, 0xdf, 0x72, 0x5c, 0xf3, 0x35, 0xc7, 0xf6, 0x35, 0x6b, 0xc3, 0x31, + 0xa2, 0x8b, 0x63, 0xb1, 0xbc, 0x3f, 0xa7, 0xc0, 0x03, 0x7a, 0xbb, 0xc3, 0x9d, 0xa2, 0x82, 0xfb, + 0xbc, 0x0d, 0xe2, 0x9a, 0x4e, 0xd1, 0xfb, 0x63, 0xf6, 0x64, 0xa4, 0xba, 0xb1, 0x95, 0x85, 0x12, + 0xe7, 0xd1, 0x62, 0xd7, 0xd8, 0x86, 0x73, 0xcf, 0x66, 0x9d, 0x6b, 0xf8, 0x6c, 0x34, 0x5f, 0x8b, + 0x26, 0xa1, 0xe0, 0x35, 0x76, 0x2d, 0x13, 0x23, 0xce, 0xa1, 0x84, 0x3e, 0x05, 0x97, 0x4d, 0xde, + 0x39, 0x4c, 0x34, 0xc3, 0xb4, 0x89, 0xe7, 0xb1, 0xcb, 0xdc, 0x41, 0xee, 0x69, 0xeb, 0x59, 0x08, + 0x71, 0x36, 0x1d, 0xf4, 0x32, 0x80, 0x77, 0x68, 0xeb, 0x62, 0xfc, 0x47, 0x0a, 0x51, 0xe5, 0x27, + 0x78, 0x88, 0x05, 0x4b, 0x18, 0xe9, 0x21, 0xe6, 0x87, 0x8b, 0x72, 0x94, 0xdd, 0xf9, 0xb2, 0x43, + 0x2c, 0x5a, 0x43, 0x11, 0x5c, 0xfd, 0xa7, 0x0a, 0x8c, 0x89, 0x87, 0x64, 0xe8, 0x9d, 0x09, 0x41, + 0x2e, 0x34, 0xe3, 0x26, 0x84, 0xb9, 0x43, 0x66, 0x82, 0x13, 0x42, 0xbc, 0x60, 0xca, 0x85, 0x24, + 0x01, 0x41, 0x38, 0xd2, 0x08, 0x62, 0xa6, 0xb8, 0x40, 0x4b, 0x90, 0x88, 0xa9, 0xdf, 0x50, 0x60, + 0x36, 0xd5, 0xaa, 0x0f, 0x65, 0xf6, 0x1c, 0x6f, 0xb7, 0xbe, 0x3d, 0x0d, 0xec, 0xcd, 0xe0, 0xe2, + 0x46, 0xbd, 0x41, 0xdc, 0xfd, 0x70, 0x13, 0x52, 0x9e, 0x11, 0x79, 0x31, 0x89, 0x5e, 0x0c, 0xc0, + 0x33, 0x6e, 0x27, 0x70, 0x45, 0x3c, 0x23, 0x09, 0xc1, 0x29, 0xba, 0xe8, 0x8b, 0x0a, 0xcc, 0x68, + 0xf1, 0x37, 0x83, 0x01, 0x53, 0x2f, 0xe4, 0xe1, 0x9e, 0x78, 0x7f, 0x18, 0xf5, 0x25, 0x01, 0xf0, + 0x70, 0x8a, 0x2c, 0x7a, 0x0a, 0x26, 0xb5, 0xb6, 0xb9, 0xd8, 0x31, 0x4c, 0x62, 0xeb, 0xe1, 0xf3, + 0x31, 0x66, 0x68, 0x5b, 0xdc, 0xa8, 0x87, 0xe5, 0x38, 0x56, 0x2b, 0x7c, 0xea, 0x27, 0x06, 0x72, + 0x78, 0xc0, 0xa7, 0x7e, 0x62, 0x0c, 0xa3, 0xa7, 0x7e, 0x62, 0xe8, 0x64, 0x22, 0xe8, 0x63, 0xf0, + 0x20, 0x3f, 0x0d, 0x97, 0x34, 0xcf, 0xd4, 0x17, 0x3b, 0xfe, 0x2e, 0xb1, 0xfd, 0x40, 0x42, 0xe2, + 0x16, 0x05, 0xe6, 0xd0, 0xb2, 0x9c, 0x57, 0x09, 0xe7, 0xb7, 0x47, 0x36, 0x80, 0x63, 0x1a, 0xba, + 0xf8, 0x1e, 0x6e, 0x76, 0x28, 0xe4, 0x6f, 0x74, 0xa7, 0x5e, 0xab, 0x8a, 0xcf, 0x61, 0x6c, 0x22, + 0xfa, 0x8d, 0x25, 0x0a, 0xe8, 0x0d, 0x05, 0xa6, 0xc4, 0x22, 0x17, 0x34, 0xc7, 0xd8, 0xfc, 0xbf, + 0x54, 0x74, 0x31, 0x26, 0x16, 0xfc, 0x02, 0x96, 0x91, 0x73, 0x9f, 0xfd, 0xd0, 0xc3, 0x2e, 0x06, + 0xc3, 0xf1, 0x7e, 0xa0, 0x7f, 0xa0, 0xc0, 0x25, 0x8f, 0xb8, 0xfb, 0xa6, 0x4e, 0x16, 0x75, 0xdd, + 0xe9, 0xd8, 0xc1, 0x24, 0x97, 0x8b, 0x3f, 0xbb, 0x6a, 0x64, 0xe0, 0xe3, 0xae, 0x1d, 0x59, 0x10, + 0x9c, 0x49, 0x9f, 0x9e, 0x5f, 0x17, 0xee, 0x69, 0xbe, 0xbe, 0x5b, 0xd5, 0xf4, 0x5d, 0xa6, 0x37, + 0x70, 0x6f, 0x8e, 0x82, 0x9b, 0xe6, 0x85, 0x38, 0x2a, 0x6e, 0x36, 0x4b, 0x14, 0xe2, 0x24, 0x41, + 0xe4, 0x41, 0xd9, 0x25, 0xaf, 0x76, 0x88, 0xc7, 0x5c, 0x3e, 0x28, 0xf1, 0xfa, 0xc0, 0x33, 0x86, + 0x05, 0x42, 0x2e, 0x05, 0x05, 0xbf, 0x70, 0x48, 0x08, 0x35, 0xe1, 0x61, 0xbe, 0x72, 0x17, 0x6d, + 0xc7, 0x3e, 0x6c, 0x39, 0x1d, 0x2f, 0xb1, 0xfa, 0x27, 0xd8, 0xea, 0x67, 0x4e, 0x2d, 0xcb, 0xbd, + 0x2a, 0xe2, 0xde, 0x78, 0xd0, 0x8b, 0x50, 0x26, 0xfb, 0xc4, 0xf6, 0x37, 0x37, 0x57, 0xe7, 0x26, + 0x0b, 0x1d, 0x8d, 0xec, 0x13, 0x96, 0x05, 0x0e, 0x1c, 0x62, 0x43, 0x0e, 0x8c, 0x59, 0x4e, 0xb3, + 0x69, 0xda, 0xcd, 0xb9, 0xa9, 0xe2, 0xeb, 0x28, 0x36, 0x6c, 0xab, 0x1c, 0x1f, 0x17, 0x98, 0xc5, + 0x0f, 0x1c, 0x50, 0x41, 0x6d, 0xb8, 0x6e, 0x90, 0x1d, 0xad, 0x63, 0xf9, 0xeb, 0x8e, 0x4f, 0x65, + 0x80, 0x43, 0x7e, 0x02, 0xcb, 0xbe, 0x40, 0xd3, 0xec, 0xa5, 0xc4, 0xa3, 0x47, 0xdd, 0xca, 0xf5, + 0xda, 0x31, 0x75, 0xf1, 0xb1, 0xd8, 0xd0, 0x21, 0x3c, 0x22, 0xea, 0x6c, 0xd9, 0x2e, 0xd1, 0xf4, + 0x5d, 0x3a, 0xd2, 0x69, 0xa2, 0x17, 0x18, 0xd1, 0xbf, 0x75, 0xd4, 0xad, 0x3c, 0x52, 0x3b, 0xbe, + 0x3a, 0xee, 0x07, 0xe7, 0xfc, 0x87, 0x01, 0xa5, 0xf7, 0x3b, 0x9a, 0x81, 0xa1, 0x3d, 0xc2, 0x5d, + 0x39, 0xc6, 0x31, 0xfd, 0x17, 0x5d, 0x82, 0x91, 0x7d, 0xcd, 0xea, 0x70, 0x55, 0xa6, 0x8c, 0xf9, + 0x8f, 0x67, 0x4a, 0xef, 0x57, 0xd4, 0x5f, 0x51, 0xe0, 0x52, 0xd6, 0xe8, 0x52, 0x79, 0x66, 0x9f, + 0xb8, 0xdb, 0x8e, 0x17, 0x78, 0x85, 0x8c, 0x70, 0x79, 0xe6, 0x6e, 0x50, 0x88, 0x23, 0x38, 0xaa, + 0xc3, 0xc5, 0x5d, 0xdf, 0x6f, 0x2f, 0xea, 0x3a, 0xf1, 0xbc, 0xb0, 0x06, 0xa3, 0x36, 0xc2, 0xdf, + 0xf3, 0xdf, 0xda, 0xdc, 0xdc, 0x48, 0x80, 0x71, 0x56, 0x1b, 0xf5, 0xf7, 0x15, 0xb8, 0x9c, 0xb9, + 0x4b, 0x10, 0x86, 0x2b, 0xcc, 0xf5, 0xcb, 0x5e, 0xeb, 0xf8, 0x9a, 0x6f, 0xda, 0xcd, 0xba, 0xbd, + 0x63, 0x99, 0xcd, 0x5d, 0x5f, 0x74, 0x8f, 0x89, 0xa5, 0x6b, 0x99, 0x35, 0x70, 0x4e, 0x4b, 0xda, + 0xf1, 0x96, 0x76, 0x90, 0x42, 0x28, 0x75, 0x7c, 0x2d, 0x0d, 0xc6, 0x59, 0x6d, 0xd4, 0xaf, 0x8d, + 0xc0, 0x55, 0xda, 0xf1, 0x48, 0x42, 0x5a, 0xd3, 0x6c, 0xad, 0xf9, 0xe6, 0x94, 0x44, 0xbe, 0xa5, + 0xc0, 0x03, 0xbb, 0xd9, 0xda, 0x8b, 0x90, 0xd1, 0x9e, 0x2f, 0xa4, 0x65, 0xf6, 0x52, 0x88, 0x38, + 0x9f, 0xea, 0x59, 0x05, 0xe7, 0x75, 0x0a, 0x7d, 0x18, 0x66, 0x6c, 0xc7, 0x20, 0xd5, 0x7a, 0x0d, + 0xaf, 0x69, 0xde, 0x5e, 0x23, 0xb0, 0x2b, 0x8d, 0xf0, 0x6b, 0x88, 0xf5, 0x04, 0x0c, 0xa7, 0x6a, + 0xa3, 0x7d, 0x40, 0x6d, 0xc7, 0x58, 0xde, 0x37, 0xf5, 0xc0, 0x43, 0xad, 0xf8, 0xd5, 0x07, 0x7b, + 0x8a, 0xb3, 0x91, 0xc2, 0x86, 0x33, 0x28, 0x30, 0xf5, 0x8b, 0x76, 0x66, 0xcd, 0xb1, 0x4d, 0xdf, + 0x71, 0x99, 0x6b, 0xe1, 0x40, 0x5a, 0x08, 0x5b, 0xe7, 0xeb, 0x99, 0x18, 0x71, 0x0e, 0x25, 0xf5, + 0xff, 0x28, 0x70, 0x81, 0x2e, 0x8b, 0x0d, 0xd7, 0x39, 0x38, 0x7c, 0x33, 0x2e, 0xc8, 0xc7, 0x85, + 0x89, 0x9d, 0x9b, 0x0d, 0x2e, 0x4b, 0xe6, 0xf5, 0x71, 0xd6, 0xe7, 0xc8, 0xa2, 0x2e, 0x5b, 0x4e, + 0x86, 0xf2, 0x2d, 0x27, 0xea, 0x1b, 0x25, 0xae, 0x11, 0x04, 0x96, 0x8b, 0x37, 0xe5, 0x3e, 0x7c, + 0x1f, 0x4c, 0xd1, 0xb2, 0x35, 0xed, 0x60, 0xa3, 0x76, 0xd7, 0xb1, 0x02, 0xef, 0x4e, 0xe6, 0xb1, + 0x71, 0x5b, 0x06, 0xe0, 0x78, 0x3d, 0xf4, 0x0c, 0x8c, 0xb5, 0xf9, 0x1b, 0x12, 0x61, 0x49, 0xb9, + 0xce, 0xed, 0xd0, 0xac, 0xe8, 0x7e, 0xb7, 0x32, 0x2b, 0x3e, 0xdb, 0xb4, 0x9b, 0xa2, 0x10, 0x07, + 0x0d, 0xd4, 0x2f, 0x5f, 0x02, 0x86, 0xdc, 0x22, 0xfe, 0x9b, 0x71, 0x4c, 0x9e, 0x80, 0x09, 0xbd, + 0xdd, 0xa9, 0xae, 0x34, 0x9e, 0xef, 0x38, 0xbe, 0x26, 0xcc, 0xec, 0x4c, 0x45, 0xa8, 0x6e, 0x6c, + 0x05, 0xc5, 0x58, 0xae, 0x43, 0xb9, 0x83, 0xde, 0xee, 0x08, 0x7e, 0xbb, 0x21, 0xbb, 0x2d, 0x30, + 0xee, 0x50, 0xdd, 0xd8, 0x8a, 0xc1, 0x70, 0xaa, 0x36, 0xfa, 0x14, 0x4c, 0x12, 0xb1, 0x71, 0x6f, + 0x69, 0xae, 0x21, 0xf8, 0x42, 0x61, 0x19, 0x2f, 0x1c, 0xda, 0x80, 0x1b, 0x70, 0xcd, 0x6a, 0x59, + 0x22, 0x81, 0x63, 0x04, 0x99, 0x96, 0x23, 0x7e, 0xd3, 0x59, 0x76, 0x8c, 0x24, 0xa3, 0x18, 0x11, + 0x5a, 0x4e, 0x5e, 0x25, 0x9c, 0xdf, 0x1e, 0xfd, 0x8e, 0x02, 0x57, 0x42, 0xa8, 0x69, 0x9b, 0xad, + 0x4e, 0x0b, 0x13, 0xdd, 0xd2, 0xcc, 0x96, 0x50, 0x79, 0x5e, 0x38, 0xb5, 0x0f, 0x8d, 0xa3, 0xe7, + 0xcc, 0x2a, 0x1b, 0x86, 0x73, 0xba, 0x84, 0xbe, 0xa1, 0xc0, 0xf5, 0x00, 0xb4, 0xe1, 0x12, 0xcf, + 0xeb, 0xb8, 0x24, 0xf2, 0x2d, 0x16, 0x43, 0x32, 0x56, 0x88, 0x77, 0x32, 0x99, 0x6f, 0xf9, 0x18, + 0xdc, 0xf8, 0x58, 0xea, 0xf2, 0x72, 0x69, 0x38, 0x3b, 0xbe, 0xd0, 0x91, 0xce, 0x6a, 0xb9, 0x50, + 0x12, 0x38, 0x46, 0x10, 0xfd, 0xae, 0x02, 0x0f, 0xc8, 0x05, 0xf2, 0x6a, 0xe1, 0xca, 0xd1, 0x8b, + 0xa7, 0xd6, 0x99, 0x04, 0x7e, 0x6e, 0x86, 0xcc, 0x01, 0xe2, 0xbc, 0x5e, 0x51, 0xb6, 0xdd, 0x62, + 0x0b, 0x93, 0x2b, 0x50, 0x23, 0x9c, 0x6d, 0xf3, 0xb5, 0xea, 0xe1, 0x00, 0x86, 0x9e, 0x82, 0xc9, + 0xb6, 0x63, 0x6c, 0x98, 0x86, 0xb7, 0x6a, 0xb6, 0x4c, 0x9f, 0xa9, 0x38, 0x43, 0x7c, 0x38, 0x36, + 0x1c, 0x63, 0xa3, 0x5e, 0xe3, 0xe5, 0x38, 0x56, 0x8b, 0xbd, 0x92, 0x31, 0x5b, 0x5a, 0x93, 0x6c, + 0x74, 0x2c, 0x6b, 0xc3, 0x75, 0x98, 0xad, 0xaa, 0x46, 0x34, 0xc3, 0x32, 0x6d, 0x52, 0x50, 0xa5, + 0x61, 0xdb, 0xad, 0x9e, 0x87, 0x14, 0xe7, 0xd3, 0x43, 0x0b, 0x00, 0x3b, 0x9a, 0x69, 0x35, 0xee, + 0x69, 0xed, 0x3b, 0x36, 0xd3, 0x7b, 0xca, 0xdc, 0x28, 0xb0, 0x12, 0x96, 0x62, 0xa9, 0x06, 0x5d, + 0x4d, 0x94, 0x0b, 0x62, 0xc2, 0x5f, 0x67, 0x33, 0xfd, 0xe4, 0x34, 0x56, 0x53, 0x80, 0x90, 0x0f, + 0xdf, 0x6d, 0x89, 0x04, 0x8e, 0x11, 0x44, 0x9f, 0x53, 0x60, 0xda, 0x3b, 0xf4, 0x7c, 0xd2, 0x0a, + 0xfb, 0x70, 0xe1, 0xb4, 0xfb, 0xc0, 0xac, 0x78, 0x8d, 0x18, 0x11, 0x9c, 0x20, 0x8a, 0x34, 0xb8, + 0xca, 0x46, 0xf5, 0x66, 0xf5, 0x96, 0xd9, 0xdc, 0x0d, 0xdf, 0xbe, 0x6c, 0x10, 0x57, 0x27, 0xb6, + 0x3f, 0x37, 0xc3, 0xd6, 0x0d, 0x7b, 0xfc, 0x5b, 0xcf, 0xaf, 0x86, 0x7b, 0xe1, 0x40, 0x2f, 0xc3, + 0xbc, 0x00, 0xaf, 0x3a, 0xf7, 0x52, 0x14, 0x66, 0x19, 0x05, 0xf6, 0x20, 0xa9, 0x9e, 0x5b, 0x0b, + 0xf7, 0xc0, 0x40, 0x35, 0x0a, 0x8f, 0xb8, 0xcc, 0x08, 0x4f, 0xc2, 0xc5, 0xe3, 0xcd, 0x21, 0xb6, + 0x08, 0x98, 0x46, 0xd1, 0x48, 0x83, 0x71, 0x56, 0x1b, 0xf4, 0x6c, 0xe8, 0xab, 0x7a, 0x48, 0x0b, + 0x9e, 0xdf, 0x68, 0xcc, 0x5d, 0x64, 0xfd, 0xbb, 0x28, 0xb9, 0xa0, 0x06, 0x20, 0x9c, 0xac, 0x4b, + 0x65, 0x8b, 0xa0, 0x68, 0xa9, 0xe3, 0x7a, 0xfe, 0xdc, 0x25, 0xd6, 0x98, 0xc9, 0x16, 0x58, 0x06, + 0xe0, 0x78, 0x3d, 0xf4, 0x0c, 0x4c, 0x7b, 0x44, 0xd7, 0x9d, 0x56, 0x5b, 0x28, 0xaa, 0x73, 0x97, + 0x59, 0xef, 0xf9, 0x0c, 0xc6, 0x20, 0x38, 0x51, 0x13, 0x1d, 0xc2, 0xc5, 0xf0, 0xad, 0xf2, 0xaa, + 0xd3, 0x5c, 0xd3, 0x0e, 0x98, 0xa8, 0x7e, 0xe5, 0xf8, 0x1d, 0xb8, 0x10, 0x38, 0x71, 0x2d, 0x3c, + 0xdf, 0xd1, 0x6c, 0xdf, 0xf4, 0x0f, 0xf9, 0x70, 0x55, 0xd3, 0xe8, 0x70, 0x16, 0x0d, 0xb4, 0x0a, + 0x97, 0x12, 0xc5, 0x2b, 0xa6, 0x45, 0xbc, 0xb9, 0x07, 0xd8, 0x67, 0x33, 0xab, 0x53, 0x35, 0x03, + 0x8e, 0x33, 0x5b, 0xa1, 0x3b, 0x70, 0xb9, 0xed, 0x3a, 0x3e, 0xd1, 0xfd, 0xdb, 0x54, 0x3c, 0xb1, + 0xc4, 0x07, 0x7a, 0x73, 0x73, 0x6c, 0x2c, 0xd8, 0x05, 0xc4, 0x46, 0x56, 0x05, 0x9c, 0xdd, 0x0e, + 0x7d, 0x4d, 0x81, 0x6b, 0x9e, 0xef, 0x12, 0xad, 0x65, 0xda, 0xcd, 0xaa, 0x63, 0xdb, 0x84, 0xb1, + 0xc9, 0xba, 0x11, 0xf9, 0x61, 0x3d, 0x58, 0x88, 0x4f, 0xa9, 0x47, 0xdd, 0xca, 0xb5, 0x46, 0x4f, + 0xcc, 0xf8, 0x18, 0xca, 0x6a, 0xb7, 0xc4, 0xb5, 0xee, 0x14, 0xef, 0xa7, 0x8b, 0xb0, 0x45, 0x5a, + 0x8e, 0x7b, 0xb8, 0x18, 0x84, 0x0e, 0x13, 0x06, 0x7f, 0xb6, 0x08, 0xd7, 0xe2, 0x20, 0x9c, 0xac, + 0x4b, 0x25, 0x33, 0xb6, 0x59, 0x56, 0x1a, 0x51, 0xfb, 0x52, 0x24, 0x99, 0xd5, 0x13, 0x30, 0x9c, + 0xaa, 0x8d, 0xaa, 0x30, 0x2b, 0xca, 0xea, 0x54, 0xb9, 0xf1, 0x56, 0x5c, 0x12, 0xc8, 0xbc, 0x54, + 0x4d, 0x98, 0xad, 0x27, 0x81, 0x38, 0x5d, 0x9f, 0x7e, 0x05, 0xfd, 0x21, 0xf7, 0x62, 0x38, 0xfa, + 0x8a, 0xf5, 0x38, 0x08, 0x27, 0xeb, 0x06, 0xda, 0x67, 0xac, 0x0b, 0x23, 0xd1, 0x57, 0xac, 0x27, + 0x60, 0x38, 0x55, 0x5b, 0xfd, 0x2f, 0xc3, 0xf0, 0x48, 0x1f, 0xf2, 0x12, 0x6a, 0x65, 0x0f, 0xf7, + 0xc9, 0xf7, 0x4e, 0x7f, 0xd3, 0xd3, 0xce, 0x99, 0x9e, 0x93, 0xd3, 0xeb, 0x77, 0x3a, 0xbd, 0xbc, + 0xe9, 0x3c, 0x39, 0xc9, 0xfe, 0xa7, 0xbf, 0x95, 0x3d, 0xfd, 0x05, 0x47, 0xf5, 0xd8, 0xe5, 0xd2, + 0xce, 0x59, 0x2e, 0x05, 0x47, 0xb5, 0x8f, 0xe5, 0xf5, 0x67, 0xc3, 0xf0, 0x68, 0x3f, 0xb2, 0x5b, + 0xc1, 0xf5, 0x95, 0xc1, 0x75, 0xce, 0x74, 0x7d, 0xe5, 0x79, 0x9b, 0x9e, 0xe1, 0xfa, 0xca, 0x20, + 0x79, 0xd6, 0xeb, 0x2b, 0x6f, 0x54, 0xcf, 0x6a, 0x7d, 0xe5, 0x8d, 0x6a, 0x1f, 0xeb, 0xeb, 0x2f, + 0x93, 0xe7, 0x43, 0x28, 0xb2, 0xd5, 0x61, 0x48, 0x6f, 0x77, 0x0a, 0x32, 0x29, 0xe6, 0x1e, 0x52, + 0xdd, 0xd8, 0xc2, 0x14, 0x07, 0xc2, 0x30, 0xca, 0xd7, 0x4f, 0x41, 0x16, 0xc4, 0x5c, 0x20, 0xf9, + 0x92, 0xc4, 0x02, 0x13, 0x1d, 0x2a, 0xd2, 0xde, 0x25, 0x2d, 0xe2, 0x6a, 0x56, 0xc3, 0x77, 0x5c, + 0xad, 0x59, 0x94, 0xdb, 0xb0, 0xa1, 0x5a, 0x4e, 0xe0, 0xc2, 0x29, 0xec, 0x74, 0x40, 0xda, 0xa6, + 0x51, 0x90, 0xbf, 0xb0, 0x01, 0xd9, 0xa8, 0xd7, 0x30, 0xc5, 0xa1, 0xfe, 0xe3, 0x71, 0x90, 0xc2, + 0x71, 0xa0, 0x8f, 0xc1, 0x83, 0x9a, 0x65, 0x39, 0xf7, 0x36, 0x5c, 0x73, 0xdf, 0xb4, 0x48, 0x93, + 0x18, 0xa1, 0x3c, 0xe3, 0x09, 0x27, 0x22, 0xa6, 0xb3, 0x2c, 0xe6, 0x55, 0xc2, 0xf9, 0xed, 0xd1, + 0xeb, 0x0a, 0xcc, 0xea, 0xc9, 0x10, 0x08, 0x83, 0xb8, 0x19, 0xa4, 0xe2, 0x29, 0xf0, 0xfd, 0x94, + 0x2a, 0xc6, 0x69, 0xb2, 0xe8, 0x17, 0x15, 0x6e, 0x17, 0x0b, 0x2f, 0x01, 0xc4, 0x9c, 0xdd, 0x3c, + 0xa5, 0x5b, 0xd2, 0xc8, 0xc0, 0x16, 0x5d, 0x33, 0xc4, 0x09, 0xa2, 0x6f, 0x28, 0x70, 0x79, 0x2f, + 0xcb, 0x9c, 0x2f, 0x66, 0xf6, 0x4e, 0xd1, 0xae, 0xe4, 0xdc, 0x0f, 0x70, 0x89, 0x32, 0xb3, 0x02, + 0xce, 0xee, 0x48, 0x38, 0x4a, 0xa1, 0x85, 0x53, 0x30, 0x81, 0xc2, 0xa3, 0x94, 0x30, 0x95, 0x46, + 0xa3, 0x14, 0x02, 0x70, 0x9c, 0x20, 0x6a, 0xc3, 0xf8, 0x5e, 0x60, 0x56, 0x16, 0xa6, 0xa4, 0x6a, + 0x51, 0xea, 0x92, 0x6d, 0x9a, 0x5f, 0x35, 0x85, 0x85, 0x38, 0x22, 0x82, 0x76, 0x61, 0x6c, 0x8f, + 0x33, 0x22, 0x61, 0x02, 0x5a, 0x1c, 0x58, 0x45, 0xe5, 0x96, 0x08, 0x51, 0x84, 0x03, 0xf4, 0xb2, + 0x73, 0x5f, 0xf9, 0x18, 0x0f, 0xd1, 0xaf, 0x29, 0x70, 0x79, 0x9f, 0xb8, 0xbe, 0xa9, 0x27, 0x2f, + 0x53, 0xc6, 0x8b, 0xab, 0xd1, 0x77, 0xb3, 0x10, 0xf2, 0x65, 0x92, 0x09, 0xc2, 0xd9, 0x5d, 0xa0, + 0x4a, 0x35, 0xb7, 0x89, 0x37, 0x7c, 0xcd, 0x37, 0xf5, 0x4d, 0x67, 0x8f, 0xd8, 0xf4, 0x63, 0x45, + 0x20, 0x6a, 0x60, 0x8c, 0x83, 0x29, 0xd5, 0xcb, 0xf9, 0xd5, 0x70, 0x2f, 0x1c, 0xea, 0x4f, 0x14, + 0x48, 0x59, 0x76, 0xd1, 0x97, 0x15, 0x98, 0xdc, 0x21, 0x9a, 0xdf, 0x71, 0xc9, 0x4d, 0xcd, 0x0f, + 0xdf, 0x01, 0xdd, 0x3d, 0x0d, 0x83, 0xf2, 0xc2, 0x8a, 0x84, 0x98, 0x7b, 0x39, 0x84, 0xa1, 0x7c, + 0x64, 0x10, 0x8e, 0xf5, 0x60, 0xfe, 0x39, 0x98, 0x4d, 0x35, 0x3c, 0xd1, 0x75, 0xe9, 0xbf, 0x56, + 0x20, 0x2b, 0x34, 0x39, 0x7a, 0x19, 0x46, 0x34, 0xc3, 0x08, 0x23, 0x97, 0x3e, 0x5d, 0xcc, 0x9b, + 0xc7, 0x90, 0x9f, 0x5b, 0xb1, 0x9f, 0x98, 0xa3, 0x45, 0x2b, 0x80, 0xb4, 0xd8, 0x95, 0xfd, 0x5a, + 0xf4, 0x1e, 0x81, 0x5d, 0x46, 0x2d, 0xa6, 0xa0, 0x38, 0xa3, 0x85, 0xfa, 0xf7, 0x15, 0x40, 0xe9, + 0xe0, 0x4f, 0xc8, 0x85, 0xb2, 0x58, 0xca, 0xc1, 0x2c, 0x15, 0x32, 0xfb, 0x27, 0x9d, 0xac, 0xa3, + 0x27, 0x6b, 0xa2, 0xc0, 0xc3, 0x21, 0x1d, 0xf5, 0xaf, 0x14, 0x88, 0xa2, 0x1b, 0xa2, 0xf7, 0xc2, + 0x84, 0x41, 0x3c, 0xdd, 0x35, 0xdb, 0x7e, 0xe4, 0x92, 0x1d, 0x06, 0xee, 0xa9, 0x45, 0x20, 0x2c, + 0xd7, 0x43, 0x2a, 0x8c, 0xfa, 0x9a, 0xb7, 0x57, 0xaf, 0x09, 0xa5, 0x92, 0x89, 0x00, 0x9b, 0xac, + 0x04, 0x0b, 0x48, 0x14, 0xc8, 0x61, 0xa8, 0x8f, 0x40, 0x0e, 0x68, 0xe7, 0x14, 0xa2, 0x56, 0xa0, + 0xe3, 0x23, 0x56, 0xa8, 0xbf, 0x55, 0x82, 0x0b, 0xb4, 0xca, 0x9a, 0x66, 0xda, 0x3e, 0xb1, 0x99, + 0x4b, 0x73, 0xc1, 0x41, 0x68, 0xc2, 0x94, 0x1f, 0x0b, 0xa8, 0x77, 0x72, 0xf7, 0xf4, 0xd0, 0x45, + 0x28, 0x1e, 0x46, 0x2f, 0x8e, 0x17, 0x3d, 0xcd, 0x7c, 0x7f, 0xc3, 0x37, 0x46, 0x8f, 0x04, 0x4b, + 0x95, 0x32, 0x05, 0x72, 0x5f, 0x44, 0x06, 0x09, 0x43, 0x62, 0xb2, 0x52, 0xcc, 0x5b, 0xa0, 0xf7, + 0xc1, 0x94, 0x70, 0xa1, 0xe5, 0x11, 0x39, 0x84, 0xfa, 0xcd, 0x4e, 0x98, 0x15, 0x19, 0x80, 0xe3, + 0xf5, 0xd4, 0x1f, 0x94, 0x20, 0x1e, 0x78, 0xb3, 0xe8, 0x28, 0xa5, 0xc3, 0x91, 0x94, 0xce, 0x2c, + 0x1c, 0xc9, 0xbb, 0x59, 0xd4, 0x6a, 0x9e, 0x90, 0x80, 0xdf, 0x52, 0xcb, 0xb1, 0xa6, 0x79, 0x3a, + 0x81, 0xb0, 0x46, 0x34, 0xac, 0xc3, 0x27, 0x1e, 0xd6, 0xf7, 0x0a, 0x27, 0xf8, 0x91, 0x58, 0x50, + 0x98, 0xc0, 0x09, 0x7e, 0x36, 0xd6, 0x50, 0xf2, 0x80, 0xff, 0x9e, 0x02, 0x63, 0x22, 0xe2, 0x59, + 0x1f, 0x4f, 0x02, 0x76, 0x60, 0x84, 0xa9, 0x3c, 0x83, 0x48, 0x83, 0x8d, 0x5d, 0xc7, 0xf1, 0x63, + 0x71, 0xdf, 0x98, 0xe7, 0x38, 0xfb, 0x17, 0x73, 0xf4, 0xcc, 0x25, 0xd1, 0xd5, 0x77, 0x4d, 0x9f, + 0xe8, 0x7e, 0x10, 0x4d, 0x2a, 0x70, 0x49, 0x94, 0xca, 0x71, 0xac, 0x96, 0xfa, 0xf5, 0x61, 0xb8, + 0x2e, 0x10, 0xa7, 0x44, 0xa4, 0x90, 0xc1, 0x1d, 0xc2, 0x45, 0x31, 0xb7, 0x35, 0x57, 0x33, 0xc3, + 0xdb, 0xff, 0x62, 0xaa, 0xaf, 0xf0, 0x0b, 0x49, 0xa1, 0xc3, 0x59, 0x34, 0x78, 0x5c, 0x24, 0x56, + 0x7c, 0x8b, 0x68, 0x96, 0xbf, 0x1b, 0xd0, 0x2e, 0x0d, 0x12, 0x17, 0x29, 0x8d, 0x0f, 0x67, 0x52, + 0x61, 0xde, 0x07, 0x02, 0x50, 0x75, 0x89, 0x26, 0xbb, 0x3e, 0x0c, 0xe0, 0xfc, 0xbd, 0x96, 0x89, + 0x11, 0xe7, 0x50, 0x62, 0x36, 0x44, 0xed, 0x80, 0x99, 0x24, 0x30, 0xf1, 0x5d, 0x93, 0xc5, 0xef, + 0x0b, 0x0d, 0xd9, 0x6b, 0x71, 0x10, 0x4e, 0xd6, 0x45, 0xcf, 0xc0, 0x34, 0xf3, 0xe6, 0x88, 0x02, + 0x10, 0x8c, 0x44, 0xcf, 0xe5, 0xd6, 0x63, 0x10, 0x9c, 0xa8, 0xa9, 0xfe, 0xb6, 0x02, 0x93, 0xf2, + 0xb2, 0xeb, 0xe3, 0x51, 0x53, 0x47, 0x3a, 0x0c, 0x07, 0x78, 0x71, 0x21, 0x53, 0xed, 0xe7, 0x3c, + 0xfc, 0xd2, 0x10, 0x5c, 0xcc, 0x68, 0xc3, 0xee, 0xe6, 0x49, 0xe2, 0x60, 0x1d, 0xe4, 0x6e, 0x3e, + 0x75, 0x48, 0x87, 0x77, 0xf3, 0x49, 0x08, 0x4e, 0xd1, 0x45, 0x77, 0x61, 0x48, 0x77, 0x4d, 0x31, + 0x2c, 0xef, 0x2b, 0xa4, 0x16, 0xe2, 0xfa, 0xd2, 0x84, 0xa0, 0x38, 0x54, 0xc5, 0x75, 0x4c, 0x11, + 0xd2, 0xe3, 0x41, 0xde, 0xd4, 0xc1, 0x59, 0xcd, 0x8e, 0x07, 0x79, 0xef, 0x7b, 0x38, 0x5e, 0x0f, + 0xbd, 0x08, 0x73, 0x42, 0x5e, 0x0f, 0x9e, 0x43, 0x39, 0xb6, 0xe7, 0xd3, 0xfd, 0xe7, 0x0b, 0x76, + 0xfa, 0xd0, 0x51, 0xb7, 0x32, 0x77, 0x3b, 0xa7, 0x0e, 0xce, 0x6d, 0xad, 0xfe, 0xc5, 0x10, 0x4c, + 0x48, 0x51, 0x21, 0xd1, 0xda, 0x20, 0x86, 0x8e, 0xe8, 0x8b, 0x03, 0x63, 0xc7, 0x1a, 0x0c, 0x35, + 0xdb, 0x9d, 0x82, 0x96, 0x8e, 0x10, 0xdd, 0x4d, 0x8a, 0xae, 0xd9, 0xee, 0xa0, 0xbb, 0xa1, 0xed, + 0xa4, 0x98, 0x75, 0x23, 0x7c, 0x75, 0x90, 0xb0, 0x9f, 0x04, 0xdb, 0x65, 0x38, 0x77, 0xbb, 0xb4, + 0x60, 0xcc, 0x13, 0x86, 0x95, 0x91, 0xe2, 0x8f, 0x83, 0xa5, 0x91, 0x16, 0x86, 0x14, 0xae, 0x95, + 0x05, 0x76, 0x96, 0x80, 0x06, 0x95, 0xf8, 0x3a, 0xec, 0x55, 0x18, 0x53, 0x37, 0xcb, 0x5c, 0xe2, + 0xdb, 0x62, 0x25, 0x58, 0x40, 0x52, 0x07, 0xc9, 0x58, 0x5f, 0x07, 0xc9, 0x17, 0x4a, 0x80, 0xd2, + 0xdd, 0x40, 0x8f, 0xc0, 0x08, 0x7b, 0x52, 0x27, 0x38, 0x46, 0x28, 0x9f, 0xb3, 0x77, 0x77, 0x98, + 0xc3, 0x50, 0x43, 0x3c, 0x75, 0x2c, 0x36, 0x9d, 0xcc, 0xb9, 0x45, 0xd0, 0x93, 0xde, 0x45, 0x06, + 0x27, 0xf3, 0x50, 0xee, 0xc9, 0xbc, 0x05, 0x63, 0x2d, 0xd3, 0x66, 0x37, 0x6c, 0xc5, 0xec, 0x4d, + 0xfc, 0x0e, 0x9e, 0xa3, 0xc0, 0x01, 0x2e, 0xf5, 0xcf, 0x4a, 0x74, 0xe9, 0x47, 0x72, 0xe9, 0x21, + 0x80, 0xd6, 0xf1, 0x1d, 0x2e, 0xe0, 0x88, 0x1d, 0x50, 0x2f, 0x36, 0xcb, 0x21, 0xd2, 0xc5, 0x10, + 0x21, 0xbf, 0x1a, 0x8f, 0x7e, 0x63, 0x89, 0x18, 0x25, 0xed, 0x9b, 0x2d, 0xf2, 0x82, 0x69, 0x1b, + 0xce, 0x3d, 0x31, 0xbc, 0x83, 0x92, 0xde, 0x0c, 0x11, 0x72, 0xd2, 0xd1, 0x6f, 0x2c, 0x11, 0xa3, + 0xac, 0x85, 0xa9, 0xb7, 0x36, 0x0b, 0xd3, 0x2b, 0xfa, 0xe6, 0x58, 0x56, 0x70, 0x76, 0x96, 0x39, + 0x6b, 0xa9, 0xe6, 0xd4, 0xc1, 0xb9, 0xad, 0xd5, 0xdf, 0x55, 0xe0, 0x72, 0xe6, 0x50, 0xa0, 0x9b, + 0x30, 0x1b, 0xf9, 0x43, 0xc9, 0xcc, 0xbe, 0x1c, 0x85, 0x87, 0xbe, 0x9d, 0xac, 0x80, 0xd3, 0x6d, + 0xd0, 0x5a, 0x28, 0xf0, 0xc8, 0x87, 0x89, 0x70, 0xa6, 0xba, 0x2a, 0x50, 0x65, 0x9d, 0x37, 0x38, + 0xab, 0x9d, 0xfa, 0xb1, 0x58, 0x87, 0xa3, 0x01, 0xa3, 0xbb, 0x63, 0x9b, 0x34, 0xc3, 0xc7, 0x4b, + 0xe1, 0xee, 0x58, 0xa2, 0x85, 0x98, 0xc3, 0xd0, 0xc3, 0xf2, 0x93, 0xc0, 0x90, 0x77, 0x05, 0xcf, + 0x02, 0x55, 0x1f, 0x40, 0xb8, 0x2c, 0x9a, 0x76, 0x13, 0xed, 0x40, 0x59, 0x13, 0x59, 0xaa, 0xc4, + 0x52, 0xfb, 0x60, 0x21, 0x6d, 0x5a, 0xe0, 0xe0, 0x9e, 0xe9, 0xc1, 0x2f, 0x1c, 0xe2, 0x56, 0xff, + 0x89, 0x02, 0x57, 0x28, 0x1b, 0x33, 0x82, 0x80, 0x08, 0x61, 0xc0, 0xa4, 0x3e, 0x64, 0x84, 0x16, + 0x4c, 0xb8, 0x51, 0x33, 0xb1, 0x2e, 0x7f, 0x4e, 0x0e, 0xc6, 0x24, 0x05, 0x32, 0xa0, 0xf2, 0x53, + 0xd5, 0x75, 0xbc, 0x60, 0x72, 0x92, 0xf1, 0x99, 0x42, 0xdd, 0x45, 0xea, 0x09, 0x96, 0xf1, 0xab, + 0x9f, 0x29, 0x01, 0xac, 0x13, 0xff, 0x9e, 0xe3, 0xee, 0xd1, 0x21, 0x7a, 0x53, 0xbd, 0xe2, 0x7d, + 0x08, 0x86, 0xdb, 0x8e, 0xe1, 0x09, 0x2e, 0xc5, 0xde, 0x80, 0x33, 0x8f, 0x1e, 0x56, 0x8a, 0x2a, + 0x30, 0xc2, 0x6e, 0x11, 0xc4, 0x01, 0xc2, 0x84, 0x7e, 0x2a, 0xb2, 0x79, 0x98, 0x97, 0xf3, 0xfc, + 0x03, 0xec, 0xd5, 0x87, 0x27, 0xb4, 0x18, 0x91, 0x7f, 0x80, 0x97, 0xe1, 0x10, 0xaa, 0x7e, 0x66, + 0x18, 0x62, 0x09, 0xd9, 0x22, 0xa3, 0x8b, 0x72, 0x36, 0x46, 0x97, 0x17, 0x61, 0xce, 0x72, 0x34, + 0x63, 0x49, 0xb3, 0xe8, 0xa2, 0x77, 0x1b, 0x7c, 0x3a, 0x34, 0xbb, 0x19, 0xe6, 0xf0, 0x62, 0x0c, + 0x60, 0x35, 0xa7, 0x0e, 0xce, 0x6d, 0x8d, 0xfc, 0x30, 0x0d, 0x1c, 0x8f, 0xa2, 0xbd, 0x3a, 0x68, + 0xba, 0xba, 0x05, 0xf9, 0xbd, 0x4f, 0x78, 0x96, 0x27, 0x32, 0xc5, 0x7d, 0x5e, 0x81, 0xcb, 0xe4, + 0xc0, 0x27, 0xae, 0xad, 0x59, 0x9b, 0xae, 0xb6, 0xb3, 0x63, 0xea, 0xc2, 0x57, 0x92, 0x4f, 0xce, + 0xc6, 0x51, 0xb7, 0x72, 0x79, 0x39, 0xab, 0xc2, 0xfd, 0x6e, 0xe5, 0x3d, 0xe9, 0x6c, 0x8c, 0xc1, + 0xf3, 0x9e, 0xcc, 0x26, 0x6c, 0x31, 0x66, 0x93, 0x9b, 0x7f, 0x1a, 0x26, 0x4e, 0xf0, 0x5e, 0x61, + 0x5c, 0x36, 0xc0, 0xfd, 0x61, 0x09, 0x26, 0xe9, 0xfa, 0x59, 0x75, 0x74, 0xcd, 0xaa, 0xad, 0x37, + 0x4e, 0x90, 0xca, 0x10, 0xad, 0xc2, 0xa5, 0x1d, 0xc7, 0xd5, 0xc9, 0x66, 0x75, 0x63, 0xd3, 0x11, + 0xf7, 0x10, 0xb5, 0xf5, 0x86, 0x60, 0x8a, 0x4c, 0xb3, 0x5a, 0xc9, 0x80, 0xe3, 0xcc, 0x56, 0xe8, + 0x0e, 0x5c, 0x8e, 0xca, 0xb7, 0xda, 0xdc, 0xc1, 0x82, 0xa2, 0x1b, 0x8a, 0x1c, 0x44, 0x56, 0xb2, + 0x2a, 0xe0, 0xec, 0x76, 0x48, 0x83, 0xab, 0xe2, 0xc1, 0xfb, 0x8a, 0xe3, 0xde, 0xd3, 0x5c, 0x23, + 0x8e, 0x76, 0x38, 0xb2, 0xd3, 0xd6, 0xf2, 0xab, 0xe1, 0x5e, 0x38, 0xd4, 0x5f, 0x1b, 0x05, 0xe9, + 0x61, 0xda, 0x09, 0x22, 0xcf, 0xff, 0xa6, 0x02, 0x97, 0x74, 0xcb, 0x24, 0xb6, 0x9f, 0x78, 0x81, + 0xc4, 0xd9, 0xca, 0x56, 0xa1, 0x17, 0x73, 0x6d, 0x62, 0xd7, 0x6b, 0xc2, 0x1f, 0xa5, 0x9a, 0x81, + 0x5c, 0xf8, 0xec, 0x64, 0x40, 0x70, 0x66, 0x67, 0xd8, 0xf7, 0xb0, 0xf2, 0x7a, 0x4d, 0x7e, 0x5f, + 0x5e, 0x15, 0x65, 0x38, 0x84, 0xa2, 0x27, 0x60, 0xa2, 0xe9, 0x3a, 0x9d, 0xb6, 0x57, 0x65, 0x4e, + 0xb0, 0x7c, 0xfd, 0x33, 0x31, 0xec, 0x66, 0x54, 0x8c, 0xe5, 0x3a, 0x54, 0xa8, 0xe4, 0x3f, 0x37, + 0x5c, 0xb2, 0x63, 0x1e, 0x08, 0x66, 0xc5, 0x84, 0xca, 0x9b, 0x52, 0x39, 0x8e, 0xd5, 0x42, 0xef, + 0x82, 0x71, 0xd3, 0xf3, 0x3a, 0xc4, 0xdd, 0xc2, 0xab, 0x22, 0xe4, 0x2c, 0xbb, 0xdb, 0xa8, 0x07, + 0x85, 0x38, 0x82, 0xa3, 0xaf, 0x28, 0x30, 0xed, 0x92, 0x57, 0x3b, 0xa6, 0x4b, 0x0c, 0x46, 0xd4, + 0x13, 0xaf, 0x03, 0xf1, 0x60, 0x2f, 0x12, 0x17, 0x70, 0x0c, 0x29, 0xe7, 0x12, 0xa1, 0x2d, 0x2b, + 0x0e, 0xc4, 0x89, 0x1e, 0xd0, 0xa1, 0xf2, 0xcc, 0xa6, 0x6d, 0xda, 0xcd, 0x45, 0xab, 0xe9, 0xcd, + 0x95, 0x19, 0xe3, 0xe3, 0x12, 0x6b, 0x54, 0x8c, 0xe5, 0x3a, 0x54, 0x9b, 0xeb, 0x78, 0x74, 0xdf, + 0xb7, 0x08, 0x1f, 0xdf, 0xf1, 0xc8, 0xd8, 0xb7, 0x25, 0x03, 0x70, 0xbc, 0x1e, 0xd5, 0xf4, 0x83, + 0x02, 0x31, 0xca, 0xc0, 0x63, 0x87, 0xd0, 0x7e, 0x6e, 0xc5, 0x20, 0x38, 0x51, 0x73, 0x7e, 0x11, + 0x2e, 0x66, 0x7c, 0xe6, 0x89, 0x98, 0xcb, 0x6f, 0x97, 0xe0, 0xed, 0xc7, 0xae, 0x4a, 0xf4, 0x0f, + 0x15, 0x98, 0x20, 0x07, 0xbe, 0xab, 0x85, 0x7e, 0xf2, 0x74, 0x8a, 0x76, 0xce, 0x64, 0x0b, 0x2c, + 0x2c, 0x47, 0x84, 0xf8, 0xb4, 0x85, 0xc2, 0x82, 0x04, 0xc1, 0x72, 0x7f, 0xa8, 0x86, 0xc4, 0x23, + 0xcb, 0xc8, 0x36, 0x71, 0x91, 0xcb, 0x4b, 0x40, 0xe6, 0x3f, 0x04, 0x33, 0x49, 0xcc, 0x27, 0x1a, + 0xa9, 0x3f, 0x28, 0xc1, 0xd8, 0x86, 0xeb, 0x50, 0x39, 0xe6, 0x1c, 0x42, 0x24, 0x6a, 0xb1, 0x10, + 0x89, 0x85, 0x9e, 0x1b, 0x8b, 0xce, 0xe6, 0x86, 0x67, 0x35, 0x13, 0xe1, 0x59, 0x17, 0x07, 0x21, + 0xd2, 0x3b, 0x1e, 0xeb, 0xbf, 0x53, 0x60, 0x42, 0xd4, 0x3c, 0x87, 0xc8, 0x80, 0x1f, 0x8f, 0x47, + 0x06, 0xfc, 0xc0, 0x00, 0xdf, 0x95, 0x13, 0x0a, 0xf0, 0x6b, 0x0a, 0x4c, 0x89, 0x1a, 0x6b, 0xa4, + 0xb5, 0x4d, 0x5c, 0xb4, 0x02, 0x63, 0x5e, 0x87, 0x4d, 0xa4, 0xf8, 0xa0, 0xab, 0xb2, 0x64, 0xec, + 0x6e, 0x6b, 0x3a, 0x4b, 0x48, 0xc7, 0xab, 0x48, 0x41, 0x4f, 0x79, 0x01, 0x0e, 0x1a, 0x53, 0x39, + 0xd7, 0x75, 0xac, 0x54, 0x00, 0x16, 0xec, 0x58, 0x04, 0x33, 0x08, 0x15, 0x2f, 0xe9, 0xdf, 0xc0, + 0x5e, 0xc4, 0xc4, 0x4b, 0x0a, 0xf6, 0x30, 0x2f, 0x57, 0x3f, 0x37, 0x1c, 0x0e, 0x36, 0x0b, 0x4c, + 0x78, 0x0b, 0xc6, 0x75, 0x97, 0x68, 0x3e, 0x31, 0x96, 0x0e, 0xfb, 0xe9, 0x1c, 0x63, 0xd6, 0xd5, + 0xa0, 0x05, 0x8e, 0x1a, 0x53, 0xbe, 0x28, 0x5f, 0x43, 0x94, 0xa2, 0x23, 0x24, 0xf7, 0x0a, 0xe2, + 0x83, 0x30, 0xe2, 0xdc, 0xb3, 0x43, 0x6f, 0x86, 0x9e, 0x84, 0xd9, 0xa7, 0xdc, 0xa1, 0xb5, 0x31, + 0x6f, 0xc4, 0x42, 0x4f, 0x75, 0xdc, 0xb6, 0xe3, 0x05, 0xd6, 0x18, 0x1e, 0x7a, 0x8a, 0x17, 0xe1, + 0x00, 0x86, 0x2c, 0x18, 0x6b, 0xb1, 0x69, 0x18, 0x28, 0x06, 0x66, 0x6c, 0x42, 0xe5, 0x28, 0xe9, + 0x0c, 0x33, 0x0e, 0x48, 0xd0, 0xf3, 0x8d, 0xf2, 0x60, 0xaf, 0xad, 0xe9, 0x44, 0x3e, 0xdf, 0xd6, + 0x83, 0x42, 0x1c, 0xc1, 0xd1, 0x21, 0x4c, 0xf8, 0xe1, 0x1b, 0x56, 0x4f, 0xdc, 0xdf, 0xaf, 0x0c, + 0xd0, 0xbd, 0xe8, 0x45, 0xac, 0xc7, 0x87, 0x5e, 0x2a, 0xc0, 0x32, 0x2d, 0xf5, 0x97, 0x86, 0xc3, + 0x45, 0x2a, 0x42, 0xda, 0x66, 0x27, 0x51, 0x53, 0x0a, 0x25, 0x51, 0x7b, 0x4f, 0x90, 0x97, 0xac, + 0x14, 0x8b, 0xe8, 0x1f, 0xe6, 0x25, 0x9b, 0x14, 0xa4, 0x63, 0xb9, 0xc8, 0x3a, 0x70, 0xd1, 0xf3, + 0x35, 0x8b, 0x34, 0x4c, 0xa1, 0x52, 0x7b, 0xbe, 0xd6, 0x6a, 0x17, 0x08, 0xcc, 0xcf, 0xbd, 0xca, + 0xd3, 0xa8, 0x70, 0x16, 0x7e, 0xf4, 0x59, 0x05, 0xe6, 0x58, 0xf9, 0x62, 0xc7, 0x77, 0x78, 0xb4, + 0xc1, 0x88, 0xf8, 0xc9, 0xef, 0x3a, 0x99, 0x0a, 0xd4, 0xc8, 0xc1, 0x87, 0x73, 0x29, 0xa1, 0x4f, + 0xc0, 0x65, 0x4b, 0xf3, 0xfc, 0x45, 0xdd, 0x37, 0xf7, 0x4d, 0xff, 0x30, 0xea, 0xc2, 0xc9, 0xb3, + 0x81, 0x31, 0x51, 0x7b, 0x35, 0x0b, 0x19, 0xce, 0xa6, 0xa1, 0xfe, 0xa5, 0x02, 0x28, 0xbd, 0x84, + 0x90, 0x05, 0x65, 0x23, 0x70, 0xf3, 0x56, 0x8a, 0xa7, 0x9e, 0x89, 0x50, 0x46, 0x9c, 0x39, 0xf4, + 0x0e, 0x0f, 0x29, 0x20, 0x07, 0xc6, 0xef, 0xed, 0x9a, 0x3e, 0xb1, 0x4c, 0xcf, 0x17, 0xdc, 0x79, + 0x50, 0x72, 0x61, 0x44, 0xa7, 0x17, 0x02, 0xc4, 0x38, 0xa2, 0xa1, 0xfe, 0xf2, 0x30, 0x94, 0x4f, + 0x90, 0xb7, 0xb7, 0x03, 0x48, 0x97, 0xf2, 0x05, 0x0c, 0x62, 0x47, 0x60, 0x2e, 0x0a, 0xd5, 0x14, + 0x32, 0x9c, 0x41, 0x00, 0x7d, 0x02, 0x2e, 0x99, 0xf6, 0x8e, 0xab, 0x79, 0xbe, 0xdb, 0x61, 0x86, + 0xd9, 0x41, 0xc2, 0xee, 0x33, 0x0d, 0xa2, 0x9e, 0x81, 0x0e, 0x67, 0x12, 0x41, 0x04, 0xc6, 0xee, + 0x39, 0xee, 0x1e, 0x65, 0x9e, 0xc3, 0xc5, 0x13, 0x30, 0xbd, 0xc0, 0x50, 0x44, 0x5c, 0x93, 0xff, + 0xf6, 0x70, 0x80, 0x9b, 0x87, 0xb4, 0xe0, 0xff, 0x07, 0x57, 0x94, 0x62, 0xdd, 0x57, 0x8b, 0xd3, + 0x8b, 0x72, 0x79, 0xf1, 0x90, 0x16, 0xf1, 0x42, 0x9c, 0x24, 0xa8, 0xfe, 0x89, 0x02, 0x23, 0xfc, + 0xf9, 0xe4, 0xd9, 0x4b, 0x70, 0x7f, 0x37, 0x26, 0xc1, 0x15, 0x8a, 0x1c, 0xce, 0xba, 0x9a, 0x1b, + 0xd3, 0xfa, 0x7b, 0x0a, 0x8c, 0xb3, 0x1a, 0xe7, 0x20, 0x52, 0xbd, 0x1c, 0x17, 0xa9, 0x9e, 0x2e, + 0xfc, 0x35, 0x39, 0x02, 0xd5, 0x9f, 0x0c, 0x89, 0x6f, 0x61, 0x12, 0x4b, 0x1d, 0x2e, 0x0a, 0x07, + 0xc9, 0x55, 0x73, 0x87, 0xd0, 0x25, 0x5e, 0xd3, 0x0e, 0x3d, 0x11, 0xf3, 0x80, 0xbf, 0x90, 0x49, + 0x83, 0x71, 0x56, 0x1b, 0xf4, 0x87, 0x0a, 0x95, 0x0d, 0x7c, 0xd7, 0xd4, 0x07, 0x0a, 0x14, 0x1d, + 0xf6, 0x6d, 0x61, 0x8d, 0x23, 0xe3, 0x9a, 0xc9, 0x56, 0x24, 0x24, 0xb0, 0xd2, 0xfb, 0xdd, 0x4a, + 0x25, 0xc3, 0x68, 0x14, 0xc5, 0x9f, 0xf5, 0xfc, 0xcf, 0xfc, 0xa8, 0x67, 0x15, 0x66, 0x70, 0x0d, + 0x7a, 0x8c, 0x6e, 0xc1, 0x88, 0xa7, 0x3b, 0x6d, 0x72, 0x92, 0xd0, 0xf7, 0xe1, 0x00, 0x37, 0x68, + 0x4b, 0xcc, 0x11, 0xcc, 0xbf, 0x02, 0x93, 0x72, 0xcf, 0x33, 0x34, 0x9f, 0x9a, 0xac, 0xf9, 0x9c, + 0xf8, 0x5a, 0x45, 0xd6, 0x94, 0xfe, 0xa8, 0x04, 0x22, 0xd1, 0x79, 0x1f, 0x66, 0x65, 0x33, 0x08, + 0xf4, 0x39, 0x40, 0x5e, 0x49, 0x39, 0x64, 0xde, 0x4b, 0x8e, 0x2d, 0x8d, 0x81, 0x1c, 0xeb, 0x13, + 0xd9, 0x30, 0x6a, 0x69, 0xdb, 0xc4, 0x0a, 0x12, 0xf9, 0xad, 0x14, 0xcf, 0x34, 0xc7, 0x83, 0xb5, + 0x7b, 0x09, 0xe3, 0x23, 0x2f, 0xc4, 0x82, 0xca, 0xfc, 0xd3, 0x30, 0x21, 0x55, 0x3b, 0x91, 0xb2, + 0xf9, 0x86, 0x02, 0x57, 0x82, 0x25, 0x11, 0x0f, 0xd4, 0x83, 0x1e, 0x83, 0xb2, 0xd6, 0x36, 0x99, + 0xfd, 0x45, 0xb6, 0x60, 0x2d, 0x6e, 0xd4, 0x59, 0x19, 0x0e, 0xa1, 0xe8, 0xdd, 0x50, 0x0e, 0xe6, + 0x49, 0x48, 0x69, 0xe1, 0x16, 0x0f, 0xcd, 0xee, 0x61, 0x0d, 0xf4, 0x0e, 0x29, 0x74, 0xe9, 0x48, + 0x74, 0xac, 0x86, 0x84, 0xf9, 0x0d, 0x9d, 0xfa, 0x73, 0x30, 0xde, 0x68, 0xdc, 0xe2, 0x21, 0x4c, + 0x4e, 0x60, 0x89, 0x54, 0xbf, 0x38, 0x04, 0x53, 0x5c, 0x23, 0x5f, 0x32, 0x6d, 0xc3, 0xb4, 0x9b, + 0xe7, 0xc0, 0x82, 0x63, 0x69, 0xe6, 0x4b, 0xa7, 0x95, 0x66, 0xfe, 0x36, 0x8c, 0xbe, 0x4a, 0xd9, + 0x41, 0xb0, 0x8c, 0xfa, 0xda, 0x95, 0xe1, 0x1a, 0x61, 0x9c, 0xc4, 0xc3, 0x02, 0x05, 0xf2, 0xa4, + 0x64, 0xff, 0x03, 0x3c, 0xc0, 0x8f, 0x8d, 0x6c, 0x18, 0xb8, 0x78, 0x32, 0x3b, 0xd3, 0xbf, 0xfa, + 0x9f, 0x15, 0x98, 0x8d, 0xb5, 0x38, 0x87, 0x13, 0x64, 0x27, 0x7e, 0x82, 0x2c, 0x0e, 0xfc, 0x95, + 0x39, 0x27, 0xc9, 0xd3, 0x70, 0x39, 0x73, 0x30, 0x8e, 0x97, 0xfe, 0xd4, 0xdf, 0x2b, 0xc1, 0x70, + 0x83, 0x10, 0xe3, 0x1c, 0x56, 0xe6, 0xcb, 0x31, 0xe1, 0xe0, 0x83, 0x85, 0xd3, 0x50, 0xe6, 0xd9, + 0x76, 0x76, 0x12, 0xb6, 0x9d, 0x0f, 0x15, 0xa6, 0xd0, 0xdb, 0xb0, 0xf3, 0xeb, 0x25, 0x00, 0x5a, + 0x8d, 0x27, 0x26, 0x17, 0x4e, 0x80, 0x7c, 0x35, 0x2b, 0x71, 0x8e, 0x93, 0x5e, 0x86, 0xe7, 0x79, + 0x63, 0xa7, 0xc2, 0x28, 0xcf, 0x04, 0x2a, 0x8c, 0xe4, 0xc0, 0x13, 0xa5, 0xd1, 0x12, 0x2c, 0x20, + 0x71, 0x6e, 0x31, 0x7c, 0x4a, 0xdc, 0x42, 0xfd, 0x67, 0x0a, 0xb0, 0xd4, 0x36, 0xb5, 0x75, 0xf6, + 0x3c, 0xd9, 0xe4, 0x97, 0x57, 0x35, 0x39, 0xfc, 0x25, 0x33, 0x12, 0xd7, 0x65, 0x00, 0x8e, 0xd7, + 0x43, 0x2d, 0x69, 0x5c, 0x4b, 0xc5, 0x85, 0x66, 0xd1, 0x8f, 0x63, 0xf9, 0xc3, 0x8f, 0x4a, 0x70, + 0x21, 0x51, 0xb7, 0x0f, 0xe5, 0xe9, 0x6c, 0xb8, 0xad, 0x14, 0xeb, 0x7c, 0xe8, 0xec, 0x63, 0x9d, + 0x87, 0x61, 0xc7, 0x87, 0xcf, 0x36, 0xec, 0xf8, 0x1f, 0x2b, 0xc0, 0xf2, 0xcd, 0x9f, 0x03, 0xe3, + 0xfd, 0x3b, 0x71, 0xc6, 0xfb, 0xfe, 0xa2, 0x0b, 0x27, 0x87, 0xdf, 0xfe, 0x4e, 0x09, 0x58, 0x9a, + 0x1a, 0x71, 0x57, 0x2f, 0x5d, 0x7f, 0x2b, 0x39, 0xd7, 0xdf, 0xd7, 0xc5, 0xed, 0x79, 0xc2, 0xc4, + 0x29, 0xdd, 0xa0, 0xbf, 0x5b, 0xba, 0x20, 0x1f, 0x8a, 0xb3, 0x91, 0xf4, 0x25, 0x39, 0x7a, 0x0d, + 0xa6, 0xbc, 0x5d, 0xc7, 0xf1, 0xc3, 0xe7, 0xea, 0xc3, 0xc5, 0xcd, 0xd9, 0xcc, 0x67, 0x37, 0xf8, + 0x14, 0xbe, 0x31, 0x1b, 0x32, 0x6e, 0x1c, 0x27, 0x85, 0x16, 0x00, 0xb6, 0x2d, 0x47, 0xdf, 0xab, + 0xd6, 0x6b, 0x38, 0xf0, 0xd1, 0x64, 0x0e, 0x36, 0x4b, 0x61, 0x29, 0x96, 0x6a, 0xa8, 0xff, 0x5d, + 0xe1, 0xa3, 0x75, 0x82, 0x6d, 0x75, 0x8e, 0x5c, 0xf2, 0x9d, 0x09, 0x2e, 0x29, 0xa5, 0x94, 0x8c, + 0x71, 0xca, 0x4a, 0xb4, 0x4b, 0x42, 0x13, 0x74, 0x6c, 0x79, 0xff, 0x81, 0xf8, 0xcc, 0x30, 0x5b, + 0x51, 0x1b, 0xa6, 0x2c, 0x39, 0xbd, 0x91, 0x58, 0xe7, 0x85, 0x32, 0x23, 0x85, 0x8e, 0xfb, 0xb1, + 0x62, 0x1c, 0x27, 0x40, 0x79, 0x6d, 0xf0, 0x75, 0x3c, 0xb1, 0x72, 0x29, 0x72, 0xaf, 0xdc, 0x90, + 0x01, 0x38, 0x5e, 0x4f, 0xfd, 0x47, 0x25, 0x78, 0x98, 0xf7, 0x9d, 0x19, 0x0d, 0x6a, 0xa4, 0x4d, + 0x6c, 0x83, 0xd8, 0xfa, 0x21, 0x93, 0xc3, 0x0d, 0xa7, 0x89, 0xfe, 0x9e, 0x02, 0x65, 0x62, 0x1b, + 0x6d, 0xc7, 0xb4, 0x03, 0x6b, 0xff, 0x47, 0x8b, 0x27, 0x92, 0xce, 0xa1, 0xb2, 0x2c, 0x08, 0x88, + 0x30, 0x93, 0xe2, 0x17, 0x0e, 0x09, 0xa3, 0x7b, 0x30, 0xd2, 0x76, 0x9d, 0xed, 0x40, 0x5f, 0xbb, + 0x7b, 0xea, 0x3d, 0xd8, 0xa0, 0xd8, 0xf9, 0xe4, 0xb2, 0x7f, 0x31, 0xa7, 0xa7, 0x62, 0x78, 0x47, + 0x5f, 0x3d, 0x3f, 0x89, 0x76, 0x70, 0x07, 0xd4, 0xe3, 0xfb, 0x72, 0x12, 0x84, 0xcf, 0xc3, 0xa3, + 0x12, 0xc2, 0xe5, 0x03, 0xaa, 0xae, 0x54, 0xb5, 0xb6, 0xa6, 0x53, 0x5d, 0x95, 0x3d, 0xe4, 0xe5, + 0x66, 0xec, 0x13, 0xa0, 0xfc, 0xc2, 0x30, 0x54, 0x24, 0x9c, 0x31, 0x1f, 0x98, 0x80, 0x17, 0x7d, + 0x5d, 0x81, 0x09, 0xcd, 0xb6, 0x1d, 0x5f, 0x93, 0xd3, 0xc6, 0x19, 0x03, 0xce, 0x4d, 0x16, 0xa9, + 0x85, 0xc5, 0x88, 0x4c, 0xe2, 0x9a, 0x54, 0x82, 0x60, 0xb9, 0x37, 0x3d, 0xbc, 0x61, 0x4a, 0xe7, + 0xea, 0x0d, 0x83, 0x3e, 0x19, 0x30, 0x10, 0xae, 0x41, 0xbd, 0x78, 0x06, 0xe3, 0xc3, 0xf8, 0x51, + 0xb6, 0x21, 0x60, 0xfe, 0x43, 0x30, 0x93, 0x1c, 0xbd, 0x13, 0x69, 0xe7, 0xff, 0x72, 0x28, 0xb6, + 0xba, 0x72, 0xc9, 0xf7, 0x61, 0xfe, 0xf8, 0x46, 0x62, 0xc1, 0xf0, 0x43, 0xda, 0x3c, 0xab, 0x01, + 0x39, 0xdd, 0x55, 0x33, 0x74, 0xbe, 0x3e, 0x54, 0x83, 0x4e, 0x5b, 0x15, 0xae, 0x48, 0x63, 0xc4, + 0x2e, 0x1a, 0xab, 0xbb, 0x44, 0xdf, 0x3b, 0x91, 0x1d, 0x63, 0x89, 0xea, 0x97, 0x21, 0x92, 0x28, + 0xe4, 0x20, 0x7b, 0x3b, 0x6b, 0x7a, 0x66, 0x10, 0x5e, 0x42, 0xc2, 0x71, 0x97, 0x17, 0xe3, 0x00, + 0xae, 0xae, 0xc1, 0x75, 0x09, 0x47, 0xe6, 0xcb, 0xd6, 0x93, 0x74, 0xe9, 0x9b, 0x63, 0xc1, 0x69, + 0x2b, 0x9e, 0xfe, 0x7c, 0x5b, 0x81, 0x07, 0x49, 0x1e, 0xcb, 0x13, 0x27, 0xd6, 0xa0, 0x7b, 0x2e, + 0x97, 0xa5, 0x8a, 0x98, 0x7d, 0x79, 0x60, 0x9c, 0xdf, 0x33, 0x74, 0x08, 0xe0, 0x85, 0x03, 0x3a, + 0x88, 0xe7, 0x73, 0xe6, 0x0c, 0x89, 0x5c, 0x06, 0xe1, 0x6f, 0x2c, 0x11, 0x43, 0xbf, 0xa1, 0xc0, + 0x25, 0x2b, 0x63, 0xd7, 0x08, 0x61, 0xb2, 0x71, 0x06, 0x1b, 0x92, 0xdf, 0xd4, 0x64, 0x41, 0x70, + 0x66, 0x57, 0xd0, 0x6f, 0xe5, 0x3e, 0xb9, 0x1e, 0x29, 0x9e, 0xf3, 0xef, 0xb8, 0x85, 0x58, 0xe0, + 0xf5, 0xf5, 0x27, 0x61, 0xc2, 0x89, 0x36, 0x97, 0x78, 0x23, 0xff, 0x91, 0x01, 0x3b, 0x27, 0x6d, + 0x57, 0x7e, 0xef, 0x2d, 0x15, 0x60, 0x99, 0x1e, 0xfa, 0xaa, 0x02, 0xc8, 0x48, 0x49, 0x10, 0xe2, + 0xea, 0xfd, 0xf9, 0x53, 0x17, 0x93, 0xf8, 0x4d, 0x5f, 0xba, 0x1c, 0x67, 0x74, 0x42, 0x7d, 0x63, + 0x8c, 0xeb, 0x7d, 0xec, 0x9a, 0x63, 0x1b, 0x46, 0xb7, 0x99, 0xdd, 0x44, 0x6c, 0xc9, 0xc2, 0x46, + 0x1a, 0x6e, 0x7d, 0xe1, 0x46, 0x0d, 0xfe, 0x3f, 0x16, 0x98, 0xd1, 0x4b, 0x30, 0x64, 0xd8, 0x41, + 0x1e, 0xd9, 0x0f, 0x0c, 0x60, 0x34, 0x88, 0x9c, 0xd8, 0x6b, 0xeb, 0x0d, 0x4c, 0x91, 0x22, 0x1b, + 0xca, 0xb6, 0x50, 0x95, 0x84, 0x6e, 0xfe, 0xe1, 0xa2, 0x04, 0x42, 0x95, 0x2b, 0x54, 0xf4, 0x82, + 0x12, 0x1c, 0xd2, 0xa0, 0xf4, 0x12, 0xb6, 0xd2, 0xc2, 0xf4, 0x42, 0x13, 0x48, 0x2f, 0xfb, 0xd4, + 0x86, 0x6c, 0xd0, 0x18, 0xe9, 0xdf, 0xa0, 0x31, 0x95, 0x6b, 0xcc, 0x20, 0x30, 0xea, 0x6b, 0xa6, + 0xed, 0xd3, 0x4d, 0x51, 0x38, 0x9f, 0x30, 0xed, 0xff, 0x26, 0xc5, 0x12, 0xe9, 0x67, 0xec, 0xa7, + 0x87, 0x05, 0x72, 0xba, 0xb0, 0xf6, 0x59, 0xc6, 0x31, 0xb1, 0xe8, 0x0b, 0x2f, 0x2c, 0x9e, 0xb7, + 0x8c, 0x2f, 0x2c, 0xfe, 0x3f, 0x16, 0x98, 0xd1, 0x2b, 0x54, 0x47, 0x17, 0xf7, 0xb8, 0xe5, 0xc1, + 0x26, 0x23, 0xbc, 0xc4, 0x15, 0x6e, 0xf0, 0xe2, 0xf6, 0x36, 0xc4, 0x8f, 0xb6, 0x61, 0x4c, 0xd8, + 0xc3, 0x44, 0x70, 0x89, 0x0f, 0x0c, 0x90, 0x04, 0x26, 0x48, 0xc5, 0xc7, 0x9f, 0x24, 0x07, 0x88, + 0xd5, 0xff, 0x30, 0xce, 0x2d, 0x99, 0xc2, 0x55, 0x66, 0x07, 0xca, 0x01, 0xba, 0x41, 0x9e, 0x64, + 0x04, 0x49, 0xb7, 0xf8, 0xa7, 0x05, 0xbf, 0x70, 0x88, 0x1b, 0x55, 0xb3, 0x5e, 0xbf, 0x44, 0x11, + 0xa1, 0xfb, 0x7b, 0xf9, 0x12, 0x4f, 0x55, 0x3d, 0x74, 0x1e, 0xa9, 0xaa, 0xb3, 0x5d, 0x89, 0x86, + 0x0b, 0xb9, 0x12, 0x3d, 0x0b, 0x17, 0xc4, 0xd5, 0x6d, 0xdd, 0x20, 0xec, 0x36, 0x51, 0x78, 0x1a, + 0xb3, 0x4b, 0xfd, 0x6a, 0x1c, 0x84, 0x93, 0x75, 0xd1, 0x1f, 0x29, 0x50, 0xd6, 0x85, 0x34, 0x21, + 0xf6, 0xd5, 0xea, 0x60, 0xe6, 0xee, 0x85, 0x40, 0x38, 0xe1, 0x22, 0xf2, 0xdd, 0x80, 0x47, 0x04, + 0xc5, 0xa7, 0x74, 0xcd, 0x1b, 0xf6, 0x1a, 0xfd, 0x5b, 0xaa, 0x05, 0x58, 0x2c, 0x15, 0x18, 0x7b, + 0xe7, 0xc7, 0x5d, 0xa0, 0xef, 0x0c, 0xf8, 0x15, 0x8b, 0x11, 0x46, 0xfe, 0x21, 0x1f, 0x0d, 0x65, + 0xfd, 0x08, 0x72, 0x4a, 0xdf, 0x22, 0x77, 0x1f, 0x7d, 0x53, 0x81, 0x47, 0xb9, 0xdf, 0x79, 0x95, + 0x0a, 0x08, 0x2c, 0x31, 0x1f, 0x89, 0x32, 0x01, 0x46, 0x8e, 0x4f, 0xe5, 0x13, 0x3b, 0x3e, 0x3d, + 0x76, 0xd4, 0xad, 0x3c, 0x5a, 0xed, 0x03, 0x37, 0xee, 0xab, 0x07, 0xf3, 0x7b, 0x30, 0x15, 0x9b, + 0xec, 0xb3, 0xbc, 0x18, 0x9f, 0xb7, 0x61, 0x26, 0x39, 0x27, 0x67, 0x7a, 0x11, 0x7f, 0x1b, 0xc6, + 0xc3, 0xc3, 0x02, 0x3d, 0x2c, 0x11, 0x8a, 0x0e, 0xf3, 0xdb, 0xe4, 0x90, 0x53, 0xad, 0xc4, 0xd4, + 0x26, 0x6e, 0xf6, 0xb9, 0x4b, 0x0b, 0x04, 0x42, 0xf5, 0xfb, 0xc2, 0xa6, 0xb7, 0x49, 0x5a, 0x6d, + 0x4b, 0xf3, 0xc9, 0x5b, 0xff, 0x96, 0x4c, 0xfd, 0x9f, 0x0a, 0xe7, 0xf9, 0x22, 0xf9, 0xa7, 0x06, + 0x13, 0x2d, 0x1e, 0x9a, 0x92, 0x3d, 0x2f, 0x55, 0x8a, 0x3f, 0x6c, 0x5d, 0x8b, 0xd0, 0x60, 0x19, + 0x27, 0xba, 0x97, 0x4e, 0x4f, 0xbb, 0x32, 0xd8, 0xe1, 0xdc, 0x77, 0x96, 0x5a, 0x94, 0x6e, 0x43, + 0x95, 0xcc, 0xc0, 0xbf, 0x36, 0x91, 0x11, 0x34, 0xe5, 0x63, 0x7b, 0x6c, 0x66, 0x48, 0xf5, 0x3b, + 0x25, 0xc8, 0xcc, 0x71, 0x84, 0x54, 0x18, 0xe5, 0x0f, 0x3e, 0xe4, 0xbc, 0xbd, 0xfc, 0x35, 0x08, + 0x16, 0x10, 0x74, 0x87, 0xdb, 0x18, 0x6c, 0x83, 0xc5, 0x59, 0x8a, 0x76, 0xaa, 0xfc, 0xb4, 0x68, + 0x39, 0xab, 0x02, 0xce, 0x6e, 0x87, 0xf6, 0x01, 0xb5, 0xb4, 0x83, 0x24, 0xb6, 0x01, 0x72, 0x5f, + 0xac, 0xa5, 0xb0, 0xe1, 0x0c, 0x0a, 0xf4, 0x30, 0xd3, 0x74, 0x9d, 0xb4, 0x7d, 0x62, 0xf0, 0x4f, + 0x0c, 0xae, 0x05, 0xd8, 0x61, 0xb6, 0x18, 0x07, 0xe1, 0x64, 0x5d, 0xf5, 0x5f, 0x94, 0x60, 0x84, + 0xdd, 0x38, 0xbc, 0x35, 0x3c, 0xd4, 0x58, 0x57, 0x73, 0x6f, 0xa1, 0x9b, 0x89, 0x5b, 0xe8, 0xe7, + 0x8a, 0x93, 0xe8, 0x7d, 0x0d, 0xfd, 0x51, 0xb8, 0xc2, 0xaa, 0x2d, 0x1a, 0x4c, 0x23, 0xf5, 0x88, + 0xb1, 0x68, 0x18, 0xec, 0xc1, 0xe4, 0xf1, 0x16, 0xb8, 0x87, 0x61, 0xa8, 0xe3, 0x5a, 0xc9, 0x97, + 0xba, 0x5b, 0x78, 0x15, 0xd3, 0x72, 0xf5, 0x75, 0x05, 0x66, 0x18, 0xee, 0xaa, 0x4b, 0x98, 0xc4, + 0xa1, 0x59, 0x1e, 0xda, 0x87, 0xb2, 0x2b, 0xec, 0x50, 0x62, 0x6e, 0x56, 0x0b, 0x7f, 0x9a, 0x84, + 0x17, 0x0b, 0x9c, 0x22, 0x3b, 0x96, 0xf8, 0x85, 0x43, 0x5a, 0xea, 0x9f, 0x8f, 0xc2, 0x5c, 0x5e, + 0x23, 0xf4, 0x15, 0x05, 0xae, 0xe8, 0xd1, 0x69, 0xb7, 0xd8, 0xf1, 0x77, 0x1d, 0xd7, 0xf4, 0x4d, + 0xe2, 0x0d, 0xa2, 0x5f, 0x56, 0x17, 0xc3, 0x5e, 0xb1, 0x38, 0x28, 0xd5, 0x4c, 0x0a, 0x38, 0x87, + 0x32, 0xfa, 0x04, 0xc0, 0x5e, 0x14, 0x78, 0x8d, 0xaf, 0xb4, 0xdb, 0x85, 0xc7, 0x4a, 0x0a, 0xce, + 0x16, 0x74, 0x8a, 0x19, 0x75, 0xa4, 0x72, 0x89, 0x1c, 0x25, 0xee, 0x79, 0xbb, 0xb7, 0xc9, 0x61, + 0x5b, 0x33, 0x83, 0x17, 0x08, 0xc5, 0x89, 0x37, 0x1a, 0xb7, 0x04, 0xaa, 0x38, 0x71, 0xa9, 0x5c, + 0x22, 0x87, 0xbe, 0xa0, 0xc0, 0x14, 0x17, 0x76, 0x85, 0x67, 0x9a, 0x60, 0x3e, 0xeb, 0x85, 0x3b, + 0x70, 0x47, 0xc6, 0x16, 0xf6, 0x81, 0xdd, 0x68, 0xc5, 0x41, 0x71, 0xba, 0xe8, 0x0d, 0x05, 0x66, + 0xe3, 0x69, 0xe6, 0x6e, 0x93, 0x43, 0xa1, 0xd0, 0xe2, 0xe2, 0xc3, 0x91, 0xc4, 0x18, 0xf6, 0x88, + 0x29, 0x2e, 0x69, 0x70, 0xba, 0x0f, 0xac, 0x67, 0xc4, 0xd7, 0x0d, 0x91, 0xf6, 0xda, 0x74, 0x6c, + 0xda, 0xb3, 0xd1, 0x01, 0x7b, 0xb6, 0xbc, 0x59, 0xad, 0xc5, 0x30, 0xc6, 0x7b, 0x96, 0x06, 0xa7, + 0xfb, 0xa0, 0xfe, 0x64, 0x18, 0xae, 0xf5, 0x46, 0x86, 0x9e, 0x0b, 0x5e, 0x40, 0x70, 0xde, 0xf2, + 0x78, 0xf2, 0x05, 0xc4, 0x5c, 0xc6, 0x26, 0x8d, 0xbd, 0x86, 0x70, 0x01, 0x59, 0x9a, 0xe7, 0x57, + 0x9d, 0x56, 0xdb, 0x22, 0x81, 0x58, 0x5a, 0x24, 0x44, 0xd7, 0x91, 0x08, 0x98, 0x15, 0xc7, 0x84, + 0x33, 0xb0, 0x07, 0x34, 0x79, 0x1e, 0xd9, 0x90, 0xe6, 0x50, 0x71, 0x9a, 0x71, 0x4c, 0x38, 0x03, + 0x3b, 0x7a, 0x5d, 0x81, 0xf9, 0x78, 0xf1, 0x8a, 0x69, 0x9b, 0xde, 0xae, 0x08, 0xdd, 0x76, 0xf2, + 0x07, 0x18, 0x2c, 0x59, 0xc1, 0x6a, 0x2e, 0x46, 0xdc, 0x83, 0x1a, 0xfa, 0x92, 0x02, 0x57, 0x13, + 0xe3, 0x12, 0x0b, 0x24, 0x77, 0xf2, 0xb7, 0x18, 0xec, 0x7d, 0xf2, 0x6a, 0x3e, 0x4a, 0xdc, 0x8b, + 0x9e, 0xfa, 0xe9, 0x12, 0x3c, 0x90, 0xc3, 0xdb, 0x72, 0x26, 0x4b, 0x39, 0xd3, 0xc9, 0xfa, 0x29, + 0x2c, 0x4a, 0xe6, 0xc9, 0xce, 0xc6, 0xe0, 0x2d, 0xe2, 0xc9, 0xce, 0xfa, 0x9a, 0xe3, 0x0f, 0xf3, + 0xc7, 0x0a, 0xcc, 0xa6, 0x22, 0xbf, 0xf5, 0xe5, 0x07, 0x7d, 0x6e, 0x6e, 0x1e, 0xef, 0x48, 0xa6, + 0x70, 0x9f, 0xc8, 0x4c, 0xdf, 0xfe, 0x02, 0x4c, 0xc5, 0xdc, 0x61, 0xc2, 0xb0, 0x17, 0x4a, 0x66, + 0xd8, 0x0b, 0x39, 0xaa, 0x45, 0xa9, 0x67, 0x54, 0x8b, 0xcf, 0x96, 0x60, 0x3e, 0xff, 0x40, 0xfb, + 0x6b, 0xb3, 0xea, 0xc3, 0x9d, 0x9f, 0x16, 0x2c, 0xfe, 0xda, 0x8c, 0x41, 0x78, 0xcc, 0xe6, 0x4a, + 0x13, 0x7f, 0x73, 0xcc, 0xfe, 0xcd, 0x31, 0x7b, 0x0a, 0xc7, 0xec, 0x37, 0x2f, 0x88, 0x23, 0x86, + 0xdd, 0xbc, 0xbd, 0x0c, 0xa3, 0x2c, 0xde, 0x4d, 0xa0, 0x19, 0x3d, 0x53, 0x38, 0x8e, 0x8e, 0xc7, + 0xad, 0x19, 0xfc, 0x7f, 0x2c, 0xb0, 0xa2, 0x1a, 0xcc, 0xe8, 0x96, 0xd3, 0x31, 0x44, 0x1e, 0xc2, + 0xf5, 0xc8, 0x70, 0x12, 0x46, 0x1e, 0xac, 0x26, 0xe0, 0x38, 0xd5, 0x02, 0x61, 0x7e, 0x77, 0xc7, + 0x57, 0xcd, 0xfb, 0x0a, 0xba, 0xa2, 0xf2, 0xf8, 0xfa, 0xe1, 0x9d, 0xdd, 0xab, 0x00, 0x24, 0x38, + 0x2c, 0x82, 0x07, 0x7f, 0xcf, 0x16, 0x8b, 0xa9, 0x18, 0x1e, 0x39, 0x81, 0x91, 0x21, 0x2c, 0xf2, + 0xb0, 0x44, 0x04, 0xb9, 0x30, 0xb1, 0x6b, 0x6e, 0x13, 0xd7, 0x8e, 0xd2, 0x97, 0x17, 0x34, 0x05, + 0xdc, 0x8a, 0xd0, 0x70, 0x3b, 0x9b, 0x54, 0x80, 0x65, 0x22, 0xc8, 0xe5, 0x6a, 0x27, 0xbf, 0x26, + 0x19, 0x24, 0xc7, 0x79, 0x74, 0xff, 0x12, 0x7d, 0x67, 0x54, 0x86, 0x25, 0x2a, 0x94, 0xa6, 0x1d, + 0x06, 0xac, 0x1a, 0xe4, 0xe6, 0x2d, 0x0a, 0x7b, 0x15, 0xd1, 0x8c, 0xca, 0xb0, 0x44, 0x85, 0x8e, + 0x6d, 0x2b, 0x0a, 0x52, 0x26, 0xec, 0xe9, 0xcf, 0x0d, 0x18, 0x2c, 0x4e, 0xd8, 0x30, 0xa3, 0x02, + 0x2c, 0x13, 0x41, 0x36, 0x40, 0x2b, 0x8c, 0x5d, 0x26, 0x2e, 0xe4, 0x0a, 0x7d, 0x67, 0x14, 0x01, + 0x8d, 0x2b, 0xd2, 0xd1, 0x6f, 0x2c, 0x51, 0x40, 0xaf, 0x48, 0xd7, 0xbe, 0x50, 0xdc, 0x12, 0xdc, + 0xd7, 0x95, 0xef, 0x7b, 0x23, 0x83, 0xe8, 0x04, 0xdb, 0xaf, 0x57, 0x25, 0x63, 0xe8, 0xfd, 0x6e, + 0x65, 0x92, 0xf1, 0x90, 0x94, 0x71, 0x34, 0x72, 0x9c, 0x9d, 0xec, 0xe9, 0x38, 0x7b, 0x93, 0x2a, + 0xe2, 0xd2, 0xe3, 0x14, 0xc6, 0x18, 0xa6, 0x58, 0x93, 0x30, 0xd6, 0x5d, 0x23, 0x59, 0x01, 0xa7, + 0xdb, 0x70, 0x61, 0x8b, 0x18, 0xac, 0xfd, 0xb4, 0x2c, 0x6c, 0xf1, 0x32, 0x1c, 0x42, 0xd1, 0x3e, + 0x4c, 0x7a, 0x92, 0x27, 0xae, 0x48, 0x72, 0x37, 0xc0, 0x5d, 0xad, 0xf0, 0xc2, 0x65, 0x51, 0x80, + 0xe4, 0x12, 0x1c, 0xa3, 0x83, 0x3e, 0x01, 0xe3, 0x81, 0x71, 0xdc, 0x9b, 0x9b, 0x29, 0xfe, 0xf2, + 0x32, 0x3b, 0x5e, 0x5d, 0x64, 0xed, 0x0e, 0x40, 0x1e, 0x8e, 0xe8, 0xa1, 0x4e, 0x3c, 0xea, 0xc2, + 0xec, 0xa9, 0xbc, 0x34, 0x0f, 0x3d, 0xe5, 0xf2, 0x22, 0x2e, 0xa0, 0x2a, 0xcc, 0x92, 0x83, 0xb6, + 0xe3, 0x75, 0x5c, 0xc2, 0x42, 0x65, 0xb2, 0xe9, 0x41, 0xd1, 0x65, 0xee, 0x72, 0x12, 0x88, 0xd3, + 0xf5, 0xd1, 0xe7, 0x15, 0x98, 0xe1, 0x39, 0x02, 0xe9, 0x59, 0xe6, 0xd8, 0xc4, 0xf6, 0x3d, 0x96, + 0x04, 0xaf, 0xe0, 0xe3, 0xc8, 0x46, 0x02, 0x17, 0xcf, 0xea, 0x92, 0x2c, 0xc5, 0x29, 0x9a, 0x74, + 0xe5, 0xc8, 0x6f, 0xd5, 0x59, 0x2e, 0xbd, 0x82, 0x2b, 0x47, 0x7e, 0x07, 0xcf, 0x57, 0x8e, 0x5c, + 0x82, 0x63, 0x74, 0xd4, 0xef, 0x4d, 0xc1, 0x84, 0x64, 0xf4, 0x4d, 0xdc, 0x6e, 0x2b, 0xe7, 0x71, + 0xbb, 0xed, 0xc3, 0x84, 0x1e, 0x86, 0xc5, 0x0d, 0x54, 0xc5, 0x01, 0x69, 0x86, 0xcb, 0x27, 0x0a, + 0xb8, 0xeb, 0x61, 0x99, 0x0c, 0x65, 0x74, 0xa1, 0xcf, 0xc1, 0xd0, 0x29, 0xf8, 0x1c, 0x84, 0x8c, + 0x2e, 0xc3, 0xef, 0xe0, 0x29, 0x80, 0xe0, 0xbc, 0x24, 0x86, 0x08, 0xb4, 0x16, 0xa6, 0x93, 0xa8, + 0x7b, 0xb7, 0x42, 0x18, 0x96, 0xea, 0xa1, 0xd7, 0x60, 0xca, 0x92, 0xe3, 0xab, 0x8b, 0xc3, 0xbc, + 0xd0, 0x53, 0x8b, 0x58, 0xa0, 0x76, 0x6e, 0xc5, 0x8c, 0x15, 0xe1, 0x38, 0x29, 0xba, 0x0c, 0xac, + 0x20, 0x77, 0xc2, 0x40, 0xfe, 0x33, 0x61, 0x06, 0x86, 0x68, 0x19, 0x84, 0x45, 0x1e, 0x96, 0x88, + 0xe4, 0x38, 0x39, 0x8c, 0x15, 0x72, 0x72, 0xe8, 0xc0, 0x45, 0x97, 0xf8, 0xee, 0x61, 0xf5, 0x50, + 0x67, 0x29, 0x45, 0x5c, 0x9f, 0xc9, 0xc1, 0xe5, 0x62, 0xa1, 0x4f, 0x70, 0x1a, 0x15, 0xce, 0xc2, + 0x1f, 0x3b, 0x28, 0xc6, 0x7b, 0x1e, 0x14, 0xef, 0x85, 0x09, 0x9f, 0xe8, 0xbb, 0xb6, 0xa9, 0x6b, + 0x56, 0xbd, 0x26, 0xa2, 0x90, 0x45, 0x3c, 0x2f, 0x02, 0x61, 0xb9, 0x1e, 0x5a, 0x82, 0xa1, 0x8e, + 0x69, 0x88, 0xd3, 0xf2, 0x67, 0xc3, 0xeb, 0x93, 0x7a, 0xed, 0x7e, 0xb7, 0xf2, 0xf6, 0xc8, 0x6b, + 0x20, 0xfc, 0xaa, 0x1b, 0xed, 0xbd, 0xe6, 0x0d, 0xff, 0xb0, 0x4d, 0xbc, 0x85, 0xad, 0x7a, 0x0d, + 0xd3, 0xc6, 0x59, 0x0e, 0x20, 0x93, 0x27, 0x70, 0x00, 0xf9, 0xaa, 0x02, 0x17, 0xb5, 0xe4, 0xcd, + 0x0f, 0xf1, 0xe6, 0xa6, 0x8a, 0x9f, 0x3a, 0xd9, 0xb7, 0x49, 0x51, 0x14, 0xd9, 0xc5, 0x34, 0x39, + 0x9c, 0xd5, 0x07, 0xaa, 0x08, 0xb6, 0xcc, 0x66, 0x98, 0xc6, 0x40, 0xcc, 0xfa, 0x74, 0x31, 0x45, + 0x70, 0x2d, 0x85, 0x09, 0x67, 0x60, 0x47, 0xf7, 0x60, 0x42, 0x8f, 0x74, 0x62, 0x71, 0xe2, 0xd7, + 0x4e, 0xe3, 0x82, 0x4a, 0xe4, 0x24, 0x97, 0x14, 0x6e, 0x99, 0x52, 0xa8, 0x81, 0x4a, 0x62, 0xb9, + 0xd0, 0xc2, 0xd8, 0x57, 0xcf, 0x14, 0xd7, 0x40, 0xb3, 0x31, 0xe2, 0x1e, 0xd4, 0x58, 0xc0, 0x11, + 0x2b, 0x9e, 0x6d, 0x84, 0xe5, 0xba, 0x2d, 0xf8, 0x76, 0x32, 0x91, 0xb8, 0x84, 0x2f, 0xcd, 0x44, + 0x21, 0x4e, 0x12, 0x54, 0x7f, 0xa0, 0x08, 0x23, 0xda, 0x39, 0x7a, 0x4d, 0x9c, 0xf5, 0xb5, 0xae, + 0xfa, 0x17, 0x0a, 0xa4, 0xe4, 0x07, 0xb4, 0x0d, 0x63, 0x14, 0x45, 0x6d, 0xbd, 0x21, 0x3e, 0xeb, + 0x03, 0xc5, 0x8e, 0x4b, 0x86, 0x82, 0x5b, 0x24, 0xc5, 0x0f, 0x1c, 0x20, 0xa6, 0x12, 0x89, 0x2d, + 0x05, 0x42, 0x15, 0x5f, 0x58, 0x48, 0x22, 0x91, 0x03, 0xaa, 0x72, 0x89, 0x44, 0x2e, 0xc1, 0x31, + 0x3a, 0xea, 0x2a, 0x40, 0x24, 0xf3, 0x0d, 0xec, 0x48, 0xf3, 0x93, 0x11, 0xb8, 0x3c, 0xa8, 0xcf, + 0x3f, 0x4b, 0x72, 0xc1, 0xd2, 0x8e, 0x2f, 0xee, 0xf8, 0xc4, 0xbd, 0x73, 0x67, 0x2d, 0xcc, 0xca, + 0x5c, 0x30, 0xcb, 0x46, 0x94, 0xb5, 0x3e, 0x85, 0x11, 0xe7, 0x50, 0x62, 0xf2, 0xae, 0x48, 0xba, + 0x89, 0x35, 0x9f, 0xf0, 0x94, 0xcb, 0x3c, 0x7e, 0x04, 0x97, 0x77, 0x93, 0x40, 0x9c, 0xae, 0x9f, + 0x44, 0xc2, 0x53, 0xa0, 0x53, 0x81, 0x44, 0x49, 0x23, 0xe1, 0x79, 0xd0, 0xd3, 0xf5, 0x65, 0x24, + 0x7c, 0xa6, 0xe8, 0x6e, 0x1f, 0x49, 0x23, 0x09, 0x81, 0x38, 0x5d, 0x1f, 0x19, 0xf0, 0x90, 0x4b, + 0x74, 0xa7, 0xd5, 0x22, 0xb6, 0xc1, 0xf3, 0x47, 0x69, 0x6e, 0xd3, 0xb4, 0x57, 0x5c, 0x8d, 0x55, + 0x64, 0x66, 0x04, 0x65, 0xe9, 0xfa, 0x51, 0xb7, 0xf2, 0x10, 0xee, 0x51, 0x0f, 0xf7, 0xc4, 0x82, + 0x5a, 0x70, 0xa1, 0xc3, 0x22, 0x9f, 0xbb, 0x75, 0xdb, 0x27, 0xee, 0xbe, 0x66, 0x15, 0x4c, 0xec, + 0xcf, 0x38, 0xd0, 0x56, 0x1c, 0x15, 0x4e, 0xe2, 0x46, 0x87, 0x54, 0xee, 0x10, 0xdd, 0x91, 0x48, + 0x96, 0x8b, 0xa7, 0x81, 0xc1, 0x69, 0x74, 0x38, 0x8b, 0x86, 0xfa, 0x55, 0x05, 0x84, 0xd7, 0x30, + 0x7a, 0x28, 0x76, 0xff, 0x51, 0x4e, 0xdc, 0x7d, 0x3c, 0x24, 0x1e, 0xc1, 0x96, 0x22, 0xa8, 0xf4, + 0x00, 0xf6, 0x9d, 0x52, 0x60, 0x92, 0xf1, 0x88, 0xf7, 0x71, 0xcc, 0x52, 0xee, 0x80, 0x77, 0xc1, + 0x38, 0xe1, 0x17, 0xb5, 0xa1, 0x44, 0xcb, 0x3c, 0xb1, 0x97, 0x83, 0x42, 0x1c, 0xc1, 0xd5, 0x7f, + 0xaf, 0x80, 0xc0, 0xc0, 0x32, 0x5d, 0xf4, 0x95, 0xf1, 0xe0, 0x58, 0x17, 0x28, 0x29, 0x53, 0xc3, + 0x50, 0x6e, 0xa6, 0x86, 0x33, 0x4a, 0x60, 0xf0, 0x6d, 0x05, 0x2e, 0xc4, 0x23, 0xc5, 0x78, 0xe8, + 0x1d, 0x30, 0x26, 0x42, 0xaf, 0x89, 0xd8, 0x49, 0xfc, 0xd1, 0xbb, 0xc8, 0x63, 0x1e, 0xc0, 0xe2, + 0xaa, 0xfa, 0x00, 0x41, 0x92, 0xb2, 0x03, 0xd6, 0xf4, 0x56, 0xd5, 0xd5, 0x3f, 0x9d, 0x86, 0x51, + 0x1e, 0xb7, 0x8b, 0xf2, 0xb4, 0x8c, 0xc7, 0x93, 0xb7, 0x8b, 0x87, 0x07, 0x2b, 0xf2, 0xda, 0x4d, + 0x0e, 0x10, 0x5d, 0xea, 0x19, 0x20, 0x1a, 0xf3, 0xc4, 0x30, 0x03, 0x98, 0x67, 0xab, 0xb8, 0x2e, + 0xf2, 0xc1, 0x06, 0x49, 0x61, 0xfc, 0x98, 0xdd, 0x72, 0xb8, 0xb8, 0xe4, 0xc6, 0x07, 0x40, 0xb2, + 0x5e, 0x4e, 0xf7, 0xb0, 0x5c, 0x46, 0x81, 0x91, 0x46, 0x8a, 0xbb, 0x24, 0x8a, 0x21, 0xef, 0x23, + 0x30, 0x52, 0xb8, 0x91, 0x46, 0x73, 0x37, 0xd2, 0x0e, 0x8c, 0x89, 0xad, 0x20, 0x98, 0xe3, 0x07, + 0x06, 0xc8, 0xb0, 0x22, 0xc5, 0xf2, 0xe4, 0x05, 0x38, 0x40, 0x4e, 0x4f, 0xdc, 0x96, 0x76, 0x60, + 0xb6, 0x3a, 0x2d, 0xc6, 0x11, 0x47, 0xe4, 0xaa, 0xac, 0x18, 0x07, 0x70, 0x56, 0x95, 0x7b, 0x72, + 0x32, 0x45, 0x4a, 0xae, 0x2a, 0xf2, 0x99, 0x07, 0x70, 0xf4, 0x12, 0x94, 0x5b, 0xda, 0x41, 0xa3, + 0xe3, 0x36, 0x89, 0xb0, 0x58, 0xe6, 0xcb, 0x78, 0x1d, 0xdf, 0xb4, 0x16, 0xa8, 0xfa, 0xef, 0xbb, + 0x0b, 0x75, 0xdb, 0xbf, 0xe3, 0x36, 0x7c, 0x37, 0xcc, 0xe1, 0xb0, 0x26, 0xb0, 0xe0, 0x10, 0x1f, + 0xb2, 0x60, 0xba, 0xa5, 0x1d, 0x6c, 0xd9, 0x5a, 0x98, 0x76, 0x79, 0xa2, 0x20, 0x05, 0x76, 0x55, + 0xbc, 0x16, 0xc3, 0x85, 0x13, 0xb8, 0x33, 0x6e, 0xa5, 0x27, 0xcf, 0xea, 0x56, 0x7a, 0x31, 0x7c, + 0x1b, 0xc3, 0xf5, 0xb6, 0x07, 0xb3, 0x9e, 0xda, 0xf4, 0x7e, 0xf7, 0xf2, 0x72, 0xf8, 0xee, 0x65, + 0xba, 0xf8, 0xb5, 0x4e, 0x8f, 0x37, 0x2f, 0x1d, 0x98, 0xa0, 0x12, 0x36, 0x2f, 0xa5, 0x8a, 0x55, + 0x61, 0xb3, 0x62, 0x2d, 0x44, 0x23, 0xa5, 0xf1, 0x8b, 0x50, 0x63, 0x99, 0x0e, 0xba, 0xc3, 0xd3, + 0xf2, 0x5a, 0xc4, 0x8f, 0xaa, 0x30, 0x85, 0x7e, 0x86, 0x5b, 0x8e, 0x83, 0x2c, 0xba, 0xa9, 0x0a, + 0x38, 0xbb, 0x5d, 0x14, 0xbf, 0x61, 0x36, 0x3b, 0x7e, 0x03, 0xfa, 0xe5, 0x2c, 0x1b, 0x24, 0x2a, + 0xfe, 0x8e, 0x8f, 0xf3, 0x86, 0xc2, 0x96, 0xc8, 0xdf, 0x57, 0x60, 0xae, 0x95, 0x93, 0xef, 0x4e, + 0x98, 0x46, 0x37, 0x07, 0xe0, 0x0f, 0xb9, 0x39, 0xf4, 0x96, 0x1e, 0x3d, 0xea, 0x56, 0x8e, 0xcd, + 0xb4, 0x87, 0x73, 0xfb, 0x36, 0xe8, 0x8b, 0xe5, 0x41, 0x22, 0xc8, 0xfd, 0xa6, 0x02, 0x33, 0xc9, + 0x43, 0x40, 0xce, 0x24, 0xac, 0x9c, 0x6d, 0x26, 0x61, 0xc9, 0xc7, 0xa4, 0xd4, 0xc3, 0xc7, 0xe4, + 0x59, 0xb8, 0x92, 0xbd, 0x36, 0xa8, 0x44, 0xc6, 0x32, 0x77, 0x0b, 0x4d, 0x28, 0x4a, 0x57, 0x42, + 0x0b, 0x31, 0x87, 0xa9, 0x9f, 0x84, 0x64, 0xcc, 0x4f, 0xf4, 0x0a, 0x8c, 0x7b, 0xde, 0x2e, 0x8f, + 0x4f, 0x27, 0x3e, 0xb2, 0x98, 0x0a, 0x1c, 0x04, 0xb9, 0x13, 0xcf, 0xf9, 0x82, 0x9f, 0x38, 0x42, + 0xbf, 0xf4, 0xe2, 0x77, 0x7f, 0x7c, 0xed, 0x6d, 0xdf, 0xff, 0xf1, 0xb5, 0xb7, 0xfd, 0xf0, 0xc7, + 0xd7, 0xde, 0xf6, 0x8b, 0x47, 0xd7, 0x94, 0xef, 0x1e, 0x5d, 0x53, 0xbe, 0x7f, 0x74, 0x4d, 0xf9, + 0xe1, 0xd1, 0x35, 0xe5, 0xbf, 0x1e, 0x5d, 0x53, 0xbe, 0xfc, 0xdf, 0xae, 0xbd, 0xed, 0xa5, 0x27, + 0x23, 0xea, 0x37, 0x02, 0xa2, 0xd1, 0x3f, 0xed, 0xbd, 0xe6, 0x0d, 0x4a, 0x3d, 0x78, 0x56, 0xc3, + 0xa8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xb2, 0x05, 0xe4, 0xdb, 0xd6, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -8031,6 +8035,16 @@ func (m *KubeAPIServerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.DefaultUnreachableTolerationSeconds != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultUnreachableTolerationSeconds)) + i-- + dAtA[i] = 0x78 + } + if m.DefaultNotReadyTolerationSeconds != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultNotReadyTolerationSeconds)) + i-- + dAtA[i] = 0x70 + } if m.Logging != nil { { size, err := m.Logging.MarshalToSizedBuffer(dAtA[:i]) @@ -15484,6 +15498,12 @@ func (m *KubeAPIServerConfig) Size() (n int) { l = m.Logging.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.DefaultNotReadyTolerationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DefaultNotReadyTolerationSeconds)) + } + if m.DefaultUnreachableTolerationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DefaultUnreachableTolerationSeconds)) + } return n } @@ -18543,6 +18563,8 @@ func (this *KubeAPIServerConfig) String() string { `EnableAnonymousAuthentication:` + valueToStringGenerated(this.EnableAnonymousAuthentication) + `,`, `EventTTL:` + strings.Replace(fmt.Sprintf("%v", this.EventTTL), "Duration", "v11.Duration", 1) + `,`, `Logging:` + strings.Replace(this.Logging.String(), "KubeAPIServerLogging", "KubeAPIServerLogging", 1) + `,`, + `DefaultNotReadyTolerationSeconds:` + valueToStringGenerated(this.DefaultNotReadyTolerationSeconds) + `,`, + `DefaultUnreachableTolerationSeconds:` + valueToStringGenerated(this.DefaultUnreachableTolerationSeconds) + `,`, `}`, }, "") return s @@ -28461,6 +28483,46 @@ func (m *KubeAPIServerConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultNotReadyTolerationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultNotReadyTolerationSeconds = &v + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultUnreachableTolerationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultUnreachableTolerationSeconds = &v default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/core/v1beta1/generated.proto b/pkg/apis/core/v1beta1/generated.proto index 26dcb344610..2b8d164e40b 100644 --- a/pkg/apis/core/v1beta1/generated.proto +++ b/pkg/apis/core/v1beta1/generated.proto @@ -886,6 +886,20 @@ message KubeAPIServerConfig { // Logging contains configuration for the log level and HTTP access logs. // +optional optional KubeAPIServerLogging logging = 13; + + // DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + optional int64 defaultNotReadyTolerationSeconds = 14; + + // DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + optional int64 defaultUnreachableTolerationSeconds = 15; } // KubeAPIServerLogging contains configuration for the logs level and http access logs @@ -926,6 +940,13 @@ message KubeControllerManagerConfig { optional int32 nodeCIDRMaskSize = 3; // PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m. + // + // Deprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated + // in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. + // The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint + // based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, + // instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and + // `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`. // +optional optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration podEvictionTimeout = 4; @@ -1236,8 +1257,9 @@ message Kubernetes { // +optional optional VerticalPodAutoscaler verticalPodAutoscaler = 9; - // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster - // (default: true). + // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. + // Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. + // Starting Kubernetes 1.27 the field will be locked to false. // +optional optional bool enableStaticTokenKubeconfig = 10; } diff --git a/pkg/apis/core/v1beta1/types_shoot.go b/pkg/apis/core/v1beta1/types_shoot.go index 8e473cd7737..576482088bb 100644 --- a/pkg/apis/core/v1beta1/types_shoot.go +++ b/pkg/apis/core/v1beta1/types_shoot.go @@ -539,8 +539,9 @@ type Kubernetes struct { // VerticalPodAutoscaler contains the configuration flags for the Kubernetes vertical pod autoscaler. // +optional VerticalPodAutoscaler *VerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty" protobuf:"bytes,9,opt,name=verticalPodAutoscaler"` - // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster - // (default: true). + // EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. + // Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. + // Starting Kubernetes 1.27 the field will be locked to false. // +optional EnableStaticTokenKubeconfig *bool `json:"enableStaticTokenKubeconfig,omitempty" protobuf:"varint,10,opt,name=enableStaticTokenKubeconfig"` } @@ -715,6 +716,18 @@ type KubeAPIServerConfig struct { // Logging contains configuration for the log level and HTTP access logs. // +optional Logging *KubeAPIServerLogging `json:"logging,omitempty" protobuf:"bytes,13,opt,name=logging"` + // DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + DefaultNotReadyTolerationSeconds *int64 `json:"defaultNotReadyTolerationSeconds,omitempty" protobuf:"varint,14,opt,name=defaultNotReadyTolerationSeconds"` + // DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). + // The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. + // Defaults to 300. + // +optional + DefaultUnreachableTolerationSeconds *int64 `json:"defaultUnreachableTolerationSeconds,omitempty" protobuf:"varint,15,opt,name=defaultUnreachableTolerationSeconds"` } // KubeAPIServerLogging contains configuration for the logs level and http access logs @@ -881,6 +894,13 @@ type KubeControllerManagerConfig struct { // +optional NodeCIDRMaskSize *int32 `json:"nodeCIDRMaskSize,omitempty" protobuf:"varint,3,opt,name=nodeCIDRMaskSize"` // PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m. + // + // Deprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated + // in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. + // The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint + // based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, + // instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and + // `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`. // +optional PodEvictionTimeout *metav1.Duration `json:"podEvictionTimeout,omitempty" protobuf:"bytes,4,opt,name=podEvictionTimeout"` // NodeMonitorGracePeriod defines the grace period before an unresponsive node is marked unhealthy. diff --git a/pkg/apis/core/v1beta1/zz_generated.conversion.go b/pkg/apis/core/v1beta1/zz_generated.conversion.go index 985f804dfcb..54c5025833a 100644 --- a/pkg/apis/core/v1beta1/zz_generated.conversion.go +++ b/pkg/apis/core/v1beta1/zz_generated.conversion.go @@ -2995,6 +2995,8 @@ func autoConvert_v1beta1_KubeAPIServerConfig_To_core_KubeAPIServerConfig(in *Kub out.EnableAnonymousAuthentication = (*bool)(unsafe.Pointer(in.EnableAnonymousAuthentication)) out.EventTTL = (*metav1.Duration)(unsafe.Pointer(in.EventTTL)) out.Logging = (*core.KubeAPIServerLogging)(unsafe.Pointer(in.Logging)) + out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) + out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) return nil } @@ -3029,6 +3031,8 @@ func autoConvert_core_KubeAPIServerConfig_To_v1beta1_KubeAPIServerConfig(in *cor out.EnableAnonymousAuthentication = (*bool)(unsafe.Pointer(in.EnableAnonymousAuthentication)) out.EventTTL = (*metav1.Duration)(unsafe.Pointer(in.EventTTL)) out.Logging = (*KubeAPIServerLogging)(unsafe.Pointer(in.Logging)) + out.DefaultNotReadyTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultNotReadyTolerationSeconds)) + out.DefaultUnreachableTolerationSeconds = (*int64)(unsafe.Pointer(in.DefaultUnreachableTolerationSeconds)) return nil } diff --git a/pkg/apis/core/v1beta1/zz_generated.deepcopy.go b/pkg/apis/core/v1beta1/zz_generated.deepcopy.go index 37af7e43257..1bcd96740ca 100644 --- a/pkg/apis/core/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/core/v1beta1/zz_generated.deepcopy.go @@ -1614,6 +1614,16 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(KubeAPIServerLogging) (*in).DeepCopyInto(*out) } + if in.DefaultNotReadyTolerationSeconds != nil { + in, out := &in.DefaultNotReadyTolerationSeconds, &out.DefaultNotReadyTolerationSeconds + *out = new(int64) + **out = **in + } + if in.DefaultUnreachableTolerationSeconds != nil { + in, out := &in.DefaultUnreachableTolerationSeconds, &out.DefaultUnreachableTolerationSeconds + *out = new(int64) + **out = **in + } return } diff --git a/pkg/apis/core/validation/shoot.go b/pkg/apis/core/validation/shoot.go index 592ec7716ba..801b3ebbfe9 100644 --- a/pkg/apis/core/validation/shoot.go +++ b/pkg/apis/core/validation/shoot.go @@ -763,6 +763,13 @@ func validateKubernetes(kubernetes core.Kubernetes, dockerConfigured, shootHasDe allErrs = append(allErrs, ValidateKubeAPIServerLogging(kubeAPIServer.Logging, fldPath.Child("kubeAPIServer", "logging"))...) + if defaultNotReadyTolerationSeconds := kubeAPIServer.DefaultNotReadyTolerationSeconds; defaultNotReadyTolerationSeconds != nil { + allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*defaultNotReadyTolerationSeconds), fldPath.Child("kubeAPIServer", "defaultNotReadyTolerationSeconds"))...) + } + if defaultUnreachableTolerationSeconds := kubeAPIServer.DefaultUnreachableTolerationSeconds; defaultUnreachableTolerationSeconds != nil { + allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*defaultUnreachableTolerationSeconds), fldPath.Child("kubeAPIServer", "defaultUnreachableTolerationSeconds"))...) + } + if kubeAPIServer.Requests != nil { const maxMaxNonMutatingRequestsInflight = 800 if v := kubeAPIServer.Requests.MaxNonMutatingInflight; v != nil { diff --git a/pkg/apis/core/validation/shoot_test.go b/pkg/apis/core/validation/shoot_test.go index d735c1c4c1a..e0509f04aab 100644 --- a/pkg/apis/core/validation/shoot_test.go +++ b/pkg/apis/core/validation/shoot_test.go @@ -1734,7 +1734,7 @@ var _ = Describe("Shoot Validation Tests", func() { }) Context("service account config", func() { - It("should not allow too specify a negative max token duration", func() { + It("should not allow to specify a negative max token duration", func() { shoot.Spec.Kubernetes.KubeAPIServer.ServiceAccountConfig = &core.ServiceAccountConfig{ MaxTokenExpiration: &metav1.Duration{Duration: -1}, } @@ -1784,7 +1784,7 @@ var _ = Describe("Shoot Validation Tests", func() { Expect(errorList).To(BeEmpty()) }) - It("should not allow too specify multiple issuers if kubernetes is lower than 1.22", func() { + It("should not allow to specify multiple issuers if kubernetes is lower than 1.22", func() { shoot.Spec.Kubernetes.Version = "1.21.9" shoot.Spec.Kubernetes.KubeAPIServer.ServiceAccountConfig = &core.ServiceAccountConfig{ Issuer: pointer.String("issuer"), @@ -1800,7 +1800,7 @@ var _ = Describe("Shoot Validation Tests", func() { }) }) - It("should not allow too specify a negative event ttl duration", func() { + It("should not allow to specify a negative event ttl duration", func() { shoot.Spec.Kubernetes.KubeAPIServer.EventTTL = &metav1.Duration{Duration: -1} errorList := ValidateShoot(shoot) @@ -1811,7 +1811,7 @@ var _ = Describe("Shoot Validation Tests", func() { })))) }) - It("should not allow too specify an event ttl duration longer than 7d", func() { + It("should not allow to specify an event ttl duration longer than 7d", func() { shoot.Spec.Kubernetes.KubeAPIServer.EventTTL = &metav1.Duration{Duration: time.Hour * 24 * 8} errorList := ValidateShoot(shoot) @@ -1822,6 +1822,44 @@ var _ = Describe("Shoot Validation Tests", func() { })))) }) + It("should not allow to specify a negative defaultNotReadyTolerationSeconds", func() { + shoot.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(-1) + + errorList := ValidateShoot(shoot) + + Expect(errorList).To(ConsistOf(PointTo(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(field.ErrorTypeInvalid), + "Field": Equal("spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds"), + })))) + }) + + It("should allow to specify a valid defaultNotReadyTolerationSeconds", func() { + shoot.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(120) + + errorList := ValidateShoot(shoot) + + Expect(errorList).To(BeEmpty()) + }) + + It("should not allow to specify a negative defaultUnreachableTolerationSeconds", func() { + shoot.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(-1) + + errorList := ValidateShoot(shoot) + + Expect(errorList).To(ConsistOf(PointTo(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(field.ErrorTypeInvalid), + "Field": Equal("spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds"), + })))) + }) + + It("should allow to specify a valid defaultUnreachableTolerationSeconds", func() { + shoot.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(120) + + errorList := ValidateShoot(shoot) + + Expect(errorList).To(BeEmpty()) + }) + Context("kubernetes.allowPrivilegedContainers field validation", func() { Context("kubernetes version < 1.25", func() { It("should allow creating shoots with this field set", func() { diff --git a/pkg/apis/core/zz_generated.deepcopy.go b/pkg/apis/core/zz_generated.deepcopy.go index a1e05c28cd2..c8388ab3370 100644 --- a/pkg/apis/core/zz_generated.deepcopy.go +++ b/pkg/apis/core/zz_generated.deepcopy.go @@ -1768,6 +1768,16 @@ func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { *out = new(KubeAPIServerLogging) (*in).DeepCopyInto(*out) } + if in.DefaultNotReadyTolerationSeconds != nil { + in, out := &in.DefaultNotReadyTolerationSeconds, &out.DefaultNotReadyTolerationSeconds + *out = new(int64) + **out = **in + } + if in.DefaultUnreachableTolerationSeconds != nil { + in, out := &in.DefaultUnreachableTolerationSeconds, &out.DefaultUnreachableTolerationSeconds + *out = new(int64) + **out = **in + } return } diff --git a/pkg/client/kubernetes/client.go b/pkg/client/kubernetes/client.go index 237d79c6645..75e7b5d9544 100644 --- a/pkg/client/kubernetes/client.go +++ b/pkg/client/kubernetes/client.go @@ -239,6 +239,7 @@ var supportedKubernetesVersions = []string{ "1.23", "1.24", "1.25", + "1.26", } func checkIfSupportedKubernetesVersion(gitVersion string) error { diff --git a/pkg/openapi/openapi_generated.go b/pkg/openapi/openapi_generated.go index b9ae28e2f6f..fbf0c7a4cb3 100644 --- a/pkg/openapi/openapi_generated.go +++ b/pkg/openapi/openapi_generated.go @@ -3480,6 +3480,20 @@ func schema_pkg_apis_core_v1alpha1_KubeAPIServerConfig(ref common.ReferenceCallb Ref: ref("github.com/gardener/gardener/pkg/apis/core/v1alpha1.KubeAPIServerLogging"), }, }, + "defaultNotReadyTolerationSeconds": { + SchemaProps: spec.SchemaProps{ + Description: "DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. Defaults to 300.", + Type: []string{"integer"}, + Format: "int64", + }, + }, + "defaultUnreachableTolerationSeconds": { + SchemaProps: spec.SchemaProps{ + Description: "DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. Defaults to 300.", + Type: []string{"integer"}, + Format: "int64", + }, + }, }, }, }, @@ -3580,7 +3594,7 @@ func schema_pkg_apis_core_v1alpha1_KubeControllerManagerConfig(ref common.Refere }, "podEvictionTimeout": { SchemaProps: spec.SchemaProps{ - Description: "PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m.", + Description: "PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m.\n\nDeprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -4116,7 +4130,7 @@ func schema_pkg_apis_core_v1alpha1_Kubernetes(ref common.ReferenceCallback) comm }, "enableStaticTokenKubeconfig": { SchemaProps: spec.SchemaProps{ - Description: "EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster (default: true).", + Description: "EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. Starting Kubernetes 1.27 the field will be locked to false.", Type: []string{"boolean"}, Format: "", }, @@ -10851,6 +10865,20 @@ func schema_pkg_apis_core_v1beta1_KubeAPIServerConfig(ref common.ReferenceCallba Ref: ref("github.com/gardener/gardener/pkg/apis/core/v1beta1.KubeAPIServerLogging"), }, }, + "defaultNotReadyTolerationSeconds": { + SchemaProps: spec.SchemaProps{ + Description: "DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. Defaults to 300.", + Type: []string{"integer"}, + Format: "int64", + }, + }, + "defaultUnreachableTolerationSeconds": { + SchemaProps: spec.SchemaProps{ + Description: "DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). The field has effect only when the `DefaultTolerationSeconds` admission plugin is enabled. Defaults to 300.", + Type: []string{"integer"}, + Format: "int64", + }, + }, }, }, }, @@ -10951,7 +10979,7 @@ func schema_pkg_apis_core_v1beta1_KubeControllerManagerConfig(ref common.Referen }, "podEvictionTimeout": { SchemaProps: spec.SchemaProps{ - Description: "PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m.", + Description: "PodEvictionTimeout defines the grace period for deleting pods on failed nodes. Defaults to 2m.\n\nDeprecated: The corresponding kube-controller-manager flag `--pod-eviction-timeout` is deprecated in favor of the kube-apiserver flags `--default-not-ready-toleration-seconds` and `--default-unreachable-toleration-seconds`. The `--pod-eviction-timeout` flag does not have effect when the taint besed eviction is enabled. The taint based eviction is beta (enabled by default) since Kubernetes 1.13 and GA since Kubernetes 1.18. Hence, instead of setting this field, set the `spec.kubernetes.kubeAPIServer.defaultNotReadyTolerationSeconds` and `spec.kubernetes.kubeAPIServer.defaultUnreachableTolerationSeconds`.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -11487,7 +11515,7 @@ func schema_pkg_apis_core_v1beta1_Kubernetes(ref common.ReferenceCallback) commo }, "enableStaticTokenKubeconfig": { SchemaProps: spec.SchemaProps{ - Description: "EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret should be present in garden cluster (default: true).", + Description: "EnableStaticTokenKubeconfig indicates whether static token kubeconfig secret will be created for the Shoot cluster. Defaults to true for Shoots with Kubernetes versions < 1.26. Defaults to false for Shoots with Kubernetes versions >= 1.26. Starting Kubernetes 1.27 the field will be locked to false.", Type: []string{"boolean"}, Format: "", }, diff --git a/pkg/operation/botanist/component/kubeapiserver/deployment.go b/pkg/operation/botanist/component/kubeapiserver/deployment.go index c815ce595d7..4ec2eacf74c 100644 --- a/pkg/operation/botanist/component/kubeapiserver/deployment.go +++ b/pkg/operation/botanist/component/kubeapiserver/deployment.go @@ -481,6 +481,13 @@ func (k *kubeAPIServer) computeKubeAPIServerCommand() []string { out = append(out, fmt.Sprintf("--encryption-provider-config=%s/%s", volumeMountPathEtcdEncryptionConfig, secretETCDEncryptionConfigurationDataKey)) out = append(out, "--external-hostname="+k.values.ExternalHostname) + if k.values.DefaultNotReadyTolerationSeconds != nil { + out = append(out, fmt.Sprintf("--default-not-ready-toleration-seconds=%d", *k.values.DefaultNotReadyTolerationSeconds)) + } + if k.values.DefaultUnreachableTolerationSeconds != nil { + out = append(out, fmt.Sprintf("--default-unreachable-toleration-seconds=%d", *k.values.DefaultUnreachableTolerationSeconds)) + } + if k.values.EventTTL != nil { out = append(out, fmt.Sprintf("--event-ttl=%s", k.values.EventTTL.Duration)) } diff --git a/pkg/operation/botanist/component/kubeapiserver/kube_apiserver.go b/pkg/operation/botanist/component/kubeapiserver/kube_apiserver.go index e8712db9be6..3d85986634d 100644 --- a/pkg/operation/botanist/component/kubeapiserver/kube_apiserver.go +++ b/pkg/operation/botanist/component/kubeapiserver/kube_apiserver.go @@ -130,6 +130,12 @@ type Values struct { Audit *AuditConfig // Autoscaling contains information for configuring autoscaling settings for the kube-apiserver. Autoscaling AutoscalingConfig + // DefaultNotReadyTolerationSeconds indicates the tolerationSeconds of the toleration for notReady:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-not-ready-toleration-seconds`). + DefaultNotReadyTolerationSeconds *int64 + // DefaultUnreachableTolerationSeconds indicates the tolerationSeconds of the toleration for unreachable:NoExecute + // that is added by default to every pod that does not already have such a toleration (flag `--default-unreachable-toleration-seconds`). + DefaultUnreachableTolerationSeconds *int64 // ETCDEncryption contains configuration for the encryption of resources in etcd. ETCDEncryption ETCDEncryptionConfig // EventTTL is the amount of time to retain events. diff --git a/pkg/operation/botanist/component/kubeapiserver/kube_apiserver_test.go b/pkg/operation/botanist/component/kubeapiserver/kube_apiserver_test.go index 4cd78ac93f5..3f2f08fc19b 100644 --- a/pkg/operation/botanist/component/kubeapiserver/kube_apiserver_test.go +++ b/pkg/operation/botanist/component/kubeapiserver/kube_apiserver_test.go @@ -2772,6 +2772,17 @@ rules: )) }) + It("should configure the defaultNotReadyTolerationSeconds and defaultUnreachableTolerationSeconds settings if provided", func() { + kapi = New(kubernetesInterface, namespace, sm, Values{DefaultNotReadyTolerationSeconds: pointer.Int64(120), DefaultUnreachableTolerationSeconds: pointer.Int64(130), Images: images, RuntimeVersion: runtimeVersion, Version: version}) + + deployAndRead() + + Expect(deployment.Spec.Template.Spec.Containers[0].Command).To(ContainElements( + "--default-not-ready-toleration-seconds=120", + "--default-unreachable-toleration-seconds=130", + )) + }) + It("should configure the KubeAPISeverLogging settings if provided", func() { logging := &gardencorev1beta1.KubeAPIServerLogging{ Verbosity: pointer.Int32(3), diff --git a/pkg/operation/botanist/component/kubeapiserver/monitoring.go b/pkg/operation/botanist/component/kubeapiserver/monitoring.go index ff8e9f2ca1c..910f955807e 100644 --- a/pkg/operation/botanist/component/kubeapiserver/monitoring.go +++ b/pkg/operation/botanist/component/kubeapiserver/monitoring.go @@ -24,6 +24,9 @@ import ( v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" ) +// TODO: The etcd_object_counts metric is removed in K8s 1.25 (https://github.com/kubernetes/kubernetes/pull/110337). Remove this metric when we remove support for K8s 1.25. +// TODO: The etcd_db_total_size_in_bytes metric is renamed to apiserver_storage_db_total_size_in_bytes in K8s 1.26 (https://github.com/kubernetes/kubernetes/pull/113310). Remove this metric when we remove support for K8s 1.26. + const ( monitoringPrometheusJobName = "kube-apiserver" @@ -54,6 +57,7 @@ const ( monitoringMetricApiserverWatchEventsTotal = "apiserver_watch_events_total" monitoringMetricApiserverWatchDuration = "apiserver_watch_duration" monitoringMetricEtcdDbTotalSizeInBytes = "etcd_db_total_size_in_bytes" + monitoringMetricApiserverStorageDbTotalSizeInBytes = "apiserver_storage_db_total_size_in_bytes" monitoringMetricEtcdObjectCounts = "etcd_object_counts" monitoringMetricApiserverStorageObjects = "apiserver_storage_objects" monitoringMetricEtcdRequestDurationSeconds = "etcd_request_duration_seconds_.+" @@ -226,6 +230,7 @@ var ( monitoringMetricApiserverWatchEventsSizes, monitoringMetricApiserverWatchEventsTotal, monitoringMetricEtcdDbTotalSizeInBytes, + monitoringMetricApiserverStorageDbTotalSizeInBytes, monitoringMetricEtcdObjectCounts, monitoringMetricApiserverStorageObjects, monitoringMetricEtcdRequestDurationSeconds, diff --git a/pkg/operation/botanist/component/kubeapiserver/monitoring_test.go b/pkg/operation/botanist/component/kubeapiserver/monitoring_test.go index 82567fa6ecc..935334ce8df 100644 --- a/pkg/operation/botanist/component/kubeapiserver/monitoring_test.go +++ b/pkg/operation/botanist/component/kubeapiserver/monitoring_test.go @@ -71,7 +71,7 @@ relabel_configs: metric_relabel_configs: - source_labels: [ __name__ ] action: keep - regex: ^(authentication_attempts|authenticated_user_requests|apiserver_admission_controller_admission_duration_seconds_.+|apiserver_admission_webhook_admission_duration_seconds_.+|apiserver_admission_step_admission_duration_seconds_.+|apiserver_admission_webhook_rejection_count|apiserver_audit_event_total|apiserver_audit_error_total|apiserver_audit_requests_rejected_total|apiserver_latency_seconds|apiserver_crd_webhook_conversion_duration_seconds_.+|apiserver_current_inflight_requests|apiserver_current_inqueue_requests|apiserver_response_sizes_.+|apiserver_registered_watchers|apiserver_request_duration_seconds_.+|apiserver_request_terminations_total|apiserver_request_total|apiserver_request_count|apiserver_storage_transformation_duration_seconds_.+|apiserver_storage_transformation_operations_total|apiserver_init_events_total|apiserver_watch_events_sizes_.+|apiserver_watch_events_total|etcd_db_total_size_in_bytes|etcd_object_counts|apiserver_storage_objects|etcd_request_duration_seconds_.+|go_.+|process_max_fds|process_open_fds|watch_cache_capacity_increase_total|watch_cache_capacity_decrease_total|watch_cache_capacity|apiserver_cache_list_.+|apiserver_storage_list_.+)$ + regex: ^(authentication_attempts|authenticated_user_requests|apiserver_admission_controller_admission_duration_seconds_.+|apiserver_admission_webhook_admission_duration_seconds_.+|apiserver_admission_step_admission_duration_seconds_.+|apiserver_admission_webhook_rejection_count|apiserver_audit_event_total|apiserver_audit_error_total|apiserver_audit_requests_rejected_total|apiserver_latency_seconds|apiserver_crd_webhook_conversion_duration_seconds_.+|apiserver_current_inflight_requests|apiserver_current_inqueue_requests|apiserver_response_sizes_.+|apiserver_registered_watchers|apiserver_request_duration_seconds_.+|apiserver_request_terminations_total|apiserver_request_total|apiserver_request_count|apiserver_storage_transformation_duration_seconds_.+|apiserver_storage_transformation_operations_total|apiserver_init_events_total|apiserver_watch_events_sizes_.+|apiserver_watch_events_total|etcd_db_total_size_in_bytes|apiserver_storage_db_total_size_in_bytes|etcd_object_counts|apiserver_storage_objects|etcd_request_duration_seconds_.+|go_.+|process_max_fds|process_open_fds|watch_cache_capacity_increase_total|watch_cache_capacity_decrease_total|watch_cache_capacity|apiserver_cache_list_.+|apiserver_storage_list_.+)$ ` expectedAlertingRule = `groups: diff --git a/pkg/operation/botanist/component/kubescheduler/kube_scheduler_test.go b/pkg/operation/botanist/component/kubescheduler/kube_scheduler_test.go index 52a2ffab5f9..4ca609a8311 100644 --- a/pkg/operation/botanist/component/kubescheduler/kube_scheduler_test.go +++ b/pkg/operation/botanist/component/kubescheduler/kube_scheduler_test.go @@ -596,6 +596,8 @@ subjects: Entry("kubernetes 1.24 w/ full config", "1.24.1", configFull, "testdata/component-config-1.23-bin-packing.yaml"), Entry("kubernetes 1.25 w/o config", "1.25.0", configEmpty, "testdata/component-config-1.25.yaml"), Entry("kubernetes 1.25 w/ full config", "1.25.0", configFull, "testdata/component-config-1.25-bin-packing.yaml"), + Entry("kubernetes 1.26 w/o config", "1.26.0", configEmpty, "testdata/component-config-1.25.yaml"), + Entry("kubernetes 1.26 w/ full config", "1.26.0", configFull, "testdata/component-config-1.25-bin-packing.yaml"), ) }) diff --git a/pkg/operation/botanist/component/shootsystem/shootsystem.go b/pkg/operation/botanist/component/shootsystem/shootsystem.go index 6cf6a929e20..53d110f69e9 100644 --- a/pkg/operation/botanist/component/shootsystem/shootsystem.go +++ b/pkg/operation/botanist/component/shootsystem/shootsystem.go @@ -190,6 +190,11 @@ func (s *shootSystem) getServiceAccountNamesToInvalidate() []string { ) } + if versionutils.ConstraintK8sGreaterEqual126.Check(s.values.Shoot.KubernetesVersion) { + kubeControllerManagerServiceAccountNames = append(kubeControllerManagerServiceAccountNames, + "resource-claim-controller") + } + return append(kubeControllerManagerServiceAccountNames, "default") } diff --git a/pkg/operation/botanist/component/shootsystem/shootsystem_test.go b/pkg/operation/botanist/component/shootsystem/shootsystem_test.go index 680e22c5d47..36f23c472ee 100644 --- a/pkg/operation/botanist/component/shootsystem/shootsystem_test.go +++ b/pkg/operation/botanist/component/shootsystem/shootsystem_test.go @@ -255,6 +255,19 @@ metadata: } }) }) + + Context("k8s >= 1.26", func() { + BeforeEach(func() { + values.Shoot.KubernetesVersion = semver.MustParse("1.26.4") + component = New(c, namespace, values) + }) + + It("should successfully deploy all resources", func() { + for _, name := range append(defaultKCMControllerSANames, "default", "endpointslicemirroring-controller", "ephemeral-volume-controller", "storage-version-garbage-collector", "service-controller", "route-controller", "node-controller", "resource-claim-controller") { + Expect(string(managedResourceSecret.Data["serviceaccount__kube-system__"+name+".yaml"])).To(Equal(serviceAccountYAMLFor(name)), name) + } + }) + }) }) Context("shoot-info ConfigMap", func() { diff --git a/pkg/operation/botanist/kubeapiserver.go b/pkg/operation/botanist/kubeapiserver.go index a19d838b7d0..39efd348fc7 100644 --- a/pkg/operation/botanist/kubeapiserver.go +++ b/pkg/operation/botanist/kubeapiserver.go @@ -92,17 +92,19 @@ func (b *Botanist) DefaultKubeAPIServer(ctx context.Context) (kubeapiserver.Inte var ( apiServerConfig = b.Shoot.GetInfo().Spec.Kubernetes.KubeAPIServer - enabledAdmissionPlugins = kubernetesutils.GetAdmissionPluginsForVersion(b.Shoot.GetInfo().Spec.Kubernetes.Version) - disabledAdmissionPlugins []gardencorev1beta1.AdmissionPlugin - apiAudiences = []string{"kubernetes", "gardener"} - auditConfig *kubeapiserver.AuditConfig - eventTTL *metav1.Duration - featureGates map[string]bool - oidcConfig *gardencorev1beta1.OIDCConfig - requests *gardencorev1beta1.KubeAPIServerRequests - runtimeConfig map[string]bool - watchCacheSizes *gardencorev1beta1.WatchCacheSizes - logging *gardencorev1beta1.KubeAPIServerLogging + enabledAdmissionPlugins = kubernetesutils.GetAdmissionPluginsForVersion(b.Shoot.GetInfo().Spec.Kubernetes.Version) + disabledAdmissionPlugins []gardencorev1beta1.AdmissionPlugin + apiAudiences = []string{"kubernetes", "gardener"} + auditConfig *kubeapiserver.AuditConfig + defaultNotReadyTolerationSeconds *int64 + defaultUnreachableTolerationSeconds *int64 + eventTTL *metav1.Duration + featureGates map[string]bool + oidcConfig *gardencorev1beta1.OIDCConfig + requests *gardencorev1beta1.KubeAPIServerRequests + runtimeConfig map[string]bool + watchCacheSizes *gardencorev1beta1.WatchCacheSizes + logging *gardencorev1beta1.KubeAPIServerLogging ) if apiServerConfig != nil { @@ -126,6 +128,8 @@ func (b *Botanist) DefaultKubeAPIServer(ctx context.Context) (kubeapiserver.Inte return nil, err } + defaultNotReadyTolerationSeconds = apiServerConfig.DefaultNotReadyTolerationSeconds + defaultUnreachableTolerationSeconds = apiServerConfig.DefaultUnreachableTolerationSeconds eventTTL = apiServerConfig.EventTTL featureGates = apiServerConfig.FeatureGates oidcConfig = apiServerConfig.OIDCConfig @@ -141,23 +145,25 @@ func (b *Botanist) DefaultKubeAPIServer(ctx context.Context) (kubeapiserver.Inte b.Shoot.SeedNamespace, b.SecretsManager, kubeapiserver.Values{ - EnabledAdmissionPlugins: enabledAdmissionPlugins, - DisabledAdmissionPlugins: disabledAdmissionPlugins, - AnonymousAuthenticationEnabled: v1beta1helper.ShootWantsAnonymousAuthentication(b.Shoot.GetInfo().Spec.Kubernetes.KubeAPIServer), - APIAudiences: apiAudiences, - Audit: auditConfig, - Autoscaling: b.computeKubeAPIServerAutoscalingConfig(), - EventTTL: eventTTL, - FeatureGates: featureGates, - Images: images, - IsNodeless: false, - OIDC: oidcConfig, - Requests: requests, - RuntimeConfig: runtimeConfig, - RuntimeVersion: b.Seed.KubernetesVersion, - ServiceNetworkCIDR: b.Shoot.Networks.Services.String(), - StaticTokenKubeconfigEnabled: b.Shoot.GetInfo().Spec.Kubernetes.EnableStaticTokenKubeconfig, - Version: b.Shoot.KubernetesVersion, + EnabledAdmissionPlugins: enabledAdmissionPlugins, + DisabledAdmissionPlugins: disabledAdmissionPlugins, + AnonymousAuthenticationEnabled: v1beta1helper.ShootWantsAnonymousAuthentication(b.Shoot.GetInfo().Spec.Kubernetes.KubeAPIServer), + APIAudiences: apiAudiences, + Audit: auditConfig, + Autoscaling: b.computeKubeAPIServerAutoscalingConfig(), + DefaultNotReadyTolerationSeconds: defaultNotReadyTolerationSeconds, + DefaultUnreachableTolerationSeconds: defaultUnreachableTolerationSeconds, + EventTTL: eventTTL, + FeatureGates: featureGates, + Images: images, + IsNodeless: false, + OIDC: oidcConfig, + Requests: requests, + RuntimeConfig: runtimeConfig, + RuntimeVersion: b.Seed.KubernetesVersion, + ServiceNetworkCIDR: b.Shoot.Networks.Services.String(), + StaticTokenKubeconfigEnabled: b.Shoot.GetInfo().Spec.Kubernetes.EnableStaticTokenKubeconfig, + Version: b.Shoot.KubernetesVersion, VPN: kubeapiserver.VPNConfig{ Enabled: true, PodNetworkCIDR: b.Shoot.Networks.Pods.String(), diff --git a/pkg/operation/botanist/kubeapiserver_test.go b/pkg/operation/botanist/kubeapiserver_test.go index 95ca6d971f1..727000d07c9 100644 --- a/pkg/operation/botanist/kubeapiserver_test.go +++ b/pkg/operation/botanist/kubeapiserver_test.go @@ -941,6 +941,29 @@ usernames: ["admin"] ) }) + Describe("DefaultNotReadyTolerationSeconds and DefaultUnreachableTolerationSeconds", func() { + It("should not set the fields", func() { + kubeAPIServer, err := botanist.DefaultKubeAPIServer(ctx) + Expect(err).NotTo(HaveOccurred()) + Expect(kubeAPIServer.GetValues().DefaultNotReadyTolerationSeconds).To(BeNil()) + Expect(kubeAPIServer.GetValues().DefaultUnreachableTolerationSeconds).To(BeNil()) + }) + + It("should set the fields to the configured values", func() { + shootCopy := botanist.Shoot.GetInfo().DeepCopy() + shootCopy.Spec.Kubernetes.KubeAPIServer = &gardencorev1beta1.KubeAPIServerConfig{ + DefaultNotReadyTolerationSeconds: pointer.Int64(120), + DefaultUnreachableTolerationSeconds: pointer.Int64(130), + } + botanist.Shoot.SetInfo(shootCopy) + + kubeAPIServer, err := botanist.DefaultKubeAPIServer(ctx) + Expect(err).NotTo(HaveOccurred()) + Expect(kubeAPIServer.GetValues().DefaultNotReadyTolerationSeconds).To(PointTo(Equal(int64(120)))) + Expect(kubeAPIServer.GetValues().DefaultUnreachableTolerationSeconds).To(PointTo(Equal(int64(130)))) + }) + }) + Describe("EventTTL", func() { It("should not set the event ttl field", func() { kubeAPIServer, err := botanist.DefaultKubeAPIServer(ctx) diff --git a/pkg/utils/validation/admissionplugins/admissionplugins.go b/pkg/utils/validation/admissionplugins/admissionplugins.go index 992b07e1b21..420ed1fdde3 100644 --- a/pkg/utils/validation/admissionplugins/admissionplugins.go +++ b/pkg/utils/validation/admissionplugins/admissionplugins.go @@ -71,6 +71,7 @@ var admissionPluginsVersionRanges = map[string]*AdmissionPluginVersionRange{ "ServiceAccount": {}, "StorageObjectInUseProtection": {Required: true}, "TaintNodesByCondition": {}, + "ValidatingAdmissionPolicy": {AddedInVersion: "1.26"}, "ValidatingAdmissionWebhook": {Required: true}, } diff --git a/pkg/utils/validation/features/featuregates.go b/pkg/utils/validation/features/featuregates.go index 0d6c2caeda4..90d81b858d7 100644 --- a/pkg/utils/validation/features/featuregates.go +++ b/pkg/utils/validation/features/featuregates.go @@ -40,9 +40,11 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "APIListChunking": {}, "APIPriorityAndFairness": {AddedInVersion: "1.17"}, "APIResponseCompression": {}, + "APISelfSubjectReview": {AddedInVersion: "1.26"}, "APIServerIdentity": {AddedInVersion: "1.20"}, "APIServerTracing": {AddedInVersion: "1.22"}, "AdvancedAuditing": {}, + "AggregatedDiscoveryEndpoint": {AddedInVersion: "1.26"}, "AllowInsecureBackendProxy": {AddedInVersion: "1.17", RemovedInVersion: "1.23"}, "AnyVolumeDataSource": {AddedInVersion: "1.18"}, "AppArmor": {}, @@ -50,7 +52,7 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "BalanceAttachedNodeVolumes": {RemovedInVersion: "1.22"}, "BlockVolume": {RemovedInVersion: "1.21"}, "BoundServiceAccountTokenVolume": {RemovedInVersion: "1.23"}, - "CPUManager": {}, + "CPUManager": {LockedToDefaultInVersion: "1.26"}, "CPUManagerPolicyAlphaOptions": {AddedInVersion: "1.23"}, "CPUManagerPolicyBetaOptions": {AddedInVersion: "1.23"}, "CPUManagerPolicyOptions": {AddedInVersion: "1.22"}, @@ -68,11 +70,11 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "CSIMigrationAzureFileComplete": {AddedInVersion: "1.17", RemovedInVersion: "1.21"}, "CSIMigrationGCE": {Default: true, LockedToDefaultInVersion: "1.25"}, "CSIMigrationGCEComplete": {AddedInVersion: "1.17", RemovedInVersion: "1.21"}, - "CSIMigrationOpenStack": {Default: true, AddedInVersion: "1.14", LockedToDefaultInVersion: "1.24"}, + "CSIMigrationOpenStack": {Default: true, AddedInVersion: "1.14", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "CSIMigrationOpenStackComplete": {AddedInVersion: "1.17", RemovedInVersion: "1.21"}, "CSIMigrationPortworx": {AddedInVersion: "1.23"}, "CSIMigrationRBD": {AddedInVersion: "1.24"}, - "CSIMigrationvSphere": {AddedInVersion: "1.19"}, + "CSIMigrationvSphere": {AddedInVersion: "1.19", LockedToDefaultInVersion: "1.26"}, "CSIMigrationvSphereComplete": {AddedInVersion: "1.19", RemovedInVersion: "1.22"}, "CSINodeExpandSecret": {AddedInVersion: "1.25"}, "CSINodeInfo": {RemovedInVersion: "1.21"}, @@ -81,11 +83,13 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "CSIStorageCapacity": {Default: true, AddedInVersion: "1.19", LockedToDefaultInVersion: "1.24"}, "CSIVolumeFSGroupPolicy": {Default: true, AddedInVersion: "1.19", LockedToDefaultInVersion: "1.23", RemovedInVersion: "1.25"}, "CSIVolumeHealth": {AddedInVersion: "1.21"}, - "CSRDuration": {Default: true, AddedInVersion: "1.22", LockedToDefaultInVersion: "1.24"}, + "CSRDuration": {Default: true, AddedInVersion: "1.22", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "ConfigurableFSGroupPolicy": {Default: true, AddedInVersion: "1.18", LockedToDefaultInVersion: "1.23", RemovedInVersion: "1.25"}, + "ConsistentHTTPGetHandlers": {AddedInVersion: "1.26"}, "ContainerCheckpoint": {AddedInVersion: "1.25"}, "ControllerManagerLeaderMigration": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24"}, // Missing from docu? "CronJobControllerV2": {AddedInVersion: "1.20", RemovedInVersion: "1.23"}, + "CrossNamespaceVolumeDataSource": {AddedInVersion: "1.26"}, "CustomCPUCFSQuotaPeriod": {}, "CustomPodDNS": {RemovedInVersion: "1.16"}, "CustomResourceDefaulting": {RemovedInVersion: "1.18"}, @@ -97,24 +101,26 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "DaemonSetUpdateSurge": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.25"}, // Missing from docu? "DebugContainers": {RemovedInVersion: "1.16"}, // Missing from docu? "DefaultIngressClass": {AddedInVersion: "1.18", RemovedInVersion: "1.20"}, // Missing from docu? - "DefaultPodTopologySpread": {Default: true, AddedInVersion: "1.19", LockedToDefaultInVersion: "1.24"}, - "DelegateFSGroupToCSIDriver": {AddedInVersion: "1.22"}, - "DevicePlugins": {}, + "DefaultPodTopologySpread": {Default: true, AddedInVersion: "1.19", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, + "DelegateFSGroupToCSIDriver": {AddedInVersion: "1.22", LockedToDefaultInVersion: "1.26"}, + "DevicePlugins": {LockedToDefaultInVersion: "1.26"}, "DisableAcceleratorUsageMetrics": {Default: true, AddedInVersion: "1.19", LockedToDefaultInVersion: "1.25"}, "DisableCloudProviders": {AddedInVersion: "1.22"}, "DisableKubeletCloudCredentialProviders": {AddedInVersion: "1.23"}, "DownwardAPIHugePages": {AddedInVersion: "1.20"}, - "DryRun": {}, + "DryRun": {LockedToDefaultInVersion: "1.26"}, "DynamicAuditing": {RemovedInVersion: "1.19"}, - "DynamicKubeletConfig": {}, + "DynamicKubeletConfig": {RemovedInVersion: "1.26"}, + "DynamicResourceAllocation": {AddedInVersion: "1.26"}, "EfficientWatchResumption": {Default: true, AddedInVersion: "1.20", LockedToDefaultInVersion: "1.24"}, "EnableAggregatedDiscoveryTimeout": {AddedInVersion: "1.16", RemovedInVersion: "1.17"}, "EndpointSlice": {Default: true, AddedInVersion: "1.16", LockedToDefaultInVersion: "1.21", RemovedInVersion: "1.25"}, "EndpointSliceNodeName": {Default: true, AddedInVersion: "1.20", LockedToDefaultInVersion: "1.21", RemovedInVersion: "1.25"}, "EndpointSliceProxying": {Default: true, AddedInVersion: "1.18", LockedToDefaultInVersion: "1.22", RemovedInVersion: "1.25"}, - "EndpointSliceTerminatingCondition": {AddedInVersion: "1.20"}, + "EndpointSliceTerminatingCondition": {AddedInVersion: "1.20", LockedToDefaultInVersion: "1.26"}, "EphemeralContainers": {Default: true, AddedInVersion: "1.16", LockedToDefaultInVersion: "1.25"}, "EvenPodsSpread": {AddedInVersion: "1.16", RemovedInVersion: "1.21"}, + "EventedPLEG": {AddedInVersion: "1.26"}, "ExecProbeTimeout": {AddedInVersion: "1.20"}, "ExpandCSIVolumes": {}, "ExpandedDNSConfig": {AddedInVersion: "1.22"}, @@ -146,14 +152,14 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "InTreePluginPortworxUnregister": {AddedInVersion: "1.23"}, "InTreePluginRBDUnregister": {AddedInVersion: "1.23"}, "InTreePluginvSphereUnregister": {AddedInVersion: "1.21"}, // Missing from docu? - "IndexedJob": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24"}, + "IndexedJob": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "IngressClassNamespacedParams": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.23", RemovedInVersion: "1.25"}, "JobMutableNodeSchedulingDirectives": {AddedInVersion: "1.23"}, "JobPodFailurePolicy": {AddedInVersion: "1.25"}, "JobReadyPods": {AddedInVersion: "1.23"}, - "JobTrackingWithFinalizers": {AddedInVersion: "1.22"}, + "JobTrackingWithFinalizers": {AddedInVersion: "1.22", LockedToDefaultInVersion: "1.26"}, "KMSv2": {AddedInVersion: "1.25"}, - "KubeletCredentialProviders": {AddedInVersion: "1.20"}, + "KubeletCredentialProviders": {AddedInVersion: "1.20", LockedToDefaultInVersion: "1.26"}, "KubeletInUserNamespace": {AddedInVersion: "1.22"}, "KubeletPluginsWatcher": {RemovedInVersion: "1.16"}, "KubeletPodResources": {}, @@ -161,6 +167,7 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "KubeletTracing": {AddedInVersion: "1.25"}, "LegacyNodeRoleBehavior": {AddedInVersion: "1.16", RemovedInVersion: "1.22"}, "LegacyServiceAccountTokenNoAutoGeneration": {AddedInVersion: "1.24"}, + "LegacyServiceAccountTokenTracking": {AddedInVersion: "1.26"}, "LocalStorageCapacityIsolation": {Default: true, LockedToDefaultInVersion: "1.25"}, "LocalStorageCapacityIsolationFSQuotaMonitoring": {}, "LogarithmicScaleDown": {AddedInVersion: "1.21"}, @@ -170,7 +177,8 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "MemoryQoS": {AddedInVersion: "1.22"}, "MigrationRBD": {AddedInVersion: "1.23", RemovedInVersion: "1.24"}, "MinDomainsInPodTopologySpread": {AddedInVersion: "1.24"}, - "MixedProtocolLBService": {AddedInVersion: "1.20"}, + "MinimizeIPTablesRestore": {AddedInVersion: "1.26"}, + "MixedProtocolLBService": {AddedInVersion: "1.20", LockedToDefaultInVersion: "1.26"}, "MountContainers": {RemovedInVersion: "1.17"}, "MultiCIDRRangeAllocator": {AddedInVersion: "1.25"}, "NamespaceDefaultLabelName": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.22", RemovedInVersion: "1.24"}, @@ -180,23 +188,25 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "NodeInclusionPolicyInPodTopologySpread": {AddedInVersion: "1.25"}, "NodeLease": {RemovedInVersion: "1.23"}, "NodeOutOfServiceVolumeDetach": {AddedInVersion: "1.24"}, - "NonPreemptingPriority": {Default: true, LockedToDefaultInVersion: "1.24"}, + "NonPreemptingPriority": {Default: true, LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "NodeSwap": {AddedInVersion: "1.22"}, "OpenAPIEnums": {AddedInVersion: "1.23"}, "OpenAPIV3": {AddedInVersion: "1.23"}, + "PDBUnhealthyPodEvictionPolicy": {AddedInVersion: "1.26"}, "PersistentLocalVolumes": {RemovedInVersion: "1.17"}, "PodAndContainerStatsFromCRI": {AddedInVersion: "1.23"}, - "PodAffinityNamespaceSelector": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24"}, + "PodAffinityNamespaceSelector": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "PodDeletionCost": {AddedInVersion: "1.21"}, "PodDisruptionBudget": {Default: true, AddedInVersion: "1.17", LockedToDefaultInVersion: "1.21", RemovedInVersion: "1.25"}, // Docu says 1.3? "PodDisruptionConditions": {AddedInVersion: "1.25"}, "PodHasNetworkCondition": {AddedInVersion: "1.25"}, - "PodOverhead": {Default: true, AddedInVersion: "1.16", LockedToDefaultInVersion: "1.24"}, + "PodOverhead": {Default: true, AddedInVersion: "1.16", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "PodPriority": {RemovedInVersion: "1.18"}, "PodReadinessGates": {RemovedInVersion: "1.16"}, + "PodSchedulingReadiness": {AddedInVersion: "1.26"}, "PodSecurity": {Default: true, AddedInVersion: "1.22", LockedToDefaultInVersion: "1.25"}, "PodShareProcessNamespace": {RemovedInVersion: "1.19"}, - "PreferNominatedNode": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24"}, // Missing from docu? + "PreferNominatedNode": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, // Missing from docu? "ProbeTerminationGracePeriod": {AddedInVersion: "1.21"}, "ProcMountType": {}, "ProxyTerminatingEndpoints": {AddedInVersion: "1.22"}, @@ -219,14 +229,14 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "SeccompDefault": {AddedInVersion: "1.22"}, "SelectorIndex": {Default: true, AddedInVersion: "1.18", LockedToDefaultInVersion: "1.20", RemovedInVersion: "1.25"}, // Missing from docu? "SELinuxMountReadWriteOncePod": {AddedInVersion: "1.25"}, - "ServerSideApply": {}, + "ServerSideApply": {LockedToDefaultInVersion: "1.26"}, "ServerSideFieldValidation": {AddedInVersion: "1.23"}, "ServiceAccountIssuerDiscovery": {AddedInVersion: "1.18", RemovedInVersion: "1.23"}, "ServiceAppProtocol": {AddedInVersion: "1.18", RemovedInVersion: "1.22"}, - "ServiceInternalTrafficPolicy": {AddedInVersion: "1.21"}, - "ServiceIPStaticSubrange": {AddedInVersion: "1.24"}, - "ServiceLBNodePortControl": {Default: true, AddedInVersion: "1.20", LockedToDefaultInVersion: "1.24"}, - "ServiceLoadBalancerClass": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24"}, + "ServiceInternalTrafficPolicy": {AddedInVersion: "1.21", LockedToDefaultInVersion: "1.26"}, + "ServiceIPStaticSubrange": {AddedInVersion: "1.24", LockedToDefaultInVersion: "1.26"}, + "ServiceLBNodePortControl": {Default: true, AddedInVersion: "1.20", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, + "ServiceLoadBalancerClass": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "ServiceLoadBalancerFinalizer": {RemovedInVersion: "1.20"}, "ServiceNodeExclusion": {RemovedInVersion: "1.22"}, "ServiceTopology": {AddedInVersion: "1.17", RemovedInVersion: "1.22"}, @@ -235,6 +245,7 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "StartupProbe": {AddedInVersion: "1.16", RemovedInVersion: "1.23"}, "StatefulSetAutoDeletePVC": {AddedInVersion: "1.23"}, "StatefulSetMinReadySeconds": {Default: true, AddedInVersion: "1.22", LockedToDefaultInVersion: "1.25"}, + "StatefulSetStartOrdinal": {AddedInVersion: "1.26"}, "StorageObjectInUseProtection": {Default: true, LockedToDefaultInVersion: "1.23", RemovedInVersion: "1.25"}, "StorageVersionAPI": {AddedInVersion: "1.20"}, "StorageVersionHash": {}, @@ -242,7 +253,7 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "SupportIPVSProxyMode": {RemovedInVersion: "1.20"}, "SupportNodePidsLimit": {RemovedInVersion: "1.23"}, "SupportPodPidsLimit": {RemovedInVersion: "1.23"}, - "SuspendJob": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24"}, + "SuspendJob": {Default: true, AddedInVersion: "1.21", LockedToDefaultInVersion: "1.24", RemovedInVersion: "1.26"}, "Sysctls": {RemovedInVersion: "1.23"}, "TTLAfterFinished": {Default: true, LockedToDefaultInVersion: "1.23", RemovedInVersion: "1.25"}, "TaintBasedEvictions": {RemovedInVersion: "1.20"}, @@ -251,8 +262,12 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "TokenRequestProjection": {RemovedInVersion: "1.21"}, "TopologyAwareHints": {AddedInVersion: "1.21"}, "TopologyManager": {AddedInVersion: "1.16"}, + "TopologyManagerPolicyAlphaOptions": {AddedInVersion: "1.26"}, + "TopologyManagerPolicyBetaOptions": {AddedInVersion: "1.26"}, + "TopologyManagerPolicyOptions": {AddedInVersion: "1.26"}, "UserNamespacesStatelessPodsSupport": {AddedInVersion: "1.25"}, "ValidateProxyRedirects": {RemovedInVersion: "1.24"}, + "ValidatingAdmissionPolicy": {AddedInVersion: "1.26"}, "VolumeCapacityPriority": {AddedInVersion: "1.21"}, "VolumePVCDataSource": {RemovedInVersion: "1.21"}, "VolumeScheduling": {RemovedInVersion: "1.16"}, @@ -265,7 +280,8 @@ var featureGateVersionRanges = map[string]*FeatureGateVersionRange{ "WinOverlay": {}, "WindowsEndpointSliceProxying": {Default: true, AddedInVersion: "1.19", LockedToDefaultInVersion: "1.22", RemovedInVersion: "1.25"}, "WindowsGMSA": {RemovedInVersion: "1.21"}, - "WindowsHostProcessContainers": {AddedInVersion: "1.22"}, + "WindowsHostNetwork": {AddedInVersion: "1.26"}, + "WindowsHostProcessContainers": {AddedInVersion: "1.22", LockedToDefaultInVersion: "1.26"}, "WindowsRunAsUserName": {AddedInVersion: "1.16", RemovedInVersion: "1.21"}, } diff --git a/pkg/utils/version/version.go b/pkg/utils/version/version.go index 57d41423034..6054359d63b 100644 --- a/pkg/utils/version/version.go +++ b/pkg/utils/version/version.go @@ -53,6 +53,8 @@ var ( ConstraintK8sLess125 *semver.Constraints // ConstraintK8sGreaterEqual126 is a version constraint for versions >= 1.26. ConstraintK8sGreaterEqual126 *semver.Constraints + // ConstraintK8sLess126 is a version constraint for versions < 1.26. + ConstraintK8sLess126 *semver.Constraints ) func init() { @@ -87,6 +89,8 @@ func init() { utilruntime.Must(err) ConstraintK8sGreaterEqual126, err = semver.NewConstraint(">= 1.26-0") utilruntime.Must(err) + ConstraintK8sLess126, err = semver.NewConstraint("< 1.26-0") + utilruntime.Must(err) } // CompareVersions returns true if the constraint compared by to diff --git a/pkg/utils/version/version_test.go b/pkg/utils/version/version_test.go index 168ee514dc7..66612cbd57a 100644 --- a/pkg/utils/version/version_test.go +++ b/pkg/utils/version/version_test.go @@ -103,6 +103,11 @@ var _ = Describe("Version", func() { Entry("ConstraintK8sGreaterEqual126, failure", ConstraintK8sGreaterEqual126, semver.MustParse("1.25.0"), BeFalse()), Entry("ConstraintK8sGreaterEqual126, success w/ suffix", ConstraintK8sGreaterEqual126, semver.MustParse("v1.26.0-foo.12"), BeTrue()), Entry("ConstraintK8sGreaterEqual126, failure w/ suffix", ConstraintK8sGreaterEqual126, semver.MustParse("v1.25.0-foo.12"), BeFalse()), + + Entry("ConstraintK8sLess126, success", ConstraintK8sLess126, semver.MustParse("1.25.1"), BeTrue()), + Entry("ConstraintK8sLess126, failure", ConstraintK8sLess126, semver.MustParse("1.26.0"), BeFalse()), + Entry("ConstraintK8sLess126, success w/ suffix", ConstraintK8sLess126, semver.MustParse("v1.25.1-foo.12"), BeTrue()), + Entry("ConstraintK8sLess126, failure w/ suffix", ConstraintK8sLess126, semver.MustParse("v1.26.0-foo.12"), BeFalse()), ) DescribeTable("#CompareVersions", diff --git a/test/e2e/gardener/common.go b/test/e2e/gardener/common.go index 6e51a02a811..804ecca88a0 100644 --- a/test/e2e/gardener/common.go +++ b/test/e2e/gardener/common.go @@ -74,6 +74,7 @@ func DefaultShoot(name string) *gardencorev1beta1.Shoot { SecretBindingName: "local", CloudProfileName: "local", Kubernetes: gardencorev1beta1.Kubernetes{ + // TODO(ialidzhikov): Update to 1.26.0 after the merge of https://github.com/gardener/gardener/pull/7275. Version: "1.25.4", EnableStaticTokenKubeconfig: pointer.Bool(true), Kubelet: &gardencorev1beta1.KubeletConfig{ diff --git a/test/e2e/gardener/shoot/create_update_delete.go b/test/e2e/gardener/shoot/create_update_delete.go index dbe76339b44..e1130278956 100644 --- a/test/e2e/gardener/shoot/create_update_delete.go +++ b/test/e2e/gardener/shoot/create_update_delete.go @@ -42,7 +42,8 @@ var _ = Describe("Shoot Tests", Label("Shoot", "default"), func() { // explicitly use one version below the latest supported minor version so that Kubernetes version update test can be // performed - f.Shoot.Spec.Kubernetes.Version = "1.24.8" + // TODO(ialidzhikov): Update to 1.26.0 after the merge of https://github.com/gardener/gardener/pull/7275. + f.Shoot.Spec.Kubernetes.Version = "1.25.4" // create two additional worker pools which explicitly specify the kubernetes version pool1 := f.Shoot.Spec.Provider.Workers[0] @@ -50,6 +51,7 @@ var _ = Describe("Shoot Tests", Label("Shoot", "default"), func() { pool2.Name += "2" pool2.Kubernetes = &gardencorev1beta1.WorkerKubernetes{Version: &f.Shoot.Spec.Kubernetes.Version} pool3.Name += "3" + // TODO(ialidzhikov): Update to 1.24.8 after the merge of https://github.com/gardener/gardener/pull/7275. pool3.Kubernetes = &gardencorev1beta1.WorkerKubernetes{Version: pointer.String("1.23.6")} f.Shoot.Spec.Provider.Workers = append(f.Shoot.Spec.Provider.Workers, *pool2, *pool3) diff --git a/test/framework/k8s_utils.go b/test/framework/k8s_utils.go index 7e65050615b..e68d4012670 100644 --- a/test/framework/k8s_utils.go +++ b/test/framework/k8s_utils.go @@ -396,15 +396,25 @@ func GetObjectFromSecret(ctx context.Context, k8sClient kubernetes.Interface, na return "", fmt.Errorf("secret %s/%s did not contain object key %q", namespace, secretName, objectKey) } -// NewClientFromServiceAccount returns a kubernetes client for a service account. -func NewClientFromServiceAccount(ctx context.Context, k8sClient kubernetes.Interface, account *corev1.ServiceAccount) (kubernetes.Interface, error) { +// CreateTokenForServiceAccount requests a service account token. +func CreateTokenForServiceAccount(ctx context.Context, k8sClient kubernetes.Interface, serviceAccount *corev1.ServiceAccount, expirationSeconds *int64) (string, error) { tokenRequest := &authenticationv1.TokenRequest{ Spec: authenticationv1.TokenRequestSpec{ - ExpirationSeconds: pointer.Int64(3600), + ExpirationSeconds: expirationSeconds, }, } - token, err := k8sClient.Kubernetes().CoreV1().ServiceAccounts(account.Namespace).CreateToken(ctx, account.Name, tokenRequest, metav1.CreateOptions{}) + result, err := k8sClient.Kubernetes().CoreV1().ServiceAccounts(serviceAccount.Namespace).CreateToken(ctx, serviceAccount.Name, tokenRequest, metav1.CreateOptions{}) + if err != nil { + return "", err + } + + return result.Status.Token, nil +} + +// NewClientFromServiceAccount returns a kubernetes client for a service account. +func NewClientFromServiceAccount(ctx context.Context, k8sClient kubernetes.Interface, serviceAccount *corev1.ServiceAccount) (kubernetes.Interface, error) { + token, err := CreateTokenForServiceAccount(ctx, k8sClient, serviceAccount, pointer.Int64(3600)) if err != nil { return nil, err } @@ -415,7 +425,7 @@ func NewClientFromServiceAccount(ctx context.Context, k8sClient kubernetes.Inter Insecure: false, CAData: k8sClient.RESTConfig().CAData, }, - BearerToken: token.Status.Token, + BearerToken: token, } return kubernetes.NewWithConfig( diff --git a/test/framework/resources/templates/default-shoot.yaml b/test/framework/resources/templates/default-shoot.yaml index 08f564c5b81..7bf6f1d0bfc 100644 --- a/test/framework/resources/templates/default-shoot.yaml +++ b/test/framework/resources/templates/default-shoot.yaml @@ -5,6 +5,12 @@ metadata: namespace: abc spec: kubernetes: + # Enable the static token kubeconfig for the test-machinery integration tests until we figure out + # which test/components need the Shoot kubeconfig that is downloaded to $TM_KUBECONFIG_PATH/shoot.config in the Shoot creation integration test. + # See https://github.com/gardener/gardener/blob/7c63e2a6c5d46f9f1cb676602f864275ab8cab40/test/framework/shootcreationframework.go#L423-L425 + # TODO(ialidzhikov): Remove the enableStaticTokenKubeconfig field after we figure out which tests/components need it + # and let the default gardener-apiserver value to be used. + enableStaticTokenKubeconfig: true kubeAPIServer: enableBasicAuthentication: false dns: {} @@ -28,4 +34,3 @@ spec: kubernetesDashboard: enabled: true authenticationMode: token - diff --git a/test/framework/resources/templates/simple-load-deployment.yaml.tpl b/test/framework/resources/templates/simple-load-deployment.yaml.tpl index 7c504d1c176..cb6796d8a81 100644 --- a/test/framework/resources/templates/simple-load-deployment.yaml.tpl +++ b/test/framework/resources/templates/simple-load-deployment.yaml.tpl @@ -17,10 +17,10 @@ spec: - image: eu.gcr.io/gardener-project/3rd/alpine:3.16.1 name: load command: ["sh", "-c"] - {{ if .nodeName }} - nodeName: {{ .nodeName }} - {{ end }} args: - while true; do echo "testing"; done; securityContext: runAsUser: 1001 + {{ if .nodeName }} + nodeName: {{ .nodeName }} + {{ end }} diff --git a/test/framework/shootframework.go b/test/framework/shootframework.go index 93fa5729dec..a97e0f42eaa 100644 --- a/test/framework/shootframework.go +++ b/test/framework/shootframework.go @@ -25,9 +25,9 @@ import ( v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" "github.com/gardener/gardener/pkg/client/kubernetes" - gardenerutils "github.com/gardener/gardener/pkg/utils/gardener" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/pkg/utils/retry" + "github.com/gardener/gardener/test/utils/shoots/access" "github.com/onsi/ginkgo/v2" appsv1 "k8s.io/api/apps/v1" @@ -156,9 +156,8 @@ func (f *ShootFramework) AddShoot(ctx context.Context, shootName, shootNamespace } var ( - shootClient kubernetes.Interface - shoot = &gardencorev1beta1.Shoot{} - err error + shoot = &gardencorev1beta1.Shoot{} + err error ) if err := f.GardenClient.Client().Get(ctx, client.ObjectKey{Namespace: shootNamespace, Name: shootName}, shoot); err != nil { @@ -190,11 +189,9 @@ func (f *ShootFramework) AddShoot(ctx context.Context, shootName, shootNamespace } if !f.GardenerFramework.Config.SkipAccessingShoot { + var shootClient kubernetes.Interface if err := retry.UntilTimeout(ctx, k8sClientInitPollInterval, k8sClientInitTimeout, func(ctx context.Context) (bool, error) { - shootClient, err = kubernetes.NewClientFromSecret(ctx, f.GardenClient.Client(), shoot.Namespace, shoot.Name+"."+gardenerutils.ShootProjectSecretSuffixKubeconfig, - kubernetes.WithClientOptions(client.Options{Scheme: kubernetes.ShootScheme}), - kubernetes.WithDisabledCachedClient(), - ) + shootClient, err = access.CreateShootClientFromAdminKubeconfig(ctx, f.GardenClient, f.Shoot) if err != nil { return retry.MinorError(fmt.Errorf("could not construct Shoot client: %w", err)) } diff --git a/test/testmachinery/shoots/applications/shoot_app.go b/test/testmachinery/shoots/applications/shoot_app.go index a833f69fa07..14da7dbcb0b 100644 --- a/test/testmachinery/shoots/applications/shoot_app.go +++ b/test/testmachinery/shoots/applications/shoot_app.go @@ -35,15 +35,14 @@ import ( "fmt" "time" - gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" - gardenerutils "github.com/gardener/gardener/pkg/utils/gardener" + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/test/framework" "github.com/gardener/gardener/test/framework/applications" - clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest" - clientcmdv1 "k8s.io/client-go/tools/clientcmd/api/v1" "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/utils/pointer" ) const ( @@ -58,7 +57,7 @@ var _ = ginkgo.Describe("Shoot application testing", func() { f := framework.NewShootFramework(nil) f.Default().Release().CIt("should download shoot kubeconfig successfully", func(ctx context.Context) { - err := framework.DownloadKubeconfig(ctx, f.SeedClient, f.ShootSeedNamespace(), gardencorev1beta1.GardenerName, "") + err := framework.DownloadKubeconfig(ctx, f.SeedClient, f.ShootSeedNamespace(), v1beta1constants.SecretNameGardener, "") framework.ExpectNoError(err) ginkgo.By("Shoot Kubeconfig downloaded successfully from seed") @@ -85,20 +84,20 @@ var _ = ginkgo.Describe("Shoot application testing", func() { f.Default().Release().CIt("Dashboard should be available", func(ctx context.Context) { shoot := f.Shoot if !shoot.Spec.Addons.KubernetesDashboard.Enabled { - ginkgo.Fail("The test requires .spec.addons.kubernetesDashboard.enabled to be be true") + ginkgo.Fail("The test requires .spec.addons.kubernetesDashboard.enabled to be true") } url := fmt.Sprintf("https://api.%s/api/v1/namespaces/%s/services/https:kubernetes-dashboard:/proxy", *f.Shoot.Spec.DNS.Domain, "kubernetes-dashboard") - kubeconfigData, err := framework.GetObjectFromSecret(ctx, f.GardenClient, f.Shoot.Namespace, f.Shoot.Name+"."+gardenerutils.ShootProjectSecretSuffixKubeconfig, framework.KubeconfigSecretKeyName) - framework.ExpectNoError(err) - kubeconfig := &clientcmdv1.Config{} - _, _, err = clientcmdlatest.Codec.Decode([]byte(kubeconfigData), nil, kubeconfig) + serviceAccount := &corev1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{ + Name: v1beta1constants.SecretNameGardener, + Namespace: metav1.NamespaceSystem, + }, + } + token, err := framework.CreateTokenForServiceAccount(ctx, f.ShootClient, serviceAccount, pointer.Int64(3600)) framework.ExpectNoError(err) - Expect(kubeconfig.AuthInfos).To(HaveLen(1)) - Expect(kubeconfig.AuthInfos[0].AuthInfo.Token).NotTo(BeEmpty()) - dashboardToken := kubeconfig.AuthInfos[0].AuthInfo.Token - err = framework.TestHTTPEndpointWithToken(ctx, url, dashboardToken) + err = framework.TestHTTPEndpointWithToken(ctx, url, token) framework.ExpectNoError(err) }, dashboardAvailableTimeout) diff --git a/test/testmachinery/shoots/operations/operations.go b/test/testmachinery/shoots/operations/operations.go index 4b49eb52706..b6477b32642 100644 --- a/test/testmachinery/shoots/operations/operations.go +++ b/test/testmachinery/shoots/operations/operations.go @@ -65,6 +65,7 @@ import ( "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -119,6 +120,10 @@ var _ = ginkgo.Describe("Shoot operation testing", func() { }, reconcileTimeout) f.Beta().Disruptive().CIt("should rotate the kubeconfig for a shoot cluster", func(ctx context.Context) { + if !pointer.BoolDeref(f.Shoot.Spec.Kubernetes.EnableStaticTokenKubeconfig, false) { + ginkgo.Skip("The static token kubeconfig is not enabled for this shoot") + } + ginkgo.By("rotate kubeconfig") var ( secretName = f.Shoot.Name + ".kubeconfig" diff --git a/test/testmachinery/shoots/vpntunnel/vpntunnel.go b/test/testmachinery/shoots/vpntunnel/vpntunnel.go index 620c4ad649a..0cb7dda8da8 100644 --- a/test/testmachinery/shoots/vpntunnel/vpntunnel.go +++ b/test/testmachinery/shoots/vpntunnel/vpntunnel.go @@ -21,11 +21,12 @@ import ( "io" "time" + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/controllerutils" - gardenerutils "github.com/gardener/gardener/pkg/utils/gardener" kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/test/framework" "github.com/gardener/gardener/test/framework/resources/templates" + "github.com/gardener/gardener/test/utils/shoots/access" "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -34,9 +35,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/types" - clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest" - clientcmdv1 "k8s.io/client-go/tools/clientcmd/api/v1" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -77,18 +76,16 @@ var _ = ginkgo.Describe("Shoot vpn tunnel testing", func() { err = f.WaitUntilDeploymentsWithLabelsIsReady(ctx, loggerLabels, namespace, f.ShootClient) framework.ExpectNoError(err) - ginkgo.By("Get kubeconfig and extract token") - kubeconfigData, err := framework.GetObjectFromSecret(ctx, f.GardenClient, f.Shoot.Namespace, f.Shoot.Name+"."+gardenerutils.ShootProjectSecretSuffixKubeconfig, framework.KubeconfigSecretKeyName) - framework.ExpectNoError(err) - - kubeconfig := &clientcmdv1.Config{} - _, _, err = clientcmdlatest.Codec.Decode([]byte(kubeconfigData), nil, kubeconfig) + ginkgo.By("Request ServiceAccount token with cluster-admin privileges") + serviceAccount := &corev1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{ + Name: v1beta1constants.SecretNameGardener, + Namespace: metav1.NamespaceSystem, + }, + } + token, err := framework.CreateTokenForServiceAccount(ctx, f.ShootClient, serviceAccount, pointer.Int64(3600)) framework.ExpectNoError(err) - Expect(kubeconfig.AuthInfos).To(HaveLen(1)) - Expect(kubeconfig.AuthInfos[0].AuthInfo.Token).NotTo(BeEmpty()) - token := kubeconfig.AuthInfos[0].AuthInfo.Token - ginkgo.By("Get the pods matching the logging-pod label") pods := &corev1.PodList{} err = f.ShootClient.Client().List(ctx, pods, client.InNamespace(namespace), client.MatchingLabels{"app": loggerAppLabel}) @@ -143,15 +140,16 @@ var _ = ginkgo.Describe("Shoot vpn tunnel testing", func() { }, cleanupTimeout)) f.Beta().CIt("should copy data to pod", func(ctx context.Context) { - ginkgo.By("Get kubeconfig from garden project namespace") - kubeCfgSecret := &corev1.Secret{} - err := f.GardenClient.Client().Get(ctx, types.NamespacedName{Namespace: f.Shoot.Namespace, Name: f.Shoot.Name + "." + gardenerutils.ShootProjectSecretSuffixKubeconfig}, kubeCfgSecret) + ginkgo.By("Request kubeconfig with cluster-admin privileges") + kubeconfig, err := access.RequestAdminKubeconfigForShoot(ctx, f.GardenClient, f.Shoot, pointer.Int64(3600)) framework.ExpectNoError(err) testSecret := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: copyDeployment, Namespace: namespace}} _, err = controllerutils.GetAndCreateOrMergePatch(ctx, f.ShootClient.Client(), testSecret, func() error { testSecret.Type = corev1.SecretTypeOpaque - testSecret.Data = kubeCfgSecret.Data + testSecret.Data = map[string][]byte{ + "kubeconfig": kubeconfig, + } return nil }) framework.ExpectNoError(err) diff --git a/test/utils/shoots/access/adminkubeconfig.go b/test/utils/shoots/access/adminkubeconfig.go index d179e2b64be..a6d2e119394 100644 --- a/test/utils/shoots/access/adminkubeconfig.go +++ b/test/utils/shoots/access/adminkubeconfig.go @@ -19,6 +19,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/pointer" + "sigs.k8s.io/controller-runtime/pkg/client" authenticationv1alpha1 "github.com/gardener/gardener/pkg/apis/authentication/v1alpha1" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" @@ -28,6 +29,20 @@ import ( // CreateShootClientFromAdminKubeconfig requests an admin kubeconfig and creates a shoot client. func CreateShootClientFromAdminKubeconfig(ctx context.Context, gardenClient kubernetes.Interface, shoot *gardencorev1beta1.Shoot) (kubernetes.Interface, error) { + kubeconfig, err := RequestAdminKubeconfigForShoot(ctx, gardenClient, shoot, pointer.Int64(7200)) + if err != nil { + return nil, err + } + + return kubernetes.NewClientFromBytes( + kubeconfig, + kubernetes.WithClientOptions(client.Options{Scheme: kubernetes.ShootScheme}), + kubernetes.WithDisabledCachedClient(), + ) +} + +// RequestAdminKubeconfigForShoot requests an admin kubeconfig for the given shoot. +func RequestAdminKubeconfigForShoot(ctx context.Context, gardenClient kubernetes.Interface, shoot *gardencorev1beta1.Shoot, expirationSeconds *int64) ([]byte, error) { versionedClient, err := gardencoreversionedclientset.NewForConfig(gardenClient.RESTConfig()) if err != nil { return nil, err @@ -35,7 +50,7 @@ func CreateShootClientFromAdminKubeconfig(ctx context.Context, gardenClient kube adminKubeconfigRequest := &authenticationv1alpha1.AdminKubeconfigRequest{ Spec: authenticationv1alpha1.AdminKubeconfigRequestSpec{ - ExpirationSeconds: pointer.Int64(3600), + ExpirationSeconds: expirationSeconds, }, } adminKubeconfig, err := versionedClient.CoreV1beta1().Shoots(shoot.GetNamespace()).CreateAdminKubeconfigRequest(ctx, shoot.GetName(), adminKubeconfigRequest, metav1.CreateOptions{}) @@ -43,5 +58,5 @@ func CreateShootClientFromAdminKubeconfig(ctx context.Context, gardenClient kube return nil, err } - return kubernetes.NewClientFromBytes(adminKubeconfig.Status.Kubeconfig, kubernetes.WithDisabledCachedClient()) + return adminKubeconfig.Status.Kubeconfig, nil }